最新版本的 Java 開發工具包 23 (JDK) 在最新版本中具有四個新功能。到目前為止值得注意的兩個主要功能是 Vector API、Stream Gatherers 的第二個預覽以及模式中原始型別的預覽 - 例如instanceof和switch。
友情提醒,最新版本將於 9 月 19 日釋出。
Vector API
自Java Development Kit 16釋出以來, Vector API一直在Java的早期版本中孵化,一直到最新版本22。
這個新版本將引入一個API來幫助表達在執行時編譯的向量計算。
- 是為了在不同支援的 CPU 架構上擁有最佳的向量指令。
- 該提案的一些目標包括提供標準化 API、執行時編譯、在x64和AArch64CPU 架構上提供更好的效能、優雅降級、與平臺無關以及與 Valhalla 專案保持更多一致
- 該專案旨在增強 Java 物件模型的值物件而是物件。
向量 API 程式碼示例
static final VectorSpecies<Float> SPECIES = FloatVector.SPECIES_PREFERRED; |
流收集器和流 API
如果您還記得,流收集器Stream Gatherers是 Java Development Kid 22 版本中預覽的一部分。現在它將完全新增到 JDK 23 中。
- Stream Gatherers 將增強Stream API以支援自定義操作。
- 它們還允許流管道以當前內建操作難以實現的方式幫助轉換資料。
- 這樣做的目標是使流管道更加靈活和富有表現力——這也將允許自定義操作來操縱無限大小的流。
使用 類檔案 API 的目的是提供一個用於處理類檔案的 API:
- 該 API 跟蹤 Java 虛擬機器規範定義的類檔案格式。
- 這也意味著它將使 JDK 元件能夠遷移到標準 API,並刪除 Java 開發工具包的ASM 庫副本。
類檔案 API 新增了一些微調 :
- 包括簡化類 CodeBuilder ,
- 預設情況下包含位元組碼指令的工廠方法,包括低階工廠、中級工廠和基本塊的高階構建器。
下面是 ASM CodeBuilder 與 Java CodeBuilder 的一些示例程式碼。
ASM CodeBuilder 程式碼示例
ClassWriter classWriter = ...; |
Java CodeBuilder 示例程式碼
ClassBuilder classBuilder = ...; |
在 Java Development Kit 23 中,
- Java CodeBuilder 刪除了與低階方法重複的中級方法,或者更糟糕的是,不經常使用的中級方法。
- 同時您重新命名其餘的中級方法以提高可用性。
- 他們還完善了 ClassSignature 班級模型。這意味著它已得到改進,可以更準確地對superclasses和的通用簽名進行建模superinterfaces。
根據此功能背後的 OpenJDK 提案,Java 平臺應該定義和實現一個標準的類檔案 API,該 API 與類檔案格式一起發展,該格式可以輕鬆地更改或發展大約每六個月一次。
模式中的原始型別
正如前面提到的,隨著 Java Development Kit 23 的最新計劃功能和版本的釋出,我們獲得了另一個對於 Java 開發人員來說非常值得注意的預覽功能: primitive types in patterns, instanceof, switch.
此功能將透過允許:
- 模式上下文中的原始型別模式來顯著增強模式匹配。
- 然後我們擴充套件instanceof 和 switch 來處理所有原始型別。
- 這還包括在巢狀和頂級上下文中使用原始型別模式的模式匹配: 提供易於使用的構造,消除由於不安全的強制轉換而丟失資訊的風險
- 其他目標包括將模式型別與 對齊 instanceof、 instanceof 與安全轉換對齊以及
- 允許 switch 處理任何原始型別的值。
原始型別Primitive Type程式碼案例:
switch (x.getStatus()) { |
super(...) 之前的語句
Java 開發包 22 中預覽的其他功能也可以很容易地應用到 Java 開發包 23 中。
- 其中包括 super(...) 之前的語句,這將為開發人員表達建構函式行為(即字串模板)提供更大的自由度。
- 這將使表達包含執行時計算值(即作用域值)的字串變得更加容易。
- 這樣就可以線上程內和執行緒間共享不可變資料,並隱式宣告類和例項主方法。
程式碼:
public class PositiveBigInteger extends BigInteger { |
總之,這些變化將使初學者更容易編寫程式,而無需瞭解為大型或企業應用程式開發而設計的程式語言功能。
甲骨文公司還透露了 2024 年的 Java 計劃。甲骨文公司概述了涉及OpenJDK專案的改進措施,從用於開發較小的、面向生產力的功能的Amber,到用於將Java擴充套件到GPU等國外程式設計模型的Babylon,再到用於用值物件增強Java物件模型以消除長期存在的效能瓶頸的Valhalla。