分享
 
 
 

Java技巧21使用档案文件提高applet的加载速度

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

通过提高加载速度改善 applet 的外在性能

作者:John D. Mitchell

摘要

本技巧说明如何创建一个档案文件,使它包含您的所有类文件,以便 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 文件中。您只需记住:只是将文件存储在档案文件中(也就是不许压缩)。

假如您使用的是 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 下载速度。不必为使用这两种浏览器的旧版本(或是任何其他浏览器)的用户担心,因为他们仍将通过慢速的老方法来获取 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 格式。我把将这三种档案文件格式整合到一起的工作留给您。

参考资源

有关 JavaSoft 的 JDK 版本 1.1 的信息,请访问:

http://java.sun.com/prodUCts/JDK/1.1/designspecs/index.html

有关 JAR 档案文件的信息,请访问:

http://java.sun.com/products/JDK/1.1/designspecs/jar/manifest.html

以下网址有 applet 标记的一个示例:

http://java.sun.com/products/JDK/1.1/docs/guide/misc/applet.html

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有