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

21-12-10 banq

与 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 年末推出。

 

1
猜你喜欢