河北富宇环保设备有限公司
河北富宇环保设备有限公司是专业从事UV光氧,VOC催化燃烧设备,布袋除尘器,小型除尘器,脉冲除尘器,单机除尘器,旋风除尘器,湿式除尘器及除尘器骨架,除尘器布袋,电磁脉冲阀,脉冲控制仪,星型卸料器等。
www.chuchenhb.comGraalvm是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本地编译。
现在让我们再来尝试一下吧。
Graalvm有2种版本,一是oracle维护的企业版,二是github社区维护的社区版。我们选择社区版来测试。
首先到github上下载Graalvm社区版,可以看到有很多下载项:
我们选择graalvm-ce-java11-windows-amd64-20.2.0.zip。下载完毕后,将它内容解压至:
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
由于Native-Image工具与Graalvm是分开发行的,所以我们还要下载Native-Imag工具。下载地址为:
https://github.com/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
注意事项:
下载地址
https://visualstudio.microsoft.com/zh-hans/vs/
安装的注意事项
测试
打开命令行,执行:
# 初始化x64的编译环境。
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\ Build\vcvars64.bat”
如果出现以下的输出,就说明编译环境是正常的:
下载
git clone https://github.com/gluonhq/client-samples.git
说明:
执行命令
# 进入示例目录 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秒。
注意事项
进入 HelloFx/target/client/x86_64-windows目录,可以看到一个名为HelloFx.exe的文件。如下图所示:
双击HelloFx.exe执行,可以发现启动速度非常快,达到了秒开的程度。如下图所示:
可以看到,程序大小约为58MB。
用7zip压缩后,仅为13MB,分发给用户非常方便。
如果在链接时排除掉一些不用的内容,体积可以进一步减小。
目前它仅支持windows 64-bit的编译,32-bit暂时不支持。不过随着版本的演进,未来可能会支持。
如果近期就想要32-bit的,可以尝试下载Graalvm的源码,自己编译一个32-bit的版本。