VMware发布了期待已久的SpringFramework 6和SpringBoot 3。在 Spring Framework 5 五年之后,这些版本开始了 Spring 生态系统的新一代。Spring Framework 6 需要 Java 17 和 Jakarta EE 9,并且与最近发布的Jakarta EE 10 兼容。它还通过Micrometer嵌入了具有跟踪和指标的可观测性(observability)。Spring Boot 3 需要 Spring Framework 6。它具有内置支持,可通过使用 GraalVM 本机映像进行静态提前 (AOT) 编译来创建本机可执行文件。
VMware软件工程高级总监Michael Minella告诉InfoQ:
Spring采取的方法使Spring开发人员能够在他们现有专业知识的基础上进行构建,以实现本机编译的好处,而无需进行重大更改,这在生态系统中是独一无二的。
VMware在其SpringOne 2021大会上宣布了Spring Framework 6和Spring Boot 3。自 2010 年以来,Spring 框架更新首次在上一个主要版本 - 2020 年的 5.3 版本之后两年,而不是一年。在最近的一次采访中,VMware的Java冠军和Spring开发人员倡导者Josh Long讨论了Spring Framework 6的延长开发时间,他说:
“迁移到 Jakarta EE 对于我们作为框架开发人员来说一直是一个挑战”,“可观测性的工作也很普遍”,“使用 GraalVM 本机映像进行提前 (AOT) 编译的工作 [...]至少自 2019 年以来,一直以某种形式进行创作”。
有关这两个版本的制作过程的更多见解,请参阅对Josh Long的相关采访。
支持 Jakarta EE 10 使 Spring Framework 6 与最新的 Web 服务器兼容,例如 Tomcat 10.1、Jetty 11 和 Undertow 2.3。Spring Framework 6 还通过在所谓的 HTTP 接口中定义 HTTP 请求来简化 HTTP 请求,例如 Spring Data JPA 通过存储库接口简化了数据库查询。HTTP 错误消息现在对 RFC 7807 问题详细信息更有帮助。
作为预览功能,Spring Framework 6 可以使用 Java 19 上Project Loom 中的虚拟线程。虚拟线程和关联的结构化并发 API 简化了 Java 中的并发编程,并提高了运行效率。与Oracle不同,Spring认为虚拟线程是对响应式编程的补充,而不是取代它。
Spring Framework 6 中值得注意的依赖项升级包括 Kotlin 1.7、Hibernate ORM 6.1、用于 JSON 和 XML 解析的 Jackson 2.14 以及用于反应式数据库访问的 R2DBC 1.0。
正如InfoQ去年报道的那样,Spring Framework 6中对Java平台模块系统(JPMS)的支持最初是计划好的,但从未实现。但是,决定延迟对JPMS的支持:
Spring Framework 6.0 非常关注 AOT 和 GraalVM 原生镜像,以优化基于 Spring 的应用程序的部署安排。[...]在今年的过程中,很少有人要求它[模块支持]。[...]更深入的模块系统对齐仍然是我们Spring Framework 6.x一代长期技术战略的一部分。
OpenJDK Project Leyden计划优化Java,并依赖于JPMS和**jlink**链接工具。如果没有JPMS支持,Spring应用程序就无法使用这些优化。
Spring Boot 3 的亮点是支持生成本机可执行文件。这些可执行文件启动速度更快,使用更少的内存,具有更小的容器映像,并且更安全。这使得Java在云中更具竞争力。Quarkus,Micronaut和Helidon的框架使本机可执行文件在Java中流行。InfoQ最近发表了一篇关于这个主题的六篇文章系列。当 GraalVM Native Image 编译器安装在开发人员的机器上时,使用 Spring Boot 3 创建本机可执行文件就像 ./mvnw -Pnative package或 /gradlew nativeCompile 一样简单。更多细节可以在此博客文章中找到。
Jakarta EE 9 将 Java 命名空间从**javax.* 更改为jakarta.*** 。这需要对现有的 Spring 和 Spring 引导应用程序进行更改,如果它们导入 Jakarta EE 类型,如注释、验证或 JPA。这就是为什么最近推出的Spring BootMigrator项目正在“致力于从Spring Boot 2.7到Spring Boot 3.0的自动升级”。
VMware缩短了Spring Framework 6的商业和开源支持持续时间。正如VMware的Spring Framework项目负责人Juergen Hoeller所说:
期望人们更快地升级到最新的 6.x 功能版本。
相比之下,Spring Boot 3.0 的免费支持期限仍为一年。
VMware 将在 2023 年 1 月 24 日至 26 日的虚拟 SpringOne 会议上讨论其新版本,该会议原计划于 2022 年 12 月举行现场会议。