JDK 12即將在2019年3月19日發佈,下面列出JDK的版本迭代時間表:
- 2018/12/13:Rampdown Phase One(http://openjdk.java.net/jeps/3#rdp-1)
- 2019/01/17:Rampdown Phase Two(http://openjdk.java.net/jeps/3#rdp-2)
- 2019/02/07:Release-Candidate Phase(http://openjdk.java.net/jeps/3#rc)【正式候選階段】
- 2019/03/19:General Availability【最終可用版】
由此可知,目前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 ,但願該特性能早日發佈吧……