Spring 6.0 正式发布,一文了解新特性

news2024/11/20 10:31:25

正式发布

Spring Framework 6.0 首个 RC 版本正式发布,可以开始使用了。

新特性

我们一起来看看这次6.0版本带来了哪些特性?需要注意的是该版本整个框架代码库现在基于 Java 17 源代码级别,所以如果你想使用需要升级版本到 JDK 17+ 才可以,并且底层依赖的 J2EE 也迁移到了Jakarta EE 9(至少 Tomcat 10 / Jetty 11,为了与 Jakarta EE 9 兼容)

Spring 官方认为 JDK11 仅仅是一个过渡使用的 JDK 版本,而 JDK17 几乎是一个全新的编程语言,增强和完善了 API 和 JVM,这让升级 JDK17 成为更具吸引力的选择。

主要内容

主要更新内容如下:

  • 为 AOT 引擎设置引入 builder API

  • 支持Spring 应用程序探索虚拟线程,基于 JDK19

  • 基于 GraalVM 将 Spring 应用程序编译成原生镜像(native image)

  • 将 javax.servlet 迁移到 jakarta.servlet,兼容最新的 web 服务器如:Tomcat 10.1、Jetty 11、Undertow 2.3,最新的持久性框架 Hibernate ORM 5.6.x

  • 。。。

接下来重点深入介绍几点影响重大的新功能!

AOT编译

Ahead-Of-Time,即预先编译,与我们熟知的Just-In-Time(JIT,即时编译)来说 AOT 带来的好处是 JVM 可以直接加载这些已经预编译成二进制码的类信息,可以直接调用,而无需再将其运行时编译成二进制码。因为 AOT 不占用运行时间,可以做一些较耗时的优化,从而显著的加快程序的启动。避免在程序运行时的编译性能消耗和内存消耗,可以在程序运行初期就达到最高性能。

AOT 的方式可以减少 JIT 带来的预热时间,减少 Java 应用长期给人带来的“第一次运行慢”感觉。

AOT的引入,意味着Spring生态正式引入了提前编译技术,相比于JIT编译,AOT有助于优化Spring框架启动慢、占用内存多、以及垃圾无法被回收等问题。

Spring Native

在新版本中引入了Spring Native,有了Spring Native ,Spring可以不再依赖Java虚拟机,而是基于 GraalVM 将 Spring 应用程序编译成原生镜像(native image),提供了一种新的方式来部署 Spring 应用,这种部署 Spring 的方式是云原生友好的。

Spring Native的优点是编译出来的原生 Spring 应用可以作为一个独立的可执行文件进行部署,而不需要安装JVM,而且启动时间非常短并且消耗更少的资源,它的缺点就是构建时长要比JVM更长一些。

Spring Framework 6.0.x 原生镜像支持的 GraalVM 版本是基于 JDK 17-19 的 GraalVM 22.3。请注意,截至 2023 年,GraalVM 与 OpenJDK 发布模型保持一致,每个新的 GraalVM 版本仅支持最新的 Java 级别。因此,Spring Framework 6.x 功能版本可能需要在未来需要具有更高 JDK 基线的新 GraalVM 版本,例如基于 JDK 21 作为下一个 LTS。

虚拟线程

众所周知当前Java线程的实现是每个Java线程需要消耗一个操作系统线程。而操作系统线程这种资源是非常稀缺,非常宝贵的。而虚拟线程是java.lang.Thread一种用户态的实现,当我们在虚拟线程上使用同步API时,是不会阻塞任何操作系统线程,硬件利用率接近最佳。

JDK19 正式引入虚拟线程,意味着许多虚拟线程可以在同一个操作系统线程上运行它们的 Java 代码,从而有效地共享它。值得一提的是,它能做到在几个G的JVM堆上创建几百万个活动的虚拟线程(这在现在的JDK中几乎不可能实现),并且表现出和现在的线程几乎一样的行为。这些协程由 JVM 管理,因此它们也不会增加额外的上下文切换开销,因为它们作为普通 Java 对象存储在 RAM 中。

总结

除了以上重大变更外,详细变更可以去官网查看:What's New in Spring Framework 6.x 

Spring 将 Spring 6.0 称为下一个十年的新开端,直接舍弃了以往版本的 JDK,强制升级到 JDK 17及以上。而目前国内市场上大部分公司还在使用 JDK 8,新应用你会使用 Spring 6.0 嘛?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/76974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是FPGA fpga的核心作用

fpga名词解释:FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。 fpga核心做用:它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的&#…

【吴恩达机器学习笔记】十七、总结

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📣专栏定位:为学习吴恩达机器学习视频的同学提供的随堂笔记。 📚专栏简介:在这个专栏,我将整理吴恩达机器学习视频的所有内容的笔记&…

计算机毕业设计springboot+vue基本医院公众号建设推动医疗卫生服务现状研究

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,医院公众号建设推动医疗卫生服务就是信息时代变革中的产物之一。 任…

从零开始学Java之eclipse的安装配置与使用,看这篇就够了

