JDK/Java 14 發布

3 月 17 日,JDK/Java 14 正式 GA。此版本包含的 JEP(Java/JDK Enhancement Proposals,JDK 增強提案)比 Java 12 和 13 加起來的還要多。總共 16 個新特性如下:

JDK/Java 14 發布

305:Pattern Matching for instanceof (Preview)

為 instanceof 運算符引入模式匹配(預覽階段)

通過模式匹配,開發者可以用更簡潔和更安全的方式來表達通用的程序邏輯。instanceof 運算符的模式匹配支持從對象中按條件來提取組件,此語言特性目前處於預覽階段。

343:Packaging Tool (Incubator)

打包工具(孵化階段)

創建一個用於打包獨立 Java 應用程序的工具。

345:NUMA-Aware Memory Allocation for G1

針對 G1 的 NUMA-Aware 記憶體分配

通過實現 NUMA-aware 記憶體分配,提升 G1 在大型機器上的性能。

349:JFR Event Streaming

JFR 事件流

暴露 JDK Flight Recorder 數據以進行連續監視。

352:Non-Volatile Mapped Byte Buffers

非易失性映射的字節緩沖

非易失性映射的字節緩沖將添加新的 JDK 特定文件映射模式,該模式允許 FileChannel API 用於創建引用非易失性記憶體(NVM)的 MappedByteBuffer 實例。

358:Helpful NullPointerExceptions

改進 NullPointerExceptions,通過准確描述哪些變量為 null 來提高 JVM 生成的異常的可用性。該提案的作者希望為開發人員和支持人員提供有關程序為何異常終止的有用信息,並通過更清楚地將動態異常與靜態程序代碼相關聯來提高對程序的理解。

359:Records (Preview)

Records 提供了一種緊湊的語法來聲明類,以幫助開發者寫出更簡潔的代碼,這些類是淺層不可變數據(shallowly immutable data)的透明擁有者。該特性主要用在特定領域的類,這些類主要用於保存數據,不提供領域行為。

361:Switch Expressions (Standard)

Switch Expressions 在 JDK 12 與 13 中都是預覽狀態,現在在 JDK 14 中已成為穩定特性。switch 表達式擴展了 switch 語句,使其不僅可以作為語句(statement),還可以作為表達式(expression),並且兩種寫法都可以使用傳統的 switch 語法,或者使用簡化的「case L ->」模式匹配語法作用於不同范圍並控制執行流。這些更改將簡化日常編碼工作,並為 switch 中的模式匹配做好准備。

362:Deprecate the Solaris and SPARC Ports

棄用 Solaris 和 SPARC 端口

棄用 Solaris/SPARC, Solaris/x64 和 Linux/SPARC 端口,以便在未來的版本進行移除。

363:Remove the Concurrent Mark Sweep (CMS) Garbage Collector

移除 CMS(Concurrent Mark-Sweep) 垃圾回收器。

364:ZGC on macOS

將 ZGC 垃圾回收器移植到 macOS。

365:ZGC on Windows

將 ZGC 垃圾回收器移植到 Windows。

366:Deprecate the Parallelscavenge + SerialOld GC Combination

棄用 ParallelScavenge + SerialOld GC 的垃圾回收算法組合。

367:Remove the Pack200 Tools and API

移除 Pack200 工具和 API

刪除 java.util.jar 包中的 pack200 和 unpack200 工具以及 Pack200 API。

368:Text Blocks (Second Preview)

文本塊特性(Text Blocks)與常見的 Python“any input”特性一樣,它支持多行字符串文字,可以不需要使用大多數轉義序列,並以一種可預測的方式自動設置字符串格式,同時可以讓開發人員控制格式。雖然這不是特別復雜的特性,但對於開發中想將 HTML 代碼引入 Java 來說是極大的便利,代碼可讀性也極大提高。目前處於第二個預覽階段。

370:Foreign-Memory Access API (Incubator)

外部記憶體訪問 API(孵化階段)

新增一個 API 以允許 Java 程序安全有效地訪問 Java 堆之外的外部記憶體。

詳情查看:http://openjdk.java.net/projects/jdk/14/

可用於生產環境的二進制包下載:http://jdk.java.net/14/

來源:cnBeta