作者 | InfoQ 編輯部 譯者 | 明知山
這份報告總結了 InfoQ Java 編輯團隊對目前 Java 領域技術采用和新興趨勢的看法。我們關注 Java 及相關的語言(如 Kotlin 和 Scala)、Java 虛擬機(JVM),以及基于 Java 的框架和工具。我們討論了 Core Java 的趨勢,比如新版本 Java 的采用,以及 Spring Framework、Jakarta EE、Quarkus、Micronaut、Helidon、MicroProfile 和 MicroStream 等框架的演進。
你也可以收聽相關的 播客,了解有關 2023 年 Java 趨勢的內容。
這份報告有兩個主要目標:
幫助技術領導者做出中長期的技術投資決策。
幫助個體開發者選擇在哪些領域投入寶貴的時間和資源去學習和發展技能。
這是我們發布的第五份 Java 趨勢報告。自 2006 年以來,我們一直在內部追蹤 Java 和 JVM 的發展趨勢,這個主題也有了大量的新聞報道。
為了幫助開發者通過 InfoQ 和 QCon 了解當前和未來的技術發展趨勢,我們采用了由 Geoffrey Moore 在他的 《跨越鴻溝》 一書中提出的“跨越鴻溝”模型。我們試圖識別符合 Moore 所謂的早期市場的想法,這個早期市場的“用戶群體由技術愛好者和有遠見的人組成,他們希望在機遇或潛在問題出現之前就提前行動”。
與我們在 2022 年、2021 年、2020 年 和 2019 年 發布的 Java 趨勢報告一樣,我們也提供了 2023 年的內部主題圖:
作為比較,這是我們 2022 年的內部主題圖:
除了在 創新者 類別中出現了幾種新技術之外,其他值得注意的變化如下。
Java 17+ 被重新歸類為 Java 17,仍處于 早期采用者 階段,因為有更多的框架將 Java 17 作為基線。Java 21 已被列入 創新者 階段。
我們創建了一個新的標簽 Fast JVM Startup,進一步細分為 Fast JVM Startup (CRaC)( 創新者 階段)和 Fast JVM Startup (GraalVM)(早期采用者 階段)。這是因為這些相對較新的技術近來已經被引入到 Java 社區中。
以下是 InfoQ Java Queue 編輯和 Java Champions 針對各種主題的討論摘要。參與者包括:
Michael Redlich,Garden State Java User Group 負責人,InfoQ Java Queue 主編。ExxonMobil Technology & Engineering Company 退休高級研究技術員;
Johan Janssen,ASML 軟件架構師,InfoQ Java Queue 編輯;
Ixchel Ruiz,Linux 基金會大使;
Alina Yurenko,Oracle Labs GraalVM 開發者布道師;
Rustam Mehmandarov,Computas AS 首席工程師。
除此之外,我們還要感謝為我們的 2023 年“跨越鴻溝”模型提供意見的 Java Queue 編輯們:
Ben Evans,Red Hat 高級首席軟件工程師,InfoQ Java Queue 編輯和 Java Champion;
Erik Costlow,產品管理高級總監和 InfoQ Java Queue 編輯;
Karsten Silz,資深全棧 Java 開發者和 InfoQ Java Queue 編輯;
Olimpiu Pop,mindit.io 首席技術官;
Bazlur Rahman,軟件工程師和 Java Champion;
Shaaf Syed,Red Hat 高級首席技術營銷經理。
我們相信這份摘要提供了更多的背景信息,解釋了我們在內部主題圖中對某些技術進行歸類的原因。
GraalVM/Cooridanted Restore at Checkpoint (CRaC)
Janssen:GraalVM 和 CRaC(Coordinated Restore at Checkpoint)在減少 Java 應用程序啟動時間方面的改進令人印象深刻。GraalVM 的持續改進非常棒,而且與許多框架的集成使得在應用程序中使用原生鏡像變得更容易。除了原生鏡像支持外,GraalVM 還提供了一個 Java 運行時引擎,可以用來替換供應商的 JVM,用戶可能只需通過更換運行時就可以為應用程序帶來更好的性能。
Redlich:除了 JDK 20 和 JDK 21 的發布之外,我認為最重大的變化來自 Oracle Labs 和 GraalVM。在過去的一年中,我們看到了:GraalVM 的部分技術被貢獻給了 OpenJDK;創建了 Project Galahad,該項目將專注于 Graal 即時(JIT)編譯器的開發和集成,作為替代現有 HotSpot JIT 編譯器的可能選項,并納入到未來的 OpenJDK 發布中;GraalVM 的發布與 OpenJDK 的發布保持一致;取消 GraalVM Enterprise,采用了新的許可。
Java 17 及其他
Ruiz:發布節奏以更易被接受的方式帶來了新特性,不同的用戶可以自行選擇體驗它們。總的來說,人們對進行早期測試和提供更豐富的反饋保持著良好的心態。
某種程度上,這也簡化了 Java 生產版本的更新路線圖。可預測性有助于更好地協調開發團隊。
Yurenko:我看到對最新 Java 版本的采用速度在加快。我經常在技術大會上聽到有人討論這方面的內容,在我收到的問題中也有所體現,也反映在了 GraalVM 團隊去年進行的 GraalVM 社區調查 中——63% 的用戶已經在使用 Java 17 或更高版本。
Mehmandarov:今年發布了 Java 20 和 Java 21。其中一些關注度最高的特性是 Record Patterns 和 Pattern Matching for switch,它們終于結束了預覽狀態。對于處理大量數據和簡化代碼來說,這些可能是令人感到興奮的特性。
原生 Java (GraalVM/Spring Native/Project Leyden)
Yurenko:我看到很多項目和庫都在采用 GraalVM,特別是 Native Image。Spring Boot 現在支持 開箱即用的 Native Image,還有其他流行的 Java 框架,我看到 許多庫 也已添加了對 Native Image 的支持。
初學者的 Java
在 JDK 21 中發布的 JEP 445(Unnamed Classes and Instance Main Methods (Preview) 受 2022 年 9 月發表的博文 Paving the on-ramp 的啟發,該文由 Oracle Java 語言架構師 Brian Goetz 撰寫。這個特性將“讓學生在不需要理解為大型程序設計的語言特性的情況下編寫他們的第一個程序”。
JEP 463(Implicitly Declared Classes and Instance Main Methods (Second Preview))最近從 JEP Draft 8315398 進入到 Candidate 狀態,我們預計它將在 JDK 22 中發布。這個 JEP 之前叫Unnamed Classes and Instance Main Methods (Preview)、Flexible Main Methods and Anonymous Main Classes (Preview)和Implicit Classes and Enhanced Main Methods (Preview),根據對 JEP 445 的反饋做了增強。Oracle 技術顧問團隊成員 Gavin Bierman 發布 了針對 Java 社區評審的 規范文檔 初稿。
Yurenko:與此相關的另一個趨勢是,Java 對于初學者來說變得更加易用。我認為對于社區來說,保持對初學者(無論是學生還是行業新人)的開放和歡迎態度非常重要。Records、Pattern Matching、Unnamed Classes 和 Instance Main Methods 等特性可以讓初學者更快地學習 Java,更輕松地開發他們的第一個應用程序,并變得更加高效。
Java 社區在說些什么
Ruiz:社區反應激烈,許多人在關注 Java 21 的發布。自首次預覽以來,Project Loom 就一直吸引著許多開發者,特別是虛擬線程和結構化并發。
其他一些人在關注 JVM 的進展,這些進展并不只局限于 Java 語言本身的語法變化。
對于從 Java 8 到新版本的遷移計劃,人們的態度是“現在或永遠不”!
Yurenko:我最近看到了一種有趣的分析社區發展趨勢的方法—— Vaadin 開發者關系副總裁 Marcus Hellberg 分析了 2023 年的 4 個主要 Java 大會上的演講內容。你可以自行查看這篇文章,以下是我的一些結論:
微服務和 Kubernetes 仍然是最熱門的話題;
AI 和 ML 排名第三,證實了這個話題有多熱門;
很多人對框架相關的演講內容很感興趣,在這份報告中提到的是 Spring Boot 和 Quarkus;
對我來說有些意外的是安全話題排名第五。
我看到的另一個趨勢是關于縮短 JVM 應用程序啟動時間和提升性能的討論,這說明我們正在做的事情是對的。
Mehmandarov:最近,人們圍繞 虛擬線程 進行了許多討論,這個特性終于在 Java 21 中結束了預覽狀態。我們還看到了更多的生成式 AI 的發展和應用(特別是用于代碼生成)。它的成熟度仍然有待提升,但這是一個令人興奮的開始。我們還看到了更多用于 AI 和 ML 的 Java SDK 或框架的演進,例如 Semantic Kernel、Deeplearning4J、djl 和 Tribuo。
Janssen: Java 生態系統仍在蓬勃發展,有許多新的發展和改進。除了已經提到的內容外,還有一些有趣的發展,主要集中在 AI 方面。我們看到了像 Spring AI 這樣的項目出現,在所有基于 Python 的解決方案之外提供了另一種選擇。除了這些大熱門話題之外,還有許多其他有趣的項目,比如 Spring Modulith,它現在是一個官方的 Spring 項目,用于創建更好的單體應用而不是微服務。
Redlich: 我在 2023 年聽到和看到的大部分熱議都集中在 Project Loom 上。特別是 虛擬線程 最終成為 JDK 21 的一個特性。在這個備受矚目的 2023 年 9 月版本發布之前,有許多關于虛擬線程的演示和 YouTube 視頻。在 2023 年 9 月于紐約舉行的特別 Java Community Process (JCP) 25 周年慶典 上,JCP 執行委員會成員組成的小組表示,他們最喜歡的 JDK 21 特性就是虛擬線程。
令人感到意外和興奮的新趨勢是什么
Ruiz: 鑒于人們對 LLM、ML 和 AI 的關注,看到一些為特定應用場景、工作流和產品而生的新項目、庫和 Java API,我并不會感到驚訝。
Mehmandarov: 如果我不得不選擇一個趨勢,那就是生成式 AI,特別是它更加專注于代碼生成。盡管生成的代碼中存在邏輯錯誤、幻覺和其他問題,但它仍然可以被歸入“意外、新穎和令人感到興奮”的范疇。
Janssen: 看到了 Java 21 中有許多新特性,例如來自 Project Loom 的虛擬線程。我有點擔心其中一些特性會被推遲到以后的 Java 版本中。由于 Java 21 是新的長期支持 (LTS) 版本,很高興它們被包括在內,因為許多公司只使用 LTS 版本。乍一看似乎沒有移除大的東西,我希望這能讓項目的升級更加容易一些。現在通過 OpenRewrite 進行升級會更加容易,它不僅可以自動升級 Java,還可以升級第三方庫, 如 JUnit。
Redlich: 正在開發的 MicroProfile JWT Bridge 規范是 Jakarta EE 和 MicroProfile Working Groups 的合作成果。這個新規范可以讓開發者在 MicroProfile JWT Authentication 規范的基礎上構建 Jakarta Security 應用程序,它提供了無縫的集成,可以避免重復的工作和循環依賴。這項工作的目標是將 MicroProfile JWT Authentication 的可選部分連同 TCK 移至新規范中,并為 MicroProfile 7.0 做好準備。
Java 領域最令你感到激動的是什么
Ruiz:JVM 領域 CLI 工具的復蘇。我們已經看到了一些成熟的項目,解決或減少了開發者在體驗、測試、發布和發布工具、項目和產品時出現的問題。JBang 和 JReleaser 就是這一系列復蘇工具的一部分。
Yurenko:我每天都會看到許多新項目的出現。例如,AI 和 ML 可能是目前最熱門的趨勢,對于 Java 開發者來說,這個領域有很多機會。我最喜歡的一個項目是 Tribuo,這是由我在 Oracle Labs 的同事開發的一個開源 ML 庫。OpenJDK 項目 Valhalla 和 Panama 也將極大為面向 AI 開發的 Java 開發者提供便利。
Mehmandarov:這個領域有許多令人激動的事情,一些是新出現的,一些是即將到來的,比如 String Templates(仍處于預覽狀態)以及支持機器學習和 Java 的各種庫,還有一些相對成熟但仍在不斷改進和添加新特性的項目,比如針對 Java 的云原生棧(比如 Jakarta EE 和 MicroProfile)。
在處理大型數據集方面,我也看到了更多類似 Data-Oriented Programming in Java 的概念,以及更多關于更高內存使用效率的改進,比如 Project Lilliput 和 Valhalla 中的值對象。
此外,我很高興能夠與全球 Java 社區進行互動。這是一個真正充滿活力和支持的團體,他們渴望學習并分享他們的知識。
Redlich:我準備了一個叫作“Jakarta EE 11:超越 Java EE 時代”的演講,從 2023 年 11 月開始。自 2018 年以來,Jakarta EE 的發展令人驚嘆,研究 Jakarta EE 規范一直是一件很棒的事情。
Java 社區
Janssen:我們每年都會得到兩個新的 Java 版本,包含了許多特性和工具、庫和框架的改進。除此之外,我很高興看到能夠再次舉辦 Java 或 JVM 技術大會并吸引更多的與會者。因此,請大家確保參加了這些大會,了解更多關于 Java 發展的信息,并與其他開發者一起參與討論。
結論
需要注意的是,我們的討論參與者只告訴了我們故事的一部分,Java 生態系統的不同群體、部分和地區可能有不同的觀點。我們發布的 2023 年趨勢報告應該被視為討論的起點,而不是確定性的陳述。當然,也可以作為一個關于行業發展方向的開放性討論的邀請。
審核編輯:黃飛
-
JAVA
+關注
關注
19文章
2966瀏覽量
104702 -
虛擬機
+關注
關注
1文章
914瀏覽量
28160
原文標題:InfoQ 2023 年趨勢報告:Java 篇
文章出處:【微信號:AI前線,微信公眾號:AI前線】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論