從 2018 年開始,JDK 的發(fā)布周期將由以前的數(shù)年一個(gè)大版本變化為 6 個(gè)月一個(gè)小版本。按照這個(gè)節(jié)奏,2017 年 9 月發(fā)布了 Java 9,半年后的 2018 年 3 月 20 日將發(fā)布 Java 10,而 JDK 11 將于 2018 年 9 月發(fā)布。
JDK 10
Java 10 按照新的節(jié)奏不會(huì)有大量更新,僅包含 12 個(gè) 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
編號(hào)為 286 的 JEP 引入了局部變量類型推斷。Java 將引入 var 關(guān)鍵字,支持由編譯器根據(jù)代碼進(jìn)行推斷,來(lái)確定局部變量的類型。如下的代碼,list 和 stream 變量都可以簡(jiǎn)化類型聲明。
var list = new ArrayList<String>(); // infers ArrayList<String>
var stream = list.stream(); // infers Stream<String>
編號(hào)為 307 的 JEP 引入了 G1 的多線程版本。G1 是 JDK 9 的默認(rèn)垃圾回收器,在 Full GC 時(shí)采用了單線程標(biāo)記-清理-壓縮算法,而在 JDK 10 將支持多線程算法以提高性能。
從 JDK 10 開始,將采用新的版本號(hào),格式為 $FEATURE.$INTERIM.$UPDATE.$PATCH。其中:
$FEATURE :功能版本號(hào),代表一次功能發(fā)布,每 6 個(gè)月增加一次,在 JDK 10 中 $FEATURE 即為 10;
$INTERIM :過渡版本號(hào),一般為 0,用于功能變化不大的兼容升級(jí);
$UPDATE :更新版本號(hào),$FEATURE 更新后一個(gè)月遞增,然后每三個(gè)月遞增;
$PATCH :緊急發(fā)布版本號(hào),解決關(guān)鍵問題的緊急發(fā)布才遞增;
JDK 11
JDK 11 將于 2018 年 9 月發(fā)布,目前僅有 4 個(gè)JEP。按照計(jì)劃,JDK 11 將會(huì)引入動(dòng)態(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
推薦閱讀
【Java技術(shù)】盤點(diǎn) Java 中的隊(duì)列
【框架探秘】Spring 專題 01. IoC 容器及其原理
MyBatis 動(dòng)態(tài) SQL 常用功能
分享學(xué)習(xí)筆記和技術(shù)總結(jié),內(nèi)容涉及 Java 技術(shù)、軟件架構(gòu)、前沿技術(shù)、開源框架、數(shù)據(jù)結(jié)構(gòu)與算法、編程感悟等多個(gè)領(lǐng)域,歡迎關(guān)注。本文首發(fā)于微信公眾號(hào)“后端開發(fā)那點(diǎn)事兒” 。