InfoQ 2019 年 Java 發展趨勢報告

本文要點

  • 近期要發佈的Java 13(非LTS版本)進入創新者階段。
  • Java 11(LTS版本)進入早期採用者階段,Java 8進入晚期大衆階段。
  • 非HotSpot虛擬機採用率在增長,OpenJ9和Graal進入早期採用者階段。雲原生計算的發展在驅動着企業轉向遵循雲原生原則(啓動速度快、內存佔用低)的JRE。
  • 一般的開發者對Graal可能不太感興趣,但因爲它可以將Java編譯成本地庫,同時支持多語言,所以我們會進一步關注它。
  • Java微服務框架大洗牌,Spring Boot和Spring Cloud進入晚期大衆階段,它們已經成爲企業信任的Java微服務開發框架。Helidon和Microprofile進入早期採用者階段,不過我們認爲vert.x會因爲相對利基的市場無法跨過早期採用者階段。

在這份報告裏,InfoQ編輯團隊對Java生態系統的技術採用趨勢進行了分析,不僅涉及到了Java,還有其他相關的編程語言,比如Kotlin和Scala,以及Java虛擬機、基於Java的框架和庫。我們將討論Core Java的發展趨勢,比如Java 11和Java 13的採用情況,以及Web開發框架的演化,比如Spring Boot和Microprofile。

這份報告旨在爲技術負責人提供幫助,幫他們做出中長期的技術決策,同時也讓開發者知道該把寶貴的時間花在學習哪些技術上。這是我們第一次發佈Java趨勢報告,儘管InfoQ從2006年成立以來就一直在報道Java相關的主題,而且多年來也一直在內部跟蹤Java和JVM的發展趨勢。

InfoQ和QCon關注處於“創新者、早期採用者和早期大衆”階段的技術。我們嘗試找出符合Geoffrey Moore所謂的早期市場的技術。早期市場“客戶羣由技術愛好者和有遠見的人組成,他們希望走在機遇前面,解決迫在眉睫的問題”。我們也在尋找可能會“跨越鴻溝”以便得到更廣泛採用的技術。需要注意的是,技術在採用曲線上的確切位置可能會有所不同。例如,灣區公司目前廣泛採用Java 11,但在其他地方可能不是這種情況。

與2018年的內部Java趨勢圖相比,新趨勢圖在創新者階段新增了Java 13(非LTS版本)。這導致了一些列連鎖反應,Java 11(LTS版本)被移到了早期採用者階段,而Java 8被移到了晚期大衆階段。

我們看到了非HotSpot虛擬機的採用率在增加,OpenJ9和Graal進入了早期採用者階段。我們認爲,雲原生計算的發展驅動着各個企業轉向遵循雲原生原則(啓動速度快、內存佔用低)的JRE。一般的開發者對Graal可能不太感興趣,但因爲它可以將Java編譯成本地庫,同時支持多語言,所以我們會進一步關注它。

Java微服務框架大洗牌,Spring Boot和Spring Cloud進入晚期大衆階段。這表示它們的採用率增長正在減緩(因爲市場趨於飽和),而不是說開發者會棄用這些框架。Helidon和Microprofile進入早期採用者階段,不過我們認爲vert.x會因爲相對利基的市場無法跨過早期採用者階段。

以下內容整理自InfoQ Java板塊編輯的內部溝通郵件,提供了更多有關我們如何制定Java趨勢圖的背景信息。

Daniel Bryant,獨立技術顧問,Datawire產品架構師,InfoQ新聞板塊主管:

又到了更新Java趨勢圖的時間。我迫不及待地想要看到我們在2018年所跟蹤的技術是否出現在了趨勢圖正確的位置上,以及新增或移除了哪些技術。

首先是創新者階段的變化:

  • 將Java 11改爲Java 12/13;
  • 將OpenJ9移到早期採用者階段;
  • 加入Java模塊化系統;
  • 加入Quarkus。

早期採用者階段的變化:

  • 將Spock移到晚期採用者階段;
  • 將微服務框架移到晚期大衆階段,但Lagom和Microprofile除外?
  • 加入Helidon。

Erik Costlow,軟件架構師,專注於安全和Java領域:

  • 將Java 8移到落後者階段。Java 8是在2014年發佈的,Oracle已經不再爲它提供公共免費支持。

  • Java 11(LTS版本)仍然待在早期採用者階段;

  • Java 13(非LTS版本)進入創新者階段;

  • 開發者對Graal本身並不是很感興趣,但他們需要這些東西:

    • 可以將Java編譯成本地應用(本地鏡像);
    • 多語言支持(例如Ruby Truffle)。
    • Graal本地鏡像有一個問題——如果Java或其他JVM供應商也提供了靜態編譯那會怎樣?本地鏡像並沒有通過TCK。關鍵問題是其他JVM供應商可以這麼做嗎?如果他們這麼做了會怎樣?
  • 非HotSpot虛擬機除了Graal和OpenJ9,還有Excelsior、Azul、Liberica、Corretto、Alibaba Dragonwell、AdoptOpenJDK、RedHat,等等。

  • JVM上的Node已死。

  • 將測試框架移到早期大衆階段。

  • 將Spring Boot移到晚期大衆階段。

  • 將“Java EE到Jakarta EE的遷移“放在創新者階段,我覺得這會很有意思。

現在有太多的Java發行版。我希望在創新者階段能夠有與這個問題相關的內容:如何大規模管理這些發行版或者如何在不同團隊、系統之間管理好它們。如果一個應用程序可以被編譯成本地應用,那麼誰來負責給”JRE“打補丁?這又意味着什麼?

