甲骨文公司 Java 平臺高級副總裁兼 OpenJDK 管理委員會主席 Georges Saab 表示:“Java 22 新的增強(qiáng)功能讓更多開發(fā)人員能夠快速、輕松地構(gòu)建和交付功能豐富、可擴(kuò)展且安全的應(yīng)用,從而幫助全球各地的組織發(fā)展業(yè)務(wù)。這些增強(qiáng)功能可以簡化應(yīng)用開發(fā),擴(kuò)大 Java 的覆蓋范圍,以供不同技術(shù)水平的開發(fā)人員訪問,幫助組織和開發(fā)人員創(chuàng)建各種新的應(yīng)用和服務(wù)。”
全新版本的 JDK 更新和改進(jìn)了 12 項(xiàng)JDK 增強(qiáng)建議 (JEPs) 。JDK 22 將提供OpenJDK Project Amber 的語言改進(jìn)(Statements before super[…]、Unnamed Variables & Patterns、String Templates 以及 Implicitly Declared Classes 和 Instance Main Methods);Project Panama 的改進(jìn)(Foreign Function 以及 Memory API 和 Vector API);有關(guān) Project Loom 的特性(Structured Concurrency 和 Scoped Values);核心庫和工具功能(Class-File API、Launch Multi-File Source-Code Programs、Stream Gatherers)以及性能更新(Region Pinning for G1)。
IDC 軟件開發(fā)研究副總裁 Arnal Dayaratna 表示:“經(jīng)過近三十年發(fā)展,Java 能夠支持各種用例的復(fù)雜開發(fā)任務(wù),這種能力讓該平臺變得十分重要。Java 的多功能性和全面的工具集使其能夠大規(guī)模支持生產(chǎn)級關(guān)鍵任務(wù)應(yīng)用的開發(fā),因此成為了生成式 AI 等創(chuàng)新用例的關(guān)鍵支持技術(shù)。”
Java 22 提供的重要更新包括:
Project Amber 的特性
· JEP 447:Statements before super(…) — 支持開發(fā)人員自由地表達(dá)構(gòu)造器的行為。對于未引用正在創(chuàng)建的實(shí)例的語句,該語句也可以在調(diào)用顯式構(gòu)造器之前出現(xiàn),讓開發(fā)人員可以更自然地放置邏輯。該邏輯需要納入輔助靜態(tài)方法、輔助中間構(gòu)造器或構(gòu)造器參數(shù)中。該特性還將延續(xù)現(xiàn)有保證,即允許構(gòu)造器在類實(shí)例化期間按自上而下的順序運(yùn)行,以幫助確保子類構(gòu)造器中的代碼不會干擾超類實(shí)例化。此外,此特性不需要對 Java Virtual Machine (JVM) 進(jìn)行任何更改,并且僅依賴于 JVM 的當(dāng)前能力來驗(yàn)證和執(zhí)行在構(gòu)造器中顯式調(diào)用之前顯示的代碼。
· JEP 456:Unnamed Variables & Patterns — 通過未命名的變量和模式來增強(qiáng) Java 語言。在必須使用變量聲明或嵌套模式,但又從未使用過的情況下,開發(fā)人員可以使用這些變量和模式來提高生產(chǎn)力。這種方法可以減少出錯(cuò)的機(jī)會,提高記錄模式的可讀性,并提高代碼的可維護(hù)性。
· JEP 459:String Templates(第二預(yù)覽版)— 使包含運(yùn)行時(shí)計(jì)算值的字符串更容易表達(dá),簡化 Java 程序的開發(fā)工作,同時(shí)提高將用戶提供的值編寫成字符串,并將字符串傳遞給其他系統(tǒng)的程序的安全性。此外,該特性還可提高參雜了表達(dá)式和文本的可讀性,創(chuàng)建通過文字文本和嵌入表達(dá)式計(jì)算的非字符串值,而無需通過中間字符串表示形式傳遞。
· JEP 463:Implicitly Declared Classes and Instance Main Methods(第二預(yù)覽版)— 通過 Java 編程入門教程,學(xué)生無需了解為大型程序而設(shè)計(jì)的語言功能,即可順利編寫第一個(gè)程序,加快了上手速度。通過此特性,教育工作者可以循序漸進(jìn)地介紹概念,學(xué)生也可以編寫簡化的單類程序聲明,并隨著個(gè)人技能的提升,無縫擴(kuò)展程序并使用更高級的功能。
Project Loom 的特性
· JEP 462:Structured Concurrency(第二預(yù)覽版)— 通過引入用于結(jié)構(gòu)化并發(fā)的 API,幫助開發(fā)人員簡化錯(cuò)誤處理和取消,并提高可觀測性,進(jìn)而鼓勵(lì)更多人選擇并發(fā)編程。該編程風(fēng)格可以消除因取消和關(guān)閉而產(chǎn)生的常見風(fēng)險(xiǎn),例如線程泄漏和取消延遲,以此提高并發(fā)代碼的可觀測性。
· JEP 464:Scoped Values(第二預(yù)覽版)— 支持開發(fā)人員在線程內(nèi)和線程之間共享不可變數(shù)據(jù),從而提高項(xiàng)目的易用性、可理解性、性能和穩(wěn)健性。
Project Panama 的特性
· JEP 454: Foreign Function & Memory API — 新推出的 API 使 Java 程序更容易與 Java 運(yùn)行時(shí)之外的代碼和數(shù)據(jù)互操作,從而幫助開發(fā)人員提高易用性、靈活性、安全性和性能。通過有效調(diào)用外部函數(shù)(即 Java Virtual Machine (JVM) 之外的代碼),以及安全地訪問外部內(nèi)存(即不受 JVM 管理的內(nèi)存),這個(gè)新的 API 支持 Java 程序在無需 Java Native Interface 的情況下調(diào)用本地庫和處理原生數(shù)據(jù)。
· JEP 460:Vector API (七次孵化階段)— 引入 API來表達(dá)向量計(jì)算,在運(yùn)行時(shí)可靠地編譯為支持的 CPU 架構(gòu)上的向量指令,使開發(fā)人員獲得優(yōu)于等效標(biāo)量計(jì)算的性能。
核心庫和工具功能
· JEP 457:Class-File API(預(yù)覽版)— 通過提供用于解析、生成和轉(zhuǎn)換 Java 類文件的標(biāo)準(zhǔn) API,幫助開發(fā)人員提高工作效率。
· JEP 458:Launch Multi-File Source-Code Programs — 支持開發(fā)人員通過增強(qiáng) Java 應(yīng)用啟動器,選擇是否以及何時(shí)需要配置構(gòu)建工具,從而運(yùn)行作為多個(gè) Java 源代碼文件提供的程序。
· JEP 461:Stream Gatherers(預(yù)覽版)— 通過增強(qiáng) Stream API 來支持自定義中間操作,讓流管道能以比現(xiàn)有內(nèi)置中間操作更輕松的方式轉(zhuǎn)換數(shù)據(jù),從而幫助開發(fā)人員提高工作效率。此特性能夠使流管道更靈活、更具表達(dá)力,允許自定義中間操作處理大小不限的流,幫助開發(fā)人員高效讀取、寫入和維護(hù) Java 代碼。
性能更新
· JEP 423:Region Pinning for G1 — 在原本需要暫停收集器的本機(jī)庫調(diào)用期間,允許進(jìn)行某些資源回收,有助于減少延遲。其中的原理是,在本機(jī)庫調(diào)用期間,對需要禁止的對象以及僅“固定”包含這些對象的區(qū)域進(jìn)行跟蹤。如此一來,即使是在原本會禁止本機(jī)庫調(diào)用的期間,未固定的區(qū)域也可以繼續(xù)正常進(jìn)行資源回收。
Java 22 是 Oracle 與全球 Java 開發(fā)人員社區(qū)成員通過 OpenJDK 社區(qū) 和 Java Community Process (JCP) 共同合作的成果。Java 22 除了推出了新的增強(qiáng)功能和特性,也獲得 Java Management Service (JMS) 的支持,這是一項(xiàng)新的 Oracle 云基礎(chǔ)設(shè)施遠(yuǎn)程軟件服務(wù)(Oracle Cloud Infrastructure, OCI) 原生服務(wù),提供統(tǒng)一的控制臺和儀表盤,幫助企業(yè)管理本地或云端的 Java 運(yùn)行時(shí)和應(yīng)用。有關(guān) Java 22 特性的更多信息,請閱讀 Java 22 技術(shù)博客文章。
云技術(shù)創(chuàng)新賦能全球 Java 生態(tài)系統(tǒng)
OCI 是率先支持 Java 22 的超大規(guī)模云技術(shù)之一,部署在 OCI 中的 Java 可提供出色的性能、效率和創(chuàng)新。通過在 OCI 上免費(fèi)提供 Oracle Java SE、Oracle GraalVM 和 Java SE Subscription Enterprise Performance Pack,Java 22 助力開發(fā)人員構(gòu)建和部署速度更快、更出色且優(yōu)化性價(jià)比的應(yīng)用。
Oracle Java Universal SE Subscription 是一個(gè)按量計(jì)費(fèi)產(chǎn)品,可為客戶提供優(yōu)秀的支持服務(wù)。該產(chǎn)品提供對整個(gè) Java 產(chǎn)品組合的支持、GraalVM 授權(quán)、Java SE Subscription Enterprise Performance Pack、Java Management Service 增強(qiáng)功能以及按業(yè)務(wù)計(jì)劃進(jìn)行升級的靈活性,有助于 IT 組織管理復(fù)雜性、控制成本并降低安全風(fēng)險(xiǎn)。
JavaOne 將于 2025 年回歸
全球 Java 社區(qū)的旗艦活動 JavaOne 將于 2025 年重返美國舊金山灣區(qū)。JavaOne 2025 將于 2025 年 3 月 17 日至 20 日在加利福尼亞州紅木海岸舉行,參會者將有機(jī)會了解Java 開發(fā)并與 Oracle 的 Java 專家和行業(yè)人士互動。欲了解更多信息,請?jiān)L問Inside Java 博客文章。
TJC 社區(qū)負(fù)責(zé)人 Evren Tan 表示:“在 Türkiye Java Community (TJC) 的動態(tài)生態(tài)系統(tǒng)中,Oracle 的持續(xù)支持推動了我們的發(fā)展。隨著 Java 22 的推出,我們可以使用一系列的現(xiàn)代化功能,進(jìn)一步提高開發(fā)人員效率,加強(qiáng)我們對在土耳其發(fā)展 Java 技術(shù)的承諾。我們也歡迎全球的 Java 開發(fā)人員參加 TJC 的活動,共同培養(yǎng)友好的社區(qū)精神,助力 Java 蓬勃發(fā)展?!?/p>
xHub 創(chuàng)始人兼首席信息官 Badr El Hourari 表示:“Java 將作為一種熱門的編程語言、平臺和開發(fā)人員社區(qū),在摩洛哥和非洲地區(qū)持續(xù)發(fā)展。在 Java 22 中,我很高興看到 Oracle Java 團(tuán)隊(duì)專注于創(chuàng)新,通過 JEP 463 等增強(qiáng)功能幫助新的開發(fā)人員更快地上手 Java。對新一代程序員來說,經(jīng)過簡化后的 Java 語言降低了門檻。同時(shí),在摩洛哥,我們將在年度 Devoxx 摩洛哥會議上繼續(xù)強(qiáng)調(diào) Java 的重要性,歡迎所有開發(fā)人員踴躍參加今年10月2-4日的活動,聽 Java 社區(qū)中的全球高影響力人物分享真知灼見?!?/p>
JetBrains 的 Java 開發(fā)人員倡導(dǎo)者 Mala Gupta 表示:“Java 22 捆綁包特性讓我感到驚嘆,該產(chǎn)品的受眾面很廣泛,包括了從學(xué)生到高級開發(fā)人員,再從愛探險(xiǎn)的 Java 愛好者到追求性能穩(wěn)定的組織。Java 采用了極簡主義理念,持續(xù)通過實(shí)例主要方法和隱式類來簡化編寫初始代碼的‘儀式’,讓大家可以更輕松地開始學(xué)習(xí) Java。通過重塑構(gòu)造器 (statements before super[…]),Java 再次證明了其對負(fù)責(zé)任的創(chuàng)新的支持,在不破壞現(xiàn)有的代碼的情況下,放寬了自 Java 1.0 版本以來的語言約束,這一點(diǎn)非常令人興奮。IntelliJ IDEA 2024.1 已準(zhǔn)備好支持 Java 22 的特性,以便 Java 開發(fā)人員可以輕松使用這些功能。”
甲骨文公司企業(yè)云原生Java工程副總裁 Tom Snyder 表示:“虛擬線程一經(jīng)發(fā)布,Helidon 團(tuán)隊(duì)就意識到了它們的價(jià)值。借助 Helidon 4,該團(tuán)隊(duì)重寫了 Helidon Web 服務(wù)器,以原生使用虛擬線程,從而提高了性能和開發(fā)人員的生產(chǎn)力。有了 Java 22,我們看到虛擬線程再一次實(shí)現(xiàn)了性能提升,讓所有 Helidon 用戶都可以從顯著的進(jìn)步中受益。”
Oracle 產(chǎn)品管理總監(jiān) Kuassi Mensah 表示:“與Java 創(chuàng)新的無縫集成正在幫助 Oracle 數(shù)據(jù)庫提供世界上先進(jìn)的數(shù)據(jù)庫技術(shù),用于開發(fā)和運(yùn)行現(xiàn)代應(yīng)用。Oracle Java Database Connectivity (JDBC) 驅(qū)動程序已被重寫,可以無縫支持 Java 虛擬線程。 Java 虛擬線程與 Oracle Database 23c 中新的管道數(shù)據(jù)庫操作的結(jié)合有助于提高 Java 應(yīng)用程序端到端的可擴(kuò)展性。”