1.java插件技术
java插件技术(java plug-in technology)是一个神奇的设计,它架起了时下流行的浏览器(包括internet explorer,下面简称ie,netscape navigator,下面简称nn以及mozilla)与java平台之间的桥梁。也就是说,只需要一个浏览器,它不必内置java虚拟机(比如与windows xp捆绑销售的ie 6),也不必特意安装java运行环境,在打开包含java applet的网页时,只要按照浏览器提示安装这个java插件后便能任意运行applet了,而这个安装过程与安装macromedia flash、3721等插件一样简单。
要知道,java插件技术与我们上回咖啡馆中介绍的运行applet的方法有着本质上的区别。
在上回java咖啡馆中,我向大家介绍了applet编写过程,以及在ie中运行applet的方法。回忆一下,我们是通过在html网页中嵌入<applet>标签实现的。实际上,如果你的系统中已经安装java运行时环境时,当浏览器遇到<applet>标签时,浏览器便会启动java虚拟机,从网上下载applet的class文件后执行它。这种方法有两个明显缺点:第一,如果系统中如果没有java运行时环境,浏览器便会名正言顺地怠工,拒绝执行applet;第二,如果系统中的java运行时环境版本过低,而applet又使用了新版本中的新技术,这也将导致applet运行不正常。
而java插件技术可以很好解决这两个问题。本质上,java插件技术是借助浏览器的插件机制给客户端安装或更新java运行时环境的技术。目前流行的浏览器都有插件机制,比如mozilla、nn的plug-in技术,ie的activex构件技术。当这些浏览器遇到网页中java插件标签时,会自动连接到sun公司的服务器下载或者更新java运行时环境,然后可以运行applet程序了。省却了用户自行安装java运行时环境的不便,这真是一个漂亮的实现。
2.通过java插件技术调用applet
java插件技术不能依靠<applet>标签调用applet了,你必须像调用其他nn的插件或者ie的activex构件一样调用java插件。
还是拿例子来说明一下。我们原先的sample.htm网页是这样调用applet的:
<applet code="newsapplet.class" codebase="." width=480 height=384>
<param name="from" value="prince charming">
<param name="to" value="cinderella">
</applet>
对应于nn的java插件,需要这么写:
<embed type="application/x-java-applet;jpi-version=1.5"
code="newsapplet.class"
width=480
height=384
pluginspage = "http://java.sun.com/products/plugin/index. html#download"
from="prince charming"
to="cinderella">
</embed>
而对应于ie的activex构件技术的java插件,需要这么写:
<object classid="clsid:cafeefac-0015-0000-0000-abcdeffedcba"
codebase="http://java.sun.com/update/1.5.0/jinstall-1_5_0-windows-i586.cab#version=1,5,0,0"
width=480 height=384>
<param name="code" value="newsapplet.class">
<param name = "type" value = "application/x-java-applet;jpi-version=1.5">
<param name="from" value="prince charming">
<param name="to" value="cinderella">
</object>
当然,如果想写出可以适应所有浏览器的调用java插件的代码,可以利用nn忽略<object>与<comment> 标签,以及ie忽略<embed>标签的事实来个嵌套,类似于
<object ...>
<comment>
<embed ...>
</embed>
</comment>
</object>
这样,无论是ie还是nn都会乖乖执行applet并且让王子对灰姑娘说出那一个字了。
3.升级情人节的applet
现在是时候把情人节的applet程序升级一下了,很简单,惟一要做的就是把原先index.htm代码中的如下部分进行修改:
...
document.write('<applet code="newsapplet.class" codebase="."width=480 height=384>');
document.write(' <param name="from" value="' + from + '">');
document.write(' <param name="to" value="' + to + '">');
document.write('</applet>');
...
修改后的代码为:
...
document.write('<object classid="clsid:cafeefac-0015-0000-0000-abcdeffedcba" codebase="http://java.sun.com/update/1.5.0/jinstall-1_5_0-windows-i586.cab#version=1,5,0,0" width=480 height=384>');
document.write(' <param name="code" value="newsapplet.class">');
document.write(' <param name = "type" value = "application/x-java-applet;jpi-version=1.5">');
document.write(' <param name="from" value="' + from + '">');
document.write(' <param name="to" value="' + to + '">');
document.write('</object>');
...
注意,为了节约篇幅,这里仅仅给出了对应ie的activex的代码。
当她在ie地址栏中输入包含你和她名字的url时,她的浏览器便会如图1提示需要安装插件(见图1)。选择“是”。在接收许可证协议以后,插件就会自动从sun的网站下载最新版的java运行时环境(见图2)。
图1
图2
安装完毕之后她就能够看到你精心准备的礼物了,是不是一点都不麻烦?你可以通过http://www.cfan.com.cn/11program/200504/index.htm直接体验这个新版本的applet。
4.java插件技术的力量
java插件技术是java运行时环境中的一个重要组成部分,有了它的帮助,使得applet找到了自己的绝世好搭档,将来的applet可能会更倾向于采用这种基于浏览器插件的技术而不是<applet>标签。
此外,加入swing技术的applet功能更加丰富,如图3所示是一个加入swing技术的applet界面(见图3)。
图3
要知道,只需要一个浏览器就能够得到这样的功能,而且是xp界面风格哦!如果哪个blog能够提供这样强大的功能,相信它一定会是blogger们不二的选择。
总之,java插件技术的出现很大程度弥补了java在桌面应用的不足。虽然java仍然保持上升的应用趋势,但反观html中<applet>标签无奈地被慢慢淡忘,很大程度跟微软在桌面系统的市场垄断有关。如果桌面系统更加开放,sun能够就此事理直气壮地说出“孙(sun)叔很生气,后果很严重”,相信java与.net技术公平竞争的结果将会造就更完美的两个系统,而不是通过市场的手段去限制竞争技术。此乃一大憾事。