Java 17 采用率增長 430%、Java 11 穩(wěn)居第一,最新 Java 編程語言報(bào)告來了!
1995 年,Sun Microsystem 公司發(fā)布了 Java 程序設(shè)計(jì)語言,為開發(fā)現(xiàn)代多媒體應(yīng)用程序提供了一種更加可移植和交互的方式。從那時(shí)起,Java 便成為主流的編程語言之一,被應(yīng)用于各行各業(yè),也有著“一次編寫,到處運(yùn)行”的優(yōu)勢特性。
近日,為揭曉 Java 生態(tài)系統(tǒng)的最新發(fā)展?fàn)顩r,分析公司 New Relic 在調(diào)研了新版本、容器應(yīng)用、垃圾回收等特性之后,最新發(fā)布了《2023 年 Java 生態(tài)系統(tǒng)現(xiàn)狀》報(bào)告。
在本文中,我們將與大家共同深入了解這門被廣泛應(yīng)用的編程語言。
Java 17 的采用率在一年內(nèi)增長了 430%
眾所周知,Java 版本分為長期支持(LTS)和短期支持支持版本。一般長期支持的版本都比較穩(wěn)定,或者官方會不斷更新補(bǔ)丁包。短期支持版本只是作為過渡版存在。
自 2017 年 Oracle 將 Java 版本的更新頻率更改為六個月一次時(shí),長期支持 LTS 版本大概 2-3 年更新一次。不過,這種高頻的更新率讓無數(shù)網(wǎng)友怨聲載道,學(xué)不動的聲音不絕于耳,以至于很多人呈現(xiàn)出“你更任你更,我不用”的“擺爛”狀態(tài)。
這不,Oracle 在今年 3 月最新發(fā)布了 Java 20 版本。不過,據(jù)最新數(shù)據(jù)報(bào)告顯示,Java 11 已連續(xù)兩年位居榜首,成為開發(fā)者最常用的 Java 版本。
當(dāng)下,超過 56% 的應(yīng)用程序在生產(chǎn)中使用 Java 11,這一比例要高于 2022 年的 48% 和 2020 年的 11%。
Java 8 的使用率緊隨其后,近 33% 的應(yīng)用程序在生產(chǎn)中使用它(低于 2022 年的 46%)。
雖然 Java 11 穩(wěn)居第一,但是最新的 LTS 版本 Java 17 的采用率逐年攀升,從去年不到 1% 的比例,迅速增長至今年的超過 9% 的占比。研究報(bào)告顯示,Java 17 在過去一年內(nèi)增長率為 430%,而彼時(shí) Java 11 花了數(shù)年時(shí)間才達(dá)到那個水平。
相較之下,只有 0.28% 的應(yīng)用程序仍在生產(chǎn)中使用 Java 7。這并非沒有根由,究其原因,是因?yàn)楣俜綄?Java 7 的支持已于 2022 年結(jié)束。大多數(shù)使用 Java 7 的應(yīng)用程序都是尚未升級的遺留應(yīng)用程序。
與 LTS 版本相比,短期的非 LTS Java 版本的使用率仍然極低,只有 1.6% 的應(yīng)用程序使用非 LTS Java 版本(低于 2022 年的 2.7%)。
根據(jù)報(bào)告調(diào)研發(fā)現(xiàn),可能導(dǎo)致影響非 LTS 版本使用率下降的一些因素包括:
缺乏支持
缺乏吸引力的新功能
距離下一個 LTS 版本發(fā)布的時(shí)間太短
曾幾何時(shí),Java 8 發(fā)布了之后,外界并不能知曉下一個 LTS 版本 Java 11 會什么時(shí)候發(fā)布。不過,后來 ,Oracle 明確做出承諾:六個月一次更新,自此大家都有了清晰的認(rèn)知,自然寧愿等等下一個 LTS 版本,也不愿在生產(chǎn)環(huán)境使用不穩(wěn)定的非 LTS 版本。
數(shù)據(jù)顯示,在使用的非 LTS Java 版本中,Java 14 仍然是最受歡迎的,占比0.57%(低于 2022 年的 0.95%),Java 15 緊隨其后(0.44%,低于 2022 年的 0.70%)。
亞馬遜現(xiàn)在是最受歡迎的 JDK 供應(yīng)商
近年來,使用的 Java Developer Kit (JDK) 發(fā)行版的源代碼發(fā)生了變化。過去,很多開發(fā)人員常常從 Oracle 獲得他們的 JDK,但是 Oracle JDK 后來針對商業(yè)應(yīng)用采取收費(fèi)政策,這也讓很多人望而卻步,好在 OpenJDK 項(xiàng)目日漸豐富,成為眾人的選擇。
調(diào)查數(shù)據(jù)顯示,2020 年,Oracle 是最受歡迎的 JDK 供應(yīng)商,約占 Java 市場的 75%。在其 JDK 11 發(fā)行版的許可更嚴(yán)格之后(在 Java 17 回歸更開放的立場之前),業(yè)界開發(fā)者開始逐漸遠(yuǎn)離 Oracle。雖然 Oracle 在 2022 年以 34% 的份額保持榜首,但在 2023 年下滑至 28%。
與之形成鮮明對比的是,Amazon 的使用率急劇上升至 31% 的市場份額(從2020 年的 2.18% 和 2022 年的 22%),使其成為最受歡迎的 JDK 供應(yīng)商。
容器化應(yīng)用程序已成為主流,據(jù) New Relic 調(diào)研顯示,70% 的 Java 應(yīng)用來自容器。
容器會影響工程團(tuán)隊(duì)分配計(jì)算和內(nèi)存資源的方式。例如,New Relic 數(shù)據(jù)顯示,在容器中運(yùn)行的應(yīng)用程序少于 4core 的比例要高得多。
工程團(tuán)隊(duì)正在擺脫容器中的單核設(shè)置,只有 36% 在使用(低于 2022 年的 42%),并轉(zhuǎn)向多核設(shè)置,超過 29% 使用 8core 設(shè)置(高于 2022 年的 20%)。
工程團(tuán)隊(duì)通常在他們經(jīng)常部署容器的云環(huán)境中使用較小的計(jì)算設(shè)置。但是,這種趨勢可能會給某些應(yīng)用程序帶來意想不到的問題,這可能會導(dǎo)致配置減少。例如,如果團(tuán)隊(duì)只使用一個 CPU,他們可能得不到他們期望的垃圾收集器——即使他們明確地設(shè)置了它。
自動垃圾收集是查看堆內(nèi)存、識別哪些對象正在使用、哪些未使用以及刪除未使用對象的過程。 鑒于其在 JVM 性能中的核心作用,垃圾回收仍然是 Java 社區(qū)中的熱門話題。
New Relic 數(shù)據(jù)顯示,Garbage-First (G1) 垃圾收集器仍然是使用 Java 11 或更高版本的用戶的最愛,65% 的客戶使用它。G1 的主要好處之一是,它清除較小的區(qū)域而不是一次性清除大區(qū)域,從而優(yōu)化了收集過程。它還很少凍結(jié)執(zhí)行并且可以同時(shí)收集年輕代和老年代,這使它成為工程師的一個很好的默認(rèn)設(shè)置。
其他在 Java 8 之后出現(xiàn)的實(shí)驗(yàn)性垃圾收集器(ZGC 和 Shenandoah)在生產(chǎn)系統(tǒng)中的使用仍然很少。兩者都有生產(chǎn)就緒版本,但在一般處理中仍然可以忽略不計(jì)。
完整的報(bào)告內(nèi)容詳見:https://newrelic.com/sites/default/files/2023-04/new-relic-2023-state-of-the-java-ecosystem-2023-04-20.pdf
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。