传统的jvm需要 经历 java ->class ->装载、链接、初始化、使用、卸载等步骤,启动非常慢且费内存, graalvm则是AOT编译器把字节码直接翻译成机器识别的二进制编码的本地镜像,大大提高了启动速度和减少内存消耗
官网:https://www.graalvm.org/
High Performance. Cloud Native. Polyglot
github: https://github.com/oracle/graal
windows系统下安装graalvm:
1.参考官网
https://www.graalvm.org/latest/docs/getting-started/#install-graalvm
以在Win10安装为例:https://www.graalvm.org/latest/docs/getting-started/windows/
2.windows系统安装JDK和graalvm
1).安装jdk11或者17或者19
2)将graalvm-ce-java17-windows-amd64-22.3.1.zip包放到自己喜欢的目录下,然后解压,比如我 解压后的目录为:C:\java17
3)设置环境变量JAVA_HOME,可以通过图形化界面也可以通过命令行
4)打开cmd,输入java命令,验证是否安装配置成功
5)安装native-image
gu install native-image
6)查看native-image是否安装成功
安装完成后windows系统并不能直接使用还需要安装对应的c++依赖如下:
3 Prerequites for Using Native Image on Windows
(1)下载VS Code 2022 Community安装程序
https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Commu nity&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false
(2)运行VisualStudioSetup.exe
(3)选择安装的内容及目录
(4)在Path中配置VS的环境变量:记得相应替换成自己的安装目录
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\bin\Hostx64\x64 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\lib\x64
(5)安装完重启一下电脑
(6)查看是否安装成功
(7)每次都要打开上述工具比较麻烦,是否可以在cmd窗口的任意目录也能使用呢?当然可以,只需要 打开native-image.cmd文件,向其他添加一行即可 比如我的目录是:
4.初体验
(1)准备HelloWorld的java源码文件
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Native World!");
}
}
(2)编译成Class文件并用java命令运行
javac HelloWorld.java
java HelloWorld
(3)打开PowerShell窗口
Measure-Command{java HelloWorld}
(4)将Class文件打包成本地可执行文件
native-image HelloWorld
发现在目录下有个helloWorld.exe
(5)打开PowerShell窗口,运行这个可执行文件 并比较执行时间如下
至此初体验完成,发现启动时间有非常大的提升