JavaFX已經成為構建現代桌面應用最好的UI框架之一,但是它一直存在部署不方便的問題。Javapackager工具就是針對這個問題的解決方案,正如同JavaFX已經打包進JDK 8中,Javapackager工具也隨同JDK 8一同提供。
Javapackager工具使得創建本地應用的安裝器很容易,但是很遺憾的是,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工具結合了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結合的例子見: http://fxldemo.tornado.no/
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/
[email protected]:fxldemo
1、產生應用程序
mvn clean package
2、部署應用程序artifact到自己的Web服務器
mvn exec:exec@deploy-app
3、建立本地安裝器
mvn exec:exec@installer
TornadoFX是針對Kotlin語言的輕量級JavaFX框架。TornadoFX的特性包括:
1)依賴注入
2)類型安全建立器
3)異步任務執行
4)MVC
5)極度輕量級
6)小巧簡單的API
7)為模型對象提供的REST客戶端
8)零配置,無需XML,無需注釋
https://github.com/edvin/tornadofx
Tornado的Maven依賴:
no.tornado
fx
1.2.3