zoukankan      html  css  js  c++  java
  • JavaFX本地应用自己主动更新功能的实现FXLauncher

    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- 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>
    
  • 相关阅读:
    shell 重启 tomcat 脚本
    shell 复制/备份文件 脚本
    在 CentOS 上安装 node.js
    架构漫谈(一):什么是架构? -王概凯
    冷静审视人工智能技术的本质 | 一图看懂新一代人工智能知识体系大全
    时代在变
    什么是设计思维Design Thinking——风靡全球的创造力培养方法
    金融即服务(FaaS),将开启场景化金融新格局
    devops工具
    京东金融-供应链金融业务介绍
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7103286.html
Copyright © 2011-2022 走看看