# Spring Native
Spring Native
传统的 Spring 应用程序都是必须依赖于 Java 虚拟机(JVM)运行的,Spring Native 的诞生就是无需 JVM,它提供了另外一种运行和部署 Spring 应用的方式(目前只支持 Java 和 Kotlin),通过 GraalVM 将 Spring 应用程序编译成原生镜像。
# Spring Native 特点
- 1、无需 JVM 环境, Spring Native 应用程序可以作为一个可执行文件独立部署;
- 2、应用即时启动,一般情况下应用启动时间 < 100ms;
- 3、即时的峰值性能;
- 4、更少的内存消耗;
# Spring Native 缺点
Spring Native 应用启动那么快也是有代价的,和 JVM 应用相比:
- 1、构建更笨重、构建时间更长;
- 2、更少的运行时优化;
- 3、很多 Java 功能受限;
- 4、很多特性还很不成熟;
# Spring Native 应用场景
- 1、Spring Cloud 无服务器化(Serverless);
- 2、以更廉价持久的方式运行 Spring 微服务;
- 3、非常适合 Kubernetes 平台,如:VMware Tanzu;
- 4、为 Spring 应用创建更佳的容器镜像;
# Spring Native 和 JVM 的区别
- 1、Spring Native 构建时会进行应用程序静态分析;
- 2、Spring Native 构建时会移除未被使用的组件;
- 3、Spring Native 反射、资源、动态代理需要配置化;
- 4、Spring Native 构建时的 classpath 是固定不变的;
- 5、Spring Native 没有类延迟加载,可执行文件包含所有内容都在启动时加载到内存;
- 6、Spring Native 构建时会运行一些代码;
- 7、Spring Native 对于 Java 应用程序还存在一些局限性;
GraalVM
Spring Native 的核心就是 Oracle 的黑科技:GraalVM