經過六個月的開發, 甲骨文宣布發布 平台的新版本 JavaSE 20 (Java Platform, Standard Edition 20),它使用 OpenJDK 開源項目作為參考實現。
在這個新發布的 Java SE 20 版本中,除了刪除了一些已棄用的功能外,Java SE 20 保持向後兼容性 來自 Java 平台:大多數以前編寫的 Java 項目在使用新版本運行時將繼續工作而無需更改。
Java SE 20的主要新功能
JavaSE 20 它被歸類為常規支持版本, 更新將在下一個版本之前發布。 長期支持 (LTS) 分支應該是 Java SE 17,它將在 2029 年之前收到更新。
請記住,從 Java 10 版本開始,項目切換到新的開發流程,這意味著新版本的形成周期更短。 現在正在不斷更新的主分支中開發新功能,合併已經做出的更改並每六個月分叉一次以穩定新版本。
在 Java 20 的創新中,它脫穎而出,它已被提出 對 Scoped Values 的初步支持該 實現線程中的不可變數據共享和高效的數據交換 子線程之間(值是繼承的)。
作用域值正在開發替代 線程局部變量機制 當使用大量虛擬線程(數以千計的線程)時,它們是最有效的。 Scoped Values 和線程局部變量的主要區別在於 Scoped Values 是一次性寫入的,以後不能更改,並且只在線程執行期間保持可用。
這個新版本的 Java SE 20 中出現的另一個變化是 添加了註冊模式的第二個臨時實現,它擴展了 Java 16 的模式匹配能力,可以從記錄類型的類中解析值。 例如:
除此之外,還要強調的是 在表達式中添加模式匹配的第四個初步實現 的“switch”,它允許“case”標籤不使用精確值,而是使用一次涵蓋多個值的靈活模板,這以前需要繁瑣的字符串表達式,如“if...else”»。
另外,我們可以發現在這個新版本中,它增加了一個 FFM API 的第二稿實現(Foreign Function & Memory) ,它允許您通過調用外部庫中的函數和訪問 JVM 外部的內存來編排 Java 程序與外部代碼和數據的交互。
另一方面,值得注意的是添加了虛擬線程的第二個初步實現,虛擬線程是輕量級線程,大大簡化了高性能多線程應用程序的編寫和維護。
添加了實驗性結構化並行 API 的第二個變體,通過將在不同線程上運行的多個任務視為一個單元來簡化多線程應用程序開發。
添加了 Vector API 第五次初步實現 它提供了使用 x86_64 和 AArch64 處理器的向量指令執行的向量計算函數,並允許您應用同步多值 (SIMD) 運算。
與 HotSpot JIT 編譯器中提供的標量操作自動矢量化功能不同,新的 API 允許您顯式控制並行數據處理的矢量化。
最後,對於那些對這個新版本感興趣的人,他們應該知道 可安裝的版本 Java SE 20(JDK、JRE 和 Server JRE)的一部分已準備好用於 Linux(x86_64、AArch64)、Windows(x86_64)和 macOS(x86_64、AArch64)。
由 OpenJDK 項目開發的 Java 20 參考實現,在 GPLv2 許可下完全開源,具有允許動態鏈接到商業產品的 GNU ClassPath 例外。