最近几天,Spring有一个大更新,而且更新非常频繁。SpringFramework6.0、SpringBoot3.0相继推出。Spring将这次升级称为新一代框架的开始,是下一个10年的新开始。口号非常响亮,但很多人看了相关的ReleaseNote后表示不买账。近期发布后,网上很多资料也发布了相关介绍,但很多文章都是官方发布公告的直译。主要更新如下:JakartaEE10的Java17基线支持和EE9基线支持使用GraalVM生成本机图像,取代实验性的SpringNative项目提前转换和对Spring应用程序上下文的相应AOT处理支持两个比较容易理解,主要是依赖服务的版本升级信息,即SpringFramework6.0和SpringBoot3.0都要求JDK的最低版本为JDK17;并且底层的J2EE也已经迁移到JakartaEE9。虽然JDK17有很多新特性,但它也是最新的LTS版本。但实际上,真正用得比较多的版本是JDK1.8,Spring彻底抛弃了17之前的所有版本!!!AOT编译Ahead-Of-Time,即预编译,是相对于大家熟知的即时编译(JIT,just-in-timecompilation)而言的。相对于JIT编译,AOT指的是在程序运行之前进行编译,这样可以避免运行时的编译性能消耗和内存消耗,在程序运行的初期就可以达到最高性能,程序的启动可以得到显着加快。AOT的引入意味着Spring生态系统正式引入了提前编译技术。相对于JIT编译,AOT有助于优化Spring框架启动慢、内存占用大、垃圾无法回收等问题。SpringNativeSpringNative是在新版本的Spring中引入的。有了SpringNative,Spring可以不再依赖Java虚拟机,而是基于GraalVM将Spring应用编译成原生镜像,提供了一种部署Spring应用的新方式。这种部署Spring的方式是云原生友好的。SpringNative的优点是编译后的原生Spring应用可以部署为独立的可执行文件,无需安装JVM,启动时间非常短,占用资源少。他的缺点是构建时间比JVM长。
