Spring Framework 6.2 正在积极开发中,预计将于 2024 年 11 月发布。这个版本将对核心容器和 Web 支持进行重大修订,以适应 JDK 17-23 和 Jakarta EE 9-10 的标准。请参阅“Spring Framework 6.2 中的新增功能”。
Spring Framework 6.2 的第四个里程碑版本已经发布,引入了多项新特性,例如 Task 和 ScheduledTask 类型现在可以暴露关于其执行的元数据,以及对 @TestBean 和 @MockitoBean 支持的进一步改进。
Spring Framework 7.0
Spring Framework 7.0 计划在 2025 年 11 月发布,将升级到 Jakarta EE 11(包括 Tomcat 11、Hibernate ORM 7、Hibernate Validator 9),并采用 JDK 25 LTS,同时保留对 JDK 17 的支持。
对于 Kotlin 应用程序,Spring Framework 7 将基于 Kotlin 2 进行支持。
此外,Spring Framework 7 还将与 GraalVM 和 Project Leyden 保持战略合作,重点关注 Spring AOT。Spring Framework 7.0 的第一个里程碑预计将于 2025 年初发布。
Kotlin 2.0.0 版本
Kotlin 2.0.0 版本已经发布,带来了许多新特性和改进,包括对 JVM、Native、Wasm 和 JS 目标平台的 Kotlin K2 编译器的稳定支持。Kotlin 2.0.0 还引入了新的编译器插件、对 lambda 函数的 invokedynamic 支持、对 Kotlin/Native 的 GC 性能监控等
Jakarta EE 11
Jakarta EE 11 预计将在 2024 年第一季度发布,将支持 Java 21,并可能包括对虚拟线程和记录的支持。Jakarta EE 11 的目标是提高性能和开发者生产力,并将有更多的 CDI 集中和简化的规范
GraalVM
GraalVM 原生镜像是解决 Java 应用在云计算时代面临的挑战(如冷启动慢、内存占用高)的关键技术。Spring Framework 6 和 Dubbo 3 都提供了对 AOT(Ahead-of-Time)编译的支持,以实现应用的静态化打包。Spring AOT 和 Dubbo AOT 处理机制可以自动化地生成 GraalVM 所需的元数据配置,以便在编译期间使用。
Spring Boot
- Spring Boot 3.5 和 Spring Cloud 2025.0(2025 年 5 月)仍将基于 Spring Framework 6.2.x,
- Spring Boot 4.0 和 Spring Cloud 2025.1(2025 年 11 月)将基于 Spring Framework 7.0 GA 构建。
为什么不直接跳到Java 21并使用虚拟线程作为标准?
开源生态系统目前正在JDK 17上重新平衡,甚至仍在进行中(请参阅Hibernate ORM 7.0和其他即将在Jakarta EE 11时代推出的提供商,他们将在2025年初发布第一个JDK 17+版本)
我们并不打算在任何情况下将虚拟线程设为默认值,这是由于所涉及的权衡和细微差别,也是由于框架参与了周围的服务器环境,其中主要的线程决策是在Tomcat和co中做出的。
与此相关的是,我们还打算通过多版本jar包含新的JDK 25平台特性,如Class-File API。从我们现在的立场来看,JDK 25基线实际上可能在未来的某个时候对我们非常有益。
也就是说,我们实际上认为JDK 17在我们的新一代框架中是“可容忍的”,而不是将其作为参考案例进行推广。我们预计常用的JDK一代肯定是JDK 21。一旦开源生态系统转向基于JDK 21的版本,我们也将成为第一批接受JDK 21基线的人。
留在JDK 17更有用,Jakarta EE 11没有授权JDK 21。