GraalVM基本介绍

GraalVM 是一种高性能 JDK,旨在加速用 Java 和其他 JVM 语言编写的应用程序的执行,同时还为 JavaScript、Python 和许多其他流行语言提供运行时。 GraalVM 提供两种运行 Java 应用程序的方法:在 HotSpot JVM 上使用 Graal 即时 (JIT) 编译器或作为提前 (AOT) 编译的本机可执行文件。 GraalVM 的多语言能力使得在单个应用程序中混合多种编程语言成为可能,同时消除了外语调用成本。

GraalVM环境搭建

官方文档: https://www.graalvm.org/latest/docs/getting-started/windows/

下载配置GraalVM

进入到 GitHub 上的 GraalVM 发布存储库。选择适用于 Windows 的基于 Java 111719 的发行版,然后下载。

  1. 我选择的是基于java17的 https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-17.0.8/graalvm-community-jdk-17.0.8_windows-x64_bin.zip
  2. 将*.zip*存档文件移动到为要安装 GraalVM 的位置。我这里是放在 D:\dev
  3. 将存档解压缩到文件系统。例如 D:\dev\graalvm-community-openjdk-17.0.8+7.1

配置环境变量

将GraalVM的bin目录路径添加到系统环境变量中。在Windows 10中,可以按下Win + X键,选择“系统”,然后选择“关于”->“高级系统设置”->“环境变量”。

如果之前配置过java的环境变量. 可以直接替换掉JAVA_HOME

1
2
3
setx /M JAVA_HOME "D:\dev\graalvm-community-openjdk-17.0.8+7.1"
# 设置到用户环境
setx /U JAVA_HOME "D:\dev\graalvm-community-openjdk-17.0.8+7.1"

将 GraalVM 的 bin 目录设置到 PATH 环境变量:

1
2
3
setx /M PATH "D:\dev\graalvm-community-openjdk-17.0.8+7.1\bin;%PATH%"
# 设置到用户环境
setx /U JAVA_HOME "D:\dev\graalvm-community-openjdk-17.0.8+7.1\bin;%PATH%"

重启命令提示符,重新加载环境变量。然后使用以下命令检查变量设置是否正确:

1
2
3
4
PS C:\Users\sfuli> java --version
openjdk 17.0.8 2023-07-18
OpenJDK Runtime Environment GraalVM CE 17.0.8+7.1 (build 17.0.8+7-jvmci-23.0-b15)
OpenJDK 64-Bit Server VM GraalVM CE 17.0.8+7.1 (build 17.0.8+7-jvmci-23.0-b15, mixed mode, sharing)

下载native-image

1
2
3
4
5
6
7
8
9
# 官网教程是让这么安装
gu install native-image

# 指定url下载
gu install -u https://ghproxy.com/https://github.com/graalvm/graalvm-ce-builds/releases/download/graal-23.0.1/native-image-installable-svm-java17-windows-amd64-23.0.1.jar

# 本地安装
# https://github.com/graalvm/graalvm-ce-builds/releases/download/graal-23.0.1/native-image-installable-svm-java17-windows-amd64-23.0.1.jar
gu install -L "native-image-installable-svm-java17-windows-amd64-23.0.1.jar"

检查安装是否完成

1
2
3
4
5
C:\Users\sfuli\Downloads>gu list
ComponentId Version Component name Stability Origin
---------------------------------------------------------------------------------------------------------------------------------
graalvm 23.0.1 GraalVM Core Supported
native-image 23.0.1 Native Image Early adopter

下载配置windows10 sdk和msvc。

在 Windows 系统中,Native Image 需要 Visual Studio 和 Microsoft Visual C++(MSVC)。您可以使用 Visual Studio 2022 17.1.0 或更高版本。

  1. visualstudio.microsoft.com 下载 Visual Studio Build Tools(C 开发环境)。

  2. 点击 .exe 文件启动 Visual Studio Build Tools 安装,然后按 Continue(继续)

  3. 在主窗口中勾选 “使用 C++ 进行桌面开发 “复选框。此外,在右侧 “安装详细信息 “下选择 Windows SDK,然后单击 “安装 “按钮。

    Select Desktop development with C++

  4. 安装完成后,重新启动系统。

  5. 接下来确保 Windows SDK 确实可用。打开 Visual Studio 安装程序,在 “已安装 “选项卡下,单击 “修改 “并选择 “单个组件”:

    Visual Studio Installed Components

  6. 然后滚动到底部,检查是否安装了 Windows SDK,并确认已选中构建工具:

    Windows SDK Installed

环境变量

使用 GraalVM native-image 打包编译 java maven 项目的时候,也很有必要配置MSVC环境变量。

1
"D:\dev\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"

验证环境: 命令行输入cl,回车,显示如下内容说明环境已经配置好了

1
2
3
4
5
C:\Users\sfuli>cl
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.37.32822 版
版权所有(C) Microsoft Corporation。保留所有权利。

用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]

使用Native Image

如果 Native Image 能在已知位置找到合适的 Visual Studio 安装,它就会自动设置构建环境。因此,当 GraalVM JDK 位于您的 PATH 中时,您就可以在命令提示符 (cmd) 或 PowerShell (pwsh) 中运行原生映像工具了。

要检查 Native Image 版本,请运行

1
C:\> native-image.cmd --version

要使用本地构建工具 Maven 插件构建项目,请运行

1
2
3
mvnw.cmd native:compile
# gradlew
gradlew.bat nativeCompile

打包

  1. 新建一个 HelloWorld.java 文件。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class HelloWorld {
    public static void main(String[] args) {
    System.out.println("Hello, World!");
    try {
    Thread.sleep(3000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
  2. HelloWorld.java编译为字节码,然后构建本机可执行文件:

    1
    2
    javac HelloWorld.java
    native-image HelloWorld
  3. 打包完成后