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

使用 Java Web Start 部署 SWT 應用程式:打造原生體驗的跨平台桌面應用

     編輯:Java 相關知識

前言

標準窗口工具箱(SWT)近期發展迅速,吸引越來越多 Java 開發者。當 SWT 應用程式原型運作後,部署成為關鍵議題。與傳統 Java 應用不同,SWT 需在執行前載入作業系統專屬的原生函式庫。雖然這些函式庫的部署與維護看似棘手,但 Sun 的 Java Web Start 提供了完美解決方案。SWT 與 Java Web Start 結合,讓開發者能部署擁有原生外觀與操作體驗的客戶端 Java 應用程式。

SWT 概覽:原生 GUI 的跨平台 API

雖然 JFC/Swing 長期滿足客戶端開發需求,但許多開發者渴望打造如傳統原生桌面應用般的視覺與操作體驗。2001 年中 Eclipse 專案誕生,隨之而來的 SWT 工具箱使用作業系統底層 GUI 元件,為 Java 開發者提供跨平台 API,實現「外觀與操作如原生應用」的解決方案。

Java Web Start 概覽:簡化部署與維護

傳統桌面應用部署維護向來是開發者頭痛問題。Java Web Start 作為本地安裝的啟動協助程式(包含於 JRE),透過 JNLP(Java Network Launching Protocol)檔案自動下載、安裝、更新應用程式,幾乎無需使用者互動,大幅簡化分發流程。

範例應用:跨平台檔案檢視器

Windows XP 上運行的檔案檢視器

本文使用 Eclipse 專案提供的範例——簡單的跨平台檔案檢視器,讓使用者瀏覽硬碟檔案與資料夾。為展示跨平台能力,應用程式已打包可在 Windows 與 Red Hat Linux 上運行。

環境需求與安裝步驟

  • 作業系統:Windows XP 或 Red Hat Linux 8
  • Java 2 SDK 1.4+
  • Apache Ant 1.5.3+
  • Jakarta Tomcat 4.1.24+

安裝步驟:

  1. 下載原始碼套件並解壓縮
  2. 建立自簽名測試憑證(keytool -genkey -keystore keystore -alias myself,密碼設為 "password")
  3. 執行 ant clean 清理環境,再執行 ant 建置
  4. 本地測試:執行 ant run 啟動應用程式

安全性與程式碼簽名

SWT 緊密整合作業系統原生視窗環境,需載入系統函式庫,因此必須在 Java Web Start 的沙箱外執行。所有 JAR 檔案必須經數位簽名。生產環境建議向 Thawte 或 VeriSign 等認證機構申請正式憑證。

部署至 Tomcat 與驗證

  1. 將 dist/fileviewer.war 複製至 Tomcat webapps 目錄
  2. 啟動 Tomcat
  3. 瀏覽器開啟 https://localhost:8080/fileviewer/index.html,點擊 "Launch Application"
  4. 首次下載會顯示安全性警告對話框,點擊 "Start" 啟動

檔案檢視器下載畫面 安全性警告對話框

JNLP 檔案深度解析

Red Hat Linux 8 上運行的檔案檢視器

<?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>

關鍵設定說明

  1. 安全權限(第 10-12 行):SWT 需載入系統函式庫,必須請求 <all-permissions/>,所有 JAR 必須簽名
  2. 原生函式庫宣告(第 16 行):<nativelib> 標記告知 Java Web Start 此 JAR 包含原生函式庫(Windows DLL、Linux SO 檔案)
  3. 作業系統專屬資源(第 18-23 行):透過 os 屬性依平台載入對應 SWT JAR,基於使用者的 os.name 系統屬性判斷;可再用 arch 屬性限制架構

結語

SWT 與 Java Web Start 的結合,為開發者提供建構與部署高互動性客戶端 Java 應用的強大工具組。本文的檔案檢視器範例提供完整的建構與打包框架,可作為開發自有 SWT 應用的起點。

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