NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

在家学习如何保持高度自律

大数据搬运工

学习方法

kubernetes“雪崩了”

Linux 云原生 #Kubernetes#

新书上市|听说你翻开数学书就眼睛疼?

图灵社区

数学 科普 教育

如何将 SAP 电商云 Spartacus UI 部署到 tomcat 上运行

Jerry Wang

angular SAP commerce Spartacus 9月月更

哪些vue面试题是经常会被问到的

bb_xiaxia1998

Vue 前端

对领域驱动设计的理解与社交领域的实践

微服务 微服务架构 DDD

基于微服务的应用性能监控方案

穿过生命散发芬芳

9月月更 微服务监控

Identity and Access Management

冯亮

DevOps security AWS Cloud

SQL是什么?它能做什么?

乌龟哥哥

9月月更

工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(下)

宇宙之一粟

数据库 abap 查询语句 select 9月月更

RocketMQ&kafka消息队列性能优劣对比

程序员小毕

程序员 面试 RocketMQ 后端 消息队列

从使用者,DBA,内核开发三个不同角度来分析SQL的性能问题

数据库 postgresql sql database

【编程基础】正则表达式基本使用及在Python中使用正则表达式匹配内容

迷彩

Python 正则表达式 9月月更

跟着卷卷龙一起学Camera--内存池浅析02

卷卷龙

ISP 9月月更

这些js手写题对我这个菜鸟来说写不出来

helloworld1024fd

JavaScript 前端

数据库并发控制理论

数据库 postgresql 并发控制 database

Javaweb核心之注解开发Servlet

楠羽

Servlet 笔记 9月月更

【云原生 | 从零开始学Kubernetes】七、Kubernetes的命名空间

泡泡

Docker 云计算 容器 云原生 9月月更

新书上市|听说你翻开数学书就眼睛疼?

图灵教育

数学 科普 教育

2022react高频面试题有哪些

beifeng1996

前端 React

Java服务异常排查定位大图

慕枫技术笔记

后端 9月月更

顺序、时钟与分布式系统

分布式 时钟

脑机接口照进现实:5位脑科学家带来的最新启示

脑极体

大数据调度平台Airflow(八):Airflow分布式集群搭建及测试

Lansonli

airflow 9月月更

后端打工人必知必会21个MySQL表设计的经验准则

程序员小毕

MySQL 数据库 程序员 程序人生 Java 面试

percolator的理解与开源实现分析

数据库 分布式 事务

浮点, 让多少老司机折戟?

浮点数 计算机原理 计算机科学与技术

2022-09-24:以下go语言代码输出什么?A:1;B:3;C:13;D:7。 package main import ( “fmt“ “io/ioutil“ “net/

福大大架构师每日一题

golang 福大大 选择题

最近几周react面试遇到的题总结

beifeng1996

前端 React

面试官:这些js手写题你会吗

helloworld1024fd

JavaScript 前端

数据库路径选择理论与postgreSQL实现

数据库 postgresql 遗传算法

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