JavaFX 是現代桌面 UI 開發首選,但部署與自動更新長期是痛點。javapackager(JDK 8 內建)可打包原生安裝包,卻不支援自動更新;Java Web Start 支援更新但無法產生原生安裝程式。FXLauncher 結合兩者優點:產生極小(~14 KB)的啟動器 JAR,首次執行時從遠端下載應用模組,後續自動檢查更新,無需重建安裝包。
javapackager command [options]-createjar、-deploy、-makeall、-signjar。app.xml(Manifest),對比本地檔案校驗和,下載缺失或更新的模組。<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)。啟動器據此驗證完整性並決定是否下載。
${project.build.directory}/app。app.xml(可用 Maven 插件或腳本)。mvn exec:exec@installer。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>
專為 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 產生啟動器並托管成品。baseUrl 指向該位置。FXLauncher 以極小的啟動器、標準化的 Manifest、CSS 可定制的 UI,解決了 JavaFX 原生應用「易部署、難更新」的難題。配合 TornadoFX 可進一步提升開發體驗,是 2017 年後 JavaFX 桌面應用交付的推薦方案。