Spring 发布了 Spring Native 的 beta 版本,该功能已经在 start.spring.io 上可用了。
Spring Native 是什么
Spring Native 可以通过 GraalVM 将 Spring 应用程序编译成原生镜像,提供了一种新的方式来部署 Spring 应用。Spring Native 支持 Java 和 Kotlin。
这个项目的目标是寻找 Spring JVM 的替代方案,提供一个能将应用程序打包,并运行在轻量级容器的方案。期望能够在 Spring Native 中支持所有的 Spring 应用程序(几乎不用修改代码)。
优点
-
编译出来的原生 Spring 应用可以作为一个独立的可执行文件进行部署(不需要安装 JVM)
-
几乎瞬时的启动(一般小于 100 毫秒)
-
瞬时的峰值性能
-
更低的资源消耗
缺点
-
比 JVM 更长的构建时间
-
相比于传统的 Java 运行方式,运行时优化不足
原生镜像(native image)和常规 JVM 程序的区别
-
在构建时会从主入口点,静态分析应用程序
-
在构建时会移除未使用的代码
-
需要配置反射、动态代理等
-
classpath 在构建时就已经确定
-
没有类延迟加载:可执行文件中所有的内容都会在启动时加载到内存中
-
在构建时就运行了一些代码
-
构建原生镜像还存在一些 局限性
前置条件:GraalVM
GraalVM 介绍起来篇幅比较长,这里仅简要介绍。官网:https://www.graalvm.org/
GraalVM 是一个高性能的多语言运行时环境。设计目的是能够提高用 Java 和其他 JVM 语言编写的应用程序的执行速度,同时还为 JavaScript、Ruby、Python 和许多其他流行语言提供运行时。GraalVM 的多语言能力使得在一个应用程序中混合使用多种编程语言成为可能,同时消除了不同语言间互相调用的成本。详细内容可参考:Get Started with GraalVM
支持的语言
编辑切换为居中
添加图片注释,不超过 140 字(可选)