Java 是構建分布式應用的技術,將 Internet 從通訊工具擴展為能運行成熟應用程式的網絡。Java 程式分為 Applet 與 Application 兩類:簡單來說,Applet 是嵌入網頁文檔的程式,而 Application 則是除此以外的所有類型程式。雖然兩者在規模與複雜度上無限制,但因 Applet 主要用於網路傳輸,受限於頻寬與下載時間,通常規模較小;Application 則無此顧慮。
兩者的技術差異源於運行環境不同。Applet 需瀏覽器提供大量資訊:客戶端位置大小、HTML 參數、生命週期方法(init、start、stop、destroy、paint 等);Application 則相對簡單,唯一的外部輸入僅有命令列參數。Applet 必須繼承 java.applet.Applet,Application 則需具備 public static void main(String[] args) 方法。主執行緒也不同:Applet 由 init() 初始化,Application 由 main() 啟動。
然而,我們可運用技巧編寫「即是 Applet 又是 Application」的程式,使同一代碼能在不同環境運行。以下範例展示如何實現:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Example extends Applet implements ActionListener {
public static void main(String[] args) {
Frame win = new Frame("Example");
Example example = new Example();
win.add("Center", example);
example.init(); // 手動調用 init()
win.setSize(600, 360);
win.setVisible(true);
}
public void init() {
Button button = new Button("OK");
button.setBounds(280, 200, 100, 20);
button.addActionListener(this);
Label label = new Label();
label.setBounds(260, 100, 200, 20);
add(button);
add(label);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
label.setText("It is a example!");
}
}
}
關鍵點:
① 類繼承 Applet 滿足 Applet 條件;
② main() 中建立實例並手動調用 init();
③ init() 實現介面初始化。編譯後,既可在命令列作為 Application 直接運行,也可嵌入網頁作為 Applet 在瀏覽器中執行。