首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JavaFX 桌面應用自動更新方案:FXLauncher 完整指南

     編輯:Java 綜合教學

JavaFX 桌面應用自動更新方案:FXLauncher 完整指南

JavaFX 是現代桌面 UI 開發首選,但部署與自動更新長期是痛點。javapackager(JDK 8 內建)可打包原生安裝包,卻不支援自動更新;Java Web Start 支援更新但無法產生原生安裝程式。FXLauncher 結合兩者優點:產生極小(~14 KB)的啟動器 JAR,首次執行時從遠端下載應用模組,後續自動檢查更新,無需重建安裝包。

一、javapackager 回顧

  • 命令:javapackager command [options]
  • 常用命令:-createjar、-deploy、-makeall、-signjar。
  • 可產生獨立應用安裝包(exe、dmg、deb 等),但缺乏更新機制。

二、FXLauncher 核心優勢

  • 輕量啟動器:僅 14 KB,隨應用分發。
  • 線上安裝與更新:啟動時讀取 app.xml(Manifest),對比本地檔案校驗和,下載缺失或更新的模組。
  • 視覺化進度:內建啟動動畫與更新進度條,支援 CSS 樣式化。
  • 多語言支援:可啟動 JVM 語言(Kotlin、Scala 等)應用,與 TornadoFX 完美整合。
  • 零安裝包重建:發布新版只需上傳成品至預定義 URL,啟動器自動處理。

三、Manifest (app.xml) 範例

<lib checksum="1589854040" file="controlsfx.jar" size="954085">
<lib checksum="223197943" file="fxldemo-2.0.jar" 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>

每個 <lib> 標籤描述一個模組:檔案名、大小、校驗和(Adler-32)。啟動器據此驗證完整性並決定是否下載。

四、Maven 整合步驟

  1. 編譯專案 JAR 至 ${project.build.directory}/app。
  2. 複製依賴 JAR 至同目錄。
  3. 生成 app.xml(可用 Maven 插件或腳本)。
  4. 建立原生安裝器:mvn exec:exec@installer。
  5. 上傳成品至更新倉庫:mvn exec:exec@deploy-app(如 SCP 至 Web 伺服器)。

關鍵屬性配置:

<properties>
  <mainClass>no.tornado.FxlDemo</mainClass>
  <appDir>${project.build.directory}/app</appDir>
  <installerDir>${project.build.directory}/installer</installerDir>
  <baseUrl>https://fxsamples.tornado.no/demo/</baseUrl>
</properties>

五、TornadoFX 簡介

專為 Kotlin 設計的輕量級 JavaFX 框架,特性:依賴注入、型別安全建構器、非同步任務、MVC、REST 客戶端、零配置。Maven 依賴:

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

FXLauncher + TornadoFX 範例專案:https://fxldemo.tornado.no/

六、遷移建議

  • 現有 javapackager 專案:保留打包流程,改用 FXLauncher 產生啟動器並托管成品。
  • 新專案:直接採用 Maven + FXLauncher 模板,首次構建即具備自動更新能力。
  • 企業內部分發:將成品放在內網 HTTP 伺服器,配置 baseUrl 指向該位置。

七、總結

FXLauncher 以極小的啟動器、標準化的 Manifest、CSS 可定制的 UI,解決了 JavaFX 原生應用「易部署、難更新」的難題。配合 TornadoFX 可進一步提升開發體驗,是 2017 年後 JavaFX 桌面應用交付的推薦方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved