本文最初发表于Spring官方博客网站,由 InfoQ 中文站翻译并分享。
在最近召开的 SpringOne 上,Spring 官方宣布 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 和相关可用的解决方案,这样就可以享受新基础设施的优势和新的架构方案。我们希望你能在未来几年内欣赏这些选择。
PS: 如果你想了解 JDK 11 作为 LTS(Long-Term Support)的相关信息,请注意 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。
英文链接:
https://medium.com/@puneet.chandel/technology-choices-that-make-sense-today-f76872743ec1
评论 1 条评论