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) ,因此就不能在运行时分析和优化代码,无法利用这些运行时优化,因此在性能表现上可能会有所降低。

官网:https://www.graalvm.org/

几个名词介绍

native-image

native-image 是一个用于将 Java 程序编译为本地可执行文件的工具。它是 GraalVM 的一部分,GraalVM 是一个高性能的通用虚拟机,支持多种语言。它可以将 Java 应用程序预编译为本机可执行文件,这样生成的文件可以直接运行,无需 JVM 或者任何其他的运行时环境。

不同平台相关依赖不同:

GraalVM入门教程配图 1

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

GraalVM入门教程配图 2

配置环境变量

下载完传到Linux服务器,解压,配置环境变量

配置jdk环境变量请参考:https://blog.csdn.net/qq_34845394/article/details/90674658

验证:

shell
java -version

GraalVM入门教程配图 3

下载安装AOT编译器 native-image

  1. 命令操作【离线方式】

借助 gu 来安装 native-image

shell
gu install --file native-image-installable-svm-java17-windows-amd64-22.1.0.jar
  1. 或者在命令中直接【在线】联网按照**(推荐)**

借助 gu 来安装 native-image

shell
gu install native-image

查看已经安装的 native-image 版本

shell
native-image --version

GraalVM入门教程配图 4

查看已经安装的GraalVM 中的各种组件

shell
gu list

GraalVM入门教程配图 5

安装gcc、glibc-devel 与 zlib-devel

MacOS 系统,请运行:

shell
brew install gcc zlib

CentOS 系统,请运行:

shell
yum install -y gcc glibc-devel zlib-devel

Ubuntu 系统,请运行:

shell
sudo apt install gcc libc6-dev zlib1g-dev

下载maven并配置环境变量

请参考:https://blog.csdn.net/qq_34845394/article/details/90674933

GraalVM入门教程配图 6

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

GraalVM入门教程配图 7

配置环境变量

请参考:https://zhuanlan.zhihu.com/p/610486052

下载安装AOT编译器 native-image

powershell
gu.cmd install native-image

GraalVM入门教程配图 8

下载配置windows sdk和msvc

Microsoft Visual C++(简称Visual C++、MSVC、VS或VC)是微软公司的免费C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。

请参考:https://zhuanlan.zhihu.com/p/610486052

下载maven并配置环境变量

过于简单,自行百度

GraalVM入门教程配图 9

创建、构建、运行SpringBoot3的项目

项目必须是 SpringBoot 3.0 版本以上 + JDK17

这里提供一个我测试的项目,源码地址:https://gitee.com/leiguoqing/spring-boot3-demo

windows

如果你想自己创建项目流程如下:

GraalVM入门教程配图 10

GraalVM入门教程配图 11

创建好之后,pom.xml 文件和spring-boot2项目有所不同,右边的maven也有所不同

GraalVM入门教程配图 12

勾上 maven 上面的native,然后点击plugins里面的 native:compile进行构建,构建的速度取决于电脑的性能

GraalVM入门教程配图 13

GraalVM入门教程配图 14

也可以手动用maven命令进行构建,如下:

shell
mvn clean -Pnative native:compile -DskipTests

GraalVM入门教程配图 15

GraalVM入门教程配图 16

此时项目的target目录会生成一个.exe的可执行文件,因为我们是在windows上面操作的,如果是Linux系统就会生成Linux系统的可执行文件

GraalVM入门教程配图 17

直接双击此 exe 就可以直接运行项目

GraalVM入门教程配图 18

可以看到启动速度飞快!!!

Linux

接下来在Linux上面操作下

将项目上传到Linux服务器:

GraalVM入门教程配图 19

进入spring-boot3-demo目录,然后执行下面的命令进行构建:

shell
mvn clean -Pnative native:compile -DskipTests

GraalVM入门教程配图 20

GraalVM入门教程配图 21

GraalVM入门教程配图 22

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

GraalVM入门教程配图 23

GraalVM入门教程配图 24

速度飞快!!!

GraalVM入门教程配图 25

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

windows

GraalVM入门教程配图 26

Linux

GraalVM入门教程配图 27

不管windows还是Linux启动速度快了十几倍,甚至几十倍!!!

参考文章:

文章配图