Categories
程式開發

InfoQ Java趨勢發展報告(2020年9月)


本文要點

  • 雲部署和容器化是IT行業的大趨勢,Java也不例外。
  • GraalVM和靜態編譯是加速雲計算發展的關鍵構建模塊。 Leyden計劃可能是這一趨勢的一個新方向,但還處在早期階段。
  • Quarkus吸引了很多關注,並很快進入早期採用者階段。在某種程度上,它描繪了行業的其他趨勢,並將它們打包成一個更容易使用的版本,滿足應用程序的各種場景。
  • Java 11的生產部署已經達到了約20%,Java 8佔據了市場的其餘份額,但沒有大規模部署非LTS版本。

InfoQ Java趨勢發展報告(2020年9月) 1

這篇文章總結了InfoQ編輯團隊如何看待Java技術的採用情況和新興趨勢。我們主要關注Java及其相關語言,如Kotlin和Scala、Java虛擬機(JVM)以及基於Java的框架和實用程序。我們將討論Java的發展趨勢,比如Java新版本的採用,以及相關框架(如Quarkus和MicroProfile等)的發展。

本報告有兩個主要目的:

  • 協助技術主管作出中長期技術決策。
  • 幫助個人開發者將寶貴的時間和資源投入到有價值的學習和技能發展中去。

這是我們發布的第二份Java趨勢報告。從2006年InfoQ發布趨勢報告以來,這個話題已經得到了大量的報導,我們已經在內部跟踪Java和JVM發展趨勢很多年了。你可以在這裡找到2019年的報告。

為了幫助InfoQ(和QCon)把握當前和未來的趨勢,我們使用了Geoffrey Moore在他的《跨越鴻溝》一書中所倡導的技術採用模型。

我們試著找出符合摩爾所謂的早期市場的想法。早期市場“用戶由技術愛好者和有遠見的人組成,他們想要抓住機會或者解決迫在眉睫的問題”。

我們能夠觀察到的是已經跨越到主流採用的市場。當然,這有點難以定義,而且局部市場的差異確實存在。在某個行業或某個局部市場,一項技術可能被放在採用曲線上的一個點上,而在另一個地方則被放置在一個完全不同的點上。

例如,那些積極推動無服務器和FaaS技術的公司很可能在探索和採用一些技術方面走得更遠,比如Java靜態編譯和其他承諾可以縮短啟動時間和減少佔用空間的技術。

從去年到現在,最值得關注的一些變化包括Oracle Java二進製文件的使用量急劇下降。這也許是意料之中的——去年Oracle在支持和發布模型方面所做出的變化還沒有被反映到趨勢報告中,不過我們有整整一年的時間來評估它的影響。

可以看到,市場並沒有選擇甲骨文每6個月的升級發布週期,而是固定在了LTS版本——也就是Java 8和Java 11。由於Oracle在發布後的6個月內不提供免費的Java二進製文件,市場越來越多地轉向非Oracle二進製文件提供商——AdoptOpenJDK是主要受益者,其次是Azul和Amazon。

另一個引人注目的行業大趨勢是:幾乎所有的東西都以更快的速度進入雲計算領域。這方面的勢頭一直很猛,而現在更加明顯了。新冠疫情對這個行業的影響無疑是其中的一個因素。

這不僅可以從AWS和其他雲供應商採用量的增加看出來,也可以從容器化工作負載的崛起和希望使用資源佔用更少的服務的願望中看出來。 Quarkus、Microaut和Spring Boot等框架的流行程度也體現出了這一點。它們都是基於雲計算的,對Kubernetes很友好,而且都越來越流行,儘管還沒有出現一個明確的市場領導者。

下面是我們內部使用的2019年趨勢圖,2020年的在文章頂部。

InfoQ Java趨勢發展報告(2020年9月) 2

參與本次討論的人員包括:

  • Ben Evans——InfoQ Java首席編輯
  • 烏代塔提拉茹
  • 埃里克·科斯特洛
  • 邁克·雷德利希(Mike Redlich)

下面是幾位InfoQ Java編輯和Java Champion之間的一個討論總結,它為我們在趨勢圖上對某些技術的推薦定位提供了更多的背景參考。

GraalVM

Justin Lee(Red Hat首席工程師):

我認為直接使用GraalVM對於大多數企業來說門檻相當高,而通過Quarkus或Micronaut來使用GraalVM可能是一條比較好的路徑,因為它們處理掉了很多細節問題。

