我在 Spring Framework 5.3.x 將在 2024/12/31 EOS (End Of Support) 提到了一個重大的影響,那就是 Spring Framework 6.x 開始將只會支援 Java17,所以鼓勵大家在這未來的一年裡,可以開始好好認識 Java17 有哪些不一樣的地方。
而 Spring Framework 6.x 與 Spring Boot 3.0(架構在 Spring Framework 6.x 之上)其中還有一個很重要的變革是:底層將從 JavaEE 轉變為 JakartaEE,內容可以詳見 Spring Blog 的 Spring Framework 6 GA 說明。
這個改變對企業來說,有兩大影響:
第一,如果你是使用 Spring Framework 6.x 當中的 Spring WebMVC 的話,你必須要先找到一個 Java middleware 是支援 JakartaEE 的,而且必須是 JakartaEE 9(含)以上的規格,這意味著 JakartaEE 8 這個過渡規格是沒有辦法滿足 Spring Framework 6.x 的;所以在 Spring Framework 5.3.x EOS 之前,趕快找到你熟悉又有支援 JakartaEE 9 的 Java middleware 吧!官方宣佈有通過 JakartaEE 9 認證的 Java middlware 可以參考這裡。
第二,因為從 JavaEE 到 JakartaEE 的改變,主要是變動了 Java package(另外一種說法是 namespace),所以這導致本來在原始碼裡面如果有引用 JavaEE 的 Class 如:HTTPServletRequest,都要改變 import 的 package name(從 javax.servlet.http 換到 jakarta.servlet.http)。
所以,原始碼可能要調整、要改用 Java17 compile、要找到支援 JakartaEE 9 的 Java middleware,2024/12/31 還很遠嗎?對於還在使用 Spring Framework 5.3.x 以及 Spring Boot 2.0 的企業來說,其實並沒有很遠,而且還充滿著挑戰。
Open Liberty 與 WebSphere Liberty 有完整支援 JakartaEE 9,也可以向下相容 JavaEE,是一個很不錯的選擇!
Add comment