91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

JDK8升級(jí)JDK11最全實(shí)踐干貨來(lái)了

京東云 ? 來(lái)源:jf_75140285 ? 作者:jf_75140285 ? 2024-06-25 14:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、前言

截至目前(2023年),Java8發(fā)布至今已有9年,2018年9月25日,Oracle發(fā)布了Java11,這是Java8之后的首個(gè)LTS版本。那么從JDK8到JDK11,到底帶來(lái)了哪些特性呢?值得我們升級(jí)嗎?而且升級(jí)過(guò)程會(huì)遇到哪些問(wèn)題呢?帶著這些問(wèn)題,本篇文章將帶來(lái)完整的JDK8升級(jí)JDK11最全實(shí)踐。

2、為什么升級(jí)JDK11

1)性能提升

更好的垃圾收機(jī)制、更快的類(lèi)加載器, 加快應(yīng)用程序的運(yùn)行速度。綜合評(píng)估,從Java 8 升級(jí)到 Java 11,G1GC平均速度提升16.1%,ParallelGC為4.5%(基于OptaPlanner的用例基準(zhǔn)測(cè)試表明)

2)特性和改進(jìn)

局部變類(lèi)型推斷、新的 API、HTTP/2客戶(hù)端、Lambda表達(dá)式的新特性等,這些新特性可以提高開(kāi)發(fā)效率。

3)支持最新的技術(shù)和框架

許多新的技術(shù)和框架已經(jīng)或即將開(kāi)始依賴(lài)于JDK11或以上版本,升級(jí)后可以保證應(yīng)用程序能夠分利用這些新的技術(shù)和框架。

4)長(zhǎng)期支持版本

JDK11是Oracle官方發(fā)布的一個(gè)長(zhǎng)期支持(LTS),意味著它將獲得長(zhǎng)期的更新和支持,有助于保持用程序的穩(wěn)定性和可靠性。

5)行業(yè)趨勢(shì)

數(shù)據(jù)來(lái)自 New Relic 在2023年1月發(fā)布的Java生態(tài)報(bào)告,從下圖可以看出:

1、目前市面上有超過(guò) 56%的應(yīng)用程序使用了JDK 11,Java 8 的使用從2020年的84%降低到了現(xiàn)在的32%左右。大部分公司在這三年之間都升級(jí)到了JDK 11 或者 JDK 17這兩個(gè)LTS版本上面。 2、垃圾收集器使用情況來(lái)看,JDK11版本及以上G1使用率最高,占比高達(dá)65%

Java LTS版本百分比
wKgZomZ6aOaAKPm3AAIWgNCnYEM823.png
垃圾回收器使用百分比
wKgaomZ6aOeAQQBzAAG71noYTrA900.png

3、升級(jí)后GC效果

先給出結(jié)論:1、JDK11相對(duì)于JDK8,所有垃圾回收器的性能都有提升,特別是大內(nèi)存機(jī)器下G1的提升最明顯2、8G內(nèi)存以下的機(jī)器,推薦使用Parallel GC,如果特別追求低延遲,選擇犧牲吞吐量,可以使用G1,并設(shè)置期望的最大垃圾回收停頓時(shí)間來(lái)控制 3、8G及以上的大內(nèi)存機(jī)器,推薦使用G1 4、不推薦使用CMS,升級(jí)后從各項(xiàng)數(shù)據(jù)來(lái)看,CMS收集器都不如G1


我在JDOS平臺(tái)上選擇了不同配置的機(jī)器(2C4G、4C8G、8C16G),并分別使用JDK8和JDK11進(jìn)行部署和壓測(cè)。

整個(gè)壓測(cè)過(guò)程限時(shí)60分鐘,用180個(gè)虛擬用戶(hù)并發(fā)請(qǐng)求一個(gè)接口,每次接口請(qǐng)求都創(chuàng)建512Kb的數(shù)據(jù)。最終產(chǎn)出不同GC回收器的各項(xiàng)指標(biāo)數(shù)據(jù),來(lái)分析GC的性能提升效果。

以下是壓測(cè)的性能情況:

