耸人听闻!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是不是跪着呢?
闽公网安备 35060202000074号