正如昨天在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 Validation等,就需要将javax改为jakarta命名空间。
虽然这听起来很激进,但请记住,我们谈论的是2022年第四季度的发布。到那时,不仅JDK 17已经取代JDK 11成为下一个长期支持版本一年多了,而且它本身也将被JDK 18和JDK 19取代,成为当时可用的功能版本,JDK 20已经接近其功能冻结期。对于Jakarta EE 9也是如此。我们预计Jakarta EE 10届时将问世,而另一代Tomcat、Jetty和其他产品将作为运行时选项得到支持。保持上述最低限度的基线,这样就可以在Spring Framework 6.x一代中获得进一步的Java进化,而Java 17和Jakarta EE 9只是一个开始。
同时,Spring Framework 5.3.x和Spring Boot 2.x目前仍在积极开发中,Spring Boot 2.6将在今年11月推出,然后Spring Boot 2.7将在2022年5月推出。一旦达到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--新的基础设施优势和新的架构选择将为你所用。我们希望你能在未来几年内欣赏这些选择。
P.S.: 如果您想知道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。