JDK 12即將釋出,你還學得動嗎?
阿新 • • 發佈:2019-01-14
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 ,但願該特效能早日釋出吧……