JavaApplet給ActiveX跪下了
聳人聽聞!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是不是跪著呢?