從 2018 年開始,JDK 的發(fā)布周期將由以前的數(shù)年一個大版本變化為 6 個月一個小版本。按照這個節(jié)奏,2017 年 9 月發(fā)布了 Java 9,半年后的 2018 年 3 月 20 日將發(fā)布 Java 10,而 JDK 11 將于 2018 年 9 月發(fā)布。
JDK 10
Java 10 按照新的節(jié)奏不會有大量更新,僅包含 12 個 JEP。
286: Local-Variable Type Inference
296: Consolidate the JDK Forest into a Single Repository
304: Garbage-Collector Interface
307: Parallel Full GC for G1
310: Application Class-Data Sharing
312: Thread-Local Handshakes
313: Remove the Native-Header Generation Tool (javah)
314: Additional Unicode Language-Tag Extensions
316: Heap Allocation on Alternative Memory Devices
317: Experimental Java-Based JIT Compiler
319: Root Certificates
322: Time-Based Release Versioning
編號為 286 的 JEP 引入了局部變量類型推斷。Java 將引入 var 關鍵字,支持由編譯器根據代碼進行推斷,來確定局部變量的類型。如下的代碼,list 和 stream 變量都可以簡化類型聲明。
var list = new ArrayList<String>(); // infers ArrayList<String>
var stream = list.stream(); // infers Stream<String>
編號為 307 的 JEP 引入了 G1 的多線程版本。G1 是 JDK 9 的默認垃圾回收器,在 Full GC 時采用了單線程標記-清理-壓縮算法,而在 JDK 10 將支持多線程算法以提高性能。
從 JDK 10 開始,將采用新的版本號,格式為 $FEATURE.$INTERIM.$UPDATE.$PATCH。其中:
$FEATURE :功能版本號,代表一次功能發(fā)布,每 6 個月增加一次,在 JDK 10 中 $FEATURE 即為 10;
$INTERIM :過渡版本號,一般為 0,用于功能變化不大的兼容升級;
$UPDATE :更新版本號,$FEATURE 更新后一個月遞增,然后每三個月遞增;
$PATCH :緊急發(fā)布版本號,解決關鍵問題的緊急發(fā)布才遞增;
JDK 11
JDK 11 將于 2018 年 9 月發(fā)布,目前僅有 4 個JEP。按照計劃,JDK 11 將會引入動態(tài)類文件常量、引入新的垃圾回收器、刪除 Java EE 和 CORBA(已在 JDK 9 中廢棄)、在 lambda 參數(shù)中支持局部類型推斷。
309: Dynamic Class-File Constants
318: Epsilon: An Arbitrarily Low-Overhead Garbage Collector
320: Remove the Java EE and CORBA Modules
323: Local-Variable Syntax for Lambda Parameters
推薦閱讀
【框架探秘】Spring 專題 01. IoC 容器及其原理
分享學習筆記和技術總結,內容涉及 Java 技術、軟件架構、前沿技術、開源框架、數(shù)據結構與算法、編程感悟等多個領域,歡迎關注。本文首發(fā)于微信公眾號“后端開發(fā)那點事兒” 。