標準窗口工具箱(SWT)近期發展迅速,吸引越來越多 Java 開發者。當 SWT 應用程式原型運作後,部署成為關鍵議題。與傳統 Java 應用不同,SWT 需在執行前載入作業系統專屬的原生函式庫。雖然這些函式庫的部署與維護看似棘手,但 Sun 的 Java Web Start 提供了完美解決方案。SWT 與 Java Web Start 結合,讓開發者能部署擁有原生外觀與操作體驗的客戶端 Java 應用程式。
雖然 JFC/Swing 長期滿足客戶端開發需求,但許多開發者渴望打造如傳統原生桌面應用般的視覺與操作體驗。2001 年中 Eclipse 專案誕生,隨之而來的 SWT 工具箱使用作業系統底層 GUI 元件,為 Java 開發者提供跨平台 API,實現「外觀與操作如原生應用」的解決方案。
傳統桌面應用部署維護向來是開發者頭痛問題。Java Web Start 作為本地安裝的啟動協助程式(包含於 JRE),透過 JNLP(Java Network Launching Protocol)檔案自動下載、安裝、更新應用程式,幾乎無需使用者互動,大幅簡化分發流程。

本文使用 Eclipse 專案提供的範例——簡單的跨平台檔案檢視器,讓使用者瀏覽硬碟檔案與資料夾。為展示跨平台能力,應用程式已打包可在 Windows 與 Red Hat Linux 上運行。
安裝步驟:
keytool -genkey -keystore keystore -alias myself,密碼設為 "password")ant clean 清理環境,再執行 ant 建置ant run 啟動應用程式SWT 緊密整合作業系統原生視窗環境,需載入系統函式庫,因此必須在 Java Web Start 的沙箱外執行。所有 JAR 檔案必須經數位簽名。生產環境建議向 Thawte 或 VeriSign 等認證機構申請正式憑證。
dist/fileviewer.war 複製至 Tomcat webapps 目錄https://localhost:8080/fileviewer/index.html,點擊 "Launch Application"


<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="https://localhost:8080/fileviewer" href="index.jnlp">
<information>
<title>File Viewer</title>
<vendor>IBM developerWorks</vendor>
<homepage href="index.html"/>
<description>File Viewer</description>
<description kind="short">FileViewer</description>
</information>
<security>
<all-permissions/> <!-- 請求完整存取權限 -->
</security>
<resources>
<j2se version="1.4"/>
<jar href="fileviewer.jar"/>
<nativelib href="swt-lib.jar"/> <!-- 宣告包含原生函式庫 -->
</resources>
<resources os="Windows">
<jar href="swt-win32.jar"/> <!-- Windows 專用 SWT -->
</resources>
<resources os="Linux">
<jar href="swt-linux.jar"/> <!-- Linux 專用 SWT -->
</resources>
<application-desc main-class="org.eclipse.swt.examples.fileviewer.FileViewer"/>
</jnlp>
<all-permissions/>,所有 JAR 必須簽名<nativelib> 標記告知 Java Web Start 此 JAR 包含原生函式庫(Windows DLL、Linux SO 檔案)os 屬性依平台載入對應 SWT JAR,基於使用者的 os.name 系統屬性判斷;可再用 arch 屬性限制架構SWT 與 Java Web Start 的結合,為開發者提供建構與部署高互動性客戶端 Java 應用的強大工具組。本文的檔案檢視器範例提供完整的建構與打包框架,可作為開發自有 SWT 應用的起點。