機(jī)器配置 垃圾回收器 指標(biāo)項(xiàng) JDK8 JDK11 JDK11比JDK8提升 總結(jié)
2C4G Parallel GC(標(biāo)記復(fù)制+標(biāo)記整理) 吞吐量 88.805% 92.821% 4% 1、JDK11各項(xiàng)指標(biāo)都有提升 2、當(dāng)前機(jī)器配置下,綜合評(píng)估,Parallel GC的綜合指標(biāo)比G1高
平均停頓GC時(shí)間 28.3ms 19.6ms 30%
最大停頓GC時(shí)間 720ms 720ms 0
CMS(標(biāo)記復(fù)制+標(biāo)記清除) 吞吐量 58.551% 63.923% 5%
平均停頓GC時(shí)間 28.0ms 26.5ms 7%
最大停頓GC時(shí)間 300ms 250ms 16%
G1收集器 吞吐量 83.046% 68.371% -15%
平均停頓GC時(shí)間 125ms 49.9ms 60%
最大停頓GC時(shí)間 1170ms 610ms 47%
4C8G Parallel GC(標(biāo)記復(fù)制+標(biāo)記整理) 吞吐量 90.851% 95.252% 5% 1、JDK11各項(xiàng)指標(biāo)都有明顯提升 2、當(dāng)前機(jī)器配置下,綜合評(píng)估,G1的綜合指標(biāo)比Parallel GC高
平均停頓GC時(shí)間 27.1ms 15.3ms 43%
最大停頓GC時(shí)間 580ms 680ms -17%
CMS(標(biāo)記復(fù)制+標(biāo)記清除) 吞吐量 49.812% 56.55% 7%
平均停頓GC時(shí)間 38.3ms 32.3ms 15%
最大停頓GC時(shí)間 180ms 150ms 16%
G1收集器 吞吐量 96.333% 97.328% 1%
平均停頓GC時(shí)間 18.4ms 18.7ms 0.01%
最大停頓GC時(shí)間 980ms 190ms 80%
8C16G Parallel GC(標(biāo)記復(fù)制+標(biāo)記整理) 吞吐量 90.114% 94.718% 4% 1、JDK11各項(xiàng)指標(biāo)都有明顯提升 2、當(dāng)前機(jī)器配置,綜合評(píng)估,大內(nèi)存機(jī)器,G1的綜合指標(biāo)比Parallel GC高很多
平均停頓GC時(shí)間 30.8ms 16.8ms 46%
最大停頓GC時(shí)間 940ms 770ms 18%
CMS(標(biāo)記復(fù)制+標(biāo)記清除) 吞吐量 53.893% 60.168% 7%
平均停頓GC時(shí)間 32.2ms 27.2ms 15%
最大停頓GC時(shí)間 260ms 100ms 61%
G1收集器 吞吐量 96.359% 97.143% 1%
平均停頓GC時(shí)間 20.1ms 17.3ms 14%
最大停頓GC時(shí)間 260ms 120ms 53%


* 上面給出的GC升級(jí)效果,采用的是默認(rèn)的配置,沒(méi)有做任何優(yōu)化,只提供參考。真正的GC調(diào)優(yōu)是個(gè)技術(shù)活,需要根據(jù)業(yè)務(wù)需求、機(jī)器配置和實(shí)際壓測(cè)效果等綜合評(píng)估來(lái)選出最合適的GC垃圾回收器。

* 不同垃圾回收器的特點(diǎn):

1.Parallel GC - JDK 8及以下版本的默認(rèn)收集器,關(guān)注吞吐量,嘗試在最小延遲的情況下盡快完成工作并提高吞吐量。

2.CMS -一個(gè)老年代收集器,基于標(biāo)記-清除算法實(shí)現(xiàn),關(guān)注延遲,以最短回收停頓時(shí)間為目標(biāo)

3.Garbage First(G1)- JDK 9以后的默認(rèn)收集器,G1 關(guān)注總體的性能,會(huì)嘗試在吞吐量和延遲之間做平衡。


4、JDK11帶來(lái)了哪些新特性

4.1、GC改進(jìn)

默認(rèn)垃圾回收器改為G1,廢棄CMS垃圾回收器

?G1特點(diǎn):目標(biāo)是降低應(yīng)用程序的停頓時(shí)間并提高吞吐量。

引入ZGC垃圾回收器(可伸縮低延遲垃圾收集器)但由于JDK11中ZGC還不夠完善,推薦在JDK17中再使用穩(wěn)定版ZGC

?Full GC的停頓不超過(guò)10毫秒

?支持TB級(jí)堆內(nèi)存回收

?相對(duì)于G1吞吐量下降不超過(guò)15%

4.2、模塊化

