Java Web Start 是幫助客戶機端應用程序開發的一個新技術
它的獨特之處在於將您從關心客戶機是如何啟動的(從 Web 浏覽器或是桌面)中解放出來
另外
該技術提供了一個使 Web 服務器能獨立的分發和更新客戶機代碼的集合部署方案
Java Web Start 是一個軟件技術
它包含了 applet 的可移植性
Servlet 和 JavaServer Pages (JSP)的可維護性以及象 XML 和 HTML 這樣的標記語言的簡易性
它是基於 Java 的應用程序
允許從標准的 Web 服務器啟動
部署和更新功能完全的 Java
客戶機應用程序
在第一次啟動 Java Web Start 時
用戶可以從 Web 下載新的客戶機應用程序
之後這些應用程序可以通過 Web 頁面的鏈接或(Windows 中的)桌面圖標或
開始
菜單初始化
應用程序在 Java Web Start 下快速初始化
被高速緩存在客戶機
並且可以遠程的離線啟動
另外
因為 Java Web Start 是從 Java
技術建立起來的
所以它繼承了 Java 平台的完整的安全性體系結構
由於 Java Web Start 自身是一個 Java 應用程序
所以該軟件是平台獨立的
並且支持 Java
平台的任何客戶機系統都支持該軟件
當客戶機應用程序啟動時
Java Web Start 自動執行更新
在從原來的高速緩存(倘若存在高速緩存)裝入應用程序的同時
從 Web 下載最新的代碼
Java Web Start 還提供了一個 Java 應用程序管理器(Java Application Manager)實用程序
既提供了多種選項
如清除下載的應用程序的高速緩存
指定多種 JRE 的使用
設置 HTTP 代理
還允許最終用戶組織他們的 Java 應用程序
Java Web Start 站點
JNLP規范
l
一
當用戶首次單擊一個鏈接來啟動一個客戶端的 Java 應用程序時
發生下面的過程
Web 浏覽器被指示運行 Java Web Start
Java Web Start 以啟動閃屏開始
然後 Java Web Start 與指定的 Web 服務器聯系
並且確定是否為所要的 Java 應用程序下載了所有的文件
把適當的文件下載到本地機
Java Web Start 運行下載的應用程序
二
當選擇是否為與 Java Web Start 兼容而開發應用程序時
明智的做法是對用戶體驗做全面考慮
Java Web Start 必須安裝在每台從 Web 或從 Java 應用程序管理器啟動客戶機 Java 應用程序的機器上
所以
雖然客戶機 Java 應用程序可以從 Web 頁面啟動
但如果最初沒有 Java Web Start 安裝在本地機上的話
該應用程序本身是不能啟動的
這樣 Web 浏覽器僅提供啟動程序的方便的鏈接 ― 不多不少
Java Web Start 僅對正確打包的並且依照 Java Web Start 指導方針的應用程序有用
另外
需要 Web 服務器
而且 Web 服務器必須正確的配置來解釋 所有的JNLP 和 MIME 標記
所以
除非下載的或是從 Web 啟動的所有的客戶機 Java 應用程序滿足了這些要求
每個客戶機 Java 應用程序才能從 Java Web Start 被啟動和被管理的
在用戶中也許有點關於 Java Web Start 和 Java 插件的應用程序與 applet 間的不同之處的困惑
用戶可能理解或還不理解為什麼 Java Web Start 能管理和啟動許多的客戶機 Java 應用程序
卻不能與以 Java 插件運行的 Java Applets 建立任何連接
盡管事實是任一程序都可以從 Web 浏覽器啟動
對於被要求去為僅僅一個客戶機應用程序而下載 Java Web Start 的用戶來說
可能又認為對一個客戶機 Java 應用程序的執行來說
Java Web Start 應用程序管理器的特性很累贅
安裝過程
麻煩
太多
Java Web Start 僅能用於為 Java
平台編寫的客戶機 Java 應用程序
當前
Java Web Start 可在 Windows
/
/NT/
Linux 和 Solaris 操作系統上執行
三
開發和部署 Java Web Start 的客戶端 Java 應用程序時需要依照的一些簡單的規則
應用程序可以作為針對 Java
平台的獨立的應用程序正常的編寫
如果您的應用程序需要訪問本地系統
那麼 JAR 文件中的每個條目都必須被簽名
應用程序的所有的文件必須保存在一個 JAR 文件集中
該文件集包含如圖像和聲音文件等資源
裝入資源(如圖像)的任何訪問都必須使用有類裝載器的 getResource 方法
四
Java Web Start 的核心
JNLP
為使 Java 應用程序能用 Java Web Start 執行
您必須為應用程序創建一個 Java 網絡語言協議(Java Networking Language Protocol
JNLP)文件
JNLP 是一個為應用程序提供基本的元素和描述的 XML 文件
JNLP 文件的目的如下
指定從 Web 服務器下載的 JAR 文件
提供其它的可能的包需要
指定系統屬性
考慮到任何必要的運行時參數
指定使用哪個版本的 Java
平台
xml 代碼
<!
>xml version=
encoding=
UTF
?>
<jnlp spec=
+
codebase=
>
<information>
<title>This is my company
s Java client applicationtitle>
<vendor>Company name
r>
<icon />
<homepage ref=
reference/l
>
<offline
allowed/>
information>
<resources>
<j
se version=
/>
<jar part=
music
download=
lazy
/>
resources>
<resources os=
Windows
/>
<nativelibnativelib=
windowIconsForWindowOS
jar
part=
windowIcons
download=
eager
/>
<application
desc main
class=
pany
ui
Client
/>
<security>
<all
permissions/>
security>
jnlp>
JNLP文件的描述
A
第一行
您可以看到文件的編碼是 UTF
字符編碼
所以
當編輯 JNLP 文件時
最終文件要用與 JDK 一起提供的 native
ascii工具轉換來確保文件的編碼正確
B
jnlp codebase 屬性用於在 JNLP 文件中指定所有的相關 URL
href 屬性設置(要求的)是為了讓應用程序並入 Java Web Start 應用程序管理器
rmation 標記(如 title
vendor 等)用於提供來自 Java Web Start 應用程序管理器的關於應用程序的附加信息
homepage ref 屬性是專門用於指向 Web URL 從而用戶可以去提供了關於應用程序的更多的信息的 Web 頁面
最有趣的 information 標記是 offline
allowed 屬性
該屬性決定了客戶機 Java 應用程序是否能離線啟動
當離線運行客戶機 Java 應用程序時
Java Web Start 將繼續判定來自 Web 服務器的最新的文件
在多數情況下
這個方案將引起快速的超時(因為位置被指定要離線啟動)
並且應用程序從本地高速緩存啟動
D
resource 標記考慮到 JNLP 文件指定應用程序使用哪些 JAR 文件和如何下載 JAR 文件
即
是急切的還是不緊不慢的
這個特性在當用戶要下載大量的文件而對用戶來說不是所有的文件都是客戶機執行所需要的時是非常有幫助的
缺省的
多數資源是急切的下載的
在這樣情況下
JAR 文件和資源在應用程序啟動前被下載
不緊不慢的下載的資源只有當 Java 虛擬機(JVM)觸發從應用程序載入資源或文件時才被下載
不緊不慢的下載資源的一個示例是客戶機的幫助文件
考慮到了客戶機的更快的啟動和執行
只有在用戶實際上向客戶機請求幫助文件時
才會下載這些文件
然而
一旦用戶請求了一個幫助文件
在請求過程中適當的 JAR 就會被下載
並伴有一個通知用戶大致的下載時間的窗口
E
JNLP 文件中最後一個有趣的標記是 security 屬性
缺省的
任何從 Java Web Start 客戶機啟動的 Java 應用程序在一個安全的
受限制的環境執行
該環境中不允許進行本地文件訪問
與其它計算機的網絡連接等等
然而
對於要對客戶機和網絡可以完全訪問的特性豐富的客戶機來說
all
permissions 值是用於給予客戶機完全訪問的權限的
為具有對本地機的完全訪問
Java 應用程序所使用和裝入的所有 JAR 文件和資源必須被數字簽名
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26619.html