Spring Framework 6 将采用 Java 17,是时候将你的应用升级了

关于从先前的长期支持版本(Java 11 和 Java 8)迁移代码,你需要知道的是什么?

整理 | 王晓曼

出品 | CSDN(ID:CSDNnews)

Spring Framework 6 将采用 Java 17 和 Jakarta EE 9

正如昨天在 SpringOne 上宣布的那样,Spring Framework 6 和Spring Boot 3 计划在 2022 年第四季度实现总体可用性的高端基线:

  • Java 17+(来自 Spring Framework 5.3.x 线中的 Java 8-17)
  • Jakarta EE 9+(来自Spring框架5.3.x 线中的 Java EE 7-8)

这一前瞻性的基线将为我们的 APl 设计和集成工作带来巨大的好处,在未来的许多年里,它将为您的应用程序代码和框架以及您的应用程序带来光明。然而,这当然是有代价的:Spring Framework 6 和 Spring Boot 3 的应用程序在运行时至少需要 JDK 17,以及 Tomcat 10 /Jetty 11(为了兼容 Jakarta EE 9)。更重要的是,在你的应用程序源代码中可能需要一些更改:例如在 jakarta EE 9 中 javax 到 jakarta 命名空间的更改,无论你在哪里接触 Servlet API、JPA、Bean Validation 等。

虽然一开始这听起来有点咄咄逼人,但请记住,我们谈论的是2022年第四季度的发布:到那时,不仅 JDK 17 将取代 JDK 11 成为下一个长期支持版本,而且它本身也将被 JDK 18 和 JDK 19 作为当时可用的特性版本取代,而 JDK 20 的特性已经接近冻结。

Jakarta EB 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 一起进入扩展的开源维护阶段。与 Spring Framework 6 和 Spring Boot 3 并行,有好几年的重叠。考虑我们之前对 Spring Framework 3.2.x 和4.3.x 的分支,以了解在实践中将如何实现。

因此,如果你打算继续使用 JDK 8 或 11 几年,或者即使你打算继续使用 JDK17上的 Spring Framework 5.3 基础设施几年,请放心,我们对 Spring Framework 5.3.x 和 Spring Boot 2.x 的扩展维护是可以的,会让你覆盖。
一旦你准备使用下一代应用程序的 Java 生态系统,以自己的节奏随时升级到 Spring 框架 6 和 Spring Boot 3,随着 Tomcat、Jetty 和 co——新基础设施的好处和新建筑成为可用的选项。我们希望在接下来的几年里你们会欣赏这些选择。

注:如果你想知道 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年)和

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Spring5 是一个重要的版本,距离SpringFramework4差不多四年。在此期间,大多数增强都是在 SpringBoot 项目中完成的。在本文中,我们将很快了解到Spring5发行版中的一些令人兴奋的特性。 1. 基准升级 要构建和运行 Spring5 应用程序,你至少需要 J2EE7 和 JDK8。以前的 JDK 和 JavaEE 版本不再支持。 JavaEE7 包含: Servlet 3.1 JMS 2.0 JPA 2.1 JAX-RS 2.0 Bean Validation 1.1 与 Java 基准类似,许多其他框架的基准也有变化。例如: Hibernate 5 Jackson 2.6 EhCache 2.10 JUnit 5 Tiles 3 另外,请记下各种服务器最低支持版本。 Tomcat 8.5+ Jetty 9.4+ WildFly 10+ Netty 4.1+ Undertow 1.4+ 2. 兼容 JDK9 运行时 Spring5 发行版与 JDK9 发行日期非常接近。目标是让 Spring Framework5 在 JDK9 的 GA 之后正确运行。 Spring5 版本的候选版本已经在 classpath 和 modulepath 上支持 Java9 了。 GA版本中你可以期待良好的 JDK9 支持。 3. 使用 JDK8 特性 获取免费Spring 5 新特性视频详解可以群:554355695 在 Spring4.3 之前,JDK基准版本是6。所以 Spring4 必须支持 Java6,7 和8,为了保持向后兼容性, Spring 框架没有适应 Java8 带来的许多新特性,比如 lambda 表达式。 Spring5 的基准版本为8,因此它使用了 Java8 和9的许多新特性。例如: Spring 接口中的默认方法 基于 Java8 反射增强的内部代码改进 在框架代码中使用函数式编程 - lambda表达式 和 stream流 4. 响应式编程支持 响应式编程是 SpringFramework5.0 最重要的特性之一。响应式编程提供了另一种编程风格,专注于构建对事件做出响应的应用程序。 SpringFramework5 包含响应流(定义响应性API的语言中立尝试)和 Reactor(由Spring Pivotal团队提供的 Reactive Stream 的Java实现), 以用于其自身的用途以及其许多核心API。 Spring Web Reactive 在 spring-webmvc 模块中现有的(而且很流行)Spring Web MVC旁边的新的 spring-web-reactive 模块中。 请注意,在 Spring5 中,传统的 SpringMVC 支持 Servlet3.1 上运行,或者支持 JavaEE7 的服务器。 5. 函数式web框架 除了响应式功能之外,Spring5 还提供了一个函数式Web框架。它提供了使用函数式编程风格来定义端点的特性。 该框架引入了两个基本组件:HandlerFunction 和 RouterFunction。 HandlerFunction 表示处理接收到的请求并生成响应的函数。 RouterFunction 替代了 @RequestMapping 注解。它用于将接收到的请求路由到处理函数。例如: RouterFunction route = route(GET("/hello-world"), request -> Response.ok().body(fromObject("Hello World"))); 6. Kotlin支持 Kotlin 是一种静态类型的JVM语言,它让代码具有表现力,简洁性和可读性。 Spring5.0 对 Kotlin 有很好的支持。 7. 移除的特性 随着 JavaJavaEE 和其他一些框架基准版本的增加,SpringFramework5 取消了对几个框架的支持。例如: Portlet Velocity JasperReports XMLBeans JDO Guava

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值