ㄚ琪很少對深入淺出系列書籍大寫特寫,但是這一次讀到深入淺出 Java 程式設計 第二版17章這裡,終於有尋獲至寶的感覺,因為在很多Java的書中,討論發佈程式的並不多,而且深入淺出的系列又淺顯易懂,趁ㄚ琪在學會發佈程式之前,一定要好好的大寫特寫一下,作為讀後心得分享最好。
把程式包進JAR
如何建構可執行的JAR?這裡有3個步驟,當然很多廢話都省了,如果想看廢話,請自行買書來看:
Step 1:確定所有的class檔案都在classes目錄下
Step2:建立manifest.txt來描述那個class帶有main()
檔案裡會有這樣一行:
Main-Class : MyApp
MyApp就是編譯出來MyApp.class沒有副檔名的名稱。
Step 3: 執行jar工具來建構帶有所有class以及manifest的JAR檔
%cd MiniProject/classes
%jar -cvmf manifest.txt app1.jar *.class
或
%jar -cvmf manifest.txt app1.jar MyApp.class
第一種方法如果是有很多class檔案,會很方便,反之,第二種方法只能在有一個class檔案時使用
執行JAR
當然很多人會知道這個操作,你可以直接在Windows下雙擊這個jar檔,或是
%cd MyProject/classes
%java -jar app1.jar
把class包進package中
Step 1:選擇package名稱
ㄚ琪以com.blogspot.ijx為例。此class的名稱為PackageExercise,因此完整的名稱會是:com.blogspot.ijx.PackageExercise。
說起ijx.blogspot.com,ㄚ琪可是跑了一整天的程式才找到ijx是目前可以用的最簡潔的網址了,有空去看看吧,不過現在可能沒有東西。
Step 2:在class中加入package指令
這個ㄚ琪就不多說了。
Step 3:設定相對應的目錄名稱
編譯與執行package
加上-d(directory)旗標來編譯
%cd MyProject/source
%java -d ../classes com/blogspot/ijx/*.java
-d 旗標會要求編譯器姜編譯結果根據package的結構來建立目錄與輸出,如果目錄還沒有建好,編譯器會自動的處理這些工作
執行程式
%cd MyProject/classes
%java com.blogspot.ijx.PackageExercise
以package建構可執行的JAR
Step 1:確定所有的class檔都放在classes目錄下正確對應的package結構中
Step 2:建購manifest.txt檔來描述哪個class帶有main(),以及確認有使用完整的class名稱!
在manifest.txt寫入一行:
Main-Class : com.blospot.ijx.PackageExercise
然後把manifest檔案放到class目錄下
Step 3:執行jar工具來建構帶有目錄結構與manifest的JAR檔案
%cd MyProject/classes
%jar -cvmf manifest.txt packEx.jar com
Java Web Start
使用者能透過點選網頁上的某個連結來啟動Java Web Start的應用程式。一旦程式下載後,它就能獨立於瀏覽器之外來執行。事實上,Java Web Start應用程式只不過是透過網路來散布的應用程式而已。
Java Web Start的運作方式
Step 1:用戶端點選某個網頁上JWS應用程式的link(.jnlp檔)
Step 2:網頁伺服器收到request送出.jnlp檔案(不是JAR)給用戶端的瀏覽器
Step 3:瀏覽器啟動Java Web Start,JWS的helper app讀取.jnlp檔案,然後向伺服器要求MyApp.jar
Step 4:網頁伺服器送出.jar檔
Step 5:JWS取得JAR並呼叫指定的main()來啟動應用程式
之後使用者就可以在離線的情況下透過JWS來啟動應用程式
.jnlp檔案
.jnlp檔案(Java Network Lanuch Protocol)來製作Java Web Start的應用程式。.jnlp檔案是個簡單的XML文件,會有這樣的內容:
建構與佈署Java Web Start的步驟
Step 1:將程式製作程可執行的JAR
Step 2:撰寫.jnlp檔案
Step 3:網站jnlp與JAR檔案放到伺服器
Step 4:將網頁伺服器設定新的mime類型
application/x-java-jnlp-file
這會讓網頁伺服器以正確的header送出.jnlp資料,如此才能讓瀏覽器知道所接收的是什麼
Step 5:設定網頁連結到.jnlp檔案
<HTML>
<BODY>
<a href=”MyApp2.jnlp”>Launch My Application</a>
</BODY>
</HTML>
呼,熱吧!