2019 Java发展趋势报告:Java老矣,Java正年轻
作者丨Ben Evans、Erik Costlow、Dustin Schultz、Charles Humble
譯者丨無(wú)明
Java 已經(jīng)是一門具有 20 多年歷史的老牌語(yǔ)言,雄霸編程語(yǔ)言排行榜榜首多年的 Java 目前也面臨著越來(lái)越大來(lái)自新興語(yǔ)言的挑戰(zhàn)和使用者們的批評(píng)。InfoQ 英文站的編輯們按照技術(shù)采用生命周期的理論對(duì) Java 在 2019 的發(fā)展趨勢(shì)做了分析,Java 老矣,Java 卻仍年輕。 本文要點(diǎn)近期要發(fā)布的 Java 13(非 LTS 版本)進(jìn)入創(chuàng)新者階段。
Java 11(LTS 版本)進(jìn)入早期采用者階段,Java 8 進(jìn)入晚期大眾階段。
非 HotSpot 虛擬機(jī)采用率在增長(zhǎng),OpenJ9 和 Graal 進(jìn)入早期采用者階段。云原生計(jì)算的發(fā)展在驅(qū)動(dòng)著企業(yè)轉(zhuǎn)向遵循云原生原則(啟動(dòng)速度快、內(nèi)存占用低)的 JRE。
一般的開發(fā)者對(duì) Graal 可能不太感興趣,但因?yàn)樗梢詫?Java 編譯成本地庫(kù),同時(shí)支持多語(yǔ)言,所以我們會(huì)進(jìn)一步關(guān)注它。
Java 微服務(wù)框架大洗牌,Spring Boot 和 Spring Cloud 進(jìn)入晚期大眾階段,它們已經(jīng)成為企業(yè)信任的 Java 微服務(wù)開發(fā)框架。Helidon 和 Microprofile 進(jìn)入早期采用者階段,不過(guò)我們認(rèn)為 vert.x 會(huì)因?yàn)橄鄬?duì)利基的市場(chǎng)無(wú)法跨過(guò)早期采用者階段。
在這份報(bào)告里,InfoQ 編輯團(tuán)隊(duì)對(duì) Java 生態(tài)系統(tǒng)的技術(shù)采用趨勢(shì)進(jìn)行了分析,不僅涉及到了 Java,還有其他相關(guān)的編程語(yǔ)言,比如 Kotlin 和 Scala,以及 Java 虛擬機(jī)、基于 Java 的框架和庫(kù)。我們將討論 Core Java 的發(fā)展趨勢(shì),比如 Java 11 和 Java 13 的采用情況,以及 Web 開發(fā)框架的演化,比如 Spring Boot 和 Microprofile。
這份報(bào)告旨在為技術(shù)負(fù)責(zé)人提供幫助,幫他們做出中長(zhǎng)期的技術(shù)決策,同時(shí)也讓開發(fā)者知道該把寶貴的時(shí)間花在學(xué)習(xí)哪些技術(shù)上。這是我們第一次發(fā)布 Java 趨勢(shì)報(bào)告,盡管 InfoQ 從 2006 年成立以來(lái)就一直在報(bào)道 Java 相關(guān)的主題,而且多年來(lái)也一直在內(nèi)部跟蹤 Java 和 JVM 的發(fā)展趨勢(shì)。
InfoQ 和 QCon 關(guān)注處于“創(chuàng)新者、早期采用者和早期大眾”階段的技術(shù)。我們嘗試找出符合 Geoffrey Moore 所謂的早期市場(chǎng)的技術(shù)。早期市場(chǎng)“客戶群由技術(shù)愛(ài)好者和有遠(yuǎn)見的人組成,他們希望走在機(jī)遇前面,解決迫在眉睫的問(wèn)題”。我們也在尋找可能會(huì)“跨越鴻溝”以便得到更廣泛采用的技術(shù)。需要注意的是,技術(shù)在采用曲線上的確切位置可能會(huì)有所不同。例如,灣區(qū)公司目前廣泛采用 Java 11,但在其他地方可能不是這種情況。
與 2018 年的內(nèi)部 Java 趨勢(shì)圖相比,新趨勢(shì)圖在創(chuàng)新者階段新增了 Java 13(非 LTS 版本)。這導(dǎo)致了一些列連鎖反應(yīng),Java 11(LTS 版本)被移到了早期采用者階段,而 Java 8 被移到了晚期大眾階段。
我們看到了非 HotSpot 虛擬機(jī)的采用率在增加,OpenJ9 和 Graal 進(jìn)入了早期采用者階段。我們認(rèn)為,云原生計(jì)算的發(fā)展驅(qū)動(dòng)著各個(gè)企業(yè)轉(zhuǎn)向遵循云原生原則(啟動(dòng)速度快、內(nèi)存占用低)的 JRE。一般的開發(fā)者對(duì) Graal 可能不太感興趣,但因?yàn)樗梢詫?Java 編譯成本地庫(kù),同時(shí)支持多語(yǔ)言,所以我們會(huì)進(jìn)一步關(guān)注它。
Java 微服務(wù)框架大洗牌,Spring Boot 和 Spring Cloud 進(jìn)入晚期大眾階段。這表示它們的采用率增長(zhǎng)正在減緩(因?yàn)槭袌?chǎng)趨于飽和),而不是說(shuō)開發(fā)者會(huì)棄用這些框架。Helidon 和 Microprofile 進(jìn)入早期采用者階段,不過(guò)我們認(rèn)為 vert.x 會(huì)因?yàn)橄鄬?duì)利基的市場(chǎng)無(wú)法跨過(guò)早期采用者階段。
以下內(nèi)容整理自 InfoQ Java 板塊編輯的內(nèi)部溝通郵件,提供了更多有關(guān)我們?nèi)绾沃贫?Java 趨勢(shì)圖的背景信息。
Daniel Bryant,獨(dú)立技術(shù)顧問(wèn),Datawire 產(chǎn)品架構(gòu)師,InfoQ 新聞板塊主管:
又到了更新 Java 趨勢(shì)圖的時(shí)間。我迫不及待地想要看到我們?cè)?2018 年所跟蹤的技術(shù)是否出現(xiàn)在了趨勢(shì)圖正確的位置上,以及新增或移除了哪些技術(shù)。
首先是創(chuàng)新者階段的變化:
將 Java 11 改為 Java 12/13;
將 OpenJ9 移到早期采用者階段;
加入 Java 模塊化系統(tǒng);
加入 Quarkus。
早期采用者階段的變化:
將 Spock 移到晚期采用者階段;
將微服務(wù)框架移到晚期大眾階段,但 Lagom 和 Microprofile 除外?
加入 Helidon。
Erik Costlow,軟件架構(gòu)師,專注于安全和 Java 領(lǐng)域:
將 Java 8 移到落后者階段。Java 8 是在 2014 年發(fā)布的,Oracle 已經(jīng)不再為它提供公共免費(fèi)支持。
Java 11(LTS 版本)仍然待在早期采用者階段;
Java 13(非 LTS 版本)進(jìn)入創(chuàng)新者階段;
開發(fā)者對(duì) Graal 本身并不是很感興趣,但他們需要這些東西:
1、可以將 Java 編譯成本地應(yīng)用(本地鏡像);
2、多語(yǔ)言支持(例如 Ruby Truffle)。
3、Graal 本地鏡像有一個(gè)問(wèn)題——如果 Java 或其他 JVM 供應(yīng)商也提供了靜態(tài)編譯那會(huì)怎樣?本地鏡像并沒(méi)有通過(guò) TCK。關(guān)鍵問(wèn)題是其他 JVM 供應(yīng)商可以這么做嗎?如果他們這么做了會(huì)怎樣?
非 HotSpot 虛擬機(jī)除了 Graal 和 OpenJ9,還有 Excelsior、Azul、Liberica、Corretto、Alibaba Dragonwell、AdoptOpenJDK、RedHat,等等。
JVM 上的 Node 已死。
將測(cè)試框架移到早期大眾階段。
將 Spring Boot 移到晚期大眾階段。
將“Java EE 到 Jakarta EE 的遷移“放在創(chuàng)新者階段,我覺(jué)得這會(huì)很有意思。
現(xiàn)在有太多的 Java 發(fā)行版。我希望在創(chuàng)新者階段能夠有與這個(gè)問(wèn)題相關(guān)的內(nèi)容:如何大規(guī)模管理這些發(fā)行版或者如何在不同團(tuán)隊(duì)、系統(tǒng)之間管理好它們。如果一個(gè)應(yīng)用程序可以被編譯成本地應(yīng)用,那么誰(shuí)來(lái)負(fù)責(zé)給”JRE“打補(bǔ)丁?這又意味著什么?
Dustin Schultz,首席軟件工程師,Pluralsight 作者,技術(shù)布道師:
我贊同關(guān)于創(chuàng)新者階段的說(shuō)法。
但我不認(rèn)為 Spock 會(huì)跳出早期采用者階段,畢竟我還沒(méi)有看到它被大量采用。
除了 Vertx,我會(huì)將其他微服務(wù)框架移出早期采用者階段……或許 Lagom 可以留下。我不確定它們?cè)谝院髸?huì)不會(huì)跳出這個(gè)階段。
或許可以將 Groovy 移到晚期大眾階段,因?yàn)樗谋憩F(xiàn)太一般。
Charles Humble,InfoQ 首席編輯:
我同意你們的大部分說(shuō)法。Java 模塊化系統(tǒng)采用也是一個(gè)很有趣的話題。我敢肯定 OSGI 擁護(hù)者對(duì)于將它放在創(chuàng)新者階段會(huì)有意見,但這樣做可能是對(duì)的。
我想可以將 Clojure 移到晚期大眾階段。當(dāng)然,人們還在用它,但我感覺(jué)到它的使用量在下降,而且它本身面向的就是利基市場(chǎng)。
我會(huì)將 Ceylon 移掉。它一直以來(lái)都沒(méi)有獲得太多關(guān)注,而且我不認(rèn)為進(jìn)入 Eclipse 會(huì)給它帶來(lái)多大幫助。這個(gè)項(xiàng)目的活躍度很低,過(guò)去 6 個(gè)月只有 10 個(gè)代碼提交。
測(cè)試框架的趨勢(shì)看起來(lái)相當(dāng)穩(wěn)定。我們要把它移掉嗎?從采用率來(lái)看,我給它們排個(gè)順序:JUnit、TestNG/Cucumber、Spock,但似乎變化不大?
SmartBear 最近收購(gòu)了 Cucumber,可能會(huì)促進(jìn)它的發(fā)展,但即使是這樣,我仍然傾向于把它們移掉。
人們似乎對(duì) JVM 上的 Node 不感興趣?我想可以把它移掉。
我很想把 Kotlin 移到早期大眾階段,它是我近來(lái)最經(jīng)常聽到的一門 JVM 編程語(yǔ)言,這要得益于 Android 開發(fā)的流行。可以說(shuō),它已經(jīng)越過(guò)了鴻溝,但仍然落后于其他編程語(yǔ)言,比如 Groovy、Swift 或 Go 語(yǔ)言。
我覺(jué)得 Scala 可以留在晚期大眾階段,人們會(huì)逐步棄用它。
關(guān)于 Java,我也不確定該怎么說(shuō)。我所知道的是,非 LTS 版本的采用量非常有限,它們或許可以被放在創(chuàng)新者階段,但很奇怪的是,它們當(dāng)中有些已經(jīng)進(jìn)入 EOL 階段。不管怎樣,我認(rèn)為 Java 8 仍然處在晚期大眾階段,Java 11 在早期采用者階段,Java 11 在創(chuàng)新者階段?
Ben Evans,New Relic 首席工程師,JVM 技術(shù)架構(gòu)師:
我非常贊同有關(guān) Java 非 LTS 版本的說(shuō)法。來(lái)自生產(chǎn)環(huán)境的數(shù)據(jù)表明,Java 11 部署量很穩(wěn)定,并有了 5% 左右的增長(zhǎng),我覺(jué)得它應(yīng)該處在早期采用者階段。
Ceylon 絕對(duì)可以移掉,它從來(lái)就沒(méi)有得到過(guò)足夠的關(guān)注,它的份額被 Kotlin 吃掉了。
Java 8 應(yīng)該留在早期大眾階段,現(xiàn)在仍然有很多服務(wù)是用 Java 8 開發(fā)的,還有很多主流產(chǎn)品(例如 Cassandra)不支持 Java 8 以后的版本。我還沒(méi)看到有哪個(gè)主流產(chǎn)品放棄對(duì) Java 8 的支持(但我相信 ElasticSearch 會(huì)是第一個(gè))。
作者介紹Ben Evans 是 JVM 性能優(yōu)化公司 jClarity 的聯(lián)合創(chuàng)始人之一。他是 LJC(倫敦 JUG)組織者和 JCP 執(zhí)行委員會(huì)成員,幫助定義 Java 生態(tài)系統(tǒng)標(biāo)準(zhǔn)。Ben 是 Java Champion,三次 JavaOne Rockstar 演講者獲得者,“The Well-Grounded Java Developer”、新版“Java In a Nutshell”和“Optimizing Java”作者,定期提供 Java 平臺(tái)、性能、架構(gòu)、并發(fā)、初創(chuàng)企業(yè)等話題相關(guān)的演講。
Erik Costlow 是一位具有豐富 Java 經(jīng)驗(yàn)的軟件安全專家。他在 Contrast Security 從事開發(fā)者管理工作。Contrast 公司專注于傳感器與應(yīng)用程序的集成,讓它們能夠基于應(yīng)用程序如何使用數(shù)據(jù)來(lái)檢測(cè)安全威脅。Erik 還是 Oracle 的首席產(chǎn)品經(jīng)理,主要負(fù)責(zé) Java 8 的安全問(wèn)題。他還協(xié)助 Turbonomic 產(chǎn)品管理團(tuán)隊(duì)在數(shù)據(jù)中心 / 云性能自動(dòng)化方面實(shí)現(xiàn)了 1 億美元的年收入。Erik 還負(fù)責(zé) Fortify 靜態(tài)代碼分析器的產(chǎn)品管理,這是一個(gè)幫助開發(fā)人員發(fā)現(xiàn)和修復(fù)代碼漏洞的工具。Erik 還在 Packt Publishing 的課程平臺(tái)上推出了幾門有關(guān)數(shù)據(jù)分析、統(tǒng)計(jì)和密碼學(xué)的課程。
Dustin Schultz 是一名首席軟件工程師、Pluralsight 作者和技術(shù)布道師。他擁有計(jì)算機(jī)科學(xué)學(xué)士和碩士學(xué)位,從事軟件開發(fā)工作超過(guò) 15 年。Dustin 熱愛(ài)一切與科技有關(guān)的事物。他喜歡學(xué)習(xí),對(duì)一切充滿好奇心。他媽媽在他小時(shí)候給他買了一本有關(guān)“事物原理”的書,因?yàn)樗齾捑肓怂鲜怯袉?wèn)不完的問(wèn)題。
Charles Humble 于 2014 年 3 月接任 InfoQ 總編一職,指導(dǎo)我們的內(nèi)容創(chuàng)作,包括新聞、文章、書籍、視頻演示和采訪。在成為 InfoQ 全職員工之前,Charles 負(fù)責(zé) Java 板塊的報(bào)道工作,并擔(dān)任 PRPi 咨詢公司的首席技術(shù)官。這是一家薪酬研究公司,于 2012 年 7 月被普華永道收購(gòu)。他當(dāng)時(shí)在 PRPi 全面負(fù)責(zé)開發(fā)公司內(nèi)部使用的軟件。作為開發(fā)人員、架構(gòu)師和開發(fā)經(jīng)理,他在企業(yè)軟件領(lǐng)域工作了大約 20 年。在他還是一名業(yè)余音樂(lè)愛(ài)好者。
Daniel Bryant 是 Datawire 的獨(dú)立技術(shù)顧問(wèn)和產(chǎn)品架構(gòu)師。他的技術(shù)專長(zhǎng)主要是“DevOps”工具、云 / 容器平臺(tái)和微服務(wù)實(shí)現(xiàn)。Daniel 是 Java Champion,并為幾個(gè)開源項(xiàng)目做出了貢獻(xiàn)。他還為 InfoQ、O’Reilly 和 TheNewStack 撰寫文章,并定期出席 OSCON、QCon 和 JavaOne 等國(guó)際會(huì)議。他在空閑時(shí)間喜歡跑步、閱讀和旅行。
原文鏈接:
https://www.infoq.com/articles/java-jvm-trends-2019/
有道無(wú)術(shù),術(shù)可成;有術(shù)無(wú)道,止于術(shù)
歡迎大家關(guān)注Java之道公眾號(hào)
好文章,我在看??
總結(jié)
以上是生活随笔為你收集整理的2019 Java发展趋势报告:Java老矣,Java正年轻的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Ubuntu16.04下Hadoop 2
- 下一篇: 你和高级开发的距离,可能还缺这个技术框架