摘要
本技巧說明如何創建一個檔案文件,使它包含您的所有類文件,以便 Netscape 浏覽器用戶能在最短時間內下載您的 applet!
現在人們對 Java 常發的牢騷之一便是它的性能。影響用戶對 Java applet 速度和價值的認識的一個重大因素是:加載組成 applet 的所有類要花很長時間。我們曾經願意花一分鐘或更長時間等待 applet 的下載,而我們做這一切只是為了看一些無聊的動畫。不幸的是,對性能的這種負面印象可能使實際上很有用的 applet 也顯得沒什麼用處了。
要理解這種新的 applet 加載方法速度較快的原因,您需要知道為什麼當前的方法速度如此之慢。一個 applet 通常由許多 Java .class 文件組成。對於每個類文件,類加載器必須打開一個從浏覽器到 applet 代碼所在服務器的單獨套接字連接。因此,如果您的 applet 由 18 個 .class 文件組成,浏覽器必須至少打開 18 個套接字才能將每個文件傳送到位。設置及斷開每個連接的開銷相當大。例如,設置每個連接需要來回傳送大量的網絡數據包,這樣會大大延長總響應時間(尤其是在網絡日益擁擠的今天)。(要了解有關套接字連接開銷的具體細節,請查閱一本重要的 TCP/IP 參考手冊。)
到現在,您可能已想出這一問題的解決方案了:將所有 .class 文件都放在一個大文件中,這樣只需建立一個連接即可下載整個 applet。真是個好主意!這正是 Netscape 和 Microsoft 兩大 Java 浏覽器陣營的共同想法。
不幸的是,他們提出的兩個解決方案並不直接兼容。Microsoft,出於自身的不同需要,創建了自己的 CAB 文件格式。Netscape 的解決方案是使用現有的、人們熟知的 .zip 檔案文件格式。幸運的是,如果願意,我們可以編寫 HTML 代碼來處理這兩種格式。這是因為每種專用文件格式是由 <APPLET> HTML 標記的不同擴展指定的。
本文不談 CAB 文件的創建(因為 CAB 將逐漸出局)。對此確實感興趣的人可查閱 Microsoft 的 Java 開發人員文檔。一旦創建了 CAB 檔案文件,您就可以通過在 <APPLET> 標記中添加一個 cabbase HTML 參數 (param) 來使用 CAB:
<applet name="Hello" code="HelloWorld" width="50" height="50">
<param name=codebase value="http://www.bianceng.cn/classes">
<param name=cabbase value="hello.cab">
</applet>
cabbase 參數的 value 值即 CAB 文件的文件名。
創建 Netscape 浏覽器可用的一個 .zip 檔案文件很容易。將 applet 所需的所有 .class 文件打包到一個 .zip 文件中。您只需記住:只是將文件存儲在檔案文件中(也就是不許壓縮)。
如果您使用的是 PKZip:
pkzip -e0 fileArchive.zip listOfClassFiles
如您使用的是 Info-Zip 壓縮程序:
zip -0 fileArchive.zip listOfClassFiles
請注意,在這兩種情況下,命令行標志包含的是數字 0,而不是字母 O。
要在 HTML 文件中使用 .zip 檔案文件,可在 applet 部分指定 archive 標記:
<applet name="Hello" code="HelloWorld" width="50" height="50"
codebase="http://www.bianceng.cn/classes"
archive="hello.zip">
</applet>
別急 -- 我們還可以更進一步!您可以創建 .cab 和 zip 檔案文件,並同時支持這兩種格式;這意味著 Navigator 和 Internet Explorer 用戶都將獲得更快的 applet 下載速度。不必為使用這兩種浏覽器的舊版本(或是任何其他浏覽器)的用戶擔心,因為他們仍將通過慢速的老方法來獲取 applet 的所有類。將以上內容綜合起來:
<applet name="Hello" code="HelloWorld" width="50" height="50"
codebase="http://www.bianceng.cn/classes"
archive="hello.zip">
<param name=codebase value="http://www.bianceng.cn/classes">
<param name=cabbase value="hello.cab">
</applet>
現在您可以用 .cab 和 zip 檔案文件來解決下載速度慢的問題,我想我應該告訴您,JavaSoft 在 JDK 1.1 中已定義了一種新的檔案文件格式,您可以用這種新的格式將所有圖像文件、音頻文件和類文件打包在一個文件中(請參閱參考資源部分)。JavaSoft 將這種格式稱為 Java Archive (JAR)。<APPLET> HTML 標記已被修改,以便用 archives 參數來處理這種 JAR 格式。我把將這三種檔案文件格式整合到一起的工作留給您。