當(dāng)前位置:首頁 > 公眾號精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]來源:blog.csdn.net/mengyidan/article/details/120308102Java17已正式發(fā)布,該版本是自Java11以來的首個長期支持版本。Oracle還提議將JDKLTS發(fā)布的節(jié)奏從每三年一次改為每兩年一次,并且每個LTS版本的服務(wù)時間至少8年...

來源:blog.csdn.net/mengyidan/article/details/120308102


Java 17 已正式發(fā)布,該版本是自Java 11以來的首個長期支持版本。Oracle 還提議將 JDK LTS發(fā)布的節(jié)奏從每三年一次改為每兩年一次,并且每個LTS 版本的服務(wù)時間至少8年以上。Java 版本通常是6個月一更新,時間分別在3月和9月,而這些版本的支持時間基本在半年左右。



Java17,有史以來最快?JDK


Java各個版本的生命周期



據(jù)Oralce官博透露,雖然6個月版本的使用人數(shù)在增長,但大部分組織及企業(yè)更傾向于把LTS版本用在生產(chǎn)環(huán)境中,從而得到更加穩(wěn)定可靠的服務(wù)。這一點從Snyk發(fā)布的2021 Java社區(qū)報告中也可以得到證實,雖然有61.5%的人在生產(chǎn)中使用Java 11,但仍有一半的Java 11用戶(目前使用最多的版本)在他們的生產(chǎn)堆棧中使用Java 8。




1


Oracle 推出 Free Java License


Java17,有史以來最快?JDK


截圖自O(shè)racle官博



自Java被Oralce收購以后,付費JDK就一直被人詬病,現(xiàn)在好了,Oracle 宣布推出JDK免費服務(wù)。什么意思呢?讓我們來看一下官方解釋:



  • Oracle正在為行業(yè)提供免費的,領(lǐng)先的Oralce JDK,包括所有季度安全更新,并包含商業(yè)和生產(chǎn)用途。


  • 新許可是“Oracle 免費條款和條件”(NFTC) 許可。此Oracle JDK許可證允許所有用戶免費使用,甚至可以用于商業(yè)和生產(chǎn)用途。只要不收費,再分發(fā)是允許的。


  • 開發(fā)人員和組織現(xiàn)在無需點擊即可輕松下載、使用、共享和重新分發(fā) Oracle JDK。


  • Oracle 將從Oracle JDK 17開始提供這些免費版本和更新,并在下一個 LTS 版本之后繼續(xù)提供整整一年。以前的版本不受此更改的影響。


  • Oracle 將繼續(xù)按照自 Java 9 以來的相同版本和時間表提供GPL下的Oracle OpenJDK 版本。



總結(jié)成一句話,“免費”也并不意味著開發(fā)者可以隨心所欲,因為Oracle的 NFTC 是禁止付費重新分發(fā)其 Java 軟件



而在Java 17正式發(fā)布之前,Java開發(fā)框架Spring率先在官博宣布,Spring Framework 6和Spring Boot 3計劃在2022年第四季度實現(xiàn)總體可用性的高端基線:



  • Java 17 (來自 Spring Framework 5.3.x 線中的 Java 8-17)


  • Jakarta EE 9 (來自Spring框架5.3.x 線中的 Java EE 7-8)



通過實際行動來支持 Java 17,間接呼吁開發(fā)者,是時候使用 Java 17了。



2


要不要升級呢?Java 17 到底有多快?


看到如此誠意滿滿的更新,開發(fā)者到底要不要升級呢?盡管只需切換JDK即可體驗Java 17。對此,OptaPlanner網(wǎng)站做了一項基準(zhǔn)測試:Java到底有多快?通過比較 JDK 17、JDK 16 和 JDK 11 來告訴你答案。



基準(zhǔn)方法



硬件:一個穩(wěn)定的機器不運行任何其他的計算要求苛刻的流程,配置:Intel® Xeon® Silver 4116 @ 2.1 GHz (12 cores total / 24 threads)和128 GiBRAM內(nèi)存,運行RHEL 8 x86_64。



JDK版本



  • JDK 11



openjdk 11.0.12 2021-07-20
OpenJDK Runtime Environment Temurin-11.0.12 7 (build 11.0.12 7)
OpenJDK 64-Bit Server VM Temurin-11.0.12 7 (build 11.0.12 7, mixed mode)


  • JDK 16



openjdk 16.0.2 2021-07-20
OpenJDK Runtime Environment (build 16.0.2 7-67)
OpenJDK 64-Bit Server VM (build 16.0.2 7-67, mixed mode, sharing)


  • JDK 17



openjdk 17 2021-09-14
OpenJDK Runtime Environment (build 17 35-2724)
OpenJDK 64-Bit Server VM (build 17 35-2724, mixed mode, sharing)


JVM 選項:-Xmx3840M并明確指定垃圾收集器:



  • -XX: UseG1GC 對于 G1GC,低延遲垃圾收集器(所有三個 JDK 中的默認(rèn)值);


  • -XX: UseParallelGC 對于 ParallelGC,高吞吐量垃圾收集器。



Main classorg.optaplanner.examples.app.GeneralOptaPlannerBenchmarkApp 來自optaplanner-examplesOptaPlanner 中的模塊8.10.0.Final。



  • 每次運行都使用 OptaPlanner 解決 11 個規(guī)劃問題,例如 員工排班、 學(xué)校時間表和云優(yōu)化。每個規(guī)劃問題運行 5 分鐘。日志記錄設(shè)置為INFO?;鶞?zhǔn)測試以 30 秒的 JVM 預(yù)熱(warm up)開始,隨后丟棄。


  • 解決規(guī)劃問題不涉及IO(除了在啟動期間加載輸入的幾毫秒)。單個CPU完全飽和。它不斷地創(chuàng)建許多短期存在的對象,然后 GC 將它們收集起來。


  • 基準(zhǔn)衡量每秒計算的分?jǐn)?shù)數(shù)量,越高越好。為測試計劃規(guī)劃的解決方案計算分?jǐn)?shù)并非易事:它涉及許多計算,包括檢查每個實體與每個其他實體之間的沖突。



運行次數(shù):每個JDK 和每個垃圾收集器組合按順序運行 3 次。下面的結(jié)果是這 3 次運行的平均值。



測試結(jié)果



Java 11 (LTS) 和 Java 16 與 Java 17 (LTS)



Java17,有史以來最快?JDK


表 1. 在不同 JDK 上使用 G1GC 的每秒計算得分



Java17,有史以來最快?JDK


Java17,有史以來最快?JDK


表 2. 在不同 JDK 上使用 ParallelGC 的每秒計算得分



Java17,有史以來最快?JDK




備注:



查看 3 次單獨運行的原始數(shù)據(jù)(此處未顯示),機器重新分配數(shù)(B1 和 B10)在同一 JDK 和 GC 上的運行之間波動很大,通常超過10%,其他數(shù)字不會受到這種不可靠性的影響。



可以以說忽略 Machine Reassignment numbers 更好。但是為了避免挑選數(shù)據(jù)的問題,這些結(jié)果和平均值確實把它們包括進來了。



Java 17 上的 G1GC 與 ParallelGC



Java17,有史以來最快?JDK


表 3.JDK 17 下不同 GC 每秒的計算得分



Java17,有史以來最快?JDK



基準(zhǔn)測試總結(jié)



  • 平均而言,以 OptaPlanner 為例的基準(zhǔn)測試結(jié)果表明:


  • 對于 G1GC(默認(rèn)),Java 17 比 Java 11 快 8.66%,比 Java 16 快 2.41%。


  • 對于 ParallelGC,Java 17 比 Java 11 快 6.54%,比 Java 16 快 0.37%。


  • Parallel GC 比 G1 GC 快 16.39%。



多說一句



在基于 JDK 15 的基準(zhǔn)測試中,Java 15 比 Java 11 快 11.24%?,F(xiàn)在,Java 17 相對于 Java 11 的增益更少。這是否意味著 Java 17 比 Java 15 慢?



答案是否定的,Java 17 依然比 Java 15 快,因為之前的那些基準(zhǔn)測試是在不同的代碼庫上運行的(OptaPlanner 7.44 而不是 8.10)。不要拿橙子與蘋果作比較,不具有可比性。




3


結(jié)論


總而言之,JDK17 的性能表現(xiàn)還是非常值得升級的,至少于OptaPlanner Demo 而言。



此外,這些用例最快的垃圾收集器仍然是ParallelGC, 而不是G1GC(默認(rèn))。



作為3年后首次發(fā)布的LTS版本的Java 17給你帶來了哪些驚喜?面對Go、Kotlion等JVM的強勢發(fā)展,你覺得Java還能保持霸主地位嗎?






本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