GraalVM是一个高性能、云原生、支持多种语言的虚拟机。
GraalVM 提供了一个名为 “Native Image” 的工具,它能够将 Java 应用程序预编译成本机可执行文件。这种方法的优点是启动速度快,内存占用少,因为程序运行时不需要 JVM 和类加载。
然而这种方式也存在一些弊端,如预编译的 GraalVM Native Image 相比于在 HotSpot JVM 上运行的相同程序,它没有一个先进的即时编译器 (JIT) ,因此就不能在运行时分析和优化代码,无法利用这些运行时优化,因此在性能表现上可能会有所降低。
官网:https://www.graalvm.org/
native-image 是一个用于将 Java 程序编译为本地可执行文件的工具。它是 GraalVM 的一部分,GraalVM 是一个高性能的通用虚拟机,支持多种语言。它可以将 Java 应用程序预编译为本机可执行文件,这样生成的文件可以直接运行,无需 JVM 或者任何其他的运行时环境。
gu 是 GraalVM 的组件安装器 (GraalVM Updater),你可以使用 gu 来安装、列出和卸载 GraalVM 中的各种组件。
环境:
下载GraalVM for JDK 17 Community 17.0.8:
https://hub.nuaa.cf/graalvm/graalvm-ce-builds/releases/tag/jdk-17.0.8
下载完传到Linux服务器,解压,配置环境变量
配置jdk环境变量请参考:https://blog.csdn.net/qq_34845394/article/details/90674658
验证:
java -version
gu install --file native-image-installable-svm-java17-windows-amd64-22.1.0.jar
gu install native-image
查看已经安装的 native-image 版本
native-image --version
查看已经安装的GraalVM 中的各种组件
gu list
MacOS 系统,请运行:
brew install gcc zlib
CentOS 系统,请运行:
yum install -y gcc glibc-devel zlib-devel
Ubuntu 系统,请运行:
sudo apt install gcc libc6-dev zlib1g-dev
请参考:https://blog.csdn.net/qq_34845394/article/details/90674933
环境:
下载GraalVM for JDK 17 Community 17.0.8:
https://hub.nuaa.cf/graalvm/graalvm-ce-builds/releases/tag/jdk-17.0.8
请参考:https://zhuanlan.zhihu.com/p/610486052
gu.cmd install native-image
Microsoft Visual C++(简称Visual C++、MSVC、VS或VC)是微软公司的免费C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。
请参考:https://zhuanlan.zhihu.com/p/610486052
项目必须是 SpringBoot 3.0 版本以上 + JDK17
这里提供一个我测试的项目,源码地址:https://gitee.com/leiguoqing/spring-boot3-demo
创建好之后,pom.xml 文件和spring-boot2项目有所不同,右边的maven也有所不同
勾上 maven 上面的native,然后点击plugins里面的 native:compile进行构建,构建的速度取决于电脑的性能
也可以手动用maven命令进行构建,如下:
mvn clean -Pnative native:compile -DskipTests
此时项目的target目录会生成一个.exe的可执行文件,因为我们是在windows上面操作的,如果是Linux系统就会生成Linux系统的可执行文件
直接双击此 exe 就可以直接运行项目
可以看到启动速度飞快!!!
接下来在Linux上面操作下
将项目上传到Linux服务器:
进入spring-boot3-demo目录,然后执行下面的命令进行构建:
mvn clean -Pnative native:compile -DskipTests
构建成功后target目录下就会生成可执行文件,就可以直接运行了
速度飞快!!!
不管windows还是Linux启动速度快了十几倍,甚至几十倍!!!
参考文章: