原创文章,转载请注明出处!
GraalVM最佳实践,使用Java开发CLI、Desktop(JavaFX)、Web(SpringBoot)项目,并使用native-image技术把Java代码静态编译为独立可执行文件(本机映像)。
GraalVM让Java再次变得强大,使用native-image把程序编译为目标平台的可执行文件,脱离jvm直接运行,启动速度飞快,内存负载也很低。
体验我已经编译好的可执行文件(Windows、Linux、Mac),点此下载。
下面的性能测试结果是在我本机Windows上测试的,测试结果与机器配置有关,尤其是
native-image
编译耗时。
↓标签 \ 模块→ | cli-normal | desktop-javafx | web-springboot |
---|---|---|---|
模块描述 | 命令行应用(无框架) | 桌面应用(JavaFx) | Web应用(SpringBoot) |
JDK | 8 or 11+ | 11+ | 8 or 11+ |
GraalVM | CE-21.0.0.2+ | CE-21.0.0.2+ | CE-21.0.0.2+ |
Maven Plugin | native-image-maven-plugin | client-maven-plugin | native-image-maven-plugin |
启动耗时(jvm) | 0.713s | 2.555s | 1.793s |
启动耗时(native-image) | 0.047s | 0.665s | 0.216s |
内存负载(jvm) | 38.8m | 309.3m | 440.5m |
内存负载(native-image) | 3.1m | 60.4m | 70.2m |
编译耗时(native-image) | 24.786s | 93.455s | 99.434s |
可执行文件大小(7z压缩) | 8.03m (7z : 1.68m) | 62.7m (7z : 13.1m) | 66.5m (7z : 13.9m) |
以下是我本机的开发环境,理论上windows、linux、mac都是支持的(注意不同平台的 GraalVM SDK 和 native-image的依赖是不一样的)。
其实也可以不用,因为GraalVM是自带OpenJDK的
详细的开发环境配置等教程可访问我的项目地址: