AI实践哪家强?来 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:0020546

评论

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

云栖3天,云原生+ AI 多场联动,新产品、新体验、新探索

阿里巴巴云原生

阿里云 云原生

面试官:项目中如何实现分布式锁?

王磊

店铺信息全掌握:拍立淘API中的卖家与店铺数据

技术冰糖葫芦

API Gateway api 货币化 API 接口 API 测试 pinduoduo API

携手SelectDB,观测云实现性能与成本的双重飞跃

观测云

监控

望繁信科技入选中国信通院“铸基计划”,流程智能引领企业数字化变革

望繁信科技

数字化转型 流程挖掘 铸基计划 流程资产 流程智能

DNS解析常见问题:什么是DNS泛解析?如何设置泛解析?

国科云

第68期 | GPTSecurity周报

云起无垠

重磅!阿里云可观测产品家族全新升级,AI +数据双驱动,打造全栈可观测体系

阿里巴巴云原生

阿里云 云原生 可观测

Web3 游戏周报(9.15-9.21)

Footprint Analytics

链游

阿里云函数计算 x NVIDIA 加速企业 AI 应用落地

阿里巴巴云原生

阿里云 云原生 函数计算

Footprint Analytics: 我们为何打造 Growthly 这款产品

Footprint Analytics

区块链+

用二维码收集信息时,在后台可以查看、统计哪些数据?

草料二维码

低代码 无代码 无代码平台 低代码起源 草料二维码

IoTDB 论文入选三大数据库顶会:ICDE、SIGMOD、VLDB 收录自研成果!

Apache IoTDB

期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟

阿里云云效

阿里云 云原生 通义灵码

函数计算 FC:首发 GPU 极速模式,更弹性、更降本

阿里巴巴云原生

阿里云 云原生 函数计算

期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟

阿里巴巴云原生

阿里云 AI 云原生

ByteHouse新一代云数仓关键技术及最佳实践

字节跳动数据平台

数据库 大数据 云原生 Clickhouse 数仓

“AI+Security”系列第3期(三):大模型在网络安全检测及运营场景的探索及应用

云起无垠

海外云服务器与传统服务器的对比与选择

Ogcloud

服务器 云主机 云服务器 云主机厂商 海外云服务器

使用通义灵码,参与开源项目全程纪实

阿里巴巴云原生

阿里云 云原生 通义灵码

从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用

不在线第一只蜗牛

Java .net

降本 60%!小熊油耗使用阿里云 SAE 更加稳定可靠

阿里巴巴云原生

阿里云 云原生

2024 天池云原生编程挑战赛决赛名单出炉,冠军来自中山大学、昆仑数智战队

阿里巴巴云原生

阿里云 云原生

淘宝商品详情接口多线程调用,数据分析行业的效率魔法

tbapi

淘宝API接口 淘宝商品详情接口 淘宝商品数据采集 淘宝商品数据采集接口

使用通义灵码,参与开源项目全程纪实

阿里云云效

阿里云 云原生 通义灵码

云栖实录 | 阿里云 OpenLake 解决方案重磅发布:多模态数据统一纳管、引擎平权联合计算、数据共享统一读写

阿里云大数据AI技术

人工智能 大数据 阿里云 云栖大会 OpenLake

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