GraalVM安装
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 11、17 或 19 的发行版,然后下载。
- 我选择的是基于java17的 https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-17.0.8/graalvm-community-jdk-17.0.8_windows-x64_bin.zip
- 将*.zip*存档文件移动到为要安装 GraalVM 的位置。我这里是放在 D:\dev
- 将存档解压缩到文件系统。例如 D:\dev\graalvm-community-openjdk-17.0.8+7.1
配置环境变量
将GraalVM的bin目录路径添加到系统环境变量中。在Windows 10中,可以按下Win + X键,选择“系统”,然后选择“关于”->“高级系统设置”->“环境变量”。
如果之前配置过java的环境变量. 可以直接替换掉JAVA_HOME
1 | setx /M JAVA_HOME "D:\dev\graalvm-community-openjdk-17.0.8+7.1" |
将 GraalVM 的 bin 目录设置到 PATH 环境变量:
1 | setx /M PATH "D:\dev\graalvm-community-openjdk-17.0.8+7.1\bin;%PATH%" |
重启命令提示符,重新加载环境变量。然后使用以下命令检查变量设置是否正确:
1 | PS C:\Users\sfuli> java --version |
下载native-image
1 | # 官网教程是让这么安装 |
检查安装是否完成
1 | C:\Users\sfuli\Downloads>gu list |
下载配置windows10 sdk和msvc。
在 Windows 系统中,Native Image 需要 Visual Studio 和 Microsoft Visual C++(MSVC)。您可以使用 Visual Studio 2022 17.1.0 或更高版本。
从 visualstudio.microsoft.com 下载 Visual Studio Build Tools(C 开发环境)。
点击 .exe 文件启动 Visual Studio Build Tools 安装,然后按 Continue(继续)
在主窗口中勾选 “使用 C++ 进行桌面开发 “复选框。此外,在右侧 “安装详细信息 “下选择 Windows SDK,然后单击 “安装 “按钮。
安装完成后,重新启动系统。
接下来确保 Windows SDK 确实可用。打开 Visual Studio 安装程序,在 “已安装 “选项卡下,单击 “修改 “并选择 “单个组件”:
然后滚动到底部,检查是否安装了 Windows SDK,并确认已选中构建工具:
环境变量
使用 GraalVM native-image 打包编译 java maven 项目的时候,也很有必要配置MSVC环境变量。
1 | "D:\dev\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat" |
验证环境: 命令行输入cl
,回车,显示如下内容说明环境已经配置好了
1 | C:\Users\sfuli>cl |
使用Native Image
如果 Native Image 能在已知位置找到合适的 Visual Studio 安装,它就会自动设置构建环境。因此,当 GraalVM JDK 位于您的 PATH 中时,您就可以在命令提示符 (cmd) 或 PowerShell (pwsh) 中运行原生映像工具了。
要检查 Native Image 版本,请运行
1 | C:\> native-image.cmd --version |
要使用本地构建工具 Maven 插件构建项目,请运行
1 | mvnw.cmd native:compile |
打包
新建一个 HelloWorld.java 文件。
1
2
3
4
5
6
7
8
9
10public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}将HelloWorld.java编译为字节码,然后构建本机可执行文件:
1
2javac HelloWorld.java
native-image HelloWorld打包完成后