Dustin Schultz,首席軟件工程師,Pluralsight作者,技術佈道師:

我贊同關於創新者階段的說法。

但我不認爲Spock會跳出早期採用者階段,畢竟我還沒有看到它被大量採用。

除了Vertx,我會將其他微服務框架移出早期採用者階段……或許Lagom可以留下。我不確定它們在以後會不會跳出這個階段。

或許可以將Groovy移到晚期大衆階段,因爲它的表現太一般。

Charles Humble,InfoQ首席編輯:

我同意你們的大部分說法。Java模塊化系統採用也是一個很有趣的話題。我敢肯定OSGI擁護者對於將它放在創新者階段會有意見,但這樣做可能是對的。

我想可以將Clojure移到晚期大衆階段。當然,人們還在用它,但我感覺到它的使用量在下降,而且它本身面向的就是利基市場。

我會將Ceylon移掉。它一直以來都沒有獲得太多關注,而且我不認爲進入Eclipse會給它帶來多大幫助。這個項目的活躍度很低,過去6個月只有10個代碼提交。

測試框架的趨勢看起來相當穩定。我們要把它移掉嗎?從採用率來看,我給它們排個順序:JUnit、TestNG/Cucumber、Spock,但似乎變化不大?

SmartBear最近收購了Cucumber,可能會促進它的發展,但即使是這樣,我仍然傾向於把它們移掉。

人們似乎對JVM上的Node不感興趣?我想可以把它移掉。

我很想把Kotlin移到早期大衆階段,它是我近來最經常聽到的一門JVM編程語言,這要得益於Android開發的流行。可以說,它已經越過了鴻溝,但仍然落後於其他編程語言,比如Groovy、Swift或Go語言。

我覺得Scala可以留在晚期大衆階段,人們會逐步棄用它。

關於Java,我也不確定該怎麼說。我所知道的是,非LTS版本的採用量非常有限,它們或許可以被放在創新者階段,但很奇怪的是,它們當中有些已經進入EOL階段。不管怎樣,我認爲Java 8仍然處在晚期大衆階段,Java 11在早期採用者階段,Java 11在創新者階段?

Ben Evans,New Relic首席工程師,JVM技術架構師:

我非常贊同有關Java非LTS版本的說法。來自生產環境的數據表明,Java 11部署量很穩定,並有了5%左右的增長,我覺得它應該處在早期採用者階段。

Ceylon絕對可以移掉,它從來就沒有得到過足夠的關注,它的份額被Kotlin吃掉了。

Java 8應該留在早期大衆階段,現在仍然有很多服務是用Java 8開發的,還有很多主流產品(例如Cassandra)不支持Java 8以後的版本。我還沒看到有哪個主流產品放棄對Java 8的支持(但我相信ElasticSearch會是第一個)。

作者介紹

Ben Evans是JVM性能優化公司jClarity的聯合創始人之一。他是LJC(倫敦JUG)組織者和JCP執行委員會成員,幫助定義Java生態系統標準。Ben是Java Champion,三次JavaOne Rockstar演講者獲得者,“The Well-Grounded Java Developer”、新版“Java In a Nutshell”和“Optimizing Java”作者,定期提供Java平臺、性能、架構、併發、初創企業等話題相關的演講。

Erik Costlow是一位具有豐富Java經驗的軟件安全專家。他在Contrast Security從事開發者管理工作。Contrast公司專注於傳感器與應用程序的集成,讓它們能夠基於應用程序如何使用數據來檢測安全威脅。Erik還是Oracle的首席產品經理,主要負責Java 8的安全問題。他還協助Turbonomic產品管理團隊在數據中心/雲性能自動化方面實現了1億美元的年收入。Erik還負責Fortify靜態代碼分析器的產品管理,這是一個幫助開發人員發現和修復代碼漏洞的工具。Erik還在Packt Publishing的課程平臺上推出了幾門有關數據分析、統計和密碼學的課程。

Dustin Schultz是一名首席軟件工程師、Pluralsight作者和技術佈道師。他擁有計算機科學學士和碩士學位,從事軟件開發工作超過15年。Dustin熱愛一切與科技有關的事物。他也喜歡學習,總是對一切充滿了好奇心。他媽媽在他小時候給他買了一本有關“事物原理”的書,因爲她厭倦了他老是有問不完的問題。

Charles Humble於2014年3月接任InfoQ總編一職,指導我們的內容創作,包括新聞、文章、書籍、視頻演示和採訪。在成爲InfoQ全職員工之前,Charles負責Java板塊的報道工作,並擔任PRPi諮詢公司的首席技術官。這是一家薪酬研究公司,於2012年7月被普華永道收購。他當時在PRPi全面負責開發公司內部使用的軟件。作爲開發人員、架構師和開發經理,他在企業軟件領域工作了大約20年。在他還是一名業餘音樂愛好者。

Daniel Bryant是Datawire的獨立技術顧問和產品架構師。他的技術專長主要是“DevOps”工具、雲/容器平臺和微服務實現。Daniel是Java Champion,併爲幾個開源項目做出了貢獻。他還爲InfoQ、O’Reilly和TheNewStack撰寫文章,並定期出席OSCON、QCon和JavaOne等國際會議。他在空閒時間喜歡跑步、閱讀和旅行。

原文鏈接

Java InfoQ Trends Report - July 2019

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章