Spring Native 文档
Spring Native 文档
概述
Spring Native支持使用GraalVM native-image编译器将Spring应用编译为本地可执行文件。
与Java虚拟机相比,native images可以为许多类型的工作负载提供更加经济、可持续的托管。包括微服务,适合容器和Kubernetes的工作负载。
使用native image可以提供一些关键的优势,例如即时启动、即时峰值性能和较低的内存消耗。
但是native image也会存在一些缺点,需要权衡利弊。GraalVM native项目预计会随着时间还在慢慢改进。构建本地镜像是一个比较重的操作,比普通应用构建要慢的多。本地镜像预热之后运行时优化手段也比较少。最后,它还不如JVM成熟,在不同环境下会有一些不同的表现。
普通的JVM和native image平台最主要的区别在于:
- 在构建时,需要对你的应用程序从主入口进行静态分析
- 未使用到的部分在构建时会被删除
- 反射、资源、动态代理需要配置
- Classpath在构建时被固定
- 不支持懒加载:可执行文件中的所有内容在启动时都会被加载到内存中
- 一部分代码在构建时就会被执行
- java应用程序某一些方面还有一些限制,不完全支持。
此项目的目标是孵化对 Spring Native(Spring JVM 的替代品)的支持,并提供旨在打包在轻量级容器中的本机部署选项。实际上,此项目最终目标是几乎不加修改的情况下,在这个新平台上支持你的 Spring 应用程序。