甲骨文公司宣布推出 Java 18,這是程式設計語言和開發平台的最新版本。Java 18 (Oracle JDK 18) 在效能、穩定性及安全性方面有諸多改進,包括為平台提供九項增強功能,進一步提升開發人員的生產力。
最新的 Java 開發套件 (JDK) 提供了九個 JDK 增強功能提案 (JEP) 的更新和改進,包括新增的 Code Snippets in Java API Documentation (JEP 413) 功能,可簡化 API 文件中的新增範例原始碼,以及用於原型與測試的 Simple Web Server (JEP 408)。開發人員可以使用 Vector API (JEP 417) 與 Foreign Function and Memory API (JEP 419) 這兩個孵化模組,以及 Pattern Matching for Switch (JEP 420) 的預覽功能。
甲骨文的 Java平台組開發副總裁 Georges Saab 表示:「Java 18 的推出充分體現了甲骨文致力於每六個月發布一次新版本,讓企業和開發人員可以更快獲得增強功能。我們在技術投資方面持續投入,以提高 Java SE 平台實行以及 Java 開發套件的效能、穩定性及安全性。」
RedMonk 首席分析師 James Governor 表示:「Java 開發人員希望藉助現代化程式設計語言功能、開發者體驗增強功能、雲端託管服務與穩定性來持續創新。拜 Java 六個月的發布週期所賜,甲骨文能夠滿足這些需求,支持 Java在現代應用程式和工作負載方面能與時俱進。」
加速在雲端採用 Java
甲骨文最近推出了 Java Management Service (JMS),這是一款全新的雲端基礎設施(OCI) 原生服務,可協助管理內部部署或任何雲端的 Java 程式實際執行和應用程式。JMS 提供了管理整個企業部署Java所需的資訊。Java管理服務包含在 OCI 工作負載和 Java SE 訂閱者中。
Java 18 是 Java 六個月發布週期内的最新版本,也是甲骨文工程師與全球 Java 開發人員社群成員在 OpenJDK 專案 和Java Community Process (JCP) 的合作成果。Java 18 的重大更新包括:
程式庫的更新與改進
- JEP 400:預設UTF-8 — 將 UTF-8 設定為標準 Java API 的預設字元集。這項變更讓相依於預設字元集的 API 在所有的實行、作業系統、語言環境及組態中保持一致。
- JEP 408:基本網路伺服器 — 這是一種命令行工具和 API,用於啟動僅提供靜態檔案的最小網路伺服器。此工具可用於原型建立、特殊編碼和測試用途,尤其是在教育環境中。
- JEP 416:使用方法控制碼重新實行核心反射— 在 java.lang.invoke 方法處理之上重新實行 java.lang.reflect.Method、Constructor 和 Field。藉由將方法處理作爲反射的基礎機制,此功能可降低 java.lang.reflect 與 java.lang.invoke API 的維護和開發成本。
- JEP 418:網址解析器 SPI — 為主機名稱和位址解析定義服務提供者介面 (SPI),讓 java.net.InetAddress 可以使用平台內建解析器之外的解析器。
工具
- JEP 413:Java API 文件中的 JEP 代碼片段 — 為 JavaDoc 的標準 Doclet 採用 @snippet 標記,以簡化在 API 文件中包含範例原始碼。
JDK 更新版本的預覽功能和孵化器
- JEP 417:向量API (三次孵化階段)— 為開發人員提供 API,以可靠地運用 CPU 架構提供可擴展的向量延伸。與非擴展處理器上的等效運算相比,這將帶來更佳的效能。
- JEP 419:外部函數和記憶體 API (二次孵化階段) — Java 程式能夠與 Java 程式實際執行的程式碼和資料互通。藉由有效地呼叫外部函數 (例如JVM 之外的代碼),並安全地存取外部記憶體 (例如不受 JVM 管理的記憶體),API 可讓 Java 程式呼叫原生程式庫與處理原生資料,而不受Java本機介面 JNI 的脆弱性和缺陷影響。
- JEP 420:Switch 模式匹配 (二次預覽) — 使用 switch 表示式和敘述句樣式比對,以及語言樣式擴充來增強 Java 程式設計語言。將樣式比對擴充到 switch,允許對多個模式進行表示式測試,而每個樣式都有特定動作,因此就能夠精確且安全地表達資料導向的複雜查詢。
面向未來的Java 程式
- JEP 421:棄用並移除 Finalization 功能— 目前,Finalization 預設為啟用狀態,但可以停用以方便測試。此功能將在日後發行的版本中預設為停用,並會在後續更新的版本中移除。倚賴 finalization 功能的程式庫與應用程式的維護人員應考慮轉移至其他資源管理技術,例如 try-with-resources 敘述句 和cleaners。