Java9引入了對(duì)于模塊化軟件支持,而Java11進(jìn)一步擴(kuò)展了這種特性。模塊化讓?xiě)?yīng)用程序 更精簡(jiǎn),減少對(duì)其他類(lèi)庫(kù)的依賴(lài)和冗余代碼,提高運(yùn)行效率和安全性。

然而,目前不推薦使用模塊化,因?yàn)橄嚓P(guān)組件生態(tài)還不完善,并且模塊化帶來(lái)的價(jià)值不夠突出。具體原因請(qǐng)看后面章節(jié)的詳細(xì)分析:新特性實(shí)踐-模塊化。

4.3、語(yǔ)法增強(qiáng)

?局部變量推斷,引入var局部變量類(lèi)型,允許開(kāi)發(fā)人員省略通常不必要的局部變量類(lèi)型初始化聲明

wKgZomZ6aOmABw5wAADB__oZj6I575.png

?Lambda表達(dá)式簡(jiǎn)化,內(nèi)部可以使用var

wKgZomZ6aOmAQg3gAACmx7C_snM608.png

?接口中可以定義私有方法,可以實(shí)現(xiàn)接口方法的訪(fǎng)問(wèn)控制和代碼復(fù)用

wKgaomZ6aOuAP2bRAADBbyLfbpI171.png

4.4、API增強(qiáng)

?HTTPClient標(biāo)準(zhǔn)化支持:強(qiáng)大而靈活的HTTP客戶(hù)端API,支持多協(xié)議(HTTP/2、WebSocket)、異步非阻塞、流操作和連接池等特性。ps:再也不需要用第三包HttpClient 工具包

?字符串方法增強(qiáng):isBlank、lines、strip、stripLeading、stripTrailing和repeat

?Files增強(qiáng):readString、WriteString

?InputStream增強(qiáng):transferTo(流快速拷貝)

?stream增強(qiáng),dropWhile(從集合中刪除滿(mǎn)足的)、takeWhile(從集合中獲取滿(mǎn)足的)、ofNullable

?集合工廠方法:Sets.of()、List.of()、Map.of()、Map.ofEntries(),舉例:Listlist = List.of("Java", "Python", "C++");


5、如何升級(jí)

5.1、升級(jí)應(yīng)用評(píng)估

?為保證穩(wěn)定性,我們優(yōu)先在新業(yè)務(wù)新應(yīng)用來(lái)落地實(shí)施JDK11的升級(jí)。

5.2、JDK選擇

自從2019年1月起,Oracle JDK后續(xù)的版本開(kāi)始商用收費(fèi),所以推薦大家選擇OpenJDK11,OpenJDK和OracleJDK功能上沒(méi)有差異,支持免費(fèi)商用。

OpenJDK11下載地址:https://jdk.java.net/archive/

5.3、GC配置

根據(jù)自身需求和機(jī)器配置選擇GC,不同GC的JVM啟動(dòng)參數(shù)配置:

?G1垃圾回收器(JDK11默認(rèn),不需要手動(dòng)配置):-XX:+UseG1GC

?Parallel GC垃圾回收器:XX:+UseParallelGC

5.4、升級(jí)過(guò)程踩坑

整個(gè)升級(jí)過(guò)程還是比較簡(jiǎn)單的,除了升級(jí)JDK版本,實(shí)際遇到的問(wèn)題如下:

分類(lèi) 依賴(lài)名 支持情況 說(shuō)明
框架 Spring2.X/boot 支持 使用JDK11自帶原生HttpClient時(shí),會(huì)遇到: 1、spring啟動(dòng)時(shí),會(huì)遇到注入某些類(lèi)時(shí),無(wú)法通過(guò)反射的方式訪(fǎng)問(wèn)其所在的包,報(bào)錯(cuò):module java.net.http does not"opens jdk.internal.net.http"to unnamed module @5eb2172原因:模塊化引入了包之間的訪(fǎng)問(wèn)權(quán)限控制,如果沒(méi)有對(duì)一個(gè)包顯示地使用open/opens關(guān)鍵字對(duì)外開(kāi)放,那么其他包中的類(lèi)無(wú)法通過(guò)反射的方式訪(fǎng)問(wèn)此包。解決方案:需要手動(dòng)設(shè)置JVM參數(shù),比如:--add-opens java.net.http/jdk.internal.net.http=ALL-UNNAMED
中間件 JSF 支持
AKS 支持 1、出現(xiàn)異常Causedby: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException原因:Java11 刪除了 Java EE modules,其中就包括 java.xml.bind (JAXB)。解決方案:手動(dòng)引入包即可 jakarta.xml.bindjakarta.xml.bind-api2.3.2 org.glassfish.jaxbjaxb-runtime2.3.2
Mybatis 支持
Concrete 支持
R2M 支持
EasyJob 支持
OSS 支持
FMQ 支持



