TECH NOTES / Java 与 Spring
GraalVM 入门教程
原笔记 2023-10-20 · 整理于 2026-10-05
记录 GraalVM JDK 17 与 Spring Boot 3.1 的安装、原生编译和运行过程。
版本说明:本文记录的是 GraalVM JDK 17、Spring Boot 3.1 和当时的 Native Image 工具链。安装方式、插件和图中的界面均对应原实验环境。
GraalVM是什么
GraalVM是一个高性能、云原生、支持多种语言的虚拟机。
GraalVM 提供了一个名为 “Native Image” 的工具,它能够将 Java 应用程序预编译成本机可执行文件。这种方法的优点是启动速度快,内存占用少,因为程序运行时不需要 JVM 和类加载。
然而这种方式也存在一些弊端,如预编译的 GraalVM Native Image 相比于在 HotSpot JVM 上运行的相同程序,它没有一个先进的即时编译器 (JIT) ,因此就不能在运行时分析和优化代码,无法利用这些运行时优化,因此在性能表现上可能会有所降低。
几个名词介绍
native-image
native-image 是一个用于将 Java 程序编译为本地可执行文件的工具。它是 GraalVM 的一部分,GraalVM 是一个高性能的通用虚拟机,支持多种语言。它可以将 Java 应用程序预编译为本机可执行文件,这样生成的文件可以直接运行,无需 JVM 或者任何其他的运行时环境。
不同平台相关依赖不同:

gu
gu 是 GraalVM 的组件安装器 (GraalVM Updater),你可以使用 gu 来安装、列出和卸载 GraalVM 中的各种组件。
基础环境搭建
linux
环境:
- centos7
- jdk17
- maven 3.6.1
- spring-boot3.1.4
下载GraalVM
下载GraalVM for JDK 17 Community 17.0.8:
https://github.com/graalvm/graalvm-ce-builds/releases/tag/jdk-17.0.8

配置环境变量
下载完传到Linux服务器,解压,配置环境变量
配置jdk环境变量请参考:https://blog.csdn.net/qq_34845394/article/details/90674658
验证:
java -version
下载安装AOT编译器 native-image
- 命令操作【离线方式】
借助 gu 来安装 native-image
gu install --file native-image-installable-svm-java17-windows-amd64-22.1.0.jar- 或者在命令中直接【在线】联网按照**(推荐)**
借助 gu 来安装 native-image
gu install native-image查看已经安装的 native-image 版本
native-image --version
查看已经安装的GraalVM 中的各种组件
gu list
安装gcc、glibc-devel 与 zlib-devel
MacOS 系统,请运行:
brew install gcc zlibCentOS 系统,请运行:
yum install -y gcc glibc-devel zlib-develUbuntu 系统,请运行:
sudo apt install gcc libc6-dev zlib1g-dev
下载maven并配置环境变量
请参考:https://blog.csdn.net/qq_34845394/article/details/90674933

windows
环境:
- win11
- jdk17
- maven 3.6.1
- spring-boot3.1.4
- idea 2023.2.2
下载GraalVM
下载GraalVM for JDK 17 Community 17.0.8:
https://github.com/graalvm/graalvm-ce-builds/releases/tag/jdk-17.0.8

配置环境变量
请参考:https://zhuanlan.zhihu.com/p/610486052
下载安装AOT编译器 native-image
gu.cmd install native-image
下载配置windows sdk和msvc
Microsoft Visual C++(简称Visual C++、MSVC、VS或VC)是微软公司的免费C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。
请参考:https://zhuanlan.zhihu.com/p/610486052
下载maven并配置环境变量
过于简单,自行百度

创建、构建、运行SpringBoot3的项目
项目必须是 SpringBoot 3.0 版本以上 + JDK17
这里提供一个我测试的项目,源码地址:https://gitee.com/leiguoqing/spring-boot3-demo
windows
如果你想自己创建项目流程如下:


创建好之后,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上面操作下
将项目上传到Linux服务器:

进入spring-boot3-demo目录,然后执行下面的命令进行构建:
mvn clean -Pnative native:compile -DskipTests


构建成功后target目录下就会生成可执行文件,就可以直接运行了


速度飞快!!!

传统jar包和原生镜像速度对比
windows

Linux

不管windows还是Linux启动速度快了十几倍,甚至几十倍!!!
参考文章: