Java咖啡館(11):Java插件技術 – JAVA編程語言程序開發技術文章

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技術公平競爭的結果將會造就更完美的兩個系統,而不是通過市場的手段去限制競爭技術。此乃一大憾事。

發佈留言