- 下载graalvm
- 下载native-image
- 下载完成
- 上传到linux服务器(略)
- 执行解压
tar -zxvf graalvm-ee-java17-linux-amd64-22.3.1.tar.gz
- 解压后目录
- 进入graalvm根目录
cd graalvm-ee-java17-22.3.1/bin
- 查看java版本
- 安装native-image
- 查看安装结果
- 官网下载springboot3工程
- 修改项目名称
- 打包
- 上传到服务器
- 编译jar包
- 启动可执行程序
- 目前Native Image存在的三个限制:
1)Points-to分析的时候,需要接受完整的字节码作为输入(即项目中所有用到的class的字节码都需要获取的到)。
=> 在运行期动态生成或者是动态获取字节码的程序,无法构建成 Native Image。
2)Java的动态特性,包括反射、JNI、代理,都需要通过配置文件在构建前实现声明好。
=> 无法提前声明动态特性使用范围的程序,无法构建成Native Image (例如,根据用户输入的一个参数反射去调用某个方法)。
3)在整个运行过程中,程序不会再加载任何新的class。
=> 在运行期间执行动态编译,或者是自定义Classloader动态装载类的程序,无法构建成Native Image。