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>
<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>
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>');