程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 使用Java Web Start部署SWT應用程序

使用Java Web Start部署SWT應用程序

編輯:關於JAVA

開發非常漂亮的客戶機端的Java應用程序

簡介:在過去幾個月裡,標准窗口小部件工具箱(Standard Widget Toolkit ,SWT)不斷地取得進展,並汲取越來越多Java 開發人員的集體智慧。在 SWT應 用程序開發過程中的某一階段 — 通常是在基本原型運作之後 — 開發人員開始 關注部署過程。與傳統的 Java應用程序不同,SWT 應用程序需要在應用程序運 行之前裝入某些特定於操作系統的庫。雖然正在進行的這些庫的部署和維護似乎 是件頭痛的事,但是請放心,有一種方案可以解決這種問題,那就是 Sun 的 Java Web Start。SWT 與 Java Web Start 的結合給開發人員提供了功能強大的 工具,用它們可以部署非常漂亮的客戶機端 Java 應用程序。

SWT 概述

現在把標准窗口小部件工具箱(SWT)引入開發社區是最恰當不過了。雖然到 目前為止,Sun 的 Java 基礎類(Java Foundation Classes,JFC)一直能讓客 戶機端應用程序的開發人員感到滿意,但仍然有許多開發人員出於各種原因不願 使用 SWT。對於許多開發人員和架構設計師來說,能夠開發象傳統本機桌面應用 程序那樣以可視化方式顯示、操作和執行的客戶機端 Java 應用程序的夢想似乎 還很遙遠。

然而到了 2001 年年中,Eclipse 項目突然出現在這幅開發“視野”之中。 最初,人們認為 Eclipse 項目只是 Java 的開放源碼集成開發環境(IDE);但 是該項目涉及的范圍更廣。在開發 Eclipse 期間,SWT 工具箱誕生了。SWT 工 具箱類似於 JFC 和其“堂兄弟”抽象窗口工具箱(Abstract Window Toolkit, AWT),它向開發人員提供了一組窗口小部件。然而,SWT 與其它工具箱之間的 主要區別在於 SWT 使用操作系統的底層 GUI 窗口小部件。這種方法向 Java 開 發人員提供了跨平台的 API 來實現“外觀”象本機桌面應用程序的解決方案。

Java Web Start 概述

如果沒有這些合適的工具,不論用什麼語言,傳統桌面應用程序的部署和維 護對於開發人員都可能是主要的頭疼問題。即使是最有效的支持部門,一想到發 布新版本的軟件時必須檢查更新每台工作站,也不能不讓他們感到頭痛。為了方 便 Java 開發人員的分發和維護需求,Sun Microsystems 幾年前引入了 Java Web Start。這一技術很大程度上簡化了最終用戶工作站上 Java 應用程序的部 署、維護和更新。

將 Web 浏覽器用作啟動應用程序的最初工具,Java Web Start 是一個在本 地安裝的幫助應用程序,它包含在 Sun 的 Java 運行時環境中。每當用戶訪問 Java 網絡啟動協議(Java Network Launching Protocol,JNLP)文件時,都自 動將該應用程序下載到用戶的工作站,然後該應用程序開始運行。整個過程幾乎 不需要與最終用戶進行交互,這大大簡化了分發應用程序的工作。

文件查看器應用程序

在我們了解如何用 Java Web Start 部署 SWT 應用程序的實現細節之前,讓 我們先看一下將要部署的應用程序。本文所包含的這個應用程序是由 Eclipse 項目提供的一個示例應用程序。正如圖 1 所示,該應用程序是一個簡單的跨平 台的文件查看器,它使用戶能夠浏覽自己硬盤上的文件和文件夾。

圖 1. 運行在 Windows XP 上的文件查看器

為演示 SWT 和 Java Web Start 的跨平台能力,已經將所包含的這個獨立的 示例應用程序打包,以便在 Microsoft Windows 和 Red Hat Linux 上運行。

環境需求

在本文末尾可以下載這篇文檔中所使用的代碼。為了用 Java Web Start 完 整地測試這個文件查看器應用程序,您的環境必須符合以下最低要求(請參閱 參考資料中的下載鏈接):

