經過六個月的開發,Oracle 發布了 Java SE 27(Java 平台標準版 27),它以開源 OpenJDK 專案作為參考實作。除了移除一些已棄用的功能外,Java SE 27 保持了與 Java 平台先前版本的向後相容性——大多數先前編寫的 Java 專案在新版本下運行時無需任何修改。 Java SE 27(JDK、JRE 和 Server JRE)的即用型建置版本已準備就緒。 Linux (x86_64,AArch64), Windows (x86_64)和 macOS (x86_64, AArch64)。 Java SE 27 參考實作由 OpenJDK 專案開發,完全開源,採用 GPLv2 許可證,並帶有 GNU ClassPath 例外,允許與商業產品進行動態連結。
Java SE 27 被歸類為常規支援版本,其更新將持續發布直至下一個版本發布。長期支援 (LTS) 分支應為 Java SE 25、Java SE 21 或 Java SE 17,其更新將分別持續發佈至 2033 年、2031 年和 2029 年(通常可分別持續至 2030 年 9 月、2028 年 9 月和 2026 年 9 月)。 Java SE 8 LTS 分支的擴展支援將持續到 2030 年,Java SE 11 的擴展支援將持續到 2032 年。
Java SE 27(1、2、3、4)中的變更包括:
- 預設情況下,所有環境都使用 G1(垃圾優先)垃圾回收器,該回收器以前用於伺服器系統。 G1 針對具有大記憶體容量的多處理器系統進行了最佳化,旨在平衡可預測的延遲和高吞吐量。在運行過程中,G1 將記憶體劃分為許多小的區域,並優先處理那些包含更多未使用物件和更少活躍存取資料的區域。
- HotSpot JVM 預設使用緊湊型物件頭。在 64 位元系統上,物件頭大小已從 96 位元減少到 64 位,從而降低了記憶體消耗並提高了資料進入處理器快取的機率。在 SPECjbb2015 基準測試中,記憶體消耗降低了 22%,CPU 負載降低了 8%,垃圾回收操作次數降低了 15%。 JSON 解析器的測試運行時間縮短了 10%。
- TLS 1.3 實現增加了對混合密鑰協商方案的支持,這些方案結合了抗量子 ML-KEM(CRYSTALS-Kyber)演算法和經典的 ECDHE 橢圓曲線演算法:X25519MLKEM768(採用 X25519 曲線的 ECDHE + ML-KEM-768)、SecPEM257657576257572575752576257253257253570032575300035700253000035753535350000002575735553 -85725752535753537(32725725325725333733530000 的曲線(625725725753337537537533333753337533357)。 + ML-KEM-768)和 SecP384r1MLKEM1024(採用 secp384r1 曲線的 ECDHE + ML-KEM-1024)。在 javax.net API 中。SSL 這些方案預設為啟用,使用時無需對應用程式進行任何變更。
- 用於效能監控、分析和診斷的 JDK Flight Recorder (JFR) 工具,現在支援對已儲存的診斷資訊中的命令列參數、環境變數初始值和系統屬性進行清理。此項目變更可防止被分析進程處理的敏感資料(例如透過環境變數傳遞的授權令牌和 API 存取金鑰)外洩。
- Lazy Constants API 的第三個預覽版已實現,用於處理包含不可變資料並在 JVM 中被視為常數的物件。此類物件應用了類似於帶有“final”關鍵字的欄位的效能最佳化。與「final」不同,新的 API 將常數值的建立與其初始化分離,確保一個值只能初始化一次,縮短程式啟動時間,並使先前僅在 JDK 內部程式碼中使用的常數折疊最佳化能夠在使用者程式碼中使用。 class Application { // 之前: // static final UserService USERS = new UserService(); // 現在: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
- 模式匹配引擎引入了第五版草案,允許在各種模式、instanceof 運算子和 switch 程式碼區塊中使用基本類型(int、byte、char 和其他非物件基底類型)。 switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { … b …
- 第七版結構化並發 API 草案已發布供測試,該 API 透過將運行在不同執行緒上的多個任務視為一個單元,簡化了多執行緒應用程式的開發。
- Vector API 的第十二個測試實作已完成。此 API 提供使用 x86_64 和 AArch64 處理器向量指令執行向量計算的函數,並支援對多個值進行同時操作(SIMD)。與 HotSpot JIT 編譯器對標量運算的自動向量化不同,新的 API 允許明確控制平行資料處理的向量化過程。
- API 的第三個草案現已發布,用於使用 PEM(隱私增強郵件)格式對包含加密金鑰、憑證和憑證撤銷清單的物件進行編碼和解碼。
此外,我們很高興地宣布發布用於創建圖形使用者介面應用程式的 JavaFX 27 平台更新。同時,支援執行 JavaScript (Node.js)、Python、Ruby、R、任何 JVM 語言(Java、Scala、Clojure、Kotlin)以及可產生 LLVM 位元程式碼的語言(C、C++、Rust)應用程式的 GraalVM 27 通用虛擬機也預計在未來幾小時內發布。
來源: opennet.ru
