耸人听闻!Java
Applet又不是人,怎么能跪下呢?就是跪下,又怎么能给ActiveX这个手下败将跪下呢?
曾几何时,Java
Applet把ActiveX踩在了脚底下。ActiveX不安全,而Java Applet因为虚拟机的技术,能够构造Sandbox,Java Applet可以在SandBox里面运行,而Sandbox可以排除Java Applet的任何危险动作,诸如针对本地文件的IO等等。正因如此,当然也因为Java阵营的添油加醋的造势和炒作,弄得大多数的公司把自己的防火墙配置成禁止任何ActiveX通过。网页上的ActiveX成为安全漏洞的代名词。
Java
Applet真正把ActiveX踩在了脚底下。同时,正是因为Applet上的成功,使得Java成为网络时代的代名词,星星之火,燎原于世。一个为小设备和网上小程序准备的语言,终于成为全功能语言,进入企业级,形成自己的开发平台,把Microsoft打的还不了手。Microsoft不得不全方位改造自己的开发语言,或多或少向Java看齐。大家都知道,这就是.NET开发语言的来历。没有Java,VB不可能这么快就变成VB.NET,也不会有C#,更不会有.NET Common Runtime等等,恐怕没有人不同意吧。
Java的成功始自Java
Applet,而对Java Applet的支持始自Netscape。后来Internet Explorer跟进,随后所有的浏览器都必须支持Java Applet。在Netscape如日中天的时候,Microsoft不敢多想,所以Internet Explorer一直老老实实地支持Java Applet。但是Netscape并不领情,所以Netscape对ActiveX的支持一直局限在选择安装的Plug-in的水平上,也就是说,除非用户安装一个Plug-in,不然不能在Netscape浏览器里面运行ActiveX。而一般用户根本就不知道还需要安装另一个软件;或者知道需要安装,但是不知道怎么安装;或者知道需要安装,也知道怎么安装,但是因为怕麻烦等原因没有安装。那么对不起,用户没法浏览带有ActiveX的网页。
任何网站开发人员也非常清楚这一点。他们如果在网页上面使用ActiveX而不是Java
Applet的话,那么估计有一半的互联网用户因为使用Netscape浏览器,将无法使用他们的网站。在顾客至上的考虑下,唯有选择Java Applet,放弃ActiveX。
这简直就是一种不平等条约,但是那个时候Microsoft没办法反击。
现在不同了,一方面Netscape已经从一只老虎变成了一只猫,另一方面Microsoft赢了官司,不必要在操作系统中加载JVM。Microsoft反击了。现在的IE6.0已经把对Java的支持降到了选择安装的Plug-in的级别,也就是说,除非用户在安装完IE之后,再自行安装一个JVM才能运行Java
Applet。对于普通用户来说,这只能带来不便,是一种倒退。
但是对Microsoft来说,不平等条约又变成了平等的,只是代价…。
我们不妨考察一下现在的IE6如何支持Java
Applet吧。要想在IE上面运行Java Applet,网页开发人员可以指定某一个版本的,Sun JVM Plug-in(专为IE开发的那种),就可以触发IE自动下载这个Plug-in。比如下面的标签声明了一个Java Applet,类名为com.cmpc.CMPCApplet3,它需要1.4.1或更新的SUN JVM(为IE开发的Plug-in):
<object
classid = "clsid:CAFEEFAC-0014-0001-0003-ABCDEFFEDCBA"
width="320"
height="240" name="CMPC"
codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,1,mn">
<param
name="code" value="com.cmpc.CMPCApplet3">
<param
name="cache_archive_ex" value="preload;1.0.0.4">
</object>
在JVM下载、安装完毕之后,IE会自动运行这个Applet。当然,每一个版本的JVM下载和安装只发生一次,除非另外一个Applet需要另一个版本的JVM,不然就不需再次下载和安装了。这倒也不是特别大的不便,特别是对于有高速上网条件的用户来说。可要是您用的是56K
Modem的话,这就是个问题,您可能就需要另外找到这个版本的JVM的CD,自己在机器上安装,然后再浏览需要这个JVM的网页。
读者可能还看不出:Java跪在哪了?我跑题跑得太厉害了吧?
慢着,您仔细看看上面的标签。那里说明了这个JVM是一个ActiveX。
奇怪吗,想想也不奇怪。IE的Plug-in必须是ActiveX。JVM降到了Plug-in级别之后,也就降到了一个普通的ActiveX的级别。所有的Java
Applet都是在这个ActiveX里面运行的小程序。
更为安全和强大的Java
Applet必须依赖于ActiveX才能运行。严格地讲,还是在一个ActiveX内部运行。
再想一想就更有趣了,如果用户继续坚信Java阵营当初的宣传的话,用户的防火墙根本就不会让身为ActiveX的SUN
JVM穿过去,用户也无法让IE自动安装JVM。那样的话,用户的出路也只有一个:就是找张CD,然后在各台机器上手动安装。不过根据Netscape用户的经验,没有人耐烦这样做。
您告诉我,Java
Applet是不是跪着呢?