速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Spring Boot 3 和 Spring Framework 6 使用 Java 17 和 Jakarta EE 9,并支持基于 GraalVM 的原生 Java

作者:Karsten Silz

  • 2022-12-20
    北京
  • 本文字数:1742 字

    阅读完需:约 6 分钟

Spring Boot 3和Spring Framework 6使用Java 17和Jakarta EE 9,并支持基于GraalVM的原生Java

VMware发布了人们期待已久的Spring Framework 6和 Spring Boot 3。在 Spring Framework 5 发布五年之后,这些版本发布开启了 Spring 生态系统的新篇章。Spring Framework 6 需要 Java 17 和 Jakarta EE 9,并兼容最近发布的 Jakarta EE 10。它还通过 Micrometer 嵌入了可观测性,支持跟踪和度量。Spring Boot 3 需要 Spring Framework 6。它内置支持通过 GraalVM Native Image 的静态预先(Ahead-of-Time,AOT)编译创建原生可执行文件。


VMware 的软件工程高级总监 Michael Minella 告诉 InfoQ:


Spring 采取的方法是让 Spring 开发者在现有的专业知识基础上获取原生编译的收益,而无需进行大量的变更,这在整个生态系统中是独一无二的。


VMware 在 SpringOne 2021 会议上宣布了 Spring Framework 6 和 Spring Boot 3。从 2010 年以来,这是 Spring Framework 第一次在上一个主发布版本两年后(2020 年的 5.3 版本),而不是一年后发布更新。在最近的一次采访中,Java Champion 和 Spring 开发人员倡导者 Josh Long 在讨论 Spring Framework 6 开发时间延长时表示:


“对于我们这些框架开发者来说,迁移至 Jakarta EE 是很有挑战性的”,“可观测性工作也涉及很多的地方”,“与 GraalVM Native Image 的预先(Ahead-of-Time,AOT)编译相关的工作[...]至少从 2019 年开始就以某种形式展开了”。


关于这两个版本相关内容的更多信息,请参见对Josh Long的采访


支持 Jakarta EE 10 使得 Spring Framework 6 能够兼容最新的 web 服务器,比如 Tomcat 10.1、Jetty 11 和 Undertow 2.3。Spring Framework 6 还简化了 HTTP 请求,这是通过将它们定义在所谓的 HTTP 接口中实现的,它类似于 Spring Data JPA 通过资源库(repository)接口简化了数据库查询。借助 RFC 7807 问题详情,HTTP 错误信息也会更有帮助。


作为一个预览特性,Spring Framework 6 可以使用 Java 19 中来自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 Platform Module System(JPMS)的支持的,但这从未实现过。对 JPMS 的支持进行了推迟


Spring Framework 6.0 强烈关注 AOT 和 GraalVM 原生镜像,以优化基于 Spring 的应用的部署。[...]今年以来,对它[模块支持]的需求非常少。[...]更深入的模块系统调整仍然是我们为 Spring Framework 6.x 所制定的长期技术战略的一部分。


OpenJDK 的 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 Boot 应用程序导入了 Jakarta EE 类型,如注解、校验或 JPA,就需要对其进行修改。这就是为什么最近推出的Spring Boot Migrator项目正在“致力于从 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 会议上讨论其新版本,SpringOne原计划于 2022 年 12 月举行线下的会议。


原文链接:

Spring Boot 3 and Spring Framework 6 Use Java 17 and Jakarta EE 9, Support Native Java with GraalVM


相关阅读:

对话Spring大神:Spring 生态系统的新时代来了!

Spring Boot 3将于2022年11月发布,延迟了对Java模块系统的支持

Spring Boot Migrator简介

2022-12-20 08:0020043

评论

发布
暂无评论
发现更多内容

一种绕过Rust借用检查和不可变性的方法

SkyFire

rust 借用检查

5.8K Star,Microsoft 官方开源电商平台

GitHub指北

C#

6.1K Star,简简单单的看直播

GitHub指北

dart

如何挑选适合的项目可视化管理系统?十大优选方案揭晓

爱吃小舅的鱼

项目管理 可视化

API 数据接口:使用操作流程与安全指南

Noah

AB Micro850笔记 工程应用经验总结

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 使用ccw了解扩展与插件信息

万里无云万里天

自动化 PLC 工厂运维

PLC笔记 知识点汇总 day2

万里无云万里天

PLC 电工

PLC笔记 知识点汇总 day3

万里无云万里天

PLC

Docker启动失败报错Failed to start Docker Application Container Engine解决方案

百度搜索:蓝易云

使用终端MobaXterm连接Centos

百度搜索:蓝易云

localhost与127.0.0.1傻傻分不清楚,区别详解来了

陆通

MES系统如何实现生产车间的实时监控、精准调度

万界星空科技

工业互联网 mes 工业自动化 万界星空科技mes MES、

AB Micro850笔记 热电阻热电偶扩展模块 2085-IRT4

万里无云万里天

自动化 PLC 工厂运维

速速收藏!这些2024年上映的AI电影与短剧,申请加入你的国庆假期宅家计划!

可信AI进展

架构误区系列21:模型的边界和流式处理

agnostic

领域模型 模型边界

高效开发Maven架构设计图解/掌握项目工程自动化技巧(精通篇二)

肖哥弹架构

maven 效能

AB Micro850笔记 上传与下载

万里无云万里天

自动化 PLC 工厂运维

网页缓存清理工具Privatus for Mac

Mac相关知识分享

linux下vsode超级用户运行

百度搜索:蓝易云

5.3K Star,轻量级联想拯救者工具箱

GitHub指北

C#

超实用!2024年10款免费项目管理系统全解析

爱吃小舅的鱼

项目管理 免费

万界星空科技 MES数据的集成平台

万界星空科技

系统集成 mes 万界星空科技mes 生产管理MES系统

AB Micro850笔记 485串口插件 2080-SERIALISOL

万里无云万里天

自动化 PLC 工厂运维

03MyBatis-Plus中的常用注解

百度搜索:蓝易云

MyBatis获取参数值的两种方式#{}和${} 以及 获取参数值的各种情况

百度搜索:蓝易云

网页也能跑大模型?

蛋先生DX

AI 浏览器 webassembly 大模型 onnxruntime-web

AB Micro850笔记 更新固件版本

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 三种编程方式 梯形图 功能块 结构化文本

万里无云万里天

自动化 PLC 工厂运维

8.9K Star,开源自托管离线翻译引擎

GitHub指北

Python

AB Micro850笔记 使用ccw粗略了解PLC信息

万里无云万里天

自动化 PLC 工厂运维

Spring Boot 3和Spring Framework 6使用Java 17和Jakarta EE 9,并支持基于GraalVM的原生Java_语言 & 开发_InfoQ精选文章