国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了JDK11 升級(jí) JDK17 最全實(shí)踐干貨來(lái)了。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、前言

上篇文章給大家?guī)?lái)了JDK8升級(jí)JDK11的最全實(shí)踐,相信大家閱讀后已經(jīng)對(duì)JDK11有了比較深入的了解。2021年9月14日,Oracle發(fā)布了可以長(zhǎng)期支持的JDK17版本,那么從JDK11到JDK17,到底帶來(lái)了哪些特性呢?亞毫秒級(jí)的ZGC效果到底怎么樣呢?值得我們升級(jí)嗎?而且升級(jí)過程會(huì)遇到哪些問題呢?帶著這些問題,本篇文章將帶來(lái)完整的JDK11升級(jí)JDK17最全實(shí)踐。

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

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

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

2)性能提升

更好的垃圾回收器。綜合評(píng)估,從Java 8 升級(jí)到 Java 11,**G1GC平均速度提升16.1%,ParallelGC為4.5%****,從Java 11 升級(jí)到 Java 17,G1GC平均速度提升8.66%,ParallelGC為6.54%**(基于OptaPlanner的用例基準(zhǔn)測(cè)試表明)

最大的亮點(diǎn)是帶來(lái)了穩(wěn)定版的ZGC垃圾回收器,達(dá)到亞毫秒級(jí)停頓。

3)新語(yǔ)法和特性

Switch表達(dá)式簡(jiǎn)化、Text Blocks文本塊、instanceof 的模式匹配升級(jí)和NullPointerException提示信息改進(jìn)等

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

Spring framework6 和Spring Boot3 都默認(rèn)使用 Java 17作為最低版本

3、升級(jí)后壓測(cè)效果

先給出結(jié)論:

1、JDK17相對(duì)于JDK8和JDK11,所有垃圾回收器的性能都有很明顯的提升,特別是穩(wěn)定版的ZGC垃圾回收器

2、不論任何機(jī)器配置下,都推薦使用ZGC,ZGC的停頓時(shí)間達(dá)到亞毫秒級(jí),吞吐量也比較高

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

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

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

4、OracleJDK 和 OpenJDK 的選擇

2021年9月,Oracle宣布JDK17可以免費(fèi)商用,直到下一個(gè) LTS 版本之后繼續(xù)提供整整一年,同時(shí)Oracle 將繼續(xù)按照自 Java 9 以來(lái)的相同版本和時(shí)間表提供GPL下的Oracle OpenJDK 版本。

2023年9月,OracleJDK發(fā)布了新的LTS版本 JDK21,這就意味著從2024年9月開始,在生產(chǎn)環(huán)境使用 OracleJDK17 將需要付費(fèi)。

參考: https://www.oracle.com/hk/java/technologies/downloads/#java17

OracleJDK和OpenJDK這兩個(gè)之間沒有真正的技術(shù)差別,因?yàn)獒槍?duì)Oracle JDK構(gòu)建過程是基于OpenJDK的。自從JDK11開始,OracleJDK和OpenJDK在功能上基本相同,所以推薦使用 OpenJDK17 或其他開源的JDK版本,這些開源版本都是基于OpenJDK構(gòu)建并提供長(zhǎng)期支持的,比如:AdoptOpenJDK、RedHatOpenJDK。

官方參考: https://blogs.oracle.com/java/post/oracle-jdk-releases-for-java-11-and-later

5、JDK11到JDK17帶來(lái)了哪些新特性

5.1、JVM改進(jìn)

1、ZGC垃圾回收器從實(shí)驗(yàn)性功能更改為正式產(chǎn)品功能,從JDK11引入以來(lái),經(jīng)過持續(xù)的迭代升級(jí),目前已經(jīng)足夠穩(wěn)定。需要手動(dòng)開啟,開啟方式:-XX:+UseZGC

2、G1垃圾回收器仍然作為默認(rèn)垃圾回收器,進(jìn)行改進(jìn)升級(jí),主要包括可中止的混合收集集合、NUMA 可識(shí)別內(nèi)存分配等

