写点什么

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:0020222

评论

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

实现-最佳实践-学做一道菜V3

南山

个人成长

实现-最佳实践-难事开头V3

南山

个人成长

实现-最佳实践-善于分享V3

南山

个人成长

实现-最佳实践-睡前复盘V3

南山

实现-最佳实践-蒜蓉扇贝V3

南山

个人成长

中国移动研究院与华为举行"数联网(DSSN)合作备忘录"签约仪式

Geek_2d6073

AI媒体工作流“出道” | 闪迪助力探索AI的实践与创新

Geek_2d6073

如何选择工作任务跟踪软件?8大工具比较

爱吃小舅的鱼

任务管理 任务管理软件

实现-最佳实践-感恩日记V3

南山

个人成长

.net core集成Minio,构建一个文件存储的基础设施

为自己带盐

.net core Minio

实现-最佳实践-个人介绍V3

南山

个人成长

实现-最佳实践-规划开头V3

南山

个人成长

观测云全面支持 OaC,通过 Terraform 管理您的可观测性

观测云

Terraform

社区来稿丨一个真正意义上的实时多模态智能体框架,TEN Framework 为构建下一代 AI Agent 而生

声网

实现-最佳实践-人生规划V3

南山

个人成长

实现-最佳实践-要事第一V3

南山

个人成长

实践-最佳实践-时间管理V3

南山

个人成长

RTE 大会报名丨AI 时代新基建:云边端架构和 AI Infra ,RTE2024 技术专场第二弹!

声网

实现-最佳实践-大模型提效V3

南山

个人成长

实现-最佳实践-创造心流体验V3

南山

个人成长

实现-最佳实践-剁椒鱼头V3

南山

个人成长

实现-最佳实践-分享演讲V3

南山

个人成长

实现-最佳实践-精力管理V3

南山

个人成长

实现-最佳实践-沉淀与践行V3

南山

个人成长

华为openMind分论坛:赋能AI社区生态汇聚,推动AI创新发展智慧未来

Geek_2d6073

实现-最佳实践-个人复盘V3

南山

个人成长

实现-最佳实践-目标觉知V3

南山

个人成长

天润融通发布微藤智能体平台,中国客户联络正式进入“智能体时代”

天润融通

实现-最佳实践-目标制定V3

南山

个人成长

实现-最佳实践-权益维护抉择V3

南山

个人成长

实现-最佳实践-适应高度刺激V3

南山

个人成长

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