監(jiān)控運(yùn)維 SGM 支持
UMP 支持
UWC 支持
CICD JDOS部署 支持 JDK11鏡像:java-jdt-centos7.4-jdk1.11.0_13-tomcat9.0.54:latest

5.5、升級(jí)后驗(yàn)證

升級(jí)后完成,做好單測(cè)和回歸測(cè)試,推薦能做個(gè)壓測(cè)驗(yàn)證,防止影響線(xiàn)上服務(wù)穩(wěn)定性


6、新特性實(shí)踐-模塊化

Java一直是構(gòu)建大型應(yīng)用程序的主流語(yǔ)言之一。然而隨著Java生態(tài)系統(tǒng)中存在著大量庫(kù)和復(fù)雜的代碼塊之間關(guān)系難以理清的問(wèn)題,構(gòu)建系統(tǒng)變得困難且超出了我們的理解和有效開(kāi)發(fā)的范圍。特別是在使用繁多的Java存檔文件(Java Archive, JAR)時(shí),這一問(wèn)題變得更加突出。為了應(yīng)對(duì)這種復(fù)雜性,模塊化能夠很好地管理和減少代碼的復(fù)雜性。因此自Java9開(kāi)始,引入了模塊化系統(tǒng)。通過(guò)模塊化,Java本身也得以進(jìn)行模塊化改進(jìn)。

6.1、模塊化是什么?

模塊化指的是JAVA平臺(tái)的模塊系統(tǒng)(Java Platform Module System),簡(jiǎn)稱(chēng)JPMS。JPMS引入一種新方式來(lái)組織和構(gòu)建Java應(yīng)用程序,它將代碼分為相互獨(dú)立、可復(fù)用的模塊。每個(gè)塊都有自己的命名空間,明確聲明并控制其他模塊的訪(fǎng)問(wèn)權(quán)限。這種模塊化設(shè)計(jì)使得開(kāi)發(fā)人員能夠更好地維護(hù)復(fù)雜的應(yīng)用程序,提高代碼的復(fù)用性、可維護(hù)性和安全性,同時(shí)提升應(yīng)用的加載速度和性能。最大的特點(diǎn)是可以定義模塊描述符來(lái)隔離module(Jar包)內(nèi)部類(lèi)的訪(fǎng)問(wèn)權(quán)限。

模塊化的幾點(diǎn)關(guān)鍵說(shuō)明:

1)相對(duì)于JDK8的變動(dòng)

?JDK9以后引入了一個(gè)新組件module:模塊描述符module-info.java,用于將一組相關(guān)的包放入一個(gè)組中。

?在Java8和更早的應(yīng)用程序中,應(yīng)用程序?qū)鳛轫敿?jí)組件,Java9以后應(yīng)用程序?qū)⒛K作為頂級(jí)組件

?一個(gè)模塊(Jar包)只能有一個(gè)module-info.java。

2)和maven的關(guān)系

模塊化并不是要替代maven,和maven本身并不沖突,maven定義jar之間的依賴(lài)關(guān)系,模塊化是對(duì)已經(jīng)依賴(lài)的jar下的包進(jìn)行更細(xì)粒度依賴(lài)控制

3)如何兼容舊應(yīng)用

天然兼容舊應(yīng)用。為了向后兼容舊項(xiàng)目,一些庫(kù)本身并未模塊化,其仍然可以作為模塊在模塊路徑中使用,而這些庫(kù)在模塊路徑上時(shí)會(huì)被轉(zhuǎn)化為自動(dòng)模塊,例如:jackson-databind-1.0.0.jar將成為自動(dòng)模塊jackson.databind

chaijie_default.png wKgZomZ6aO-AMp2UABNXMyKCvxE444.png

6.2、帶來(lái)了哪些好處?

1)封裝和隔離,更好的訪(fǎng)問(wèn)控制

模塊化允許開(kāi)發(fā)者將代碼和資源封裝在獨(dú)立的模塊中。模塊之間可以明確地定義公開(kāi)和私有的API,提供了更好的代碼隔離性和可維護(hù)性。

