天天看點

Java Applet給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使用者的經驗 ,沒有人耐煩這樣做 。