Microsoft Windows XP 或 Red Hat Linux 8 操作系統

安裝了 Java 2 SDK 標准版 1.4 或更高版本

安裝了 Apache Ant 1.5.3 或更高版本

安裝了 Jakarta Tomcat 4.1.24 或更高版本

雖然一直留心使 Ant 構建腳本可以跨平台使用,但是我們只在 Microsoft Windows XP 和 Red Hat Linux 8 操作系統上測試和驗證了文件查看器應用程序 。此外,這裡假定 Tomcat 運行在您本地工作站上,並且運行在端口 8080 上。 讓我們從安裝、構建和運行該示例應用程序開始。

安裝該文件查看器應用程序

要安裝文件查看器應用程序,請完成以下步驟:

通過 參考資料中的鏈接,下載源代碼軟件包。

將 fileviewer.zip 文件解壓縮至臨時目錄。

安全性和代碼簽名

與 AWT 和 JFC 不同,SWT 與操作系統的本機窗口環境緊密集成在一起。SWT 使用系統庫來管理自己的與平台無關的 API 和底層操作系統之間的集成。缺省 情況下,運行在 Java Web Start 下的應用程序運行在受限的沙箱內。這個環境 控制著對資源(譬如工作站的文件系統、系統庫和其它資源)的訪問。由於 SWT 需要在缺省的沙箱之外運行來裝入系統庫,因此用 Java Web Start 部署的所有 JAR 文件必須經過數字簽名。因為我們不准備將該應用程序部署給廣大的用戶, 所以創建了一個自簽名的測試證書。

如果您准備將 SWT 應用程序放入生產環境,那麼我們強烈建議您從認證中心 (如 Thawte 或 VeriSign)獲取一個證書。

創建自簽名的證書

要創建自簽名的測試證書,請完成以下步驟:

在將源代碼解壓縮的目錄中執行以下命令: keytool -genkey -keystore keystore -alias myself 。

系統會提示您提供關於新密鑰的細節,包括密碼、姓名以及位置等。為了使 用已提供的 Ant 構建過程,請確保將密碼設置為“password”。如果不想使用 硬編碼密碼“password”,那麼請編輯 build.xml 文件中的“sign-jars”目標 文件。簽名每個 JAR 文件的實際過程在 Ant 構建期間完成。

為驗證是否正確創建了 keystore,在將源代碼解壓縮的目錄中執行以下命令 : keytool -list-keystore keystore

輸出結果將顯示類似於下面的內容:

Keystore type: jks
Keystore provider: SUN

Your keystore contains 1 entry

myself, Jun 3, 2003, keyEntry,
Certificate fingerprint (MD5):B8:C4:48:ED:68:E8:FE:47:83:78:F5:14:4E:28:5C:80

構建文件查看器應用程序

要構建文件查看器應用程序,請完成以下步驟:

為了清理環境,在將源代碼解壓縮的目錄中執行下面這個命令: ant clean

執行下面這條命令來啟動構建過程: ant

如果您的環境滿足需求並且配置正確,那麼您應當會看到類似於下面這樣的 內容:

Buildfile: build.xml
init:
compile-common:
compile-module:
[echo] Compiling ...
package-common:
package-swtlib:
sign-jars:
[echo] Signing JARS...
[signjar] Signing Jar : D:\FileViewer\dist\swt-lib.jar
[signjar] Signing Jar : D:\FileViewer\dist\fileviewer.jar
[copy] Copying 1 file to D:\FileViewer\dist
[signjar] Signing Jar : D:\FileViewer\dist\swt-win32.jar
package-web:
[war] Building war: D:\FileViewer\dist\fileviewer.war
default:
BUILD SUCCESSFUL
Total time: 6 seconds

運行文件查看器應用程序

在用 Java Web Start 部署文件查看器應用程序之前,讓我們嘗試在本地執 行該應用程序。為了啟動該應用程序,在將源代碼解壓縮的目錄中執行下面這條 命令: ant run

執行這個 Ant 腳本之後,應該會出現文件查看器應用程序。圖 2 顯示了在 Red Hat Linux 8 下運行的該應用程序。

圖 2. 在 Red Hat Linux 8 上運行的文件查看器

部署和測試文件查看器應用程序

要將該應用程序部署到 Tomcat 4,請完成以下步驟:

將 dist 目錄中的 fileviewer.war 文件復制到 Tomcat 4 下的 webapps 目 錄中。

執行該腳本以啟動 Tomcat 4。

打開 Web 浏覽器,並輸入下面這個 URL,然後單擊“Launch Application” 鏈接: http://localhost:8080/fileviewer/index.html

單擊該鏈接之後,應該會看到下面這幅圖像(圖 3),此時應用程序的 JAR 文件將會下載至工作站:

圖 3. 文件查看器

在第一次下載該應用程序時,會看到下面這個對話框,如圖 4 所示:

圖 4. 安全性警告

單擊“Start”以啟動文件查看器應用程序。

實現 JNLP 文件

既然我們已經了解了如何用 Sun 的 Java Web Start 構建、分發和部署 SWT 應用程序,那麼就讓我們重新研究一下如何實現 JNLP 文件。通過 Java Community Process(JCP)管理 Java 網絡啟動協議規范。由於本文的目的在於 介紹用 Java Web Start 來部署 SWT 應用程序的一些具體細節,因此並沒有提 供太多這方面的背景信息。關於更多有關 Java Web Start 方面的信息和背景知 識,請參考 參考資料中列出的 Steve Kim 的文章“Java Web Start”。

清單 1說明了在 SWT 應用程序的 JNLP 文件中所使用的各種標記。

清單 1. index.jnlp 文件

1  <?xmlversion="1.0" encoding="utf-8"?>
2    <jnlp spec="1.0+"codebase="http://localhost:8080/fileviewer"href="index.jnlp ">
3      <information>
4          <title>File Viewer</title>
5          <vendor>IBM developerWorks</vendor>
6          <homepage href="index.html"/>
7          <description>File Viewer</description>
8           <description kind="short">FileViewer</description>
9      </information>
10     <security>
11           <all-permissions/>
12      </security>
13      <resources>
14           <j2se version="1.4"/>
15          <jar href="fileviewer.jar"/>
16          <nativelib href="swt-lib.jar"/>
17      </resources>
18       <resources os="Windows">
19          <jar href="swt-win32.jar"/>
20      </resources>
21       <resources os="Linux">
22          <jar href="swt-linux.jar"/>
23      </resources>
24       <application-descmain- class="org.eclipse.swt.examples.fileviewer.FileViewer"/>
25  </jnlp>

讓我們仔細檢查一下這個 XML 文件中的一些重要部分:

1.因為 SWT 應用程序在執行時需要裝入系統庫,所以它需要能夠完全訪問用 戶的工作站。第 10 行到第 12 行顯示了應用程序如何請求對客戶機環境的完全 訪問權。為了授予 Java Web Start 這個級別的訪問權限,應用程序的所有 JAR 文件都必須經過數字簽名。

2.正如第 16 行所示,我們需要聲明一個 nativelib 標記來告訴 Java Web Start 這個 JAR 文件包含本機庫。在我們的 示例文件查看器應用程序中,這個 JAR 文件包含一個 Windows DLL 和一系列用 於 Linux 的 SO 文件。

3.第 18 行到第 23 行為每個操作系統裝入相應的 SWT JAR 文件。“resources”標記使您能夠保護資源,從而只有特定的操作系 統和體系結構能夠使用該資源。 os 屬性指定了應當考慮使用資源元素的操作系 統。這個值基於最終用戶的 os.name Java 系統特性。雖然在這個示例中沒有用 到這個值,但也可以使用 arch 屬性進一步限制對 Java 庫的訪問。 arch 屬性 基於最終用戶的 os.arch Java 系統特性。

結束語

SWT 用戶界面工具箱和 Java Web Start 的結合向開發人員提供了一套很棒 的工具,可以用這套工具來創建和部署高度交互的客戶機端 Java 應用程序。這 個示例文件查看器應用程序提供了一個構建和打包框架,您可以用它來創建自己 的獨立 SWT 應用程序,這些應用程序是通過 Java Web Start 分發的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved