日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java 8 update 11_从Java 8升级到Java 11应该注意的问题

發(fā)布時(shí)間:2023/12/2 java 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 8 update 11_从Java 8升级到Java 11应该注意的问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

從 Java 8遷移到Java 11比大多數(shù)升級更棘手。以下是這個(gè)過程的一些注意事項(xiàng)。

模塊

在Java 9中Java引入了歷史上最大的變化之一 是模塊,但:

不必將你自己的代碼模塊化以后才能升級到Java 11。

在大多數(shù)情況下,放在類路徑classpath上的代碼能繼續(xù)在Java 9及更高版本上有效被發(fā)現(xiàn)和運(yùn)行,但是如果將模塊放置類路徑上會(huì)被忽略,這對于庫包發(fā)布者來說非常糟糕,但對于應(yīng)用程序開發(fā)者是個(gè)好事情。

因此,在升級到Java 11時(shí)盡可能地先不用模塊化,而將自己的應(yīng)用程序轉(zhuǎn)換為Java模塊應(yīng)該等待時(shí)機(jī),等待大規(guī)模開源的依賴庫包真正采用模塊化后的幾年內(nèi)才開始實(shí)施模塊化,現(xiàn)在,嘗試模塊化很痛苦,因?yàn)槟愕囊蕾嚢苌偈悄K化的。

(如果將程序模塊化的主要原因是由于使用jlink能縮小JDK的大小,也完全不需要模塊化來實(shí)現(xiàn)這個(gè)目標(biāo) - 只需使用Maven創(chuàng)建一個(gè) jar- with-dependencies

,其中module-info不配置require,不配置export( no-requires和no-exports )。

刪除了JDK的部分內(nèi)容

JDK的有關(guān)Java EE和Corba的一部分被刪除,它們不再適合JDK,或者可以在其他地方維護(hù)。

如果您使用Corba,那么幾乎沒有人可以幫助你,但是,如果你使用Java EE模塊,那么在大多數(shù)情況下,對已刪除代碼的修復(fù)應(yīng)該很簡單。只需添加適當(dāng)?shù)腗aven即可。

在Java客戶端方面,已經(jīng)刪除了Java WebStart ,替代方案會(huì)更加棘手,請考慮使用Getdown或Update4J。

不安全和朋友

多年來, Sun和 Oracle 一直在告訴開發(fā)人員不要使用sun.misc.Unsafe和其他尖端的JDK API。很長一段時(shí)間,Java 9將要?jiǎng)h除這些,但這實(shí)際上從未發(fā)生過。

但是在Java 11,首次訪問受限API時(shí),你可能會(huì)收到警告,此警告僅打印一次。這是一個(gè)有用的提醒,你的代碼或依賴正在做一些“頑皮”的事情,需要在某個(gè)時(shí)候修復(fù)。

您還會(huì)發(fā)現(xiàn)Java 11有許多專門設(shè)計(jì)的新API,以避免使用Unsafe人需要,如果你使用的是“非法”API,請優(yōu)先調(diào)查這些新API,例如, Base64, MethodHandles.privateLookupIn, MethodHandles.Lookup.defineClass, StackWalker 和Variable Handles。

工具和圖書館

模塊化和新的六個(gè)月發(fā)布周期這兩個(gè)機(jī)制共同對 工具 和庫開發(fā)人員使用產(chǎn)生了真正的影響,一些項(xiàng)目已經(jīng)能夠跟上,有些人在努力,有些人失敗了。

升級到Java 11時(shí),關(guān)鍵任務(wù)是將所有依賴項(xiàng)更新為最新版本,如果自Java 9問世以來這些依賴項(xiàng)還沒有發(fā)布新版本,那么這些依賴可能需要額外的關(guān)注或測試,確保您也更新了IDE。

但是,不僅需要更新應(yīng)用程序的依賴項(xiàng),Maven也是如此,大多數(shù)Maven插件已將主要版本更改為v3.x,將Maven本身升級到v3.5.4也是有益的。

可悲的是,核心maven團(tuán)隊(duì)規(guī)模很小,因此仍有一些問題需要解決,但是,如果你的Maven構(gòu)建非常合理且簡單,那么通常應(yīng)該沒問題。但請注意,將插件從v2.x升級到v3.x可能需要更改配置,而不僅僅是與模塊相關(guān)聯(lián)。例如,Maven Javadoc插件已重命名該argLine屬性。

需要注意的一個(gè)關(guān)鍵點(diǎn)是Maven使用模塊進(jìn)行操作的方式,當(dāng)Maven編譯器或surefire插件找到一個(gè)模塊化的jar文件(即帶有module-info.class)時(shí),它可以將該jar放在模塊路徑而不是類路徑上,因此,即使你可能打算只在類路徑上運(yùn)行你的應(yīng)用程序,Maven可能部分地在類路徑上編譯和測試代碼,而另外一部分會(huì)在模塊路徑上編譯代碼,在目前,沒有什么可以搞定這個(gè)問題。

有時(shí)你的構(gòu)建需要更大的更改。例如,需要將Findbugs更改為SpotBugs,并將Cobertura改為JaCoCo。

這些構(gòu)建更改可能需要一些時(shí)間 。

總結(jié)

當(dāng)我完成遷移之后,我的結(jié)論是痛苦主要在于維護(hù)與Java 8的兼容性,將應(yīng)用程序全部只到Java 11應(yīng)該更簡單,因?yàn)椴恍枰cJava 8保持聯(lián)系。

總結(jié)

以上是生活随笔為你收集整理的java 8 update 11_从Java 8升级到Java 11应该注意的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。