相較於舊版本,Java 2 引入了許多令人印象深刻的新特性。特別是 Swing 提供的用戶界面組件(如表格與樹形控制項)、2D 繪圖 API 以及增強的 JavaBean 支持,讓 JDK 1.1 顯得相形見絀。遺憾的是,當時沒有任何瀏覽器能完整支援 Java 2,這意味著那些令人興奮的新功能無法在瀏覽器中運行,甚至連明確的支援時間表都沒有。雖然在互聯網頁面上或許不必強求使用 Java 2,但在區域網路(LAN)環境下若無法善用這些新功能,確實令人惋惜。若您有同感,不妨嘗試使用 Java Plug-in(Java 插件)。
原本 Applet 的概念相當簡單:只需在網頁中加入 <APPLET> 標籤即可。瀏覽器遇到此標籤後,會下載對應的 Applet 類文件並啟動內建解釋器運行。在此過程中,瀏覽器扮演關鍵角色,必須具備運行 Java 的能力,而瀏覽器的虛擬機更決定了可接受的 Java 代碼版本。
Java 插件的核心目標是將「顯示網頁」與「運行 Java Applet」這兩項任務分離。瀏覽器專注於版面佈局(圖片、文字、Applet 等元素),而 Applet 的實際運行交由插件負責。這種機制 Navigator 和 IE 早已具備,Netscape 稱之為「瀏覽器插件」,Microsoft 則稱之為 ActiveX 控制項。雖然名稱不同,但兩者都能讓瀏覽器運行真正的 Java 2 代碼。
這一方法最大的優勢在於,IE 和 Navigator 皆可使用 Sun 的 Java 運行時環境,不再依賴瀏覽器自身的 Java 支持,也無需關心瀏覽器支援哪個 Java 版本。但缺點也明顯:一是用戶需下載並安裝 Java 插件;二是原本簡單的 <APPLET> 標籤不再足夠,需編寫更多 HTML 代碼來調用插件。
對於安裝問題,可從 Sun 官網(java.sun.com/products/plugin/index.html)預先下載安裝包,或讓瀏覽器在遇到 <EMBED> 或 <OBJECT> 標籤時自動下載。標籤差異稍顯複雜:Navigator 使用 <EMBED> 引入插件,IE 則使用 <OBJECT>。若您熟悉 HTML 且需引用 Java 2 Applet 的頁面不多,可手動將 <EMBED> 嵌入 <OBJECT> 內部,使頁面在兩大瀏覽器均能正常顯示。以運行 TestApplet 為例,替代原 <APPLET> 的 HTML 代碼如下:
<OBJECT classid=xxx WIDTH=350 HEIGHT=150 codebase="https://java.sun.com/products/plugin /1.2/jinstall-12-win32.cab#Version=1,2,0,0"> <PARAM NAME=CODE VALUE=TestApplet> <PARAM NAME="type" VALUE="application/ x-java-applet;version=1.2"> <COMMENT> <EMBED type="application/x-java-applet;version=1.2" java_CODE=TestApplet WIDTH=350 HEIGHT=150 pluginspage="https://java.sun.com/products/plugin/ 1.2/plugin-install.html"><NOEMBED></COMMENT> </NOEMBED></EMBED> </OBJECT>
更便捷的方法是使用 Sun 提供的 HTML Converter 工具,可自動將 <APPLET> 標籤轉換為上述調用插件的標籤。頁面數量較多時尤為推薦。下載地址:java.sun.com/products/plugin/1.2/converter.html
以下通過實例說明完整流程。假設有個使用 Swing 的 Applet,因此需要 Java 2 支持:
import java.awt.*;
public class TestApplet extends javax.swing.JApplet {
private Font mFont = new Font("Serif", Font.PLAIN, 64);
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.setPaint(new GradientPaint(0, 0, Color.green,
20, 10, Color.blue, true));
Dimension d = getSize();
g2.fillRect(0, 0, d.width, d.height);
g2.setPaint(Color.red);
g2.setFont(mFont);
g2.drawString("ABCDEFG", 20, 84);
}
}
原本使用 <APPLET> 的 HTML 頁面在瀏覽器中無法運行(可用 AppletViewer 查看效果):
<html> <head></head> <body> <applet code=TestApplet width=350 height=150></applet> </body> </html>
接著使用 HTML Converter 將 <APPLET> 轉換為調用 Java 插件的標籤。下載安裝工具後,執行 java HTMLConverter,選擇待轉換文件即可(原文件會被覆蓋,建議備份)。轉換後在 Web 伺服器或本地打開頁面,若插件安裝正確即可看到 Applet 運行。雖過程稍繁瑣,但為了 Java 2 的豐富新特性,這點麻煩微不足道。