Java網絡啟動(Java Web Start (JWS) )可以實現在網絡浏覽器中運行具備全部特色的Java應用軟件Sun公司在年三月發布的Java就已經具備了對JWS的支持自從JSE版本以來JWS就已經成為Java運行時環境(Java Runtime Environment (JRE) )的默認配置不必再單獨安裝了在這篇文章中我將向您介紹這一重要技術
技術
JWS是與網絡浏覽器相結合的應用軟件當用戶點擊鏈接的時候就會指向一個Java網絡啟動協議(Java Network Launching Protocol (JNLP) )文件然後浏覽器自動啟動JWS接著下載緩存並運行基於Java技術的應用軟件
在JWS背後的技術是JNLP及其API它們是在Java團體進程(Java Community Process)中開發的JWS實際上是JNLP規范的一個參考實現JNLP技術定義了一個標准的文件格式該格式描述了如何調用一個JNLP文件
既然安裝鏈接可以作為普通的HTTP URL的鏈接那麼您就可以通過網頁來檢查客戶端是否安裝了JWS您可以在IE中通過以下代碼來檢查
<SCRIPT LANGUAGE=VBScript>
on error resume next
If isIE = true Then
If Not(IsObject(CreateObject(JavaWebStartisInstalled))) Then
javawsInstalled =
Else
javawsInstalled =
End If
If Not(IsObject(CreateObject(JavaWebStartisInstalled))) Then
javawsInstalled =
Else
javawsInstalled =
End If
If Not(IsObject(CreateObject(JavaWebStartisInstalled))) Then
javawsInstalled =
Else
javawsInstalled =
End If
End If
</SCRIPT>
開發
開發部署在JWS上的軟件和開發獨立運行的軟件在Java 平台上是基本相同的比如程序的起點都是以下的標准代碼
public static void main(String[] argv)
然而為了支持網絡部署也就是實現自動下載和調用軟件並且保證軟件在一個安全的沙盒中運行還需要一些額外的考慮包括
應用軟件必需作為JAR文件集合來使用
所有的應用軟件資源
比如文件
圖片都必需存儲在JAR文件中
而且它們都必需使用Java
平台的getResource機制來引用
應用軟件可以使用System
exit調用
進行不受限制地訪問系統的軟件需要通過簽名的JAR文件來使用
而且JAR文件中所有的項目都必需經過簽名
如果軟件要運行在一個安全沙盒中
那麼它必需遵循以下的限制;
不能進行本地磁盤訪問
所有的JAR文件都必須從同一個主機下載
只能和下載JAR文件的主機之間建立網絡連接
不能安裝安全管理器
不能使用本地類庫
對系統屬性的訪問受到限制對於JNLP中定義了的系統屬性應用軟件可以進行讀/寫操作並且對於相同的屬性集合具備和applet一樣的只讀權限
安全
JWS是構建於Java 平台之上的Java 平台提供了一個全面的安全架構在Java 版中JWS則提供了更加強大的安全特色比如代碼簽名
在默認狀態下通過JWS調用的應用軟件將運行在一個受到限制的環境中(一個沙盒)它們對本地計算資源的訪問比如存儲設備和本地網絡是有限的這樣JWS就保證了下載的潛在的不可信任的軟件不會危及到本地文件或網絡
當然應用程序也可以請求不受限制的本地系統訪問在這種情況下當該軟件第一次調用時JWS將顯示安全警告對話框安全警告的內容包含軟件開發者的信息
如果一個應用軟件包含了一個或多個經過簽名的JAR文件JWS將會驗證這些JAR文件在簽名後是否發生過變化如果數字簽名的認證失敗那麼JWS就不會運行該軟件因為它們已經被第三方修改過了通過在JNLP文件中添加以下的設置一個應用軟件可以請求完整的權限
<security>
<allpermissions/>
</security>
JNLP文件
JNLP是一個和JWS緊密相關的概念它經常可以和術語網絡啟動相互替代使用實際上JNLP是一個規定了JWS應用軟件如何啟動的協議JNLP中的包含了諸如JAR包文件的位置應用軟件主要類的名稱以及程序的其它一些參數在適當配置的浏覽器中JNLP文件是傳遞給JRE的然後JRE將會下載應用軟件到用戶的機器上並開始執行
一個JNLP文件不包含任何二進制數據實際上它包含的URL指向所有的二進制數據和二進制代碼資源這些文件還可以指向其他的JNLP文件它們被稱為擴展描述符一個擴展描述符通常描述了運行軟件所必需的組件在擴展描述符中描述的資源將會成為應用軟件類路徑的一部分這樣常用的功能只需要描述一次即可以下的例子是一個常見的JNLP文件
<?xml version= encoding=UTF?>
<jnlpcodebase=_app>
<information>
<title>Hello world!</title>
<vendor>My Web Company</vendor>
<icon />
<offlineallowed/>
</information>
<resources>
<jse version=+/>
<jar />
</resources>
<applicationdesc mainclass=comhelloworldHello/>
</jnlp>
這個JNLP文件描述了如何調用名為Hello的程序在JNLP文件中指定了需要或更高版本的Java來運行該程序同時還有一些與程序相關的信息這些信息都會在用戶下載的過程中顯示
如果您希望了解更詳細的JNLP協議和文件格式可以參考這個官方規范
結論
JWS提供了一種與平台無關的安全的而且強大的部署技術開發者只需要將應用軟件部署在網絡服務器上就可以為最終用戶提供全部的功能而最終用戶也只需要使用網絡浏覽器就可以運行所需的應用軟件而且永遠是最新的版本
JWS的一個主要優點是它克服了Java插件和不同Java虛擬機的兼容性問題但是使用網絡啟動的程序卻不能像applet一樣簡單地和浏覽器進行通訊
查看本文國際來源
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26465.html