Java 已是一門具備 20 多年曆史的老牌語言,雄霸編程語言排行榜榜首多年的 Java 目前也面臨着愈來愈大來自新興語言的挑戰和使用者們的批評。InfoQ 英文站的編輯們按照技術採用生命週期的理論對 Java 在 2019 的發展趨勢作了分析,Java 老矣,Java 卻仍年輕。本文要點java
在這份報告裏,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 年所跟蹤的技術是否出如今了趨勢圖正確的位置上,以及新增或移除了哪些技術。編程語言
首先是創新者階段的變化:
早期採用者階段的變化:
Erik Costlow,軟件架構師,專一於安全和 Java 領域:
如今有太多的 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