GraalVM最佳实践,使用Java开发CLI、Desktop(JavaFX)、Web(SpringBoot)项目,并使用native-image技术把Java代码静态编译为独立可执行文件(本机映像)

时间:2023-03-09 00:12:13
GraalVM最佳实践,使用Java开发CLI、Desktop(JavaFX)、Web(SpringBoot)项目,并使用native-image技术把Java代码静态编译为独立可执行文件(本机映像)

原创文章,转载请注明出处!

源码地址:

介绍

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的依赖是不一样的)。

  • Windows 10 (CPU: i7-7700, RAM: 16G)
  • IntelliJ IDEA 2020
  • jdk-11.0.10 其实也可以不用,因为GraalVM是自带OpenJDK的
  • graalvm-ce-java11-21.0.0.2
  • Visual Sutdio 2019

环境配置(Windows,Linux,Mac)

详细的开发环境配置等教程可访问我的项目地址: