正如在 SpringOne 上发表的那样,Spring Framework 6 和 Spring Boot 3 打算在 2022 年第四季度达到通用可用性的高端基准:
Java 17+(来自 Spring Framework 5.3.x 行中的 Java 8-17)
Jakarta EE 9+(来自 Spring Framework 5.3.x 系列中的 Java EE 7-8)
这一前瞻性基线将为咱们的 API 设计和集成工作带来显着劣势,贯通您的利用程序代码,并在将来许多年内为框架和您的应用程序提供将来证实。然而,这当然是有代价的:基于 Spring Framework 6 和 Spring Boot 3 的应用程序在运行时至多须要 JDK 17,以及至多 Tomcat 10 / Jetty 11(为了与 Jakarta EE 9 兼容)。更重要的是,您的应用程序源代码可能须要进行一些更改:例如,在 Jakarta EE 9 中,无论您在哪里接触 Servlet API、JPA、Bean 验证等,javax 到 jakarta 命名空间的更改。
尽管这听起来可能有点激进,但请记住,咱们议论的是 2022 年第四季度的公布:到那时,不仅 JDK 17 将取代 JDK 11 作为下一个长期反对版本超过一年,而且 JDK 18 和 JDK 19 自身将被 JDK 18 和 JDK 19 取代,作为过后可用的性能版本,而 JDK 20 曾经靠近其性能解冻。Jakarta EE 9 也是如此:咱们预计到那时 Jakarta EE 10 会公布,并且反对另一代 Tomcat、Jetty 和 co 作为运行时选项。放弃下面的基线作为最低限度,这容许在 Spring Framework 6.x 代中取得进一步的 Java 演变,Java 17 和 Jakarta EE 9 只是一个开始。
同时,Spring Framework 5.3.x 和 Spring Boot 2.x 临时仍在踊跃开发中,往年 11 月推出 Spring Boot 2.6,而后在 2022 年 5 月推出 Spring Boot 2.7。一旦最终的 Spring Boot 2.x 性能分支曾经达到(尚未确定这将是 2.7 版本还是可能是更高版本),该分支将与 Spring Framework 5.3.x 一起变成一个扩大的开源维护阶段,与 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 生态系统筹备您的应用程序,您能够依照本人的节奏随便降级到 Spring Framework 6 和 Spring Boot 3,以及 Tomcat、Jetty 和 co – 以及新的基础设施劣势和新的架构选项变得对你可用。咱们心愿您在接下来的几年里会观赏这些抉择。
PS:如果您想晓得 JDK 11 作为 LTS 一代,请留神 JDK 11 的商业反对工夫框架比 JDK 8 短,JDK 11 LTS 曾经在 2023 年末逐渐淘汰。JDK 17 作为下一代 LTS 将提供至多到 2026 年的反对时间表。咱们认为 JDK 8 在生态系统中扮演着独特的角色;相比之下,JDK 11 是一个过渡版本。此外,JDK 17 提供了一组最新的语言、API 和 JVM 加强性能,使其成为更具吸引力的降级。最初但并非最不重要的是,在同一代 Spring Framework 6.x 中,依然会有 JDK 23 LTS (2024) 和 JDK 29 LTS (2027) 反对,无论如何将最终反对范畴变成相当宽泛的 JDK 17-29 .