简介:GraalVM 是一个跨语言的通用虚拟机,不仅支持了 Java、Scala、Groovy、Kotlin 等基于 JVM 的语言,以及 C、C++ 等基于 LLVM 的语言,还支持其它像 JavaScript、Ruby、Rust、Python 和 R 语言等。它消除了编程语言之间的隔离。
GraalVM EE <==== 内置 Oarcle JDK 版本
Oracle GraalVM 企业版是Oralce Java SE 订阅的一部分,无需额外付费,但众多周知除了JDK8u202及以下版本和JDK17版本不收费,Oracle JDK的其他版本是收费的。
GraalVM CE <==== 内置 Open JDK 版本
社区版,免费
Spring支持Graalvm native-image 功能最低要求 springboot3.x ,而支持Springboot3.x功能的最低要求jdk17+ ,所以Graalvm native-image实践的难点在于 JDK8 + springboot2.x + JavaEE 向 JDK17 + springboot3.x + Jakarta EE的项目迁移。
1、参考文档
Springboot3.0.2参考文档
https://docs.spring.io/spring-boot/docs/3.0.2/reference/pdf/spring-boot-reference.pdf
https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/
Springboot3.x环境要求
Graalvm22.x native-image参考文档
https://www.graalvm.org/latest/reference-manual/native-image/
Quarkus 集成native-image参考文档(仅供参考)
https://quarkus.io/guides/building-native-image#producing-a-native-executable
Graalvm最新版官网下载地址
https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.3.1
微软VS工具官网下载地址
https://learn.microsoft.com/zh-cn/visualstudio/releases/2022/release-history
https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/history#installing-an-earlier-release
Maven历史版本下载地址
https://archive.apache.org/dist/maven/maven-3/
IDEA 历史版本下载地址
https://www.jetbrains.com/idea/download/other.html
根据以上官方文档的参考,我们选择以下环境
Win10 21H2
Graalvm Community 22.3.1(集成JDK17.06)
Maven3.8.1
IDEA Community 2022.2.4
(兼容JDK8的最后一个版本,且支持JDK17和Springboot3,默认Maven3.8.1)
VSBuildTools Community 2022
(官网要求VisualStudio2017 和 VsBuildTools2017以上版本,个人实践发现只用VSBuildTools工具也能满足需求)
2、环境搭建介质准备
graalvm-ce-java17-windows-amd64-22.3.1.zip
native-image-installable-svm-java17-windows-amd64-22.3.1.jar
vs_BuildTools.exe
apache-maven-3.8.6.zip
ideaIC-2022.2.4.exe
3、Graalvm和Maven安装
gr