瀏覽帶有最新JAVA技術的Applet
來源:互聯網
上載者:User
眾所周知,Sun和MS的一場官司最終有了個很不好的結局:雙方分道揚鑣了。最倒黴的當然是我們這些java程式員了,一個很不利的一點在於WEB上的JAVA技術的實現。下面以我嘗試在applet中使用JAVA2平台標準版中的最新的Swing技術為例,闡述一下相應的入門問題。
先澄清幾個概念:1):JDK和J2SDk:J2SDk包含了Java Development kit(JDK)、Java Runtime Environment(JRE)和Java Plug-in。原先sun的JAVA軟體開發套件是JDK,現在就稱為J2SDk了。JRE和plug-in:J2RE包含了java plug-in。
sun的java網站上就單獨提供J2SDK和JRE各種版本的下載,J2SDk是提供給開發JAVA程式所用,應用程式使用者是不需要開發工具的。而JRE顧名思義是JAVA程式要運行所需要的環境,所謂跨平台就是要各種平台都有一個中間代理,那就是JRE。一般採用 JAVA技術開發出的軟體都得帶這個,所以sun就單獨提供了JRE安裝檔案,以供JAVA應用程式發布時所用。
2):Swing和JFC(Java Foundation Classes)
JFC 是早期Sun對JDK的功能擴充,不是Java的公用規範,Swing是其中的一項使用者介面擴充技術。最新的JAVA2技術則包含了JFC技術,不需要再擴充了。換句話說,其實就是Sun將JFC納入了JAVA核心類庫。原先要用到JFC技術,使用者必須在原有的JRE前提下再添加JFC,現在少了一步,只需JRE了。
3):Sun的JAVA實現和MS的JAVA實現
眾所周知,JAVA技術是開放的,Sun制定規範,各公司可以推出自己的JAVA實現,當然都得遵守Sun的規範。JAVA技術發展的開始階段,MS和Sun保持了很好的合作關係,在IE裡面採用MS 的JAVA VM(虛擬機器)支援Java applet。但好景不長,雙方分手了,最新的IE支援的JAVA版本是1.1.4。另外,Netscape Navigator也不支援最新的JAVA版本。如何讓applet能用到最新的Java類庫呢?這就是Sun推出了它的所謂plug-in技術的原因所在。
言歸正傳,JAVA2技術的發展日新月異,IE只支援MS的JAVA1.1.4,applet如何才能利用到那些新的核心類庫呢?唯一的辦法,繞開IE的appet機制(<applet.........</applet>),使用 plug-in,利用IE瀏覽器必須支援的擴充技術擴充IE功能。所謂的擴充技術也就是MS的 COM/ActiveX技術,在網頁中這就是<OBJECT>標籤的目的所在了。順便說一下,在Netscape Navigator中plug-in是利用瀏覽器的外掛程式構架來達到目的的(<EMBED>目的所在)。plug-in的作用就在於用Sun的 JRE來替代掉瀏覽器所預設的JRE。
明白了以上內容,我們就可以瞭解為什麼帶Swing的applet網頁不能用一般的HTML標記語言 <applet>來寫了,為什麼瀏覽帶Swing技術的Applet要有plug-in才行了。
對applet開發人員而言最簡單方便的方法就是:
1. 用平時一般的<applet........></applet>標籤寫好待發布網頁。
2. 用Sun提供的html converter將待發布網頁自動轉化成plug-in所能起作用的帶有<OBJECT>和<EMBED>標籤的網頁。此時即可發布了。
如需自己寫,參見http://java.sun.com/products/plugin/1.3/docs/。
常見的一些問題:
問:如果要開發帶有Swing或其他JAVA新技術的applet,要安裝什麼軟體?
答:Sun的最新的J2SDK軟體,目前最新版本為1.3.1。
問:用戶端瀏覽帶Swing或其他JAVA新技術的applet,要安裝什麼軟體?
答: 不需特別注意什麼,如果第一次瀏覽帶Swing或其他JAVA新技術的applet時,會被引導至某網站(預設為Sun的java網站)自行下載安裝帶有數位簽章的JRE軟體。如果已經安裝過,則 plug-in會自行起作用。
注意:JRE分美國版及國際版,J2sdk則只有一種,在選擇JRE時中文使用者應選擇國際版。
問:如何將引導下載JRE的網站改為自己設定的http網站?
答:在要發布的html頁中(html converter轉化)有“codebase="http://java.sun.com/products/plugin/1.3/jinstall -13-win32.cab#Version=1,3,0,0"” 改為自己的即可。比如:“codebase="http: //202.119.28.215/JavaRelated/Software/j2re1_3_0-win-i.exe#Version=1,3,0,0"”。 “pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html"” 也類似,只不過這是針對Netscape Navigator的。
參見http://java.sun.com/products/plugin/1.3/docs/intranet.html。
自己發現的一個大bug: 不過在1.3.0_01及以後的版本裡已經改正了。
系統:Win2000 Professional中文版、Internet Explorer 5.0。
在1.3.0版本裡,無論是裝了j2sdk還是Jre,控制台裡的plug-in表徵圖點擊無法運行,也即plug-in在瀏覽器裡無效。解決方案:在註冊表中尋找“外掛程式”,改為“plug-in”即可。或安裝更高高版本。
使用者瀏覽1.3.0版的applet,去Sun的網站下載JRE時,如果下載的是JRE 1.3.0國際版,則問題同上。如果下載的是JRE 1.3.0 美國版,則IE瀏覽時會自行“沒有響應”。
一些補充:
上文並沒有提到使用JFC的解決方案,畢竟,JFC只是個臨時方案,不得已才使用它。比如在用Java applet結合VRML的項目中,如果要用到Swing技術,JFC是一種解決方案。當然,這種狀況只會是臨時的,隨著技術的發展,各種WEB技術將更好的結合在Java周圍,相信WEB上的Java技術會變得更美。
最後:
由於本人屬於Java新手,難免會有各種各樣的錯誤,還望大家批評指正,希望以此文作一點貢獻而已。這隻是個入門篇,比較的淺,畢竟WEB技術博大精深,JAVA與WEB未來走向何方?還有待於大家共同探討。