Johan Vos(Gluon聯合創始人):

我們利用GraalVM原生鏡像創建原生移動和嵌入式App。

Java開發人員編寫100%的Java和JavaFX代碼,所有代碼、依賴項、本地庫、資源都被編譯、鏈接、打包成一個IPA或APK,可以上傳到應用商店(或用於私有網絡)。

在移動設備上,GraalVM原生鏡像有一個巨大的優勢,因為它允許在iOS上使用Java。此外,對於移動設備來說,啟動時間非常重要,我看到它們的啟動時間是非常驚人的。

Roy van Rijn(OpenValue總監):

我們已經在生產環境中試驗過GraalVM(作為原生Docker鏡像)。對於一個簡單的CRUD Micronaut服務來說,它運行得非常好。對於較大的服務(使用Spring Boot和MQ/消息傳遞),大約在一年前我們就遇到了問題。不過,這方面的創新進展很快。

隨著Spring GraalVM Native新版本的發布,我們向backlog中添加試驗性的東西,進行概念驗證。我們目前的設想是將所有服務都轉換為GraalVM原生鏡像。速度(尤其是雲端啟動時間)和內存使用將是我們的一大優勢。

誇庫斯

Emmanuel Bernard(Red Hat傑出工程師):

我們看到的主要應用是Quarkus微服務(不是鬧著玩的那種)和一些作為服務的函數。

我看到的主要是新開發的服務、從其他微服務進行移植或者一些企業決定重新選擇他們的應用程序開發技術棧(包括在必要時放棄Java)。
我们也看到人们从遗留应用程序中拿出一些东西,并加入了一些新东西,而Quarkus显著掩盖了GraalVM原生镜像的短板。

Erik Costlow (InfoQ Java編輯):

Quarkus選取了Jakarta EE最好的部分、GraalVM最好Jakarta部分以及雲最好的部分,並將它們組合在一起。這個框架可以快速重載,自動創建無服務器容器,並通過插件生態系統連接到其他系統。最重要的是,它的文檔對每個插件進行了清晰的描述,讓新項目和現有項目的使用更加容易。

我最喜歡的一點是,Quarkus提供了一個堅實的基礎,讓開發人員能夠專注於自己的代碼或應用程序,而不是把時間花在其他工作上,比如如何與資源交互。開發人員有權利但沒有義務深入研究這些東西。

Java 11

Uday Tatiraju(Oracle技術主管):

在過去的8個月裡,我和我的團隊利用JDK 11和JPMS重新設計和開發了整個搜索平台。當然,在使用JPMS時,我們需要解決在第三方庫中存在的一些問題,比如拆分打包、反射、不安全代碼。

JDK 11有很多優點,它幫我們減少了對第三方庫的依賴。例如,JDK中的HTTP客戶端庫提供了豐富的特性,消除了我們對Apache HTTP客戶端庫的依賴。
我們也看到JDK 11的採用在增加,至少在Oracle的其他團隊中是這樣的。而且,很多流行的第三方框架和庫,如Tomcat、ZooKeeper、SLF4J等,現在都支持JDK 11和JPMS。

Ben Evans(New Relic首席工程師、InfoQ Java板塊負責人):

我們針對客戶生產系統發送出來的數據進行了研究,結果表明(截至目前),大約20%的客戶在生產環境中使用Java 11,而Java 8佔據了市場的絕大多數。 Java 7和之前版本大約是1%到2%,比所有非LTS版本加起來還要多。

轉向OpenJDK的趨勢正在形成,這也是我們今年看到的一個更大的趨勢。 AdoptOpenJDK——現在更名為Eclipse Adoptium——是Java 11和OpenJDK的標準發行版,它們從Oracle那里奪走了大量的市場份額。
OpenJDK 11是一個很棒的發行版,我們一直在內部將其用於後端服務。

Brian Vermeer(Snyk開發者佈道師、VirtualJUG聯合負責人):

在我們去年2月發布的《2020年JVM生態系統報告》(基於對開發者的網絡調查)中,我們可以清楚地看到,在生產環境中,大約有25%的人正在使用Java 11。然而,值得注意的是,大多數人仍然在使用Java 8。大多數人(55%)的計劃是堅持使用LTS版本——但是22%的受訪者表示他們也在考慮是否採用短期升級版本。開發人員不願升級到新版本的原因很簡單,因為當前的版本對他們來說已經足夠好了。

根據我們的研究,雖然Oracle JDK仍然占主導地位,但出現了一個轉向其他OpenJDK供應商的趨勢。四分之一的開發人員選擇了AdoptOpenJDK發行版。
儘管到目前為止Java仍然是主要的JVM編程語言,但Kotlin的採用也在急劇增加。現在,Koltin已經是排名第二的JVM編程語言,超越了Scala和Clojure。這可能是因為Koltin與Java的無縫集成導致的。

Trisha Gee (JetBrains Java團隊負責人):

我確實看到了採用Java 11的人數在增加(我們的調查顯示,Java 11的使用率比去年增加了10%,這個比例有點奇怪,那是因為開發人員使用的JVM不止一個,所以加起來不是100 %)。所有的調查和傳聞證據都表明,相當一部分開發者在使用Java 11。

除此之外,我要說的是,一些Java開發者仍然堅定地信奉Java 8。他們當中有很多人止步不前,因為他們沒有使用現代框架,比如Spring Boot等等(Spring Boot是目前最受歡迎的框架),被困在一些舊應用程序服務器上,它們需要“上帝的許可”才能進行升級(你知道這有多難)。其他還沒有形成趨勢的:人們沒有使用模塊系統或者沒有遷移到模塊系統,不過這對於企業來說是可以接受的。另一方面,模塊化和Java 9似乎並不妨礙遷移到Java 11。

微輪廓

Mike Redlich (InfoQ Java編輯):

MicroProfile提交者一直在為MicroProfile Specification Process組建MicroProfile工作組,所以MicroProfile 4.0的發布被推遲了,該版本原本計劃9月份發布。

以上觀點只講述了故事的一部分——Java生態系統不同部分的體驗可能也是非常不一樣的。我們的文章所表達的觀點起到的是拋磚引玉的作用,而不是一種明確的聲明,它們可以被視為一種邀請,讓大家一起來公開討論這個行業的發展方向。

作者介紹:

本·埃文斯是JVM性能優化公司jClarity的聯合創始人。他是LJC(倫敦JUG)的組織者,也是JCP執行委員會成員。 Ben是Java Champion、3次榮獲JavaOne Rockstar 演講者。他是《Java程序員修煉之道》(The Well-Grounded Java Developer)、新版《Java in a Nutshell》和《優化Java》的作者。他經常發表與Java平台、性能、架構、並發、初創等主題相關的演講。

Ben Evans將在11月4至11月18日的QCon更多虛擬會議上主持“Java:在一個成熟的軟件生態系統中提供持續創新”。我們將探討在一個成熟的軟件生態系統中持續交付重大創新意味著什麼,以及Java如何在雲計算、容器和一個比以往更加多樣化的軟件世界裡蓬勃發展。點擊這裡了解更多相關信息。

烏代塔提拉茹是Oracle公司的技術主管和首席工程師,在電子商務平台、搜索引擎、後端系統、網絡和移動編程方面有超過十年的經驗。

邁克爾·雷德里奇是新澤西州克林頓市埃克森美孚研究與工程公司的高級研究技術員,在過去的30年裡,他開發過自定義科學實驗室和Web應用程序。他還在Ai-Logix公司(現為音頻代碼)擔任技術支持工程師,為客戶提供技術支持和開發電話應用程序。他的技術專長包括面向對象設計和分析、關係數據庫設計和開發、計算機安全、C/C++、Java、Python和其他編程/腳本語言。近來,他對MicroProfile、Jakarta EE、Helidon、Micronaut和MongoDB很感興趣。

埃里克·科斯特洛是一位擁有豐富Java經驗的軟件安全專家。他負責管理Contrast Security和公共社區版的開發者關係。 Contrast將傳感器編織到應用程序中,讓它們能夠根據應用程序使用數據的情況來檢測安全威脅。 Erik曾經是Oracle負責Java 8安全的產品經理,他在黑客攻擊最嚴重的時候加入了公司,兩年後離開了公司,在這期間沒有出現0day漏洞。在那段時間裡,他了解了Java在企業/商業和社區層面的細節。他還協助Turbonomic的產品管理團隊在數據中心/雲性能自動化方面實現了1億美元的年收入。 Erik還負責Fortify靜態代碼分析器的產品管理工作,該工具幫助開發人員發現和修復自定義源代碼中的漏洞。 Erik還通過Packt發布了一些有關數據分析、統計和加密的開發者課程。

原文鏈接

Java InfoQ趨勢報告-2020年9月