博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaFX本地应用自己主动更新功能的实现FXLauncher
阅读量:5934 次
发布时间:2019-06-19

本文共 2225 字,大约阅读时间需要 7 分钟。

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
你可能感兴趣的文章
linux里的bootproto的none,static,dhcp有什么区别
查看>>
安全框架 SpringSecurity 和 Shiro 对比
查看>>
MFC中状态栏显示鼠标坐标位置
查看>>
[AngularFire 2] Push, remove, update
查看>>
Uint8Array 对象
查看>>
写好shell脚本的13个技巧【转】
查看>>
Hash算法的讲解
查看>>
Python的datetime模块分析
查看>>
负载均衡----实现配置篇(Nginx)
查看>>
Hive的基本介绍
查看>>
sql server 2000 sp3 数据库复制 修改sp_MSget_repl_commands
查看>>
openlayer9 http://hi.baidu.com/perneter/blog/item/194f1399ba4135056e068cde.html
查看>>
android系统常用Uri
查看>>
今天碰到一个神经病,留念,以后少惹这种人!
查看>>
4. Median of Two Sorted Arrays
查看>>
HBase1.0.1.1 API与原来有所不同
查看>>
转-JS之Window对象
查看>>
fread和fwrite函数功能
查看>>
Github恶搞之自定义你的contribution图表
查看>>
TypeScript学习笔记(五):接口
查看>>