Java技巧 如何使用JWS網路啟動部署軟體

來源:互聯網
上載者:User
技巧|網路

Java網路啟動(Java Web Start (JWS) )可以實現在網路瀏覽器中運行具備全部特色的Java應用軟體。Sun公司在2001年三月發布的Java1.0就已經具備了對JWS的支援,自從J2SE1.4版本以來,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 nextIf isIE = "true" Then  If Not(IsObject(CreateObject("JavaWebStart.isInstalled"))) Then     javawsInstalled = 0  Else     javawsInstalled = 1  End If  If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.4.2.0"))) Then     javaws142Installed = 0  Else     javaws142Installed = 1  End If   If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.5.0.0"))) Then     javaws150Installed = 0  Else     javaws150Installed = 1  End If  End If</SCRIPT>

開發

開發部署在JWS上的軟體和開發獨立啟動並執行軟體在Java 2平台上是基本相同的,比如,程式的起點都是以下的標準代碼:

public static void main(String[] argv)

然而,為了支援網路部署,也就是實現自動下載和調用軟體,並且保證軟體在一個安全的沙箱中運行,還需要一些額外的考慮,包括:

應用軟體必需作為JAR檔案集合來使用;

所有的應用軟體資源,比如檔案、圖片都必需儲存在JAR檔案中,而且它們都必需使用Java 2平台的getResource機制來引用;

應用軟體可以使用System.exit調用;

進行不受限制地訪問系統的軟體需要通過簽名的JAR檔案來使用,而且JAR檔案中所有的項目都必需經過簽名;

如果軟體要運行在一個安全沙箱中,那麼它必需遵循以下的限制;

不能進行本地磁碟訪問;

所有的JAR檔案都必須從同一個主機下載;

只能和下載JAR檔案的主機之間建立網路連接;

不能安裝安全管理器;

不能使用本地類庫;

對系統屬性的訪問受到限制,對於JNLP中定義了的系統屬性,應用軟體可以進行讀/寫操作,並且對於相同的屬性集合具備和applet一樣的唯讀許可權。

安全

JWS是構建於Java 2平台之上的,Java 2平台提供了一個全面的安全架構,在Java 6.0版中,JWS則提供了更加強大的安全特色,比如程式碼簽署。

在預設狀態下,通過JWS調用的應用軟體將運行在一個受到限制的環境中(一個“沙箱”),它們對本地計算資源的訪問,比如存放裝置和本網,是有限的。這樣,JWS就保證了下載的潛在的不可信任的軟體不會危及到本地檔案或網路。

當然,應用程式也可以請求不受限制的本地系統訪問,在這種情況下,當該軟體第一次調用時,JWS將顯示安全警告對話方塊,安全警告的內容包含軟體開發人員的資訊。

如果一個應用軟體包含了一個或多個經過簽名的JAR檔案,JWS將會驗證這些JAR檔案在簽名後是否發生過變化,如果數位簽章的認證失敗,那麼JWS就不會運行該軟體,因為它們已經被第三方修改過了。通過在JNLP檔案中添加以下的設定,一個應用軟體可以請求完整的許可權。

<security>   <all-permissions/></security>

JNLP檔案

JNLP是一個和JWS緊密相關的概念,它經常可以和術語“網路啟動”相互替代使用,實際上,JNLP是一個規定了JWS應用軟體如何啟動的協議。JNLP中的包含了諸如JAR包檔案的位置、應用軟體主要類的名稱,以及程式的其它一些參數。在適當配置的瀏覽器中,JNLP檔案是傳遞給JRE的,然後JRE將會下載應用軟體到使用者的機器上並開始執行。

一個JNLP檔案不包含任何位元據,實際上它包含的URL指向所有的位元據和二進位代碼資源。這些檔案還可以指向其他的JNLP檔案,它們被稱為擴充描述符,一個擴充描述符通常描述了運行軟體所必需的組件,在擴充描述符中描述的資源將會成為應用軟體類路徑的一部分,這樣,常用的功能只需要描述一次即可,以下的例子是一個常見的JNLP檔案:

<?xml version="1.0" encoding="UTF-8"?>  <jnlpcodebase="http://www.helloworld.com/hw_app">    <information>      <title>Hello world!</title>      <vendor>My Web Company</vendor>      <icon href="http://www.webjx.com/htmldata/2007-05-22/hello.jpg"/>      <offline-allowed/>    </information>    <resources>      <j2se version="1.3+"/>      <jar href="hw.jar"/>    </resources>  <application-desc main-class="com.helloworld.Hello"/></jnlp>

這個JNLP檔案描述了如何調用名為Hello的程式,在JNLP檔案中指定了需要1.3或更高版本的Java來運行該程式,同時還有一些與程式相關的資訊,這些資訊都會在使用者下載的過程中顯示。

如果您希望瞭解更詳細的JNLP協議和檔案格式,可以參考這個官方規範。

結論

JWS提供了一種與平台無關的、安全的而且強大的部署技術,開發人員只需要將應用軟體部署在網路伺服器上就可以為終端使用者提供全部的功能,而終端使用者也只需要使用網路瀏覽器就可以運行所需的應用軟體,而且永遠是最新的版本。

JWS的一個主要優點是它克服了Java外掛程式和不同Java虛擬機器的相容性問題,但是,使用網路啟動的程式卻不能像applet一樣簡單地和瀏覽器進行通訊。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.