2019 Java發展趨勢報告:Java老矣,Java正年輕

2019 Java發展趨勢報告:Java老矣,Java正年輕

Java 已是一門具備 20 多年曆史的老牌語言,雄霸編程語言排行榜榜首多年的 Java 目前也面臨着愈來愈大來自新興語言的挑戰和使用者們的批評。InfoQ 英文站的編輯們按照技術採用生命週期的理論對 Java 在 2019 的發展趨勢作了分析,Java 老矣,Java 卻仍年輕。本文要點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 會由於相對利基的市場沒法跨過早期採用者階段。


fc02e346b19f5e4e0b46b6033594d92b.jpeg


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

這份報告旨在爲技術負責人提供幫助,幫他們作出中長期的技術決策,同時也讓開發者知道該把寶貴的時間花在學習哪些技術上。這是咱們第一次發佈 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 新聞板塊主管:jvm

又到了更新 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 等國際會議。他在空閒時間喜歡跑步、閱讀和旅行。

原做者:Ben Evans、Erik Costlow、Dustin Schultz、Charles Humble
譯者:無明
原文連接: Java InfoQ Trends Report - July 2019
原出處: InfoQ

ea25b5822a20ead1099963ca08fb49f6.jpeg

相關文章
相關標籤/搜索