主頁 > 知識庫 > 網絡編程 > JSP/Java >

使用檔案文件提高JavaApplet的加載速度

來源: 作者: 發表于:2009-09-29 11:27  點擊:
本技巧說明如何創建一個檔案文件,使它包含您的所有類文件,以便 Netscape 瀏覽器用戶能在最短時間內下載您的 applet! 現在人們對 Java 常發的牢騷之一便是它的性能。影響用戶對 Java applet 速度和價值的認識的一個重大因素是:加載組成 applet 的所有類要

本技巧說明如何創建一個檔案文件,使它包含您的所有類文件,以便 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.foo.com/classes">
<param name=cabbase value="hello.cab">
</applet>

cabbase 參數的 value 值即 CAB 文件的文件名。

創建 Netscape 瀏覽器可用的一個 .zip 檔案文件很容易。將 applet 所需的所有 .class 文件打包到一個 .zip 文件中。您只需記。褐皇菍⑽募鎯υ跈n案文件中(也就是不許壓縮)。

如果您使用的是 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.foo.com/classes"
archive="hello.zip">
</applet>

別急 -- 我們還可以更進一步!您可以創建 .cab 和 zip 檔案文件,并同時支持這兩種格式;這意味著 Navigator 和 Internet Explorer 用戶都將獲得更快的 applet 下載速度。內容來自中國站長資訊網(www.chinahtml.com)不必為使用這兩種瀏覽器的舊版本(或是任何其他瀏覽器)的用戶擔心,因為他們仍將通過慢速的老方法來獲取 applet 的所有類。將以上內容綜合起來:

<applet name="Hello" code="HelloWorld" width="50" height="50"
codebase="http://www.foo.com/classes"
archive="hello.zip">
<param name=codebase value="http://www.foo.com/classes">
<param name=cabbase value="hello.cab">
</applet>

現在您可以用 .cab 和 zip 檔案文件來解決下載速度慢的問題,JavaSoft 在 JDK 1.1 中已定義了一種新的檔案文件格式,您可以用這種新的格式將所有圖像文件、音頻文件和類文件打包在一個文件中。JavaSoft 將這種格式稱為 Java Archive (JAR)。< APPLET > HTML 標記已被修改,以便用 archives 參數來處理這種 JAR 格式。(責任編輯:張華文)

    有幫助
    (6)
    46.2%
    沒幫助
    (7)
    53.8%
    3D试机号今天走势 怎么买股票 一只股票分析全面分析 江苏省体彩11选五开奖结果 浙红快乐12走势图 今日短线股票推荐 大发快三骗局揭秘 金7乐走势图手机 骰子彩票大小单双技巧 中国高科股票分析 广东福彩26选5开奖结果最新