SpringNative介绍

本文介绍了SpringNative的使用,它基于GraalVM,允许将Spring应用转换为原生可执行文件。通过Spring Native buildtools插件,可以便捷地将代码转换。使用Gradle创建项目,选择必要的组件,并通过`./gradlew bootBuildImage`和`./gradlew nativeBuild`命令构建原生镜像和本地可执行文件。在Windows环境下,需要额外的库支持,并建议在Linux环境中构建以简化流程。遇到的问题包括资源非文件错误和内存溢出,建议使用最新版本解决这些问题。

     项目使用了springNative,做了些许尝试,所以做下记录。

        首先要知道GraalVM(没时间细研究,不多介绍,有兴趣的自己研究),springNative基于GraalVM不知道这个描述是否准确,但是我们不需要orcal的jvm了,只需要GraalVM。

        开发项目的时候就和普通的项目一样正常开发即可,springNative buildtools插件,会自动转换代码到native。

        我们可以使用https://start.spring.io/或者IDEA来创建一个基础的SrpingNative项目,因为我mvn的一直有个插件下载不下来,所以用的gradle创建的项目。

创建项目的时候springNative必选,其他的组件看自己需要选择,其中有大部分组件是springNative已经支持的,一部分是不支持的。这个可以参考自己的实际情况选择。
        

 创建好项目后,可以随便写几句测试代码。

然后我们看下build.gradle文件里的命令

springNative的用到的命令主要有两个./gradlew bootBuildImage 和 ./gradlew nativeBuild

  1. bootBuildImage: 用docker构建一个native的镜像出来
  2. nativeBuild:构建一个本地的可执行文件

目前我用的SpringNative buildtools的版本是0.9.4,在接下来的版本0.9.8里NativeBuild会被其他命令代替,最新的版本也解决了不少bug,包括下面这个bug:
Execution failed for task ':nativeBuildClasspathJar'.
> Cannot expand ZIP 'C:\Users\liusanjun\IdeaProjects\demo1\build\resources\aot' as it is not a file.

如果可以,建议您直接用最新的版本

构建项目的时候最好使用大内存的机器,最好使用linux进行构建,比较简单方便,windows构建的话会需要一些运行库,不做研究了。

我是在win11的wsl上进行构建的。

首先安装下graalvm和gradle,然后设置PATH和JAVA_HOME(不做赘述),还需要安装下下面的库才能顺利编译:

sudo apt-get install build-essential libz-dev zlib1g-dev

安装上面的组件后,就可以切换到项目目录下使用  ./gradlew nativeBuild 或者 ./gradlew bootBuildImage(bootBuildImage命令需要docker)进行构建
当我们使用bootBuildImage会花费大量的时间去下载其使用到的包,不建议这么使用。

使用NativeBuild 编译完成后会在\build\native\nativeBuild目录下生成可执行文件,可以直接运行

./demo

或者

./demo   --spring.profiles.active=dev

就可以看到项目已经启动起来

 

另外当你项目足够大,编译的时候内存不够大的时候,会内存溢出。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值