GraalVM 是一个高性能的通用虚拟机,支持 Java、JavaScript、Python、Ruby、R、WebAssembly
等多种语言。通过它你可以将 Java 程序编译成本地二进制文件,大大提高程序的启动速度和运行效率。本文介绍如何在 Linux 系统上安装配置
GraalVM.
1. 下载 GraalVM
访问 GraalVM Community’s builds 下载页面,选择你需要的 JDK 版本。截止到文章发布时,最新的 JDK LTS 版本是 21.
使用 wget 命令下载压缩包,我选择 GraalVM for JDK 21 Community 21.0.2 的压缩包下载:
wget https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-21.0.2/graalvm-community-jdk-21.0.2_linux-x64_bin.tar.gz如果下载速度过慢可以考虑使用镜像站下载。
2. 解压 GraalVM
下载完成后,解压你下载的 GraalVM:
tar -xvf graalvm-community-jdk-21.0.2_linux-x64_bin.tar.gz将解压出的文件夹重命名为 java-21-graalvm:
mv graalvm-community-openjdk-21.0.2+13.1 java-21-graalvm将 java-21-graalvm 移至 /usr/lib/jvm 目录:
sudo mv java-21-graalvm /usr/lib/jvm/3. 配置环境变量
编辑 /etc/profile 文件,添加 GraalVM 的环境变量。
sudo vim /etc/profile在文件末尾添加如下内容,将 GRAALVM_HOME 和 JAVA_HOME 设置为你的 GraalVM 安装路径:
export GRAALVM_HOME=/usr/lib/jvm/java-21-graalvm
export JAVA_HOME=$GRAALVM_HOME
export PATH=$PATH:$GRAALVM_HOME/bin使配置生效:
source /etc/profile4. 查看 GraalVM 版本
查看 GraalVM 的 OpenJDK 和 native-image 版本。
java --version && echo && native-image --version输出如下:
openjdk 21.0.2 2024-01-16
OpenJDK Runtime Environment GraalVM CE 21.0.2+13.1 (build 21.0.2+13-jvmci-23.1-b30)
OpenJDK 64-Bit Server VM GraalVM CE 21.0.2+13.1 (build 21.0.2+13-jvmci-23.1-b30, mixed mode, sharing)
native-image 21.0.2 2024-01-16
GraalVM Runtime Environment GraalVM CE 21.0.2+13.1 (build 21.0.2+13-jvmci-23.1-b30)
Substrate VM GraalVM CE 21.0.2+13.1 (build 21.0.2+13, serial gc)5. 使用 GraalVM 编译 Java 程序
5.1 编译 Java 程序
新建一个 Java 文件 HelloWorld.java,内容如下:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, GraalVM!");
}
}首先使用 javac 编译 Hello.java,生成 HelloWorld.class 文件:
javac HelloWorld.java然后使用 native-image 将 HelloWorld.class 文件编译成本地二进制文件:
native-image HelloWorld执行编译后的二进制文件:
./helloworld输出 Hello, GraalVM! 则表示 GraalVM 安装成功。
5.2 编译 SpringBoot 项目
同样的,你也可以对 SpringBoot 项目进行编译,提高启动速度和运行效率。
首先将 SpringBoot 项目打包成 jar 文件
- idea 可以点击左侧
clean–>package直接打包, - 或者使用
maven命令打包:
mvn clean package然后使用 native-image 将 jar 文件编译成本地二进制文件:
native-image -jar your-springboot-project.jar执行编译后的二进制文件:
./your-springboot-project参考文章:
- https://docs.oracle.com/zh-cn/learn/graalvm-native-image-quick-start/index.html ↩
- https://www.graalvm.org/jdk21/reference-manual/native-image/overview/Options/ ↩
















