文章目錄
JVM發展史javascript
一,歷代JDK新特性介紹html
1996年 SUN JDK 1.0 Classic VMhtml5
1997年 JDK1.1 發佈java
1998年 JDK1.2 Solaris Exact VMweb
2000年 JDK 1.3 Hotspot 做爲默認虛擬機發布正則表達式
2002年 JDK 1.4 Classic VM退出歷史舞臺express
2004年發佈 JDK1.5 即 JDK5 、J2SE 5 、Java 5編程
2006年發佈JDK1.6既JDK6json
2011年 JDK7發佈安全
2014年 JDK8發佈
2016年JDK9
2018年JDK10
2018年JDK11
2019年JDK12
2019年JDK13
2020年發佈JDK14
JVM發展史
一,歷代JDK新特性介紹
1996年 SUN JDK 1.0 Classic VM
初代版本,偉大的一個里程碑,可是是純解釋運行,使用外掛JIT,性能比較差,運行速度慢。
1997年 JDK1.1 發佈
AWT、內部類、JDBC、RMI、反射
1998年 JDK1.2 Solaris Exact VM
JIT 解釋器混合
Accurate Memory Management 精確內存管理,數據類型敏感
提高的GC性能
JDK1.2開始 稱爲Java 2 J2SE J2EE J2ME 的出現
加入Swing Collections
2000年 JDK 1.3 Hotspot 做爲默認虛擬機發布
加入JavaSound
2002年 JDK 1.4 Classic VM退出歷史舞臺
Assert 正則表達式 NIO IPV6 日誌API 加密類庫
2004年發佈 JDK1.5 即 JDK5 、J2SE 5 、Java 5
自動裝箱拆箱
泛型支持
元數據(註解)
Introspector(內省)
enum(枚舉)
靜態引入
可變長參數(Varargs)
foreach(高級虛幻)
JMM(內存模型)
concurrent(併發包)
2006年發佈JDK1.6既JDK6
命名方式變動
腳本語言
編譯API和微型HTTP服務器API
鎖與同步
垃圾收集
類加載
JDBC 4.0(jdbc高級)
Java Compiler (Java™ 編程語言編譯器的接口)
可插拔註解
Native PKI(公鑰基礎設)
Java GSS (通用安全服務)
Kerberos ( 一種安全認證的系統)
LDAP (LDAP )
Web Services (web服務即xml傳輸)
2011年 JDK7發佈
switch語句塊中容許以字符串做爲分支條件
建立泛型對象時應用類型推斷
try-with-resources(一個語句塊中捕獲多種異常)
null值得自動處理
數值類型能夠用二進制字符串表示
引入Java NIO.2開發包
動態語言支持
安全的加減乘除
Map集合支持併發請求
2014年 JDK8發佈
引入Lambda 表達式
管道和流
新的日期和時間 API(增強對日期與時間的處理)
默認的方法(接口能夠編寫默認的方法)
類型註解
Nashorn javascript引擎(容許java運行特定JavaScript代碼)
Optional class (處理nullPointException)
並行累加器
並行操做
內存錯誤移除
TLS SNI 服務器名稱標識(Server Name Identification)
2016年JDK9
模塊化
接口支持編寫私有方法
Javadoc改進(支持符合html5 標準輸出)
Stream API 加強(簡化調用、操做、提供經常使用便捷的方法)
image API加強(支持多分辨率解析)
多版本jar支持(在不一樣環境運行不一樣jar包)
改進棄用註解使用@Deprecated
內置輕量級json API
棄用Applet API
Deprecation的棄用
2018年JDK10
JEP286,var 局部變量類型推斷。
JEP296,將原來用 Mercurial 管理的衆多 JDK 倉庫代碼,合併到一個倉庫中,簡化開發和管理過程。
JEP304,統一的垃圾回收接口。
JEP307,G1 垃圾回收器的並行完整垃圾回收,實現並行性來改善最壞狀況下的延遲。
JEP310,應用程序類數據 (AppCDS) 共享,經過跨進程共享通用類元數據來減小內存佔用空間,和減小啓動時間。
JEP312,ThreadLocal 握手交互。在不進入到全局 JVM 安全點 (Safepoint) 的狀況下,對線程執行回調。優化能夠只中止單個線程,而不是停所有線程或一個都不停。
JEP313,移除 JDK 中附帶的 javah 工具。可使用 javac -h 代替。
JEP314,使用附加的 Unicode 語言標記擴展。
JEP317,能將堆內存佔用分配給用戶指定的備用內存設備。
JEP317,使用 Graal 基於 Java 的編譯器,能夠預先把 Java 代碼編譯成本地代碼來提高效能。
JEP318,在 OpenJDK 中提供一組默認的根證書頒發機構證書。開源目前 Oracle 提供的的 Java SE 的根證書,這樣 OpenJDK 對開發人員使用起來更方便。
JEP322,基於時間定義的發佈版本,即上述提到的發佈週期。版本號爲$FEATURE.$INTERIM.$UPDATE.$PATCH,分別是大版本,中間版本,升級包和補丁版本。
2018年JDK11
新特性及更新修改:
基於嵌套的訪問控制
標準 HTTP Client 升級
Epsilon:低開銷垃圾回收器
簡化啓動單個源代碼文件的方法
用於 Lambda 參數的局部變量語法
低開銷的 Heap Profiling
支持 TLS 1.3 協議
ZGC:可伸縮低延遲垃圾收集器
飛行記錄器
動態類文件常量
2019年JDK12
Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) 低暫停時間的GC
Microbenchmark Suite 微基準測試套件
Switch Expressions (Preview) Switch表達式
JVM Constants API JVM常量API
One AArch64 Port, Not Two 只保留一個AArch64實現
Default CDS Archives 默認類數據共享歸檔文件
Abortable Mixed Collections for G1 可停止的G1 Mixed GC
Promptly Return Unused Committed Memory from G1 G1及時返回未使用的已分配內存
2019年JDK13
JEP 350,Dynamic CDS Archives
擴展應用程序類-數據共享,以容許在 Java 應用程序執行結束時動態歸檔類。歸檔類將包括默認的基礎層 CDS(class data-sharing)存檔中不存在的全部已加載的應用程序類和庫類。
JEP 351,ZGC: Uncommit Unused Memory
加強 ZGC 以將未使用的堆內存返回給操做系統。
JEP 353,Reimplement the Legacy Socket API
使用易於維護和調試的更簡單、更現代的實現替換 java.net.Socket 和java.net.ServerSocket API 使用的底層實現。
JEP 354,Switch Expressions (Preview)
可在生產環境中使用的 switch 表達式,JDK 13 中將帶來一個 beta 版本實現。switch 表達式擴展了 switch 語句,使其不只能夠做爲語句(statement),還能夠做爲表達式(expression),而且兩種寫法均可以使用傳統的 switch 語法,或者使用簡化的「case L ->」模式匹配語法做用於不一樣範圍並控制執行流。這些更改將簡化平常編碼工做,併爲 switch 中的模式匹配(JEP 305)作好準備。
JEP 355,Text Blocks (Preview)
將文本塊添加到 Java 語言。文本塊是一個多行字符串文字,它避免了對大多數轉義序列的須要,以可預測的方式自動格式化字符串,並在須要時讓開發人員控制格式。
2020年發佈JDK14
305:instanceof的模式匹配(預覽)
343:包裝工具(培養箱)
345:G1的NUMA感知內存分配
349:JFR事件流
352:非易失性映射字節緩衝區
358:有用的NullPointerExceptions
359:記錄(預覽)
361:開關表達式(標準)
362:棄用Solaris和SPARC端口
363:刪除併發標記掃描(CMS)垃圾收集器
364:Mac OS上的ZGC你像
365:Windows上的ZGC
366:棄用ParallelScavenge + SerialOld GC組合
367:刪除Pack200工具和API
368:文本塊(第二預覽)
370:外部存儲器訪問API(孵化器)
I do not know where to go,
but I have been on the road.
我不知道將去何方,但我已在路上
點亮 ,告訴你們你也在看
本文分享自微信公衆號 - JAVA開發者課堂(leechence)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。