SpringNative:把Spring项目编译成原生程序

Spring Native借助GraalVM将Spring应用编译为原生镜像,实现无需JVM的轻量级部署。文章介绍了Spring Native的目标、优缺点,以及如何配置和构建原生镜像。在享受近乎瞬时启动和低资源消耗的同时,需要注意构建时间增加、运行时优化限制等问题。
摘要由CSDN通过智能技术生成

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 字(可选)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值