JDK 19:Java 19新特性
將於 9 月釋出的非 LTS 版本,Java 19 將具有結構化併發、虛擬執行緒、開關表示式的模式匹配、向量 API 和 Linux/RISC-V 埠。
JDK 19定於9月20日正式釋出,供生產使用,在此之前,從7月21日開始是第二個夯實階段,8月11日和8月25日將釋出候選版本。JDK 19的早期訪問版本可以從jdk.java.net/19訪問。JDK 19的功能包括。
結構化併發
處於孵化階段,旨在透過結構化併發庫簡化多執行緒程式設計。這種併發性將在不同執行緒中執行的多個任務視為一個工作單元,以簡化錯誤處理和取消。可靠性和可觀察性得到了改善。
記錄模式的預覽
為了解構記錄值。記錄模式和型別模式可以被巢狀,以實現資料導航和處理的宣告性、強大和可組合的形式。該提案的目標包括擴充套件模式匹配,以表達更復雜、可組合的資料查詢,同時不改變型別模式的語法或語義。該提案建立在例項的模式匹配基礎上,於2021年3月在JDK 16中交付。未來的計劃可能要求對記錄模式進行擴充套件,如陣列模式和vararg模式。記錄模式是Project Amber的一部分,該專案旨在探索和孵化較小的、面向生產力的Java功能。
外函式和記憶體API的預覽
它將引入一個API,透過它,Java程式可以與Java執行時之外的程式碼和資料進行互操作。透過有效地呼叫外來函式(即Java執行時之外的程式碼)和安全地訪問外來記憶體(即不由JVM管理的記憶體),該API使Java程式能夠呼叫本地庫和處理本地資料,而沒有Java本地介面(JNI)的危險和脆性。國外函式和記憶體API結合了兩個早期的孵化API:國外記憶體訪問API和國外連結器API。國外函式和記憶體API曾在JDK 17中孵化,在JDK 18中重新孵化。該提案的目標包括易用性、效能、通用性和安全性。
虛擬執行緒的預覽
這是一種輕量級的執行緒,大大減少了編寫、維護和觀察高吞吐量併發應用的工作量。目標包括:使以簡單的每請求執行緒風格編寫的伺服器應用程式能夠以接近最佳的硬體利用率進行擴充套件,使使用java.lang Thread API的現有程式碼能夠以最小的改動採用虛擬執行緒,並能夠使用現有的JDK工具對虛擬執行緒進行故障診斷、除錯和分析。本建議的目標不是改變Java的基本併發模型,也不是在Java語言或Java庫中提供新的資料並行結構。它的目標也不是刪除執行緒的傳統實現,或默默地將現有的應用程式遷移到使用虛擬執行緒。
switch表示式和語句的模式匹配第三次預覽
將模式匹配擴充套件到switch,以允許一個表示式針對一些模式進行測試,每個模式都有特定的動作,因此可以簡潔而安全地表達複雜的面向資料的查詢。這項功能以前在JDK 17和JDK 18中進行過預覽。第三次預覽將增加完善的內容,包括用開關塊中的when子句替換有防護的模式。另外,當選擇器表示式的值為空時,模式切換的執行時語義與傳統的切換語義更加一致。該計劃的目標包括透過允許模式出現在案例標籤中來擴大開關表示式和語句的表達能力和適用性。其他目標包括允許開發者在需要時放寬switch的歷史性null-hostility,增加switch語句的安全性,並確保現有的switch表示式和語句在編譯時不做任何改變,並以相同的語義執行。
第四次孵化的向量API
用於表達向量計算,在執行時可靠地編譯為支援的CPU架構上的最佳向量指令,從而實現優於同等標量計算的效能。使用該API的開發者獲得了一種在Java中編寫複雜的向量演算法的方法,使用HotSpot自動向量器,但有一個使用者模型,使向量化更可預測和穩健。向量API先前已被納入JDK 16、JDK 17和JDK 19。
為JDK 19提議的對API的改進包括增強對MemorySegments的載入和儲存向量,如外國函式和記憶體API預覽所定義的。JDK 19還將增加兩個跨道向量操作,即壓縮和擴充套件,以及一個互補的向量掩碼壓縮操作。壓縮向量操作將由掩碼選擇的源向量的車道按車道順序對映到目標向量,而擴充套件操作則做相反的操作。壓縮操作在過濾查詢結果時非常有用。
在向量API的另一個新增功能中,將擴充套件逐位積分的操作,包括計算1位元的數量、顛倒位元的順序,以及壓縮和擴充套件位元等操作。API的目標包括簡潔明瞭,與平臺無關,在x64和AArch64架構上具有可靠的執行和編譯效能,並實現 "優雅 "的退化,以應對向量計算在執行時不能完全表達為向量操作序列的情況。
Linux/RISC-V 移植
Java將獲得對一個硬體指令集的支援,該指令集已經被廣泛的語言工具鏈所支援。RISC-V實際上是一個相關ISA的系列。Linux/RISC-V埠將只支援RISC-V的RV64GV配置,這是一個包括向量指令的通用64位ISA。Java的開發者可能會在將來考慮其他RISC-V的配置。
相關文章
- Java19新特性Java
- java-jdk7新特性JavaJDK
- JDK 19:Java 19五個新功能 - infoworldJDKJava
- JAVA JDK1.5-1.9新特性JavaJDK
- JDK 17:Java 17 中的新特性 - InfoWorldJDKJava
- JDK 5新特性JDK
- 聊聊JDK19特性之虛擬執行緒JDK執行緒
- 1 Oracle Database 19c 新特性OracleDatabase
- ES-2019新特性
- 【Java】jdk1.8新特性及用法總結JavaJDK
- JDK8新特性JDK
- JDK1.5新特性JDK
- JDK新特性--Stream流JDK
- 【Java利器】JDK5-9新特性解析+程式碼 - JDK7JavaJDK
- Google IO/19 - Kotlin 1.3,更多新特性GoKotlin
- 【19c】Oracle 19c 和 20c 的新特性解密Oracle解密
- Java程式設計基礎28——反射&JDK新特性Java程式設計反射JDK
- JDK18:Java18中的新特性 - infoworldJDKJava
- java JDK1.7版本新特性詳解JavaJDK
- Java JDK各個版本的新特性、屬性(JVM)JavaJDKJVM
- JDK8的新特性JDK
- JDK16的新特性JDK
- 【DATAGUARD】Oracle19c dataguard新特性及部署Oracle
- oracle 19C新特性——混合分割槽表Oracle
- 19C新特性研究實時統計
- ECMA 2019(ES10) 新特性
- IntelliJ IDEA 2019.1 新特性IntelliJIdea
- ORACLE 19c 新特性之混合分割槽表Oracle
- Oracle:19c 新特性——Memoptimized Rowstore 簡介OracleZed
- JDK8新特性詳解JDK
- JDK9新特性詳解JDK
- JDK10新特性詳解JDK
- JDK11新特性詳解JDK
- JDK12新特性詳解JDK
- JDK8新特性之stream()JDK
- JDK1.8新特性值OptionalJDK
- JDK 1.8 新特性學習(Stream)JDK
- jdk1.5-1.10新特性JDK