甲骨文發表Java 22,這個版本加入許多新功能,對語言本身、API、效能和JDK中的工具,都進行了強化。除了Java語言更具表達力,提升開發者編寫程式碼的體驗之外,也加入多項功能改善並行程式的運作效能,而重新設計的Vector API,也讓向量運算更加高效,滿足日漸增加的向量運算需求。

Java 22語言功能加入了未命名變數和模式JEP 456,這項改進是使用下底線字元來表示不使用的變數宣告和巢狀模式,目的是要強化程式碼的可讀性,有助於減少開發者犯錯機會,尤其是在需要宣告,但是又不使用的情況下,改善程式碼的可維護性。

在Java 22中建構子的前置陳述式JEP 447更新,讓開發者擁有更多表達建構子行為自由。在子類別的建構子中,開發者可以於呼叫super()之前加入不參照該實體(Instance)的陳述句,這代表現在於呼叫父類別建構子之前,可以執行一些邏輯或是初始化工作。這項預覽功能讓開發者在編寫建構子時,擁有更大的靈活性和表達力,同時建構子在類別實體化過程,也能確保程式碼的安全性並以預期的順序執行。

正在預覽的字串樣板,則是補充了目前Java字串常值(String Literal)和文字區塊的功能,透過將字串常值和嵌入式表達式結合在一起,產生專門的結果。簡單來說,Java現在提供一種更簡潔的方式,供開發者編寫文字加上變數的字串表示,能在字串常值中直接插入表示式或是變數值,如此不僅提高程式碼的可讀性,也讓編寫動態字串內容Java程式更簡單。

Foreign Function & Memory API是一個提高Java程式和外部程式碼、資料互通的新功能,該API讓開發者可以安全地呼叫Foreign Function與記憶體。這邊的Foreign Function泛指JVM外部的程式碼,而Foreign Memory則是不受JVM管理的記憶體。該API使Java程式能夠呼叫像是C語言等原生函式庫,同時還可存取外部記憶體,讓Java程式方便地處理大量資料,或是與原生程式碼共享資料。

官方也對Java的Stream API進行強化。在Java中,Stream API是一種處理資料集合的進階工具,讓開發者以宣告的方式,進行複雜的資料處理和操作,雖然Stream API內建許多中介操作,但是開發者可能還是會遇到現有操作無法實現資料轉換的情況,經強化的Stream API支援自訂中介操作,使開發者可以根據需求實作需要的串流操作。

Java 22還加入了一項名為Scoped Values的功能,以改善不同執行緒間以及執行緒內部不可篡改資料的共享效率。這項功能引入了新的程式開發模型,開發者透過程式碼的語法結構,便可了解共享資料的生命周期,並且掌握資料在程式中的作用範圍和時間。Java會確保只有合法的呼叫者,可以檢索共享資料,這提高了程式的強健性,同時避免資料意外地被非目標程式碼存取。

甲骨文為了要簡化Java並行(Concurrency)程式開發,嘗試加入了結構化並行方法,目前正在孵化階段。結構化並行將不同的執行緒中的相關任務組,視為單一工作單元,使得這些任務可以被視為一個整體,一起啟動、管理和終止,而這將讓開發者更容易管理錯誤和取消操作。一旦其中一項任務失敗或需要取消,整個任務單元可以一致回應,減少開發者處理並行錯誤的複雜性。

另一個孵化階段的功能是Vector API的更新,而這主要是改善Java中表達向量運算的方式,有助於在支援的CPU架構上實現最佳化向量指令,達到比等效純量運算更好的效能。目前在x64和AArch64架構上都已經能提供可靠的執行時編譯和穩定的效能。

熱門新聞

Advertisement