隨著Java在2024年9月17日實現(xiàn)其第23個主要版本,開發(fā)人員將享受許多新功能和改進。Oracle的最新版本承諾使開發(fā)更加高效和愉快,同時增強平臺的性能、穩(wěn)定性和安全性。讓我們深入探討開發(fā)人員在Java 23中應(yīng)該感到興奮的關(guān)鍵方面。
六個月的發(fā)布節(jié)奏仍在繼續(xù)
Oracle堅持Java的六個月發(fā)布周期,現(xiàn)在已經(jīng)是第七年了。這種方法成功地為Java生態(tài)系統(tǒng)提供了定期更新和創(chuàng)新。長期支持(LTS)版本每兩年發(fā)布一次,為喜歡較少更新的企業(yè)提供穩(wěn)定性。Java 23標(biāo)志著這六個月節(jié)奏中的第14個版本。
Java 23關(guān)注幾個關(guān)鍵領(lǐng)域:
1.語言改進
Java 23繼續(xù)發(fā)展語言本身,致力于使Java更容易被較小的程序和腳本訪問,同時保持其在大規(guī)模應(yīng)用程序中的優(yōu)勢。
模式、實例和開關(guān)中的基本類型(預(yù)覽):JEP 455
該特性旨在通過使語言更加統(tǒng)一和更具表現(xiàn)力來提高Java編程的生產(chǎn)率。它消除了模式匹配、實例和開關(guān)語句中對基本類型的限制,通過在所有上下文中允許基本類型模式來增強模式匹配。
模塊導(dǎo)入說明(預(yù)覽):JEP 476
此功能使開發(fā)人員能夠快速輕松地導(dǎo)入模塊導(dǎo)出的所有包,而不需要導(dǎo)入代碼在模塊中。這簡化了模塊化庫的重用,并幫助初學(xué)者更容易地使用第三方庫和基礎(chǔ)Java類。
隱式聲明的類和實例主方法(第三次預(yù)覽):JEP 477
這個特性還在繼續(xù)發(fā)展,為Java編程提供了一個平滑的入口。它允許學(xué)生和開發(fā)者編寫他們的第一個程序,而不需要理解為大型程序設(shè)計的語言特性。
靈活的構(gòu)造器主體(第二次預(yù)覽):JEP 482
此功能允許語句出現(xiàn)在顯式構(gòu)造函數(shù)調(diào)用之前(例如super(..)或者this(..)).這給了開發(fā)人員更大的自由來表達(dá)構(gòu)造函數(shù)的行為,并保留了現(xiàn)有的保證,即構(gòu)造函數(shù)在類實例化期間以自頂向下的順序運行。
2.庫增強
Java 23包括幾個重要的庫更新:
類文件API(第二次預(yù)覽):JEP 466
這為解析、生成和轉(zhuǎn)換Java類文件提供了一個標(biāo)準(zhǔn)API,幫助開發(fā)人員在涉及字節(jié)碼操作的任務(wù)中提高生產(chǎn)率。
矢量API(第八個孵化器):JEP 469
該API允許開發(fā)人員表達(dá)矢量計算,這些計算在運行時可靠地編譯成受支持的CPU架構(gòu)上的矢量指令,與等效的標(biāo)量計算相比,有可能實現(xiàn)更高的性能。
流收集器(第二預(yù)覽版):JEP 473
Stream API的這一增強支持自定義中間操作,允許流管道以現(xiàn)有內(nèi)置中間操作不容易實現(xiàn)的方式轉(zhuǎn)換數(shù)據(jù)。這使得流管道更加靈活和富有表現(xiàn)力。
結(jié)構(gòu)化并發(fā)(第三次預(yù)覽):JEP 480
這個特性為結(jié)構(gòu)化并發(fā)引入了一個新的API,旨在簡化多線程編程。將在不同線程中運行的相關(guān)任務(wù)整合到一個工作單元中,有助于消除取消和關(guān)閉帶來的常見風(fēng)險。
作用域值(第三次預(yù)覽):JEP 481
這個特性支持在線程內(nèi)和線程間共享不可變數(shù)據(jù),旨在提高并發(fā)程序的易用性、可理解性、性能和健壯性。
3.工具更新
減價文件注釋:JEP 467
這個特性使得Javadoc文檔注釋可以用Markdown編寫,而不僅僅是用HTML和Javadoc @-標(biāo)記編寫。這一改變使得開發(fā)人員更容易以源代碼形式編寫和閱讀API文檔注釋。
4.運行時優(yōu)化
ZGC:默認(rèn)世代模式:JEP 474
Java 23將Z垃圾收集器(ZGC)的默認(rèn)模式切換到世代模式。這一變化減少了支持兩種不同模式所需的資源和維護成本,并有望提高許多應(yīng)用程序的效率。
Graal JIT編譯器集成
從Java 23開始,Oracle將Graal JIT編譯器作為一個選項包含在Oracle JDK中。這種集成允許開發(fā)人員輕松地在JIT編譯器之間切換,對于某些工作負(fù)載,尤其是那些需要更快啟動時間的工作負(fù)載,可能會獲得性能優(yōu)勢。
5.完整性特征
反對sun . misc . unsafe for Removal:JEP 471中的內(nèi)存訪問方法
這一變化有助于開發(fā)人員了解他們的應(yīng)用程序何時直接或間接地依賴于sun.misc.Unsafe,計劃在未來的版本中刪除。這是Oracle不斷努力提高Java平臺安全性和完整性的一部分。
Java和人工智能
雖然不是特定于Java 23,但值得注意的是,人工智能在Java生態(tài)系統(tǒng)中的重要性日益增加。Oracle為Java和AI制定了三管齊下的戰(zhàn)略:
1. 與企業(yè)數(shù)據(jù)和云服務(wù)的集成包括OCI人工智能服務(wù)和OCI Java SDK。
2. 讓Java平臺更好地適用于原生AI涉及到原生Java框架,如Tribuo、LangChain4j和CoreNLP。
3. 將業(yè)務(wù)邏輯連接到本地AI庫:這是通過Panama和GraalPy這樣的項目實現(xiàn)的。
Java正在進行的許多項目,如Project Valhalla和Project Panama,都很好地符合人工智能和機器學(xué)習(xí)工作負(fù)載的需求。這些項目旨在通過值類型、更好的本機互操作性和矢量API來提高Java的性能,所有這些對于人工智能開發(fā)都是至關(guān)重要的。
Java管理服務(wù)和Oracle Java SE通用訂閱
除了Java 23,Oracle還發(fā)布了Java管理服務(wù)(JMS) 9.0,這是一項Oracle云基礎(chǔ)設(shè)施(OCI)本地服務(wù),提供統(tǒng)一的控制臺和儀表板,幫助組織管理本地或任何云中的Java運行時和應(yīng)用程序。
Oracle Java SE Universal Subscription提供了一流的支持,包括對整個Java產(chǎn)品組合的分流支持、Oracle GraalVM的授權(quán)、Java SE Subscription Enterprise Performance Pack、JMS高級功能的訪問,以及按照客戶業(yè)務(wù)步伐進行升級的靈活性。
展望未來:JavaOne 2025
甲骨文宣布JavaOne回歸,這是全球Java社區(qū)的旗艦活動。JavaOne大會2025將于2025年3月17日至20日在加利福尼亞州紅木海岸舉行。該活動將讓開發(fā)人員了解最新的Java開發(fā),并與Oracle的Java專家和行業(yè)名人進行互動。
這對開發(fā)者意味著什么
Java 23代表了語言和平臺向前邁進了一大步。開發(fā)人員應(yīng)該記住以下幾點:
簡化編碼:像隱式聲明的類和實例main方法這樣的特性將使編寫小型Java程序和腳本變得更加容易。
改進的性能:隨著ZGC的改進和Graal JIT編譯器的集成,應(yīng)用程序可以獲得更好的性能和更可預(yù)測的行為。
增強的工具:對文檔的新的Markdown支持和對開發(fā)工具的持續(xù)改進將使使用Java變得更加容易。
平臺完整性:雖然取消不安全的API可能需要一些代碼調(diào)整,但它最終會帶來一個更安全、更穩(wěn)定的平臺。
人工智能就緒:Java的持續(xù)改進使其成為越來越可行的人工智能和機器學(xué)習(xí)工作負(fù)載平臺。
更好的庫支持:Stream API的增強和Vector API的引入為開發(fā)者提供了更強大的工具。
改進的并發(fā)性:結(jié)構(gòu)化并發(fā)和作用域值特性(盡管仍在預(yù)覽版中)有望使Java中的并發(fā)編程更易于管理,更不容易出錯。
結(jié)論
Java 23延續(xù)了語言深思熟慮的進化傳統(tǒng),在創(chuàng)新與兼容性之間取得了平衡。這些新功能和改進表明,Oracle致力于在不斷變化的技術(shù)環(huán)境中保持Java的相關(guān)性和影響力。無論您是從事大型企業(yè)應(yīng)用程序、小型腳本還是尖端的人工智能項目,Java 23都能為每個Java開發(fā)人員提供有價值的東西。
自2024年9月17日發(fā)布之日起,鼓勵開發(fā)人員嘗試預(yù)覽版本,對新功能提供反饋,并為即將到來的更改準(zhǔn)備代碼庫。憑借其創(chuàng)新性和穩(wěn)定性的融合,Java 23正在成為世界上最受歡迎的編程語言之一發(fā)展過程中的另一個重要里程碑。