1. 程式人生 > >JDK 12即將釋出,你還學得動嗎?

JDK 12即將釋出,你還學得動嗎?

JDK 12即將在2019年3月19日釋出,下面列出JDK的版本迭代時間表:

由此可知,目前JDK 12已處於Rampdown Phase One階段,所有的新特性已經凍結,不會再針對其他JEP(JDK Enhancement Proposals簡寫,Java增強提案,讀者可前往

http://openjdk.java.net/jeps/0 檢視所有的JEP)。

新特性

JDK 12新特性如下:

編號 名稱 說明
189 Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) 新增名為Shenandoah 的、低暫停時間的實驗性垃圾收集器;
230 Microbenchmark Suite 新增微基準測試套件(Microbenchmark Suite),使開發人員可以輕鬆執行現有的微基準測試並建立新的基準測試;
325 Switch Expressions (Preview) 對現有Switch表示式改進,使其可以用作語句或表示式。
334 JVM Constants API 引入API來對關鍵類檔案(key class-file)和執行時工件(run-time artifacts)的名義描述(nominal descriptions)建模,特別是可從常量池載入的常量。
340 One AArch64 Port, Not Two 在保留32位ARM埠和64位aarch64
埠的同時,刪除與arm64 埠相關的所有原始碼。
341 Default CDS Archives 在64位平臺上使用預設類列表增強JDK構建過程,從而生成類資料共享(CDS)歸檔。
344 Abortable Mixed Collections for G1 如果G1混合回收超過暫停目標時,使其可中止。
346 Promptly Return Unused Committed Memory from G1 增強G1垃圾收集器,以便在空閒時自動將Java堆記憶體返回給作業系統。

示例:Switch可支援如下寫法:

// 例如支援這麼寫:
switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}

新特性分析

由上可知,JDK 12主要是對GC的一些改進,另外對switch提供了新的語法糖。總體改動不大。

JDK 13……

順便看了一下JDK 13的迭代計劃,2019年9月釋出,這不是什麼新鮮事,因為Java現在就是半年釋出一次版本。有興趣的可前往http://openjdk.java.net/projects/jdk/13/檢視相關資訊。

討論

**你最想要的JDK特性是啥?**筆者最想要的是Raw String Literals 特性,類似於Javascript ES6語法中的模板字串使用它基本可以告別醜陋的字串拼接!特性詳見http://openjdk.java.net/jeps/326 ,該特性原計劃在JDK 12釋出的,結果又被幹掉了,詳見:http://mail.openjdk.java.net/pipermail/jdk-dev/2018-December/002402.html 。不過可能是因為業界呼聲太高,最近又把該特性拿出來重新討論了:https://mail.openjdk.java.net/pipermail/amber-spec-experts/2019-January/000931.html ,但願該特效能早日釋出吧……

拓展閱讀