3、JDK14開始刪除 CMS 垃圾回收器

4、JDK14開始棄用 ParallelScavenge 和 SerialOld GC 的組合使用

5、JDK15禁用偏向鎖,默認(rèn)禁用:-XX:+UseBiasedLocking

6、NullPointerException 提示信息改進(jìn)

JDK14以前的出現(xiàn)NullPointerException時(shí),只能定位到所在異常行,無(wú)法定位具體是哪個(gè)變量。改進(jìn)后的NullPointerException,可以清晰描述具體變量,提升了空指針異常的可讀性。

5.2、新語(yǔ)法特性

5.2.1、Switch表達(dá)式簡(jiǎn)化

switch表達(dá)式帶來(lái)了簡(jiǎn)化式的編碼方式,提供了新的分支切換方式,即 -> 符號(hào),右則表達(dá)式方法體在執(zhí)行完分支方法之后,自動(dòng)結(jié)束 switch 分支,同時(shí) -> 右則方法塊中可以是表達(dá)式、代碼塊或者是手動(dòng)拋出的異常

參考: https://openjdk.org/jeps/361

傳統(tǒng)寫法

新寫法

5.2.2、Text Blocks文本塊

參考: https://openjdk.org/jeps/378

通過編寫 """,來(lái)減少轉(zhuǎn)義字符和換行符,達(dá)到簡(jiǎn)化代碼和提高代碼可讀性的目的

5.2.3、Record類型

參考: https://openjdk.org/jeps/395

record 是 JDK 14 引入的關(guān)鍵字,用于聲明不可變的數(shù)據(jù)類。它適用于存儲(chǔ)純粹的值類型數(shù)據(jù),如接口傳輸數(shù)據(jù)、坐標(biāo)點(diǎn)和只讀的日志記錄。與 lombok 相比,record 簡(jiǎn)化了定義純粹數(shù)據(jù)類型的過程。由于 record 類是不可變的,成員變量只能設(shè)置一次且無(wú)法更改,無(wú)需提供顯式的 setter() 方法。

1、定義Point類,使用關(guān)鍵字record,未定義get/set

2、查看編譯后的字節(jié)碼文件

3、使用Point類

5.2.4、instanceof 的模式匹配升級(jí)

  • instanceof類型判斷再也不需要強(qiáng)制轉(zhuǎn)換

參考: https://openjdk.org/jeps/394

5.2.5、密封的類和接口

參考: https://openjdk.org/jeps/409

JDK15開始,引入了sealed普通類或接口類,這些類只允許被指定的類或者interface進(jìn)行擴(kuò)展和實(shí)現(xiàn)。

使用修飾符sealed,您可以將一個(gè)類聲明為密封類。密封的類使用關(guān)鍵字permits列出可以直接擴(kuò)展它的類。子類可以是最終的,非密封的或密封的

比較實(shí)用的一個(gè)特性,可以用來(lái)限制類的層次結(jié)構(gòu)

5.2.6、其他優(yōu)化和升級(jí)

感興趣的同學(xué),推薦閱讀OpenJDK官方文檔說(shuō)明,從JDK11到JDK17的改動(dòng): https://openjdk.org/projects/jdk/17/jeps-since-jdk-11

6、升級(jí)步驟

6.1、JDK選擇

OpenJDK17下載:https://jdk.java.net/archive/

行云鏡像:jdt-base-tomcat/java-jdt-centos7.4-openjdk-17.0.2-tomcat8.0.53

6.2、pom編譯配置升級(jí)

maven編譯所需JDK升級(jí)至17

<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
</properties>

6.3、SpringBoot升級(jí)

SpringBoot版本升級(jí)到2.7.15,Spring版本升級(jí)為5.3.29

為什么不升級(jí)到SpringBoot3?

Spring Boot 3.0最低要求 Java 17,SpringBoot3.0帶來(lái)了很多變化,和SpringBoot2差異較大。 考慮到公司很多中間件都是基于SpringBoot2構(gòu)建的,所以此處推薦升級(jí)到SpringBoot2的最高版本2.7.15。

POM升級(jí)

<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.7.15</version>
</parent>

也可以通過設(shè)置dependencyManagement的方式:

<properties>
    <!-- 框架版本配置-->
    <springboot-version>2.7.15</springboot-version>
    <springframework.version>5.3.29</springframework.version>
</properties>  

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>${springboot-version}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>${springframework.version}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

參考:

spring升級(jí)指南: https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions

springboot版本官網(wǎng): https://spring.io/projects/spring-boot#learn

循環(huán)依賴問題

SpringBoot升級(jí)到2.7.15后,如果應(yīng)用中存在循環(huán)依賴的問題,啟動(dòng)時(shí)會(huì)報(bào)如下錯(cuò)誤:

原因:官方文檔不鼓勵(lì)循環(huán)依賴引用,默認(rèn)情況下是禁止的

解決方案:

第一種:推薦更新應(yīng)用中bean的依賴關(guān)系來(lái)解決

第二種:配置文件中加入以下配置,為了和舊版本保持一致,此配置推薦添加

#放開循環(huán)依賴
spring.main.allow-circular-references=true

6.4、常用中間件升級(jí)

6.4.1、Lombok版本升級(jí)到1.18.20以上

<dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <version>1.18.20</version>
</dependency>

如果不升級(jí),編譯時(shí)會(huì)報(bào)錯(cuò)如下:

6.4.2、swgger問題,springfox3.0.0和springboot2.7版本不兼容

異常:

Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException: 
Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null

解決方案:

/**
 * 增加如下配置可解決Spring Boot 2.7.15 與Swagger 3.0.0 不兼容問題
 **/
@Bean
public BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
return new BeanPostProcessor() {

@Override
 public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
                customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
            }
return bean;
}

private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {
            List<T> copy = mappings.stream().filter(mapping -> mapping.getPatternParser() == null).collect(Collectors.toList());
            mappings.clear();
            mappings.addAll(copy);
        }

@SuppressWarnings("unchecked")
private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
try {
                Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
                field.setAccessible(true);
return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
            } catch (IllegalArgumentException | IllegalAccessException e) {
throw new IllegalStateException(e);
            }
        }
    };
}

參考:https://developer.aliyun.com/article/950787

6.4.3、AKS升級(jí)(針對(duì)直接從JDK8升級(jí)的情況)

異常:Causedby: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

原因:Java11 刪除了 Java EE modules,其中就包括 java.xml.bind (JAXB)。

解決方案:

手動(dòng)引入如下包即可

<!-- API, java.xml.bind module --> 
<dependency>
      <groupId>jakarta.xml.bind</groupId>
      <artifactId>jakarta.xml.bind-api</artifactId>
      <version>2.3.2</version>
</dependency> 
<!-- Runtime, com.sun.xml.bind module -->
<dependency>
       <groupId>org.glassfish.jaxb</groupId>
       <artifactId>jaxb-runtime</artifactId>
       <version>2.3.2</version>
</dependency>

6.4.4、Concrete配置中心阻塞升級(jí)

使用 Concrete時(shí),啟動(dòng)時(shí)異常:

 Unable to make field private static final java.lang.reflect.Method jdk.proxy2.$Proxy97.m0 accessible: 
 module jdk.proxy2 does not "opens jdk.proxy2" to unnamed module @61d47554

原因:

分析下Concrete報(bào)錯(cuò)的原因,如下圖,包內(nèi)com.wangyin.concrete.spring.ConcreteConfigProcessor#postProcessAfterInitialization(212行)的實(shí)現(xiàn)邏輯

解決方案:

1、在JVM啟動(dòng)參數(shù)中設(shè)置--add-opens jdk.proxy2來(lái)開啟私有字段的訪問,但因?yàn)閯?dòng)態(tài)代理生成的包名是隨機(jī)不明確的,所以這種方案不可行。JDK官方文檔也明確表示不支持訪問動(dòng)態(tài)代理內(nèi)部的隨機(jī)字段。官方說(shuō)明:https://cr.openjdk.org/~mr/jigsaw/spec/api/java/lang/reflect/Proxy.html

2、代碼修改,只需把 f.setAccessible(true) 移到 Modifier.isStatic(f.getModifiers()) 的判斷下方即可。原因是方法 Modifier.isStatic(f.getModifiers()) 本來(lái)就要跳過靜態(tài)字段,這樣修改直接避免了訪問。推動(dòng)concrete團(tuán)隊(duì)修復(fù)問題或更換使用Ducc配置中心

6.5、JVM啟動(dòng)參數(shù)配置

6.5.1、開啟ZGC

啟動(dòng)參數(shù)中配置:-XX:+UseZGC

移除-XX:ConcGCThreads,行云部署下JVM參數(shù)配置需要清除

6.5.2、不同中間件所需啟動(dòng)參數(shù)

升級(jí)JDK17后,項(xiàng)目啟動(dòng)時(shí)可能會(huì)遇到如下兩種類型的異常:

1、cannot access class sun.util.calendar.ZoneInfo (in module java.base) because module java.base does not export sun.util.calendar to unnamed module @0x2611f533

2、Unable to make field final int java.math.BigInteger.signum accessible: module java.base does not "opens java.math" to unnamed module @525f1e4e

異常原因:

自從JDK9中引入了模塊化功能后,再到JDK17,對(duì)于包掃描和反射的權(quán)限控制更加的嚴(yán)格。常見的庫(kù)比如(Spring)大量用到包掃描和反射,所以常出現(xiàn)此錯(cuò)誤。

解決方案:

一個(gè)粗暴的解決辦法是將沒開放的module強(qiáng)制對(duì)外開放,即保持和Java9之前的版本一致。

  • --add-exports導(dǎo)出包,意味著其中的所有公共類型和成員都可以在編譯和運(yùn)行時(shí)訪問。
  • --add-opens打開包,意味著其中的所有類型和成員(不僅是公共類型)都可以在運(yùn)行時(shí)訪問。

主要區(qū)別在于--add-opens允許“深度反射”,即非公共成員的訪問,才可以調(diào)用setAccessible(true)

參考: https://stackoverflow.com/questions/44056405/whats-the-difference-between-add-exports-and-add-opens-in-java-9

SGM需要加入:

--add-opens java.management/java.lang.management=ALL-UNNAMED 
--add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED 
--add-opens java.management/sun.management=ALL-UNNAMED

R2M需要加入:

--add-opens java.base/java.time=ALL-UNNAMED

Ducc需要加入:

--add-opens java.base/java.util.concurrent=ALL-UNNAMED
--add-opens java.base/java.util.concurrent.locks=ALL-UNNAMED
--add-opens java.base/java.security=ALL-UNNAMED
--add-opens java.base/jdk.internal.loader=ALL-UNNAMED
--add-opens java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED 
--add-opens java.base/java.net=ALL-UNNAMED 
--add-opens java.base/sun.nio.ch=ALL-UNNAMED 

AKS需要加入:

--add-exports java.base/sun.security.action=ALL-UNNAMED
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.math=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.base/sun.util.calendar=ALL-UNNAMED

6.6、啟動(dòng)后的驗(yàn)證

1.推薦先升級(jí)JDK11,再到JDK17,一邊升級(jí)一邊進(jìn)行驗(yàn)證觀察

2.觀察日志是否有異常,特別是上面說(shuō)到的啟動(dòng)時(shí)異常

3.觀察監(jiān)控類軟件,比如SGM、UMP等監(jiān)控是否正常

4.推薦逐步有序切量,并做好常態(tài)化壓測(cè),防止影響核心業(yè)務(wù)

5.升級(jí)完成后,最好能做個(gè)全流程的功能測(cè)試,防止功能異常

7、總結(jié)

1、升級(jí)后,除了可以使用新的語(yǔ)法特性,最大的亮點(diǎn)是可以使用亞毫秒級(jí)停頓的GC性能(至少百倍的GC性能提升),所以 強(qiáng)烈建議升級(jí)到JDK17

2、整個(gè)升級(jí)過程并不復(fù)雜,主要涉及到中間件版本的升級(jí)和啟動(dòng)參數(shù)的配置

如果還停留在JDK8,推薦先升級(jí)JDK11,再到JDK17,具體升級(jí)步驟先參考我的上篇文章“JDK8升級(jí)JDK11最全實(shí)踐干貨來(lái)了”,再參考本章中的升級(jí)步驟。

希望以上分享可以給大家?guī)?lái)實(shí)際的幫助,升級(jí)過程中如果遇到問題,歡迎大家在評(píng)論區(qū)回復(fù)。

作者:京東科技 曲振富

來(lái)源:京東云開發(fā)者社區(qū) 轉(zhuǎn)載請(qǐng)注明來(lái)源文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-746212.html

到了這里,關(guān)于JDK11 升級(jí) JDK17 最全實(shí)踐干貨來(lái)了的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • springboot升級(jí)到3.x + jdk升級(jí)到17

    springboot升級(jí)到3.x + jdk升級(jí)到17

    jdk由 1.8 升級(jí)到 17 spring-boot由 2.7.6 升級(jí)到 3.1.2 版本 spring-cloud-alibaba由 2021.0.4.0 升級(jí)到 2022.0.0.0-RC2 版本 maven構(gòu)建插件里的配置要改為17: javax相關(guān)的包要改為jakarta: Spring Boot3.0已經(jīng)將依賴項(xiàng)從Java EE遷移到Jakarta EE API(主要是避免Oracle 的版權(quán)問題),所以要將項(xiàng)目中的 javax.se

    2024年02月02日
    瀏覽(19)
  • JDK8升級(jí)JDK17過程中遇到的那些坑

    JDK8雖然非常好,但是JDK版本已經(jīng)發(fā)布到JDK20了,且JDK8后的版本升級(jí)了很多新的特性,如模塊化、ZGC以及虛擬線程、結(jié)構(gòu)性并發(fā)等,也是非常有吸引力的,所以決定將基于JDK8的項(xiàng)目升級(jí)到最近的LTS版本JDK17。 下載JDK17的最新版本 jdk-17_linux-x64_bin.tar.gz ,解壓縮后移動(dòng)到 /usr/lib

    2024年02月11日
    瀏覽(18)
  • 2023最新JDK下載、安裝與配置教程(jdk17.0.5以及jdk11.0.17)

    2023最新JDK下載、安裝與配置教程(jdk17.0.5以及jdk11.0.17)

    本教程適用windows系統(tǒng),jdk版本為17.0.5(LTS),提供jdk11.0.17(LTS) 官網(wǎng)地址:https://www.oracle.com/java/ jdk17.0.5地址:https://download.oracle.com/java/17/archive/jdk-17.0.5_windows-x64_bin.exe jdk11.0.17需要登陸官網(wǎng)賬號(hào)才可以下載,提供阿里云盤地址 提取碼:ln27 點(diǎn)擊官網(wǎng)地址,下拉找到 Download

    2023年04月21日
    瀏覽(25)
  • 關(guān)于老項(xiàng)目從JDK8升級(jí)到JDK17所需要注意的細(xì)節(jié)

    關(guān)于老項(xiàng)目從JDK8升級(jí)到JDK17所需要注意的細(xì)節(jié)

    這個(gè)是最簡(jiǎn)單的網(wǎng)上很多教程我這邊就不在重復(fù)了 ??1.第一種方式 ??1.1.修改Idea中的JDK版本 跟步驟修改 修改Java Compiler ??1.2.關(guān)于修改過程中遇到的異常 如果出現(xiàn)下面異常按照上述步驟定可以解決 ??1.3.IDEA工具欄操作Maven正常,但使用mvn命令運(yùn)行就報(bào)錯(cuò) 使用側(cè)工具欄的打包

    2024年02月07日
    瀏覽(43)
  • Java升級(jí)JDK17(更高版本同理),修改maven

    記住三個(gè)網(wǎng)址就行:下面這個(gè)是oracle的 Java Platform, Standard Edition 17 ReferenceImplementations https://www.oracle.com/java/technologies/downloads/#jdk17-windows 另外一個(gè) redhat旗下的:這個(gè)是開源的(推薦這個(gè)?。?Red Hat build of OpenJDK Download | Red Hat Developer 找到想要的版本下載即可 注意:JDK9的時(shí)候,

    2024年02月11日
    瀏覽(21)
  • Mac安裝配置jdk——jdk1.8,jdk11,jdk17

    Mac安裝配置jdk——jdk1.8,jdk11,jdk17

    我們?nèi)粘9ぷ髦锌赡軙?huì)在多個(gè)項(xiàng)目工程中來(lái)回切換,每個(gè)項(xiàng)目依賴的jdk版本也可能高低不同,這樣會(huì)出現(xiàn)jdk版本高低的不兼容,工程代碼編譯不過,無(wú)法本地運(yùn)行等問題。 那么能不能在一臺(tái)電腦上裝多個(gè)版本的jdk呢?多個(gè)jdk版本是否可以靈活切換呢? 答案是 可以的! 接下來(lái)

    2024年04月28日
    瀏覽(25)
  • SpringBoot2.7升級(jí)項(xiàng)目到Springboot3.1踩坑指南(jdk17/jdk21)

    由于SpringBoot3.x全面擁抱JDK17,兼容jdk21,jdk17乃是大勢(shì)所趨。這里是從SpringBoot2.7--SpringBoot3.1踩坑指南。 提前閱讀:jdk8升級(jí)JDK17避坑指南(適用于SpringBoot2.3—SpringBoot2.7升級(jí)) 國(guó)內(nèi)頂級(jí)開源項(xiàng)目升級(jí)到springBoot3情況,可以作為升級(jí)SpringBoot3的風(fēng)向標(biāo)。僅對(duì)比國(guó)內(nèi)規(guī)模使用,落地過

    2024年03月09日
    瀏覽(28)
  • JDK8,JDK11,JDK17,JDK21及中間版本主要更新特性

    JDK8,JDK11,JDK17,JDK21及中間版本主要更新特性

    官方地址: https://www.oracle.com/java/technologies/java-se-support-roadmap.html 從上圖可以很清晰得可以看出,JDK7,JDK8,JDK11,JDK17,JDK21是長(zhǎng)期維護(hù)的版本。從目前來(lái)看,JDK8到2023年已經(jīng)有將近10年的歷史了,大多數(shù)依據(jù)JDK8的相關(guān)技術(shù)內(nèi)容已經(jīng)很成熟了,但是大家也看到,JDK在不斷地迭代,JD

    2024年02月21日
    瀏覽(25)
  • Springboot項(xiàng)目升級(jí)jdk11

    下載jdk11 安裝 配置環(huán)境變量 java -version查看版本,是否配置成功 參考: jdk11 下載與安裝(非常詳細(xì),一步不落?。。。?Java jdk11 在Mac上的安裝和配置以及JDK多個(gè)版本之間切換 打包成可運(yùn)行的springboot jar 打包成普通jar maven-compiler-plugin 與 spring-boot-maven-plugin 區(qū)別: maven-compile

    2024年02月11日
    瀏覽(52)
  • 解鎖滴滴ES的性能潛力:JDK 17和ZGC的升級(jí)之路

    解鎖滴滴ES的性能潛力:JDK 17和ZGC的升級(jí)之路

    前文介紹了滴滴自研的ES強(qiáng)一致性多活是如何實(shí)現(xiàn)的,其中也提到為了提升查詢性能和解決查詢毛刺問題,滴滴ES原地升級(jí)JDK17和ZGC,在這個(gè)過程中我們遇到了哪些問題,怎樣解決的,以及最終上線效果如何,這篇文章就帶大家深入了解。 背景 滴滴ES在2020年的時(shí)候由2.X升級(jí)到

    2024年02月13日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包