基本介紹
在java開發的早期,重點被放在了客戶端開發。語言中對於applet和安全下載的支持對於全球資訊網(WWW)的發布看上去是個不錯的主意。但是現實是java最大的成功在於伺服器端,java的強大功能和適應性贏得了伺服器端開發者的心。同時,客戶端的開發落後了。棘手的開發問題限制了applet的效用,開發者被迫轉向基於瀏覽器的瘦客戶端。
Java Network Launching Protocol (JNLP,java網路載入協定) 承諾改變這個現狀。通過JCP(Java Community Process)的JSR-56的開發, JNLP解決了很多先前用java開發針對客戶端的功能的問題。一個JNLP客戶端是一個應用程式或者說服務,它可以從宿主於網路的資源中載入應用程式。如果你使用JNLP打包一個應用程式,那么一個JNLP客戶端能夠:
o 為該套用探測,安裝並且使用正確版本的JRE(java運行時環境)
o 從瀏覽器或者桌面載入應用程式
o 當新版本的套用出現時自動下載最新的版本。
o 為了加速啟動速度在本機快取應用程式需要的類
o 可以作為applet或者應用程式運行
o 在必要的情況下下載原始的庫
o 以安全的方式使用諸如檔案系統這樣的本機資源
o 自動定位和載入外部依賴資源
檔案具體說明
<?xml version="1.0" encoding="UTF-8"?>
<!--codebase 屬性指出搜尋應用程式資源的頂級URL,下面的icon/jar元素都是以這個URL為基本.-->
<jnlp codebase="http://127.0.0.1:8081/webstart">
<information>
<!-- 在"開始"-"運行"選單中輸入"javaws"或"javaws -viewer"啟動Web Start,會看到客戶端已經安裝的webstart應用程式-->
<!--title :應用程式標題 vendor:供應商
title/vendor 元素必須,會顯示在用"javaws -viewer"命令
打開的應用程式快取查看器(Java Application Cache Viewer)中-->
<title>HelloWorld</title>
<vendor>Lively Corporation</vendor>
<description>HelloWorld Test Example for WebStart.</description>
<!--homepage :存放有關應用程式的相關文檔的URL,如help檔案等,僅僅是description作用-->
<homepage href="http://127.0.0.1:8081/webstart/index.html"/>
<!--icon 指定圖示會顯示在應用程式快取查看器中,
在查看器中新建webstart捷徑到桌面時也會顯示為捷徑圖示,
只支持GIF/JPEG格式,其它格式無效-->
<icon href="./images/logo.jpg"/>
<!--splash 在sun的文檔中提到會出現在webstart啟動時的閃屏中,不過可能由於速度問題,我沒有觀察到-->
<icon kind="splash" href="./images/logo.jpg"/>
<!-- 允許離線啟動,可以使用javaws -offline命令-->
<offline-allowed/>
</information>
<resources>
<!-- 指定客戶端需要安裝的j2se版本,下面指定為1.5+,
如果版本是1.4,在連結此jnlp檔案時會提示更新j2se版本-->
<j2se version="1.5+"/>
<!-- 指定要下載到本地的jar檔案(注意,所有的檔案都需要打包才能夠下載),
可以包含一些資源檔案,如icons/configuration files,可以使用getResource方法取得-->
<jar href="./jar/jws/helloworld.jar"/>
</resources>
<!--application-desc 必須,指定webstart啟動時執行jar檔案中的哪個類-->
<application-desc main-class="jws.HelloWorld"/>
</jnlp>
部署套用
(1)編寫相關套用,打包成一系列jar;
(2)根據jnlp檔案說明修改相應的jnlp內容,修改相應的url和jar;
(3)部署jnlp檔案和jar到相應的web容器;
(4)編寫訪問網頁,即可使用該套用〔亦可下載jnlp檔案使用jws運行套用〕;
補充
如果jar需要訪問本地檔案資源,需要為你的jar檔案簽名。
先在命令行用keytool產生一個keystore檔案:
keytool -genkey -keystore you.keystore –alias youApp
命令行用jarsigner簽名,當然這時候需要生成keystore時的密碼:
jarsigner -keystore you.keystore appTest.jar youApp
重新部署即可。