序言
👁 關注微信公衆號:非典型理科男 回覆:jdk14獲取所有關於JDK14新特性的文章。
JDK14正式發佈
2020年3月17日,JDK14正式發佈。
JDK14將在4月和7月收到安全更新,然後由9月到期的非LTS版本的JDK 15取代。JDK14包括16項新功能,例如JDK Flight Recorder事件流,模式匹配和開關表達式等特徵。
從JDK9之後,Oracle採用了新的發佈週期:每6個月發佈一個版本,每3年發佈一個LTS版本。JDK14是繼JDK9之後發佈的第四個版本, 該版本爲非LTS版本,最新的LTS版本爲JDK11。
JDK14 新特性
JDK14包含了比JDK12和JDK13加在一起還多的特性。共包括16項的新特性。
新的語言特性
包括7項新特性,其中3項爲正式特性,7項爲非正式特性。
Switch Expressions
Switch Expressions 在 JDK 12 與 13 中都是預覽狀態,現在在 JDK 14 中已成爲穩定特性。switch 表達式擴展了 switch 語句,使其不僅可以作爲語句(statement),還可以作爲表達式(expression),並且兩種寫法都可以使用傳統的 switch 語法,或者使用簡化的“case L ->”模式匹配語法作用於不同範圍並控制執行流。這些更改將簡化日常編碼工作,併爲 switch 中的模式匹配做好準備
改進NullPointerExceptions
改進 NullPointerExceptions,通過準確描述哪些變量爲 null 來提高 JVM 生成的異常的可用性。該提案的作者希望爲開發人員和支持人員提供有關程序爲何異常終止的有用信息,並通過更清楚地將動態異常與靜態程序代碼相關聯來提高對程序的理解。
非易失性映射的字節緩衝
非易失性映射的字節緩衝將添加新的 JDK 特定文件映射模式,該模式允許 FileChannel API 用於創建引用非易失性內存(NVM)的 MappedByteBuffer 實例。
Records語法(Preview)
Records 提供了一種緊湊的語法來聲明類,以幫助開發者寫出更簡潔的代碼,這些類是淺層不可變數據(shallowly immutable data)的透明擁有者。該特性主要用在特定領域的類,這些類主要用於保存數據,不提供領域行爲。
爲 instanceof 運算符引入模式匹配(Preview)
通過模式匹配,開發者可以用更簡潔和更安全的方式來表達通用的程序邏輯。instanceof 運算符的模式匹配支持從對象中按條件來提取組件,此語言特性目前處於預覽階段。
文本塊特性(Second Preview)
文本塊特性(Text Blocks)與常見的 Python""“any input”""特性一樣,它支持多行字符串文字,可以不需要使用大多數轉義序列,並以一種可預測的方式自動設置字符串格式,同時可以讓開發人員控制格式。雖然這不是特別複雜的特性,但對於開發中想將 HTML 代碼引入 Java 來說是極大的便利,代碼可讀性也極大提高。目前處於第二個預覽階段。
外部內存訪問 API(孵化階段)
新增一個 API 以允許 Java 程序安全有效地訪問 Java 堆之外的外部內存。
垃圾回收修改
共包括6項新特性,修改均爲正式狀態。
針對 G1 的 NUMA-Aware 內存分配
通過實現 NUMA-aware 內存分配,提升 G1 在大型機器上的性能。
JFR 事件流
暴露 JDK Flight Recorder 數據以進行連續監視。
移除部分垃圾回收器
- 移除CMS垃圾回收器
- 棄用 ParallelScavenge + SerialOld GC 的垃圾回收算法組合
ZGC垃圾回收期支持macOs和Windows平臺
將 ZGC 垃圾回收器移植到 macOS和Windows平臺。
移除包和功能
共包括2個新特性。
- 刪除Pack200工具和API
- 棄用Solaris和SPARC端口
新工具
共包括1個項子新特性。處於孵化狀態。
打包工具(孵化階段)
創建一個用於打包獨立 Java 應用程序的工具。
所有特性彙總
全部新特性如下:
-
305: instanceof的模式匹配(預覽)
-
343: 包裝工具(培養箱)
-
345: G1的NUMA感知內存分配
-
349: JFR事件流
-
352: 非易失性映射字節緩衝區
-
358: 有用的NullPointerExceptions
-
359: 記錄(預覽)
-
361: 開關表達式(標準)
-
362: 棄用Solaris和SPARC端口
-
363: 刪除併發標記掃描(CMS)垃圾收集器
-
364: Mac OS上的ZGC你像
-
365: Windows上的ZGC
-
366: 棄用ParallelScavenge + SerialOld GC組合
-
367: 刪除Pack200工具和API
-
368: 文本塊(第二預覽)
-
370: 外部存儲器訪問API(孵化器)
回覆“資料”,免費獲取 一份獨家嘔心整理的技術資料!