通往Spring Boot本机应用的道路:Spring GraalVM Native 0.7.0可以使用了 - spring.io


本机镜像(Native image)提供了一种构建和运行具有不同于常规JVM部署特性的Spring Boot应用程序的方法:

  • 输出是一个本机可执行文件,其中包含您的应用程序以及JDK的子集以及运行它所需的依赖项。
  • 实际上,可执行文件可能会以高度优化的容器镜像(FROM scratch支持Docker镜像)的形式提供,该容器映像非常适合K8。
  • 启动时间几乎是即时的,并且可以立即获得峰值性能,从而支持从零缩放(无服务器)应用程序,包括常规的Spring Boot Web应用程序。
  • 减少了内存消耗,这非常适合拆分为多个微服务的系统。

如您所料,本地映像不是免费的午餐,并且这些有趣的功能还具有一些缺点:

  • GraalVM本机是一个年轻的平台,远没有JVM成熟。
  • JVM库尚未很好地支持这种新的Java风格并对其进行了测试。
  • 它需要初始化,资源,反射和代理显式配置。
  • 生成时间很长,并且生成内存消耗很高。
  • 较低的吞吐量和较高的延迟。

Spring团队目前正在与GraalVM团队积极合作,以确保在编译为本地镜像时,Spring包括通过Spring Boot集成的JVM生态系统在全球范围内都能正常运行。这项工作包括GraalVM本机中的修复和新功能对Spring本身的更改,还包括为改进此GraalVM本机平台的可测试性和可维护性所做的其他工作。
还值得注意的是,自Mark Reinhold最近宣布Project Leyden以来,本机镜像的范围现在已超过GraalVM ,该项目旨在在Java平台级别上标准化本机镜像。

Spring GraalVM Native 0.7.0
我很高兴宣布Spring GraalVM Native 0.7.0可用。spring-graalvm-native这是一个实验性项目,我们目前在其中孵化对Spring Boot应用程序的本机镜像支持,这个新的里程碑引入了以下改进:

您可以阅读详细的变更日志和 文档。还有其他改进值得深入探讨。