ps:新業(yè)務(wù)單應(yīng)用可以按照領(lǐng)域模型來(lái)進(jìn)行多模塊的劃分,以避免代碼腐化。簡(jiǎn)單舉例單應(yīng)用下存在產(chǎn)品.jar、訂單.jar。訂單依賴(lài)產(chǎn)品,通過(guò)模塊化的限制,訂單只能使用產(chǎn)品中明確對(duì)外暴露的類(lèi),這樣就避免傳統(tǒng)模式訂單.jar可能依賴(lài)了產(chǎn)品.jar中普通的類(lèi)導(dǎo)致代碼腐化的問(wèn)題,也降低后續(xù)領(lǐng)域服務(wù)拆分的復(fù)雜度

2)更好的可伸縮性,加載速度的提升

模塊化系統(tǒng)使得Java平臺(tái)更加可伸縮,通過(guò)模塊化定義,可以?xún)H加載需要的模塊,從而提升加載類(lèi)的效率,最終減少了應(yīng)用程序的內(nèi)存占用和啟動(dòng)時(shí)間,同時(shí)打包后的程序也更小。

3)明確的依賴(lài)關(guān)系

模塊化系統(tǒng)要求在模塊之間明確定義依賴(lài)關(guān)系。在編譯或運(yùn)行代碼之前,模塊系統(tǒng)會(huì)檢查模塊是否滿(mǎn)足所有依賴(lài)關(guān)系,從而導(dǎo)致更少的運(yùn)行時(shí)錯(cuò)誤。

4)安全

在JVM的最深層次上執(zhí)行強(qiáng)封裝,減少Java運(yùn)行時(shí)的攻擊面,同時(shí)無(wú)法獲得對(duì)敏感內(nèi)部類(lèi)的反射訪(fǎng)問(wèn)。

6.3、如何使用

1)定義module-a.jar

包結(jié)構(gòu)如下:

com.jdt.a person Men.java reflect ReflectModel.java module-info.java

module-info文件內(nèi)容如下:

module module.a { //指令用于指定一個(gè)模塊中哪些包下的public對(duì)外是可訪(fǎng)問(wèn)的,包括直接引入和反射使用 exports com.jdt.a.person; // 只能被反射調(diào)用,用于指定某個(gè)包下所有的類(lèi)(公開(kāi)、非公開(kāi))都只能在運(yùn)行時(shí)可被別的模塊進(jìn)行反射訪(fǎng)問(wèn)。 opens com.jdt.a.refect; }

2)定義module-b.jar,包的pom中指定依賴(lài)了module-a

包結(jié)構(gòu)如下:

com.jdt.b test Test.java module-info.java

module-info文件內(nèi)容如下:

module module.b { //依賴(lài)a下的包 requires module.a; }

3)此時(shí)module-b.jar,在編寫(xiě)編碼時(shí),會(huì)遇到如下問(wèn)題

wKgaomZ6aPCAdUXqAAHw2Vv-L0w539.png

6.4、實(shí)踐過(guò)程的坑

上面簡(jiǎn)單介紹了模塊化的知識(shí),具體在落地過(guò)程中,我們主要踩了以下的坑,供大家參考

1)依賴(lài)JSF包時(shí)無(wú)法模塊化

* JSF是京東內(nèi)部使用的高性能RPC框架

進(jìn)行模塊化時(shí),pom中依賴(lài)了jsf包,模塊定義如下:

module module.a { requires fastjson; //依賴(lài)jsf包名 requires jsf.lite; exports com.jd.jdk.test.module; }

此時(shí)編譯報(bào)錯(cuò)如下:提示找不到模塊:jsf.lite,但是pom中明明指定依賴(lài)了jsf.lite

wKgaomZ6aPGAfjoxAADtB5t9NfU445.png

問(wèn)題原因:

經(jīng)過(guò)一系列定位研究,發(fā)現(xiàn)jsf-lite包中,/META-INF/services下的文件org.glassfish.jersey.internal.spi.AutoDiscoverable里面寫(xiě)的類(lèi)是com.alibaba.fastjson.support.jaxrs.FastJsonAutoDiscoverable,此類(lèi)并未在當(dāng)前jsf.lite包中定義,屬于com.alibaba.fastjson包的。

chaijie_default.png

但是我們的pom中明明也依賴(lài)了com.alibaba.fastjson包,為什么模塊化后,就找不到了呢?

主要原因在于模塊化遇到SPI(Service Provider Interface)時(shí)的約束:模塊化時(shí),SPI機(jī)制要求配置中定義依賴(lài)的類(lèi)必須本模塊定義的,不能是其他模塊的包(來(lái)自它不擁有的包),否則,此包將無(wú)法被模塊化

這樣也就解釋了,為什么上面jsf無(wú)法找到module的問(wèn)題,jsf-lite里面設(shè)置了它不擁有的包:com.alibaba.fastjson.support.jaxrs.FastJsonAutoDiscoverable,導(dǎo)致jsf-lite包無(wú)法被自動(dòng)模塊化

解決方案:

1、聯(lián)系JSF團(tuán)隊(duì),升級(jí)JSF包,修復(fù)上面說(shuō)的FastJsonAutoDiscoverable配置錯(cuò)誤的問(wèn)題。


2)拆包問(wèn)題(模塊隔離)

