JavaFX本地应用自己主动更新功能的实现——FXLauncher
作者:chszs,未经博主同意不得转载。经许可的转载需注明作者和博客主页:
一、Javapackager介绍
JavaFX已经成为构建现代桌面应用最好的UI框架之中的一个。可是它一直存在部署不方便的问题。
Javapackager工具就是针对这个问题的解决方式,正如同JavaFX已经打包进JDK 8中,Javapackager工具也随同JDK 8一同提供。
Javapackager工具使得创建本地应用的安装器非常easy,可是非常遗憾的是。Javapackager不支持自己主动更新。而Java Web Start倒是能够支持更新操作,但它不能打包本地应用。
Javapackager工具能够运行针对Java应用程序和JavaFX应用程序的打包和签名的任务。语法: javapackager command [options]
command包括:
1)-createbss 转换CSS文件为二进制形式 2)-createjar 依据其他參数产生JAR文档 3)-deploy 产生主要的应用程序公布包(能够是自包括的应用程序公布包) 4)-makeall 运行编译,createjar和deploy都会调用它 5)-signjar 依据提供的证书相应用程序签名二、FXLauncher介绍
FXLauncher工具结合了Javapackager的本地安装器功能和Java Web Start类似的更新机制。使得能够使用FXLauncher而无需本地安装包,以及公布仅有14KB的可运行JAR文件(launcher)。通过在线安装方式下载应用的各个模块并保持应用的版本号更新。
launcher会先查看应用程序的manifest文件(app.xml)的内容,manifest文件用于在启动时同步本地artifact。
当Manifest被加载时。用户会看到这种动画: 当应用程序開始更新时,用户会看到这种动画: 预加载器接着会控制应用程序的过程。launcher看起来是使用CSS配置的。manifest文件(app.xml)的内容演示样例:
Updating... -fx-font-weight: bold; -fx-pref-width: 200; -fx-spacing: 10; -fx-padding: 25;
本地安装器不包括不论什么代码,因此在应用程序公布新版本号时无需重建它们,仅仅需简单地复制应用程序的artifact到提前定义的位置。FXLauncher会处理剩下的一切工作。
FXLauncher还能够处理多种编程语言的应用,它与TornadoFX结合起来工作的极好。
FXLauncher和Tornado结合的样例见:三、FXLauncher的使用步骤
1)编译项目JAR到app.dir
2)复制依赖包到app.dir 3)生成app.xml manifest 4)创建本地安装器 5)上传artifact到自己主动更新仓库复制部署描写叙述符。并按自己的需求进行改动:
${project.name} no.tornado.FxlDemo ${project.build.directory}/app ${project.build.directory}/installer http://fxsamples.tornado.no/demo/ w48839@fxldemo.tornado.no:fxldemo
四、Maven目标
1、产生应用程序
mvn clean package
2、部署应用程序artifact到自己的Webserver
mvn exec:exec@deploy-app
3、建立本地安装器
mvn exec:exec@installer
五、TornadoFX介绍
TornadoFX是针对Kotlin语言的轻量级JavaFX框架。TornadoFX的特性包括:
1)依赖注入 2)类型安全建立器 3)异步任务运行 4)MVC 5)极度轻量级 6)小巧简单的API 7)为模型对象提供的RESTclient 8)零配置,无需XML,无需凝视Tornado的Maven依赖:
no.tornado fx 1.2.3