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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 程序迁移后oracle 数字溢出_Spring Boot 应用迁移到 Java 11

發布時間:2025/3/15 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 程序迁移后oracle 数字溢出_Spring Boot 应用迁移到 Java 11 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

你的Spring Boot App需要遷移到Java 11 嗎?

最近,我們開始將應用程序從Java 8遷移到Java 11;在此之前,Oracle宣布將從2019年初開始停止為Java 8提供商業支持。

我想限制這個主題的范圍 ,因為我不會詳細討論Java 11及其特性,但是,我將嘗試在遷移到Java的最新版本的過程中,對遷移步驟提供一個深入的說明。

Java發布周期

首先,我已經注意到為什么我們決定從Java 8遷移到Java 11。之后我們了解到Java 8支持將停止在2019年初結束,并將公共更新,最好是搬到最新版本的Java和演變的新特性和安全更新,然后是哪個版本的Java遷移的討論。

回顧Oracle的發布周期,每六個月發布一個新版本,每三年發布一次LTS,我們認為最好是遷移到Java 11,并對商業生產版本提供三年的長期支持

商業 vs OpenJDK

在遷移之前有幾個問題:

OpenJDK

第三方公司有許多開源JDK實現,如IBM、RedHat和Azul,它們都正式支持JDK發行版。而且,Oracle支持OpenJDK,它可以在GNU通用公共許可證下免費使用。OpenJDK還有許多組件,如JVM Hotspot、JCL(Java類庫)、javac等。

有什么新的支持嗎?商業支持嗎?

在Oracle決定遷移到一個新的破壞性版本cadence和許可之后,一個特性版本的生命周期將是6個月。六個月后的版本更新將不會提供,我們應該提供一個LTS版本三年,只能用于購買商業支持的人。

我們可以將OpenJDK用于生產環境嗎?

您可以免費在生產環境中使用OpenJDK,費用由您自己承擔。與您經常獲得更新或補丁的商業版本相比,OpenJDK的更新取決于實現者以及他們何時發布它。

訂閱與傳統的Oracle永久授權產品(如Java SE Advanced)有何不同?

永久許可的軟件有一個預先的成本加上額外的年度支持和維護費用。訂閱以單一價格提供許可證、更新、升級和支持。您只需要為您需要的內容和所需的時間框架付費(個人、非商業用途仍然是免費的,不需要訂閱),

使用容器平臺或云是否會影響我?

每個用戶(桌面)或處理器(服務器和/或云)都可以訂閱Java SE。您可以查看定價模型來準確地理解和評估影響。

甲骨文許可定價

以下是Oracle發布的價格表。如果組織不準備按照Oracle六個月的發布計劃頻繁更新,則應該根據這些定價模型調整預算。使用這種許可模型,在多核處理器上運行JDK可能會變得更加昂貴

甲骨文產品價格的完整列表可以在這里找到。

此外,您還可以使用使用Usage Tracker跟蹤Java使用情況。這將有助于評估您的組織對Java的使用情況,并在此基礎上決定使用許可的或免費的Java版本。

或者,您可以免費使用第三方jdk,甚至Oracle的OpenJDK版本。

Spring 對JDK11的支持

在2018年9月的某個時候,在SpringOne平臺上,宣布了Spring Framework 5.1對Java 11的支持。Spring Framework 4.3將支持最多Java 8, 5.0將支持Java 9, 5.1將正式支持Java 11。

如果您正在使用SpringBoot,那么從Spring Boot 2.1.X開始就支持Java 11。計劃從Spring Boot 2.2開始正式支持Java 12。我們已經從Spring Boot 1.5.x遷移應用程序到Spring Boot 2.1.1,使用Java 11編譯的代碼。這是順利的,在建設項目的一些小變化。

此外,如果您正在為PaaS解決方案使用Pivotal或Cloud Foundry,那么在Spring Boot 2.X.X部署的版本中還必須注意一些額外的措施。

Spring Boot 2.1使用Spring Framework 5.1,將Spring更新為所有依賴項的穩定版本。因此,您可以在Spring Boot 2.1.1中正式使用Spring Starter并使用Java 11編譯。

此外,如果使用Maven構建源代碼,則需要將Maven編譯器插件升級到> 3.5版本。

如果您使用Gradle構建源代碼,您需要將Gradle發行版升級到5.X版本。

附加依賴項,項目變更

由于Java 11已經外部化了許多庫和依賴項,所以我們必須顯式地向POM添加一些依賴項。使用JAXB、JAX-WS、JTA、JAVAX注釋等J2EE模塊的項目應該顯式地添加依賴項和重新構建。J2EE的所有獨立版本都可以在Maven repo或第三方站點中輕松獲得,因此,Java SE將它們排除在外。

