Java SE 18 發布

經過六個月的開發,Oracle 發布了 Java SE 18(Java Platform, Standard Edition 18)平台,該平台使用 OpenJDK 開源項目作為參考實現。 除了刪除了一些已棄用的功能外,Java SE 18 保持與以前版本的 Java 平台的向後兼容性——大多數以前編寫的 Java 項目在新版本下運行時仍無需修改即可運行。 Java SE 18(JDK、JRE 和 Server JRE)的可安裝版本已為 Linux(x86_64、AArch64)、Windows(x86_64)和 macOS(x86_64、AArch64)準備。 Java 18 參考實現由 OpenJDK 項目開發,在 GPLv2 許可下完全開源,具有 GNU ClassPath 例外,允許動態鏈接到商業產品。

Java SE 18 被歸類為常規支持版本,更新將在下一個版本之前發布。 長期支持 (LTS) 分支應該是 Java SE 17,它將在 2029 年之前收到更新。 回想一下,從 Java 10 的發布開始,項目切換到新的開發流程,這意味著新版本的形成周期更短。 現在正在一個不斷更新的主分支中開發新功能,該分支包含已經完成的更改,並且每六個月從該分支分支一次以穩定新版本。

Java 18 的新特性包括:

  • 預設編碼為 UTF-8。 基於字元編碼處理文字資料的 Java API 現在將在所有平台上預設使用 UTF-8,無論系統設定和區域設定如何。 若要恢復到舊行為(根據系統區域設定選擇編碼),您可以使用“-Dfile.encoding=COMPAT”選項。
  • 該軟體包包括 com.sun.net.httpserver 軟體包,其中包括 jwebserver 實用程式和庫 API,以及用於提供靜態內容的簡單 http 伺服器的實作(不支援 CGI 和類似 servlet 的處理程序)。 內建 HTTP 伺服器未針對工作負載進行最佳化,也不支援存取控制和身份驗證,因為它主要用於原型設計、偵錯和測試專案的開發過程。
  • JavaDoc 支援「@snippet」標籤,將工作範例和程式碼片段嵌入到 API 文件中,您可以在其中使用驗證工具、語法突出顯示和 IDE 整合。
  • java.lang.reflect API(核心反射)的實作經過了重新設計,旨在獲取有關方法、欄位和類別建構函式的信息,以及存取類別的內部結構。 java.lang.reflect API 本身保持不變,但現在使用 java.lang.invoke 模組提供的方法句柄實現,而不是使用字節碼產生器。 這項變更使我們能夠統一 java.lang.reflect 和 java.lang.invoke 的實現,並簡化它們的維護。
  • Vector API 的第三個預覽版已經提出,提供了向量計算的函數,這些函數在 x86_64 和 AArch64 處理器上使用向量指令執行,並允許同時將運算應用於多個值 (SIMD)。 與 HotSpot JIT 編譯器中提供的標量操作自動向量化功能不同,新 API 可以明確控制平行資料處理的向量化。
  • 新增了用於解析主機名稱和 IP 位址的 SPI 介面(服務提供者介面),可讓您在 java.net.InetAddress 中使用不與作業系統提供的處理程序綁定的替代解析器。
  • 提供了外部函數和記憶體 API 的第二個預覽版,允許應用程式與 Java 運行時以外的程式碼和資料進行互動。 新的 API 可讓您有效率地呼叫非 JVM 函數並存取非 JVM 管理的記憶體。 例如,您可以從外部共用程式庫呼叫函數並存取流程數據,而無需使用 JNI。
  • 新增了「switch」表達式中模式匹配的第二個實驗性實現,允許在「case」標籤中使用靈活的模式而不是精確的值,一次覆蓋一系列值,而以前必須使用繁瑣的「if. ..else”表達式鏈。 物件 o = 123L; 字串格式化 = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); 預設 -> o.toString(); };
  • 終結機制及其關聯方法(例如 Object.finalize()、Enum.finalize()、Runtime.runFinalization() 和 System.runFinalization())已被棄用,並將在未來版本中停用。
  • ZGC(Z 垃圾收集器)、SerialGC 和 ParallelGC 垃圾收集器支援行重複資料刪除。

來源: opennet.ru

添加評論