原文はこちら。
The original article was written by Juergen Hoeller (Spring Framework project lead).
https://spring.io/blog/2021/09/02/a-java-17-and-jakarta-ee-9-baseline-for-spring-framework-6
昨日のSpringOneで発表があったように、2022年第4四半期での一般提供 (general availability) をめざし、ハイエンドベースラインに向けてSpring Framework 6およびSpring Boot 3が計画されています。
Spring Framework 5.3.x Spring Boot 2.x | Spring Framework 6 Spring Boot 3 | |
---|---|---|
Java SE (JDK) | Java 8からJava 17 | Java 17+ |
Java/Jakarta EE | Java EE 7および8 | Jakarta EE 9+ |
この将来を見据えたベースラインは、APIの設計や統合の取り組みに大きなメリットをもたらし、お客様のアプリケーションコードにも反映され、将来にわたってフレームワークとお客様のアプリケーションを保護することになります。ただし、当然ながらコストがかかります。Spring Framework 6とSpring Boot 3をベースにしたアプリケーションは、ランタイムに最低でもJDK 17、最低でもTomcat 10/Jetty 11(Jakarta EE 9との互換性のため)を必要とします。さらに重要なことに、アプリケーションのソースコードにも変更が必要になる場合があります。例えば、Servlet API、JPA、Bean Validationなどに触れる場合には、Jakarta EE 9におけるjavax
からjakarta
への名前空間の変更に対応する必要があります。
このことについて、ぱっと見では強引に聞こえるかもしれませんが、2022年第4四半期のリリースについて話していることを念頭に置いてください。その頃には、JDK 11にとってかわる次のLong-Term Supportリリースとして、JDK 17が1年以上たっているだけでなく、JDK 18とJDK 19がその時点で利用可能な機能リリースとしてとってかわっており、JDK 20はすでに機能凍結に近づいている、という状況でしょう。また、Jakarta EE 9も同様です。その頃には、Jakarta EE 10がリリースされ、ランタイム・オプションとしてさらに先の世代のTomcat、Jettyなどがサポート対象になっていることが予想されます。上記のベースラインを最低限維持することで、Java 17とJakarta EE 9を手始めに、Spring Framework 6.x世代でさらにJavaを進化させることができます。
これと並行して、Spring Framework 5.3.xとSpring Boot 2.xも当面は活発に開発し続け、今年11月にはSpring Boot 2.6、2022年5月にはSpring Boot 2.7がリリースされる予定です。Spring Boot 2.xの最終featureブランチに到達すると(これが2.7になるのか、あるいはおそらくそれ以降のリリースになるのかはまだ決まっていません)、そのブランチはSpring Framework 5.3.xとともにextended open source maintenanceフェーズに変わり、Spring Framework 6やSpring Boot 3と並行して数年が過ぎていきます。Spring Framework 3.2.xと4.3.xのメンテナンスブランチについての過去の対応を考えてみると、これが実際にどのようになるのかがわかっていただけるでしょう。
もしJDK 8や11を数年使い続けるつもりなら、あるいはJDK 17でSpring Framework 5.3のインフラを数年使い続けるつもりなら、Spring Framework 5.3.xとSpring Boot 2.xの拡張メンテナンスで対応いたしますのでご安心ください。次世代のJavaエコシステムに向けてアプリケーションを準備する準備ができたら、ご自身のペースでTomcatやJettyなどと一緒にSpring Framework 6とSpring Boot 3にアップグレードして、インフラ面での新たなメリットやアーキテクチャ面での新たな選択肢を手に入れてください。私たちは、お客様が今後数年間にわたってこれらの選択肢を評価してくださることを願っています。
P.S. LTSとしてのJDK 11を考えている方向けに補足すると、JDK 11の商用サポート期間がJDK 8よりも短く、JDK 11 LTSが2023年後半に廃止されることにご注意ください。次のLTSであるJDK 17は、少なくとも2026年までサポートされます。私たちは、JDK 8がエコシステムの中で独自の役割を担っているのに対し、JDK 11は過渡的なリリースと考えています。また、JDK 17は言語、API、JVMの最近の機能強化が蓄積されており、より魅力的なアップグレードとなっています。大切なことを言い忘れていましたが、Spring Framework 6.xの世代期間内では、JDK 23 LTS(2024年リリース予定)とJDK 29 LTS(2027年リリース予定)がまだサポート対象として存在しているため、最終的なサポート範囲はJDK 17-29というかなり広いものになるでしょう。