為了從Spring Boot 1.5遷移,我們必須做的一些顯著更改。X to Java 11 Spring Boot 2.1項目:

  • 如果您正在使用Eclipse IDE,請下載Eclipse photon或4.9

  • 從市場上為Eclipse IDE安裝Java 11插件。

  • 將Maven的POM< java.version>更新到11,或gradle構建的項目的sourceCompatibility 更新到1.11。

  • 使用ASM (Java字節碼庫)將Maven編譯器插件升級到3.8.0,或者下載Gradle項目的grade -5.0發行版。

  • 對于Coverage ,從Cobertura遷移到Jacoco,因為Cobertura不再受支持。

  • 更新Maven Surefire插件和故障安全插件。

  • 如果在項目中構建了單元測試(SureFire)和集成測試(FailSafe),則更新這些插件。由于Maven有不同的生命周期階段,Failsafe插件有助于在集成測試階段構建崩潰

  • 此外,對于Maven項目,您可以在命令行上設置系統JVM選項,如“非法訪問-許可證”

  • 由于Java中的強封裝(這使得遷移非常困難),因此自Java 9以來,默認情況下允許從類路徑上的代碼進行非法反射訪問。您可以使用更多選項來啟用反射訪問,如“permit”、“warn”、“debug”和“deny”。

  • Java 11支持TLS 1.3,它提供了顯著的安全性和性能改進。

  • 類文件錯誤——任何操作字節碼的錯誤,如cglib(3.2.8)、ASM(7.0)、Byte Buddy(1.9.0)或Javassist (3.23.1-GA)。自從Java 9以來,字節碼級別每六個月增加一次,所以您必須定期更新這些庫。您可能會收到如下警告,最好將Java 11更新為Byte Buddy。

WARNING: An illegal reflective access operation has occurred

WARNING: Illegal reflective access by j9ms.internal.JPEG (file:...) to field com.sun.imageio.plugins.jpeg.JPEG.TEM

WARNING: Please consider reporting this to the maintainers of j9ms.internal.JPEG

WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations

WARNING: All illegal access operations will be denied in a future release

# here's the reflective access to the static field com.sun.imageio.plugins.jpeg.JPEG.TEM

  • 模塊化:您還可以為您的應用程序創建JRE映像。我們對應用程序進行了模塊化,從而減少了內存占用,并在更大程度上優化了應用程序。

?org.apache.maven.plugins

?maven-compiler-plugin

?3.8.0

?11

? ?org.ow2.asm

? ?asm

? ?6.2

?org.apache.maven.plugins

?maven-surefire-plugin

? ?--illegal-access=permit

?org.apache.maven.plugins

?maven-failsafe-plugin

? ?--illegal-access=permit

Java 11已經引入了許多特性,我希望限制這個主題的范圍,但是最好是探索、掌握這些特性,而不是為了使用最新版本的Java而遷移。

結論

Oracle希望加快Java的開發,而應用程序開發人員也期待著頻繁的更新。為了滿足這些需求,Oracle建議將Java轉換為嚴格的、基于時間的發布模式。這意味著Java仍然可以在OpenJDK的生產環境中自由使用,但是如果您使用的框架或產品不支持Java 9+,那么它可能不是使用OpenJDK 9或更高版本的合適的、可用于生產的解決方案。

正如標題所說,我只關注于將Spring引導Maven項目遷移到Java 11。遷移中可能還有許多其他方面,比如安全性、JVM性能、證書、云就緒程度等等。請隨意對您的發現發表評論!

附加資源

https://www.oracle.com/technetwork/java/java-se-support-roadmap.html

https://www.oracle.com/technetwork/java/javaseproducts/overview/javasesubscriptionfaq-4891443.html

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-with-Java-9-and-above

https://www.oracle.com/technetwork/java/javase/javaclientroadmapupdate2018mar-4414431.pdf

沒想到!2018微信年度數據報告顯示使用最多的表情竟是...

·END·

?近期熱文:

  • Spring Cloud Stream 學習小清單

  • 為自己搭建一個分布式 IM(即時通訊) 系統

  • 重磅!Github 開放無數量限制的免費私有倉庫!

  • 百度面試題:求數組最大值

  • 我說分布式事務之消息最終一致性事務(一):原理及實現

  • 疑案追蹤:Spring Boot內存泄露排查記

  • 了解Java中的內存泄漏

  • Git 常用命令清單,掌握這些,輕松駕馭版本管理

  • 優先級隊列(頭條面試題)

  • 來談下高并發和分布式中的冪等處理

  • 你應該知道的7個寫出更好的 Java 代碼的技巧

  • 百億數據量下,掌握這些Redis技巧你就能Hold全場

看完,趕緊點個“好看”鴨

點鴨點鴨

↓↓↓↓

總結

以上是生活随笔為你收集整理的java 程序迁移后oracle 数字溢出_Spring Boot 应用迁移到 Java 11的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。