前言 在上一篇文章中,壹哥给大家介绍了Notepad这个更高级点的记事本,它进行Java开发相比windows自带的记事本要更方便一些。但是即便如此,用这种记事本进行Java开发效率依然很低。如果是少量的代码编写还好说,大量代码的开发&…

计算机毕业设计springboot+vue基本微信小程序的电子书阅读器小程序

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,电子书阅读器小程序就是信息时代变革中的产物之一。 任何系统都要遵循…

【云原生】Kubernetes(k8s)Istio Gateway 介绍与实战操作

文章目录一、概述二、Istio 架构三、通过 istioctl 部署 Istio1)安装istioctl 工具2)通过istioctl安装istio3)检查四、Istio Gateway五、Istio VirtualService 虚拟服务六、示例演示(bookinfo)1)安装bookin…

MATLAB | 一起来感受数学之美,第一届迷你黑客大赛回顾

Hey真的是好久不见,最近确实是比较忙更新频率也下来了,过段时间应该能恢复正常更新速度,之前给大家解说过今年举办的math is beautiful迷你黑客大赛,但这其实是第二届大赛,本期推送带大家回顾一下第一期大赛&#xff0…

为什么索引可以让查询变快?终于有人说清楚了!

概述 人类存储信息的发展历程大致经历如下: 由于是个人凭着自己理解总结的,因此可能不一定精确,但是毋庸置疑的是,在当代,各大公司机构部门的数据都是维护在数据库当中的。 数据库作为数据存储介质发展的最新产物&am…

大数据面试之MapReduce常见题目

大数据面试之MapReduce常见题目 MapReduce中Shuffle过程及优化 1.1 Shuffle的详细图解 1.2 Shuffle的详细文字过程 Shuffle文字部分描述: ​ Shuffle横跨Map和Reduce阶段,是指map()方法之后,reduce()方法之前,中间这段汇洗的过…

Web前端大作业制作个人网页(html+css+javascript)

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

功能强大UI美观的视频答题猜歌闯关娱乐微信小程序源码下载

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 这是一款拥有后端的闯关娱乐小程序 支持个人小程序和企业小程序上线运营 功能强大齐全,带数据本地化 (数据在自己服务器自己管理无需担心第三方失效的问题) 支持看视频答题闯关 支持…

Java多线程处理笔记

学习视频:598-JavaSE进阶-多线程概述_哔哩哔哩_bilibili 目录 多线程概述 进程和线程的关系 多线程并发的理解 分析程序存在几个线程 实现线程的第一种方式 实现线程的第二种方式 采用匿名内部类的方式 线程生命周期 获取线程的名字 获取当前线程对象 线程的sleep方法 …

Spring Cloud Stream 结合rocketmq

Spring Cloud Stream 结合rocketmq 官方网址:https://github.com/alibaba/spring-cloud-alibaba/wiki/RocketMQ 你可以在这个地址上下载到相关示例项目,配置项等相关信息 spring-cloud-stream 文档(这个地址似乎只有集合kafaka和rabbit的示…

Akka 学习(六)Actor的监督机制

目录一 监督机制1.1 错误隔离性1.2 系统冗余性1.3 Actor的监督1.3.1 监督体系1.3.2 理解1,3.3 监督策越一 监督机制 1.1 错误隔离性 在学习Akka如何对失败情况进行响应之前,先了解一些在分布式应用程序中都应该遵循的通用策略:隔离错误。假设每个组件都…

【刷题-数组篇】狂刷力扣三十题,“数组”嘎嘎乱写 | 2022 12-5到12-9

前言 (12月5日)突然想起了很久以前别人(具体来源已经记不清了)传给我的一套题单。网上的题单不少,光收藏可不行,关键还得下手。 这套题单的题目数量为300出头,什么时候刷完我还没有明确计划&a…

web前端大作业 (仿英雄联盟网站制作HTML+CSS+JavaScript) 学生dreamweaver网页设计作业

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

2.IOC之xml配置

1.使用IDEA创建工程 2.引入项目使用的依赖 <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.2.RELEASE</version></dependency> </depe…

英文外链代发怎么做有效果?英文外链购买平台

英文外链代发怎么做有效果&#xff1f; 答案是&#xff1a;选择权重较好的GPB外链 我们首先要知道一个观点&#xff0c;什么样的外链才有效果&#xff1f; 1.英文外链网站的有一定的权重&#xff0c;可高可低&#xff0c;但一定要有权重&#xff0c;数值指标可以参考MOZ的Do…

10.AOP之xml配置

1.使用IDEA创建工程 2.引入项目使用的依赖 <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.2.RELEASE</version></dependency><depend…

HPPH偶联无机纳米材料/白蛋白/白蛋白纳米粒/抗体/量子点/活性基团/荧光/细胞膜的研究

小编分享了HPPH偶联无机纳米材料/白蛋白/白蛋白纳米粒/抗体/量子点/活性基团/荧光/细胞膜的研究知识&#xff0c;一起来看&#xff01; HPPH偶联无机纳米材料/白蛋白纳米粒的研究&#xff1a; HPPH 具有的光动力活性的作用光谱以及靶向性&#xff0c;对组织的穿透率&#xff0…