首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java Applet 入門指南:架構、生命週期與部署

     編輯:Java 程式設計入門

Applet 是執行於瀏覽器內的 Java 小應用程式,曾是早期 Web 富客戶端的主流技術。雖現代瀏覽器已移除 NPAPI 外掛支援 (Java Plugin 不再運作),但理解其架構對維護舊系統、學習 Java 元件模型仍有價值。

什麼是 Applet

  • 以 Java 撰寫,編譯為位元組碼 (.class)。
  • 嵌入 HTML 頁面,透過 <applet> 或 <object>/<embed> 標籤載入。
  • 需瀏覽器安裝 Java Plugin (JRE) 並啟用。
  • 在用戶端 JVM 執行,不受網路頻寬限制 (下載後本地執行)。
  • 提供 AWT/Swing GUI、圖形繪製、動畫、音效、網路通訊等功能。

Applet 工作原理

  1. 瀏覽器解析 HTML,遇到 <applet code="Example.class" width="300" height="300"> 標籤。
  2. 下載 Example.class (及相依類別、資源檔)。
  3. 啟動 JVM (或重用現有),建立 Applet 實例。
  4. 呼叫生命週期方法:init() → start() → paint()。
  5. 用戶互動觸發事件處理、重繪等。
  6. 離開頁面呼叫 stop() → destroy()。

HTML 嵌入範例


Applet Demo

Welcome!

Below is an applet:

Your browser does not support Java Applets.
  • code:主類別檔名 (含套件則為 pkg/Example.class)。
  • width/height:顯示區域像素大小。
  • <param>:傳遞參數給 Applet,在 getParameter("img") 取得。
  • 標籤內文字為備用內容 (不支援 Applet 時顯示)。

Applet 生命週期方法

方法呼叫時機典型用途
init()載入後、第一次顯示前 (僅一次)初始化 GUI、載入資源、解析參數、建立連線
start()Applet 可見時 (每次顯示)啟動動畫執行緒、開始播放音樂、恢復計時器
paint(Graphics g)需要繪製時繪製圖形、文字、影像 (AWT);Swing 應用通常不直接覆寫
stop()Applet 不可見時 (切換分頁、最小化)暫停動畫、停止音樂、釋放非必要資源
destroy()瀏覽器關閉或卸載 Applet (僅一次)關閉連線、儲存狀態、釋放所有資源

Applet 類別繼承結構

java.lang.Object
  └── java.awt.Component
        └── java.awt.Container
              └── java.awt.Panel
                    └── java.applet.Applet      // AWT Applet (舊)
                    └── javax.swing.JApplet     // Swing Applet (建議)

JApplet 提供雙緩衝、內容面板 (getContentPane())、Swing 元件支援,建議繼承 JApplet。

完整範例:參數化圖片顯示

import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class ImageApplet extends JApplet {
    private Image image;

    @Override
    public void init() {
        String imgName = getParameter("image"); // 從 HTML  取得
        if (imgName == null) imgName = "default.jpg";
        try {
            URL url = new URL(getDocumentBase(), imgName);
            image = getImage(url); // 非同步載入
            MediaTracker tracker = new MediaTracker(this);
            tracker.addImage(image, 0);
            tracker.waitForID(0); // 等待載入完成
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 設定版面
        JLabel label = new JLabel(new ImageIcon(image));
        getContentPane().add(label, BorderLayout.CENTER);
    }
}

Applet 安全性限制 (沙箱)

  • 未簽名 Applet:無法存取本地檔案系統、無法連線非來源主機、無法載入 Native Library、無法讀取系統屬性 (部分)。
  • 簽名 Applet (JAR 簽名):用戶授信後可突破沙箱限制,擁有本地應用程式同等權限。
  • 簽名工具:jarsigner -keystore mykeystore app.jar myalias。

Applet 與 JavaScript 互動

  • JSObject.getWindow(this) 取得瀏覽器視窗物件。
  • jsObject.eval("alert('Hello from Applet')") 執行 JS。
  • jsObject.setMember("javaObj", this) 將 Applet 公開給 JS 呼叫公共方法。
  • 需匯入 netscape.javascript.JSObject (位於 plugin.jar)。

現代替代方案 (Applet 已淘汰)

技術特點適用場景
Java Web Start (JNLP)啟動獨立應用、自動更新、沙箱/全權限、已從 JDK 11 移除舊版企業內部應用遷移
JavaFX現代 UI、CSS 樣式、FXML、可打包原生安裝程式、支援 WebView 嵌入網頁桌面富客戶端新開發
Spring Boot + 前端框架 (React/Vue/Angular)前後端分離、REST API、瀏覽器原生、無外掛相依所有新 Web 專案
GraalVM Native ImageAOT 編譯原生執行檔、極快啟動、低記憶體Serverless、CLI 工具、微服務

常見 Applet 資源站 (歷史參考)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved