JDK 21 已經于 2023 年 9 月 19 日正式發布。本文總結了 JDK 21 發布的新特性。
根據發布的規劃,這次發布的 JDK 21 將是一個長期支持版(LTS 版)。LTS 版每 2 年發布一個,上一次長期支持版是 21 年 9 月發布的 JDK 17。
本版本是 Java SE 平臺 21 版的參考實現,由 Java 社區流程中的 JSR 396 指定。
主要分為 OpenJDK 版本和 Oracle 版本,下載地址如下:
上述版本,如果是個人學習用途,則差異不大。但如果是用于商業用途,則需要仔細看好相關的授權。Oracle JDK 商用需要遵循 Oracle No-Fee Terms and Conditions (NFTC) 協議,而 OpenJDK 根據 GPL v2 許可獲得許可。
更多有關 Java 的基本知識,可以參閱《Java 核心編程》這本書,描述的非常詳細。
序列集合(Sequenced Collections)在 core-libs/java.util:collections 包中。
該 JEP 提議引入 “一個新的接口族,用于表示集合的概念,這些集合的元素按照預定義的序列或順序排列,它們是作為集合的結構屬性。” 這一提案的動機是由于集合框架中缺乏預定義的順序和統一的操作集。
分代 ZGC(Generational ZGC)在 hotspot/gc 包中。
通過擴展 Z 垃圾回收器(ZGC)來維護年輕對象和年老對象的獨立生成,從而提高應用程序性能。這將使 ZGC 能夠更頻繁地收集年輕對象 —— 這些對象往往英年早逝。
使用記錄模式(Record Patterns)增強 Java 編程語言,以解構記錄值。可以嵌套記錄模式和類型模式,以實現功能強大、聲明性和可組合形式的數據導航和處理。
通過 switch 表達式和語句的模式匹配來增強 Java 編程語言。通過將模式匹配擴展到 switch,可以針對多個模式測試表達式,每個模式都有一個特定的操作,從而可以簡潔、安全地表達復雜的面向數據的查詢。
將虛擬線程(Virtual Threads)引入 Java 平臺。虛擬線程是輕量級線程,可以顯著減少編寫、維護和觀察高吞吐量并發應用程序的工作量。
詳見《Java 下一代高并發技術 —— 虛擬線程(Virtual Threads)》。
棄用 Windows 32 位 x86 移植,并打算在將來的版本中將其刪除。
將代理動態加載到正在運行的 JVM 中時發出警告。這些警告旨在讓用戶為將來的版本做好準備,該版本默認情況下不允許動態加載代理,以提高默認情況下的完整性。在啟動時加載代理的可服務性工具不會導致在任何版本中發出警告。
介紹一種用于密鑰封裝機制(Key Encapsulation Mechanism,簡稱 KEM)的 API,這是一種使用公鑰加密來保護對稱密鑰的加密技術。
使用字符串模板(String Templates)增強 Java 編程語言。字符串模板通過將文本與嵌入的表達式和模板處理器耦合來生成專門的結果,從而補充 Java 現有的字符串文本和文本塊。這是一個預覽語言功能和 API。
引入 API,Java 程序可以通過該 API 與 Java 運行時之外的代碼和數據進行互操作。通過有效地調用外部函數(即 JVM 外部的代碼),并通過安全地訪問外部內存(即不受 JVM 管理的內存),API 使 Java 程序能夠調用本機庫并處理本機數據,而不會出現 JNI 的脆弱性和危險性。這是一個預覽 API。
使用未命名模式和未命名變量來增強 Java 語言,未命名模式匹配記錄組件而不說明組件的名稱或類型,未命名變量可以初始化但不使用。兩者都用下劃線字符_表示。這是一個預覽語言功能。
發展 Java 語言,使學生無需理解為大型程序設計的語言功能即可編寫第一個程序。學生們不用使用單獨的 Java 方言,就可以為單類程序編寫精簡的聲明,然后隨著技能的發展,無縫地擴展程序,使用更高級的功能。這是一個預覽語言功能。
引入作用域值,這些值可以在不使用方法參數的情況下安全有效地共享給方法。它們優先于線程化局部變量,尤其是在使用大量虛擬線程時。這是一個預覽 API。
實際上,作用域值是一個隱式方法參數。這 “就好像” 一系列調用中的每個方法都有一個額外的、不可見的參數。沒有任何方法聲明此參數,只有能夠訪問作用域值對象的方法才能訪問其值(數據)。通過作用域值,可以通過一系列中間方法將數據從調用者安全地傳遞給遙遠的被調用者,這些中間方法不聲明數據的參數,也無法訪問數據。
通過引入用于結構化并發(Structured Concurrency)的 API 來簡化并發編程。結構化并發將在不同線程中運行的相關任務組視為單個工作單元,從而簡化錯誤處理和消除,提高可靠性,并增強可觀察性。這是一個預覽 API。
引入 API 來表示向量計算,這些向量計算在運行時可靠地編譯為支持的 CPU 架構上的最佳向量指令,從而實現優于等效標量計算的性能。
本文鏈接:http://www.tebozhan.com/showinfo-26-10907-0.html一起聊聊GraalVM for JDK 21
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 用.NET X64 Native AOT編寫的操作系統
下一篇: 一篇聊聊Mybatis插件開發