JavaFX本地应用自己主动更新功能的实现——FXLauncher

作者:chszs,未经博主同意不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/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)的内容演示样例:

<Application uri="http://fxldemo.tornado.no/" launch="no.tornado.FxlDemo">
<lib file="controlsfx.jar" checksum="1589854040" size="954085"/>
<lib file="fxldemo-2.0.jar" checksum="223197943" size="4865"/>
<updateText>Updating...</updateText>
<updateLabelStyle>-fx-font-weight: bold;</updateLabelStyle>
<progressBarStyle>-fx-pref-width: 200;</progressBarStyle>
<wrapperStyle>-fx-spacing: 10; -fx-padding: 25;</wrapperStyle>
</Application>

本地安装器不包括不论什么代码,因此在应用程序公布新版本号时无需重建它们,仅仅需简单地复制应用程序的artifact到提前定义的位置。FXLauncher会处理剩下的一切工作。

FXLauncher还能够处理多种编程语言的应用,它与TornadoFX结合起来工作的极好。

FXLauncher和Tornado结合的样例见: http://fxldemo.tornado.no/

三、FXLauncher的使用步骤

1)编译项目JAR到app.dir

2)复制依赖包到app.dir

3)生成app.xml manifest

4)创建本地安装器

5)上传artifact到自己主动更新仓库

复制部署描写叙述符。并按自己的需求进行改动:

<properties>
<!-- 应用程序名 -->
<app.filename>${project.name}</app.filename>
<!-- JavaFX应用的入口类 -->
<app.mainClass>no.tornado.FxlDemo</app.mainClass>
<!-- app和launcher存放位置 -->
<app.dir>${project.build.directory}/app</app.dir>
<!-- 本地安装器存放位置 -->
<app.installerdir>${project.build.directory}/installer</app.installerdir>
<!-- 托管应用artifact的基础URL -->
<app.url>http://fxsamples.tornado.no/demo/</app.url>
<!-- Optional scp target for application artifacts hosted at the above url -->
<app.deploy.target>w48839@fxldemo.tornado.no:fxldemo</app.deploy.target>
</properties>

四、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,无需凝视

https://github.com/edvin/tornadofx

Tornado的Maven依赖:

<dependency>
<groupId>no.tornado</groupId>
<artifactId>fx</artifactId>
<version>1.2.3</version>
</dependency>

JavaFX本地应用自己主动更新功能的实现FXLauncher的更多相关文章

  1. 搭建带热更新功能的本地开发node server

    引言 使用webpack有一段时间了,对其中的热更新的大概理解是:对某个模块做了修改,页面只做局部更新而不需要刷新整个页面来进行更新.这样就能节省因为整个页面刷新所产生开销的时间,模块热加载加快了开发 ...

  2. 3g自己主动更新网卡驱动web完架构文档

    几年前写. 看它是否是用得上 1  简单介绍 本文档具体描写叙述了基于ASP.NET平台和IIS服务的T-Mobile自己主动更新系统的实现框架. 本文档主要从技术架构和业务架构两个方面来着手来描写叙 ...

  3. [Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自己主动更新App的Web内容

    原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50848524 插件地址:https://github.com/nordnet/cord ...

  4. 【Android】Android程序自己主动更新

    App自己主动更新的步骤可分为三步: 检查更新(假设有更新进行第2步,否则返回) 下载新版的APK安装包 安装APK 以下对这三步进行解释.当中会穿插相应代码.App自己主动更新的这三步所有被封装到了 ...

  5. WinForm应用程序中实现自动更新功能

    WinForm应用程序中实现自动更新功能 编写人:左丘文 2015-4-20 近来在给一客户实施ECM系统,但他们使用功能并不是我们ECM制造版提供的标准功能,他们要求对系统作一些定制功能,为了避免因 ...

  6. Android数据自己主动更新库DataAutoRefresh

    非常多android应用.比方音乐播放器.视频播放器.小说阅读器或者其他须要获取本地磁盘指定数据格式数据列表的应用,在磁盘数据有变化(新增或者删除.比方下载完毕,拔TF卡.换TF卡)时.须要自己主动更 ...

  7. 【实用篇】Android之应用程序实现自动更新功能

    我个人用的是友盟提供的自动更新组件,因此在这里只描述如何实用友盟提供的组件来完成程序的自动更新,步骤如下: 1.登录友盟官网,点击注册一个友盟账号. 2.注册成功后将会自动进入到添加新应用界面,选择添 ...

  8. quick cocos2dx lua 网络图片 下载 自己主动更新

    转载请注明,原文地址:http://blog.csdn.net/dd135373/article/details/46468505 quick coocs2d-x 网络图片下载,自己主动更新纹理,保存 ...

  9. 手把手教你实现热更新功能,带你了解 Arthas 热更新背后的原理

    文章来源:https://studyidea.cn/java-hotswap 一.前言 一天下午正在摸鱼的时候,测试小姐姐走了过来求助,说是需要改动测试环境 mock 应用.但是这个应用一时半会又找不 ...

随机推荐

  1. PCB MongoDb安装与Windows服务安装

    工程MI流程指示做成Web网页形式,采用MVC框架制作,数据传输用Web API方式, 最终此网页会挂到公司各系统中访问,为了提高访问并发量,并将工程数据统一结构化管理, 采用No SQL Mongo ...

  2. Spring MVC中传递json数据时显示415错误解决方法

    在ajax中设置 ContentType为'application/json;charset=utf-8' 传递的data类型必须是json字符串类型:{“key”:"value" ...

  3. 「LOJ10150」括号配对

    [题目] Hecy 又接了个新任务:BE 处理.BE 中有一类被称为 GBE. 以下是 GBE 的定义: 空表达式是 GBE 如果表达式 A 是 GBE,则 [A] 与 (A) 都是 GBE 如果 A ...

  4. Redis学习笔记(五)- 数据类型之set类型

    Redis 的set是string类型的无序集合.set元素最大可以包含(2的32次方-1)个元素.set的是通过hash table实现的,所以添加,删除,查找的复杂度都是O(1).hash tab ...

  5. Unity引擎GUI之Slider和Scrollbar

    Slider(滑动条):是一个主要用于形象的拖动以改变目标值的控件,他的最恰当应用是用来改变一个数值,最大值和最小值自定义,拖动滑块可在此之间改变,例如改变声音大小. Scrollbar(滚动条):是 ...

  6. 九九乘法表(for循环)

    九九乘法表:<br /><script>for(var i=0;i<10;i++){ for(var j=1;j<=i;j++) { var a=j*i docum ...

  7. 【Linux】七种文件类型

    Linux中的七种文件类型 d 目录文件. l 符号链接(指向另一个文件). s 套接字文件. b 块设备文件,二进制文件. c 字符设备文件. p 命名管道文件. - 普通文件

  8. Electron结合React开发环境遇到的问题

    链接 将create-react-app与electron集成在了一个项目中.但是在React中无法使用electron 当在React中使用require('electron')时就会报TypeEr ...

  9. 经典实用SQL Server语句大全总结(一)

    简要介绍基础语句:1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创 ...

  10. Vs2010删除空白行

    在copy了别人的代码之后,出现了大量的空白行,批量删除空白行方法为: 查找内容:^:b*$\n 替换为: 查找范围:当前文档 使用:正则表达式