AOT (Ahead-of-Time) 提前编译
在程序执行前,全部编译成机器码。
JIT (Just in Time)及时编译
程序边编译,边执行。
GraalVM(相当于平替JDK)
官网
GraalVM是一个高性能的JDK,旨在加速用Java和其他JVM语言编写的应用程序的执行,同时还提供JavaScript,Python和许多其他流行语言的运行时。
GraalVM提供了两种运行Java应用程序的方式:
·1.在HotSpotJVM上使用Graal即时(IT)编译器
·2.作为预先编译的本机可执行文件运行。
GraalVM的多语言能力使得在单个应用程序中混合多种编程语言成为可能,同时消除了外部语言调用的成本。
跨平台原生镜像原理图:

1.如果是在window平台进行编译,需要先安装VisualStudio中的c++环境。
2.安装GraalVM,进入官网下载


3.下载完成后,按照配置JDK的方法,修改环境变量替换JDK为GraalVM 的JDK。
4.然后在安装native-image依赖:
可以使用命令下载:
gu install native-image
如果下载好了离线安装包:
使用命令:
gu install --file native-image-Installable-svm-java17-windows-amd64-22.3.2.jar
5.在项目中先把项目打包成jar包


6.安装好native-image依赖 工具后,在windows开始菜单中找到VisualStudio 中的Native工具

6.打开x64 Native Tools Command Prompt for VS工具,使用打包命令进行打包
打包时候需要先CD到jar所在目录
#从入口开始,编译整个jar
native-image -cp demo5-0.0.1-SNAPSHOT.jar com.haha.demo5.Demo5Application -o HelloDemo
命令解释:
| 片段 | 含义 |
|---|---|
native-image |
GraalVM 提供的可执行程序,AOT 提前编译器,把 Java 字节码编译成本地机器码 |
-cp demo5-0.0.1-SNAPSHOT.jar |
-cp = ‑classpath 类路径;告诉编译器去哪里找 class 字节码。这里指定我们自己项目的 jar 包 |
com.haha.demo5.Demo5Application |
主类全限定名 ,包含main()入口方法;就是 SpringBoot 项目启动类 |
-o HelloDemo |
-o = output,指定输出原生程序的文件名,输出文件叫 HelloDemo |
等价完整写法
native-image --classpath demo5-0.0.1-SNAPSHOT.jar com.haha.demo5.Demo5Application --output HelloDemo
7.运行命令后,再目录下会生成一个HelloDemo.exe 可执行文件。
SpringBoot-Aot

1.创建springboot项目时候需要导入Native插件包

2.当我导入了Native插件依赖包时候,Maven对应项目中插件下会有native,下面还有build构建。
如果环境变量配置正确可以直接双击build构建本地镜像Aot.

3.如果是windows环境,需要先安装VisualStudio ,在配置VisualStudio有些特殊目录的环境变。
配置环境变量:
目录1:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include
目录2:C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt (通用 C 运行时,标准 C 语言库头文件)
目录3:C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um (用户模式头文件,Win32 桌面 API,普通 EXE 程序调用的 Windows 系统接口)
目录4:C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt (旧版 C++/CX 语法的 WinRT 头文件,UWP 老项目使用,现在微软推荐用 cppwinrt)
目录5:C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared (共享头文件,用户态、内核态都要用的公共定义)
目录6:D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64
目录7:C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64
目录8:C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64
4.修改IDEA中默认终端把powershell选为cmd

5.自动打包springboot,找到maven下插件,native下面的build

6.手动打包
首先找到maven-->插件---》springboot--->spring-boot:process-aot 双击预先处理(处理反射等类)。

或x64 Native Tools Command Prompt for VS工具中输入命令:
mvn springboot:process-aot
6.1打开x64 Native Tools Command Prompt for VS工具,运行命令
mvn -Pnative native:build -f pom.xml