模塊化約束:jdk9以上,使用模塊化時(shí)不支持拆分包的形式依賴(lài)

拆分包意味著兩個(gè)模塊包含相同的包,Java模塊系統(tǒng)不允許拆分包。拆分包始終是不正常的,而當(dāng)使用解析可傳遞依賴(lài)項(xiàng)的構(gòu)建工具(如Maven等)時(shí),很容易出現(xiàn)同一個(gè)庫(kù)的多個(gè)版本,當(dāng)Java模塊系統(tǒng)檢測(cè)到一個(gè)包存在于模塊路徑上的多個(gè)模塊中時(shí),就會(huì)拒絕啟動(dòng)。

例如:

module-a.jar包結(jié)構(gòu)定義: com.foo.package A.java module-b.jar包結(jié)構(gòu)定義: com.foo.package B.java

當(dāng)module-c同時(shí)依賴(lài)module-a和module-b時(shí),如上編譯時(shí)會(huì)報(bào)一個(gè)錯(cuò),Package com.foo.package in both module module.b and module module.a,這就是JAVA9的模塊隔離,要求只能從一個(gè)模塊(module)中讀取同一個(gè)包(package),不能跨模塊讀取。

解決方案:

如果在使用模塊化時(shí),遇到了拆分包問(wèn)題,無(wú)論如何都是無(wú)法繞過(guò)的。即使從用戶(hù)角度來(lái)看基于類(lèi)路徑的應(yīng)用程序可以正確工作,你也最終需要處理這些問(wèn)題。此時(shí)只能停用模塊化或升級(jí)jar包,避免拆分包問(wèn)題

6.5、模塊化落地總結(jié)

目前不推薦使用模塊化,因?yàn)橄嚓P(guān)組件生態(tài)還不完善,并且模塊化帶來(lái)的價(jià)值不夠突出:

1.很多中間件都是基于jdk8構(gòu)建的,都有可能遇到模塊化兼容的問(wèn)題,比如:jsf,需要jsf強(qiáng)制升級(jí)才可以使用模塊化

2.拆包問(wèn)題無(wú)法解決,比如:aws-java-sdk-s3、fluent等。


7、總結(jié)

1、升級(jí)過(guò)程簡(jiǎn)單,升級(jí)后可以使用更多新特性和更好的GC性能,所以建議升級(jí)到JDK11。

2、現(xiàn)階段不推薦使用模塊化,但是不用擔(dān)心會(huì)影響JDK11的升級(jí)。

另外聽(tīng)說(shuō)JDK17的 ZGC可以達(dá)到亞毫秒級(jí)停頓,但考慮到JDK11的ZGC還不是很穩(wěn)定,所以本次不做測(cè)試,后面升級(jí)到JDK17后再給大家分享ZGC壓測(cè)效果。

希望以上分享可以給大家?guī)?lái)實(shí)際的幫助。


系列文章:

JDK8升級(jí)JDK11最全實(shí)踐干貨來(lái)了

JDK11升級(jí)JDK17最全實(shí)踐干貨來(lái)了

你還在“垃圾”調(diào)優(yōu)?快來(lái)看看JDK17的ZGC如何解放雙手

