更快更省:带有新AOT引擎的Spring Native 0.11 发布 - spring.io


与 Spring Native 0.10 相比,Spring Native 0.11 平均减少了20%到26% 的内存占用空间!Spring Native 0.11 的启动时间快了16%到35%!
我很高兴代表团队和所有做出贡献的人宣布Spring Native 0.11的发布,它为 Spring Boot 2.6 提供了原生支持。这个雄心勃勃的版本是 Spring 团队五个月辛勤工作的结果,他们一直致力于全新的架构,将 Spring 对使用 GraalVM 创建原生可执行文件的支持提升到一个新的水平。你已经可以在start.spring.io上尝试了!
最大的变化无疑是引入了新的 AOT 引擎,该引擎在构建时对 Spring 应用程序进行深入分析,以转换和优化应用程序并生成所需的 GraalVM 本机配置。这些转换由 Maven 和 Gradle Spring AOT 插件执行。

深入了解一下,AOT 引擎会在构建时评估条件,以生成优化的应用程序上下文和专门为您的应用程序设计的 Spring 工厂(Spring Boot 背后的插件系统)。在实践中,这意味着:

  • 在运行时执行的 Spring 基础设施更少
  • 在运行时评估的条件更少
  • 更少反射

 
减少内存占用
AOT 引擎的一个关键优势是它支持本机可执行文件的较小内存占用,因为本机配置更准确,需要的反射更少,并且在运行时需要更少的 Spring 基础设施。
与 Spring Native 0.10 相比,Spring Native 0.11 平均减少了20%到26% 的占用空间!
 
更快的启动
与 0.10 相比,Spring Native 0.11 的启动时间快了16%到35%,因为某些处理已从运行时转移到构建时。由于我们无法在本次小版本更新中对 Spring Boot 和 Spring Framework 的内部架构进行微调,因此仍有改进的空间。
 
JVM 上的 AOT
对将在 JVM 上运行的应用程序执行 AOT 转换有两个主要好处。
例如,第一个是能够轻松调试将在 IDE 中的 JVM(主应用程序或测试)本机上运行的代码。
第二个优势是更高的效率。目前,它的占据空间减少了大约4%到17%。
 
Bellsoft Liberica NIK
Bellsoft Liberica Native Image Kit (NIK) 是一个基于GraalVM 开源存储库和 Liberica JDK的原生镜像编译器发行版。从 Spring Native 0.11 开始,它默认用于 Buildpacks 原生支持,这与 JDK 端一致,默认使用 Liberica JDK。它也可以通过使用其SDKMAN集成或通过下载和安装在本地安装。
今年早些时候,该团队与 BellSoft 一起宣布,使用 Liberica Native Image Kit 的 VMware 客户可以将他们的 Spring 应用程序作为本机可执行文件运行,并确信它们得到了完全支持。
 
Spring Boot 3 一流的原生支持
Spring Native 0.11 实现了为 Spring Boot 提供成熟的原生选项的目标。Spring 团队现在可以专注于下一个主要步骤:将原生支持作为 Spring Framework 6、Spring Boot 3 和相关组合项目的一部分进行改进。
AOT 和原生将成为 Spring Boot 3 和 Spring Framework 6 的主旋律。
计划在Spring Boot 3 里程碑 2中开始提供开箱即用的 GraalVM 本机支持,目标是 2022 年 3 月下旬,利用我们在 Spring Native 工作中学到的所有知识。一般可用性计划于 2022 年末推出。