Win10上的GraalVM初体验

1,078 阅读2分钟

GraalVM Native Image是一种提前 (AOT) 编译技术,可将 Java 字节码打包为独立的可执行文件。这个可执行文件是一个本地应用程序,就像用户系统上的任何其他应用程序一样,它不再需要单独安装Java虚拟机,有更快的启动时间,占用的内存空间也更小。

有两个 GraalVM 版本可供选择:社区版和企业版。社区是开源免费的,企业版则提供更好的性能、可扩展性和安全性以及来自Oracle的技术支持。就类似于OpenJDK和Oracle JDK的关系和区别。

下载链接:GraalVM 官网 - Oracle 企业版 - GitHub 社区版 - Docker Container

GraalVM环境配置

下载合适的版本,我这里选择的是Windows平台,JDK17,GraalVM Community Edition 22.3.0。

image.png

下载解压后,将 {graalvm_home}/bin 路径加入PATH环境变量。

测试环境是否配置成功:

gu list

D:\download>gu list
ComponentId              Version             Component name                Stability                     Origin
---------------------------------------------------------------------------------------------------------------------------------
graalvm                  22.3.0              GraalVM Core                  Supported

安装native-image:

gu install native-image

如果提示网络超时,连接不上,可以先去github下载,然后离线安装。

点击下载 native-image 离线安装

使用以下命令离线安装:

gu install --file 文件路径

D:\download>gu install --file native-image-installable-svm-java17-windows-amd64-22.3.0.jar
Processing Component archive: native-image-installable-svm-java17-windows-amd64-22.3.0.jar
Installing new component: Native Image (org.graalvm.native-image, version 22.3.0)

查看已经安装的组件:

gu list

D:\download>gu list
ComponentId              Version             Component name                Stability                     Origin
---------------------------------------------------------------------------------------------------------------------------------
graalvm                  22.3.0              GraalVM Core                  Supported
native-image             22.3.0              Native Image                  Early adopter

安装 Visual Studio 构建工具

点击此处下载Visual Studio

下载后双击安装,进入【已安装】选项卡,点击【修改】按钮

image.png

在弹出框中选择【工作负荷】-> 【使用C++的桌面开发】,然后按下图勾选相应的组件即可。

image.png

使用下面命令设置环境后,就可以使用native-image命令编译本地执行文件了:

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat

D:\tmp>"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.11.22
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

或者直接从Visual Studio 2019启动开发命令提示符:

image.png

但这两种方式都不喜欢,因为我习惯用winows 终端来运行命令。所以我打开native-image.cmd往里添加了一行代码:

call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat"

这样就可以随便使用native-image命令了。

image.png

编译Java代码为原生应用

打开记事本,编写HelloWorld.java,内容如下:

public class HelloWorld {
   public static void main(String[] args) {
      System.out.println("Hello, GraalVM Native Image!");
   }
}

编译字节码:

javac HelloWorld.java

编译本地执行:

native-image HelloWorld

image.png

编译完成后,当前目录下会生成helloworld.exe文件。

image.png