JDK17實(shí)踐升級(jí)經(jīng)驗(yàn)匯總

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JDK
    JDK
    +關(guān)注

    關(guān)注

    0

    文章

    83

    瀏覽量

    17146
  • jdk8
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    2054
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Ubuntu 25升級(jí)全解析!即將移植RK系列芯片,技術(shù)實(shí)踐搶先預(yù)告

    各位開(kāi)發(fā)者伙伴們,Ubuntu 25 系列(25.04 “Plucky Puffin” 及后續(xù) 25.10 版本)的更新堪稱(chēng) “史詩(shī)級(jí)”!相比 24.04 LTS 等前代版本,它在桌面體驗(yàn)、系統(tǒng)性
    的頭像 發(fā)表于 02-06 17:07 ?3138次閱讀
    Ubuntu 25<b class='flag-5'>升級(jí)</b>全解析!即將移植RK系列芯片,技術(shù)<b class='flag-5'>實(shí)踐</b>搶先預(yù)告

    嵌入式入門(mén)必看!迅為RK3568?V2.0升級(jí),新手也能輕松玩轉(zhuǎn)

    嵌入式入門(mén)必看!迅為RK3568?V2.0升級(jí),新手也能輕松玩轉(zhuǎn)
    的頭像 發(fā)表于 10-28 13:26 ?432次閱讀
    嵌入式入門(mén)必看!迅為RK3568?V2.0<b class='flag-5'>升級(jí)</b>,新手也能輕松玩轉(zhuǎn)

    軟件更新 | TSMaster 7-8月新功能來(lái)了!你升級(jí)了嗎?

    為持續(xù)賦能汽車(chē)電子研發(fā),TSMaster在2025年夏季再度升級(jí)。TSMaster軟件7-8月版本重磅推出了安全管理功能增強(qiáng)、IOAPI優(yōu)化,并正式釋放了RPC/IP與EthernetPDURBS
    的頭像 發(fā)表于 09-12 20:03 ?2055次閱讀
    軟件更新 | TSMaster 7-<b class='flag-5'>8</b>月新功能<b class='flag-5'>來(lái)了</b>!你<b class='flag-5'>升級(jí)</b>了嗎?

    干貨分享 | 功能安全常見(jiàn)疑難問(wèn)題匯總

    針對(duì)實(shí)操問(wèn)題的線(xiàn)上答疑活動(dòng),我們分類(lèi)整理了一些熱門(mén)問(wèn)題及解答,可作為大家日后實(shí)踐中的參考。干貨滿(mǎn)滿(mǎn),仔細(xì)閱讀哦~關(guān)于功能安全機(jī)制及其診斷覆蓋率問(wèn)題Q外狗從功能上
    的頭像 發(fā)表于 09-05 16:21 ?2303次閱讀
    <b class='flag-5'>干貨</b>分享 | 功能安全常見(jiàn)疑難問(wèn)題匯總

    明遠(yuǎn)智睿RK3568核心板如何助力工業(yè)4.0升級(jí)

    從汽車(chē)工廠效率提升30%看:明遠(yuǎn)智睿RK3568核心板如何助力工業(yè)4.0升級(jí) 工業(yè)4.0的核心在于通過(guò)智能化技術(shù)實(shí)現(xiàn)生產(chǎn)效率的提升與生產(chǎn)模式的變革,而核心元器件作為工業(yè)設(shè)備的“心臟”,其性能直接影響
    的頭像 發(fā)表于 09-04 17:42 ?839次閱讀

    大電流連接器如何破解溫竄高?DL28連接器低溫性能解讀

    背景介紹過(guò)高溫,堪稱(chēng)大電流連接器的致命傷。長(zhǎng)期處于溫升過(guò)高狀態(tài)下,連接器絕緣性能易失效,產(chǎn)品易提前退役,甚至誘發(fā)火災(zāi)。溫于大電流連接器如此重要,那么它是如何實(shí)現(xiàn)低溫性能的呢?11
    的頭像 發(fā)表于 08-26 18:11 ?664次閱讀
    大電流連接器如何破解溫<b class='flag-5'>升</b>竄高?DL28連接器低溫<b class='flag-5'>升</b>性能解讀

    「龍智×Perforce」研討會(huì)干貨回顧:Perforce工具鏈在汽車(chē)行業(yè)的應(yīng)用與中國(guó)本土化落地實(shí)踐

    研討會(huì)干貨回顧來(lái)了!本次會(huì)議不僅帶來(lái)了Perforce工具在汽車(chē)軟件研發(fā)中的技術(shù)優(yōu)勢(shì)與全球價(jià)值,更輸出了龍智“驗(yàn)證-賦能-護(hù)航”的本土落地三部曲。推薦給每一位汽車(chē)軟件人~
    的頭像 發(fā)表于 08-21 14:35 ?754次閱讀
    「龍智×Perforce」研討會(huì)<b class='flag-5'>干貨</b>回顧:Perforce工具鏈在汽車(chē)行業(yè)的應(yīng)用與中國(guó)本土化落地<b class='flag-5'>實(shí)踐</b>

    訊飛星火X1升級(jí)版正式上線(xiàn)

    今天,基于全國(guó)產(chǎn)算力訓(xùn)練的深度推理大模型——訊飛星火X1升級(jí)版正式上線(xiàn)。
    的頭像 發(fā)表于 07-30 14:12 ?2042次閱讀
    訊飛星火X1<b class='flag-5'>升級(jí)</b>版正式上線(xiàn)

    比亞迪仰望U8\U9車(chē)主福音,UWB鑰匙升級(jí)包實(shí)現(xiàn)“厘米級(jí)精準(zhǔn)定位+無(wú)感解鎖”

    比亞迪為仰望U8/U9車(chē)主推出985元UWB鑰匙升級(jí)包,實(shí)現(xiàn)厘米級(jí)精準(zhǔn)定位和無(wú)感解鎖。
    的頭像 發(fā)表于 07-25 14:08 ?3467次閱讀
    比亞迪仰望U<b class='flag-5'>8</b>\U9車(chē)主福音,UWB鑰匙<b class='flag-5'>升級(jí)</b>包實(shí)現(xiàn)“厘米<b class='flag-5'>級(jí)</b>精準(zhǔn)定位+無(wú)感解鎖”

    如何二進(jìn)制安裝Linux集群

    ElasticSearch是使用Java語(yǔ)言開(kāi)發(fā)的,所以運(yùn)行時(shí)依賴(lài)JDK。
    的頭像 發(fā)表于 06-17 14:49 ?669次閱讀

    JDK8升級(jí)到21的問(wèn)題集

    一、背景與挑戰(zhàn) 1. 升級(jí)動(dòng)因 ?Oracle長(zhǎng)期支持策略 ?現(xiàn)代特性需求:協(xié)程、模式匹配、ZGC等 ?安全性與性能的需求 ?AI新技術(shù)引入的版本要求 2. 項(xiàng)目情況 ?100+項(xiàng)目并行升級(jí)
    的頭像 發(fā)表于 06-06 16:49 ?842次閱讀

    CY4500 PD軟件在Mac上無(wú)法正常工作怎么解決?

    的 Info.plist 以強(qiáng)制它使用 JDK 1.8.0_181,因?yàn)樗皣L試使用 JDK 10,盡管使用 jenv 將我的默認(rèn) JAVA 切換到 8。 這使軟件能夠啟動(dòng),但如上所述,它仍然無(wú)法運(yùn)行。
    發(fā)表于 05-28 07:02

    XT大升級(jí) 加量不加價(jià)|Amass LC2.0升級(jí)版新品連接器破界而來(lái)

    Amass第四代低壓新能源設(shè)備專(zhuān)用內(nèi)接連接器——LC2.0升級(jí)版新品,即將上市,專(zhuān)治行業(yè)“頑疾”,四大顛覆性升級(jí),讓松脫、虛焊、燒機(jī)、震動(dòng)失效成為過(guò)去式!
    的頭像 發(fā)表于 04-29 14:42 ?1423次閱讀
    XT大<b class='flag-5'>升級(jí)</b> 加量不加價(jià)|Amass LC2.0<b class='flag-5'>升級(jí)</b>版新品連接器破界而來(lái)

    干貨】基于串口的FPGA遠(yuǎn)程升級(jí)

    變得簡(jiǎn)單有趣,記得給我點(diǎn)贊留言,讓我知道你也在這趟奇妙的旅程里哦。遠(yuǎn)程升級(jí)簡(jiǎn)介遠(yuǎn)程升級(jí)的實(shí)質(zhì)是通過(guò)遠(yuǎn)程且不影響當(dāng)前芯片工作狀態(tài)的方式實(shí)現(xiàn)芯片的代碼版本升級(jí)或回退。本例程采用基于SPIMaster和BPIM
    的頭像 發(fā)表于 04-14 09:53 ?2119次閱讀
    【<b class='flag-5'>干貨</b>】基于串口的FPGA遠(yuǎn)程<b class='flag-5'>升級(jí)</b>

    6.12.1升級(jí)到6.13老是閃退是什么原因?qū)е碌模?/a>

    6.12.1升級(jí)到6.13老是閃退,回到6.12.1又正常,問(wèn)一下大家是什么原因?qū)е?,有什么解決辦法?
    發(fā)表于 03-11 08:13