Windows下使用Graalvm将Javafx应用编译成exe

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Windows下使⽤Graalvm将Javafx应⽤编译成exe
1 背景
Graalvm是Oracle推出的⼀款新型虚拟机,其中⼀个吸引⼈的功能是:它可以将Java代码编译成各个平台的本地代码,这些平台包括:linux、macOS、windows、iOS、android。

这个功能可以极⼤地加快Java程序的启动速度,它对于docker+微服务(云原⽣)应⽤,以及客户端应⽤⾮常有⽤。

2019年的时候我就有跟进过这个功能,并尝试在windows上编译Javafx,不过失败了。

在查找了stackoverflow和github之后,发现它当时仅⽀持linux上编译Javafx,对wiindows的⽀持要到后续的版本。

最近我⼜看到新的进展,发现Graavlm社区版从20.0.2(2020年8⽉)开始⽀持javaFx在windows本地编译。

现在让我们再来尝试⼀下吧。

2 编译环境
Intel i7-4720HQ 16G
Windows 10 64-bit
VS2019社区
Graalvm社区版 20.0.2
JDK 11
3 步骤
3.1 安装graalvm
Graalvm有2种版本,⼀是oracle维护的企业版,⼆是github社区维护的社区版。

我们选择社区版来测试。

⾸先到github上下载,可以看到有很多下载项:
我们选择。

下载完毕后,将它内容解压⾄:
C:\java\graalvm-ce-java11-20.2.0
然后设置windows环境变量:
GRAALVM_HOME=C:\java\graalvm-ce-java11-20.2.0
JAVA_HOME=C:\java\graalvm-ce-java11-20.2.0
3.2 安装GRaalvm Native-image⼯具
由于Native-Image⼯具与Graalvm是分开发⾏的,所以我们还要下载Native-Imag⼯具。

下载地址为:
https:///graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/native-image-installable-svm-java11-windows-amd64-20.2.0.jar
下载完毕后,执⾏:
gu -L install native-image-installable-svm-java11-windows-amd64-20.2.0.jar
注意事项:
必须安装这个⼯具,否则编译时会报错。

⼯具的版本要跟Graalvm的版本匹配,否则会报错,类似于:
3.3 安装vs2019社区版
下载地址
https:///zh-hans/vs/
安装的注意事项
⼯作负载请选择:使⽤C ++桌⾯开发;
语⾔包请选择:英语。

路径请使⽤默认的。

详细的安装过程就不赘述了,请参考教程:《》
测试
打开命令⾏,执⾏:
# 初始化x64的编译环境。

call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\ Build\vcvars64.bat”
如果出现以下的输出,就说明编译环境是正常的:
3.4 ⽰例代码
下载
git clone https:///gluonhq/client-samples.git
说明:
本⽰例由Gluon公司提供的,Gluon公司是OpenJFX项⽬和Graalvm项⽬的贡献者。

⽰例中使⽤⼀个名为client-maven-plugin的插件,它封装了native-image的相关命令,简化了打包操作。

client-maven-plugin插件⽂档:
3.5 编译
执⾏命令
# 进⼊⽰例⽬录
cd gluon-samples-master
# 进⼊HelloFx⽰例⽬录
cd HelloFX
# 初始化x64编译环境
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
# 编译。

它相当于client:compile + client:link
mvn clean client:build
输出:
编译的时间有点长,请耐⼼等待。

本机编译耗时230秒。

注意事项
必须保证有⾜够的剩余内存,最好在5GB以上,否则有可能会报内存不⾜的错误。

暂时关闭安全软件。

安全软件会拖慢编译速度,⽣成的exe⽂件可能被误删。

4 效果
进⼊ HelloFx/target/client/x86_64-windows⽬录,可以看到⼀个名为HelloFx.exe的⽂件。

如下图所⽰:4.1 启动速度
双击HelloFx.exe执⾏,可以发现启动速度⾮常快,达到了秒开的程度。

如下图所⽰:
4.2 程序⼤⼩
可以看到,程序⼤⼩约为58MB。

⽤7zip压缩后,仅为13MB,分发给⽤户⾮常⽅便。

如果在链接时排除掉⼀些不⽤的内容,体积可以进⼀步减⼩。

5 局限和展望
⽬前它仅⽀持windows 64-bit的编译,32-bit暂时不⽀持。

不过随着版本的演进,未来可能会⽀持。

如果近期就想要32-bit的,可以尝试下载Graalvm的源码,⾃⼰编译⼀个32-bit的版本。

6 参考资料
Graalvm。

相关文档
最新文档