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

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

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

JDK8升級JDK11最全實踐干貨來了

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-06-25 14:51 ? 次閱讀

1、前言

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

2、為什么升級JDK11

1)性能提升

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

2)特性和改進

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

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

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

4)長期支持版本

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

5)行業(yè)趨勢

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

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

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

3、升級后GC效果

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


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

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

以下是壓測的性能情況:

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


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

* 不同垃圾回收器的特點:

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

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

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


4、JDK11帶來了哪些新特性

4.1、GC改進

默認垃圾回收器改為G1,廢棄CMS垃圾回收器

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

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

?Full GC的停頓不超過10毫秒

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

?相對于G1吞吐量下降不超過15%

4.2、模塊化

Java9引入了對于模塊化軟件支持,而Java11進一步擴展了這種特性。模塊化讓應(yīng)用程序 更精簡,減少對其他類庫的依賴和冗余代碼,提高運行效率和安全性。

然而,目前不推薦使用模塊化,因為相關(guān)組件生態(tài)還不完善,并且模塊化帶來的價值不夠突出。具體原因請看后面章節(jié)的詳細分析:新特性實踐-模塊化。

4.3、語法增強

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

wKgZomZ6aOmABw5wAADB__oZj6I575.png

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

wKgZomZ6aOmAQg3gAACmx7C_snM608.png

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

wKgaomZ6aOuAP2bRAADBbyLfbpI171.png

4.4、API增強

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

?字符串方法增強:isBlank、lines、strip、stripLeading、stripTrailing和repeat

?Files增強:readString、WriteString

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

?stream增強,dropWhile(從集合中刪除滿足的)、takeWhile(從集合中獲取滿足的)、ofNullable

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


5、如何升級

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

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

5.2、JDK選擇

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

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

5.3、GC配置

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

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

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

5.4、升級過程踩坑

整個升級過程還是比較簡單的,除了升級JDK版本,實際遇到的問題如下:

分類 依賴名 支持情況 說明
框架 Spring2.X/boot 支持 使用JDK11自帶原生HttpClient時,會遇到: 1、spring啟動時,會遇到注入某些類時,無法通過反射的方式訪問其所在的包,報錯:module java.net.http does not"opens jdk.internal.net.http"to unnamed module @5eb2172原因:模塊化引入了包之間的訪問權(quán)限控制,如果沒有對一個包顯示地使用open/opens關(guān)鍵字對外開放,那么其他包中的類無法通過反射的方式訪問此包。解決方案:需要手動設(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)。解決方案:手動引入包即可 jakarta.xml.bindjakarta.xml.bind-api2.3.2 org.glassfish.jaxbjaxb-runtime2.3.2
Mybatis 支持
Concrete 支持
R2M 支持
EasyJob 支持
OSS 支持
FMQ 支持



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

5.5、升級后驗證

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


6、新特性實踐-模塊化

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

6.1、模塊化是什么?

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

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

1)相對于JDK8的變動

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

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

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

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

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

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

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

chaijie_default.png wKgZomZ6aO-AMp2UABNXMyKCvxE444.png

6.2、帶來了哪些好處?

1)封裝和隔離,更好的訪問控制

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

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

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

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

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

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

4)安全

在JVM的最深層次上執(zhí)行強封裝,減少Java運行時的攻擊面,同時無法獲得對敏感內(nèi)部類的反射訪問。

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 { //指令用于指定一個模塊中哪些包下的public對外是可訪問的,包括直接引入和反射使用 exports com.jdt.a.person; // 只能被反射調(diào)用,用于指定某個包下所有的類(公開、非公開)都只能在運行時可被別的模塊進行反射訪問。 opens com.jdt.a.refect; }

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

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

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

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

module module.b { //依賴a下的包 requires module.a; }

3)此時module-b.jar,在編寫編碼時,會遇到如下問題

wKgaomZ6aPCAdUXqAAHw2Vv-L0w539.png

6.4、實踐過程的坑

上面簡單介紹了模塊化的知識,具體在落地過程中,我們主要踩了以下的坑,供大家參考

1)依賴JSF包時無法模塊化

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

進行模塊化時,pom中依賴了jsf包,模塊定義如下:

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

此時編譯報錯如下:提示找不到模塊:jsf.lite,但是pom中明明指定依賴了jsf.lite

wKgaomZ6aPGAfjoxAADtB5t9NfU445.png

問題原因:

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

chaijie_default.png

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

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

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

解決方案:

1、聯(lián)系JSF團隊,升級JSF包,修復(fù)上面說的FastJsonAutoDiscoverable配置錯誤的問題。


2)拆包問題(模塊隔離)

模塊化約束:jdk9以上,使用模塊化時不支持拆分包的形式依賴

拆分包意味著兩個模塊包含相同的包,Java模塊系統(tǒng)不允許拆分包。拆分包始終是不正常的,而當(dāng)使用解析可傳遞依賴項的構(gòu)建工具(如Maven等)時,很容易出現(xiàn)同一個庫的多個版本,當(dāng)Java模塊系統(tǒ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同時依賴module-a和module-b時,如上編譯時會報一個錯,Package com.foo.package in both module module.b and module module.a,這就是JAVA9的模塊隔離,要求只能從一個模塊(module)中讀取同一個包(package),不能跨模塊讀取。

解決方案:

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

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

目前不推薦使用模塊化,因為相關(guān)組件生態(tài)還不完善,并且模塊化帶來的價值不夠突出:

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

2.拆包問題無法解決,比如:aws-java-sdk-s3、fluent等。


7、總結(jié)

1、升級過程簡單,升級后可以使用更多新特性和更好的GC性能,所以建議升級到JDK11。

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

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

希望以上分享可以給大家?guī)韺嶋H的幫助。


系列文章:

JDK8升級JDK11最全實踐干貨來了

JDK11升級JDK17最全實踐干貨來了

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

JDK17實踐升級經(jīng)驗匯總

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    81

    瀏覽量

    16596
  • jdk8
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    1923
收藏 人收藏

    評論

    相關(guān)推薦

    Tomcat開放源代碼的Web應(yīng)用服務(wù)器

    ?Tomcat 先安裝前置JDK [root@localhost ~]#rpm -ivh jdk-8u201-linux-x64.rpm#安裝JDK包警告:jdk-8u201-lin
    的頭像 發(fā)表于 12-23 11:24 ?167次閱讀
    Tomcat開放源代碼的Web應(yīng)用服務(wù)器

    解鎖新玩法 | 迅為龍芯3A5000升級UEFI,全面支持銀河麒麟系統(tǒng)

    解鎖新玩法 | 迅為龍芯3A5000升級UEFI,全面支持銀河麒麟系統(tǒng)
    的頭像 發(fā)表于 10-21 11:23 ?358次閱讀
    解鎖新玩法 | 迅為龍芯3A5000<b class='flag-5'>升級</b>UEFI,全面支持銀河麒麟系統(tǒng)

    從ADS7813升級到ADS8513

    電子發(fā)燒友網(wǎng)站提供《從ADS7813升級到ADS8513.pdf》資料免費下載
    發(fā)表于 10-21 09:59 ?0次下載
    從ADS7813<b class='flag-5'>升級</b>到ADS8513

    TüV萊茵將舉辦中文版SMETA 7.0升級線上培訓(xùn)

    國際獨立第三方檢測、檢驗和認證機構(gòu)德國萊茵TüV大中華區(qū)(簡稱"TüV萊茵")將于2024年9月19日和10月17日舉行兩場中文版SMETA 7.0升級線上培訓(xùn)。作為Sedex
    的頭像 發(fā)表于 09-07 09:13 ?907次閱讀

    Java CompletableFuture 異步超時實現(xiàn)探索

    簡介 JDK 8 中 CompletableFuture 沒有超時中斷任務(wù)的能力。現(xiàn)有做法強依賴任務(wù)自身的超時實現(xiàn)。本文提出一種異步超時實現(xiàn)方案,解決上述問題。 前言 JDK 8 是一
    的頭像 發(fā)表于 07-25 14:06 ?371次閱讀

    將Non-OS SDK從1.3.0升級到1.4.0后,AT CWLAP命令將無法再找到我的AP,為什么?

    將Non-OS SDK從1.3.0升級到1.4.0(AT版本0.40升級到0.50)后,AT CWLAP命令將無法再找到我的AP。它仍然會找到一些 AP,但不是我想使用的 AP,它在物理上最接近
    發(fā)表于 07-17 06:00

    JDK11升級JDK17最全實踐干貨來了

    解決你的問題。 上篇文章給大家?guī)?b class='flag-5'>來了JDK8升級JDK11最全實踐,相信大家閱讀后已經(jīng)對
    的頭像 發(fā)表于 06-25 14:50 ?729次閱讀
    <b class='flag-5'>JDK11</b><b class='flag-5'>升級</b><b class='flag-5'>JDK</b>17<b class='flag-5'>最全</b><b class='flag-5'>實踐</b><b class='flag-5'>干貨</b><b class='flag-5'>來了</b>

    如何將stm32f207的以太網(wǎng)庫中l(wèi)wip1.3.2升級到1.4.1?

    如何將stm32f207的以太網(wǎng)庫中l(wèi)wip1.3.2升級到1.4.1
    發(fā)表于 05-17 08:04

    Oracle確認Java/JDK 11官方支持延長至2032年1月?

    此外,Solaris操作系統(tǒng)上的Java SE 8和Java SE 11的官方支持也同步延期至2030年12月及2032年1月,進一步延長了該平臺上的Java服務(wù)周期。
    的頭像 發(fā)表于 05-16 15:57 ?1247次閱讀

    微軟Windows 11升級門檻繞過限制問題曝光

    據(jù)悉,微軟近日提升了Windows 11操作系統(tǒng)的升級標(biāo)準。盡管如此,對無法滿足升級需求的設(shè)備而言,依然可通過編輯注冊表和更改引導(dǎo)安裝映象來規(guī)避這些制約。
    的頭像 發(fā)表于 04-09 16:01 ?536次閱讀

    STM32CubeMX版本升級由6.2.1升級到6.3.0后原工程重新編譯code文件變大什么原因?

    STM32CubeMX版本升級由6.2.1升級到6.3.0后原工程重新編譯code文件變大什么原因
    發(fā)表于 04-02 07:31

    飛凌ElfBoard ELF 1板卡-如何在ELF 1開發(fā)板上實現(xiàn)對java的支持

    /1IIlJfPOT3nn6UD_r6Inkyw?pwd=dgez提取碼:dgez root@ELF1:~# cp /run/media/sda1/jdk-8
    發(fā)表于 03-20 09:51

    用Psoc Programmer給Miniprog4升級失敗了,導(dǎo)致工具一直閃爍黃燈怎么解決?

    我這邊用Psoc Programmer給Miniprog4升級失敗了,導(dǎo)致工具一直閃爍黃燈,紅燈常亮,插在電腦上無法識別,請幫忙解決,謝謝。
    發(fā)表于 02-19 07:31

    鴻蒙OS 下載與安裝軟件

    內(nèi)存:8GB 及以上 硬盤:100GB 及以上 分辨率:1280*800 像素及以上 下載和安裝 DevEco Studio DevEco Studio 的編譯構(gòu)建依賴 JDK,DevEco
    的頭像 發(fā)表于 01-25 18:38 ?5051次閱讀
    鴻蒙OS 下載與安裝軟件

    #2024,立Flag了嘛? #在win平臺搭建SpinalHDL開發(fā)環(huán)境

    1、軟件下載 首先列出我們需要安裝的軟件:IDEA(社區(qū)版就行,不需要采用特殊的方法去PJ)、JDK17(也是免費的); 2、軟件安裝 2.1、IntelliJ IDEA安裝 其他的按照默認安裝就行
    發(fā)表于 01-21 10:52