SpringBoot3.0 Native构建

SpringBoot3.0支持了将java程序构建为可执行文件

其实将java构建为native应用,不是第一次提及了,我第一次听到这个想法的时候是Quarkus(exe4j不算哈,本质上还是启动了jvm进程),也大致看了一下官方文档,极少的内存占用和极快的启动速度。当时觉得好厉害。如果Spring和Quarkus让我选的话我肯定选spring,毕竟公司买服务器又不是花我钱。再说了买服务器是花了钱的闲着也是闲着起个jvm占点内存挺好。Spring相对来说我更熟悉,所以Spring应该是大多数人的选择。

一直以来java都存在 执行效率低,内存占用多,启动速度慢的问题。其实这些问题都也都是其又优势导致。一次编译到处运行,编译结果不依赖操作系统,由不同的jre来屏蔽操作系统的差异 。SpringBoot3.0 Native构建可以以极低的学习成本去解决这些问题。但相对应的代价就是编译结果是针对行的,我们在windows上构建的应用没办法在linux上运行(官网上暂时没有看到交叉编译相关的内容,都2202年了交叉编译是标配,应该是我没有找到)一次编译就只针对一个平台,无法做到一次编译到处运行。

项目前环境准备

graalvm  Visual Studio

graalvm 我是用的版本是17 ,VS我使用的版本是2022

把JAVA_HOME指向我们刚解压的graalvm

创建测试项目

使用idea创建SpringBoot 项目,演示情况我依赖就只选web

 

 写一个测试接口

访问正常,在idea下启动速度是1.625秒。

对比两种打包方式的启动速度和内存占用

 直接成jar包运行,启动时间是1.542秒

 内存占用是109M

native方式打包直接在idea里插件执行或者是dos里运行maven命令都会报错

Execution of D:\develop\graalvm-ce-java17\bin\native-image.cmd @target\tmp\native-image-2002058499160718203.args returned non-zero result

这个问题一度困了我好长时间,而且这个错我还没有搜到正确的解决方案。直到我在仔细的去看官方文档

因为我Visual Studio在我刚买回电脑的时候就已经装好了,所以Visual Studio安装步骤我就没有做,其实Visual Studio在官网指引中是需要安装到,但是到现在为止我们还是没有用到。在电脑搜索里输入 Native Tools Command Prompt

 

可以看到来自vs 2022 ,打开这个,转到项目所在目录,输入官网给出的命令 

mvn -Pnative native:compile

然后就是的等待构建成功,target目录下又exe文件

 

启动时间0.079秒,毫秒级启动!!! 

内存占用33M

 内存占用: 109M -> 33M

启动时间:1.542s -> 0.079s

执行效率,理论上来讲少了jvm的翻译效率应该回高一些。但是性能测试情况毕竟复杂,没有测试所有不做结果评判。(jvm在代码执行上做了大量的优化,如JIT)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值