Java Applet 基础
Applet 的生命周期与历史地位,以及现代替代方案。
Applet 的生命周期
An applet has four lifecycle hooks: init runs once, start on each display, paint renders, and destroy before teardown. The browser drives them — there is no main.
| Method | When |
|---|---|
| init() | Once, after loading |
| start() | Each time it becomes visible |
| paint(Graphics) | When redraw is needed |
| stop() | When it leaves the screen |
| destroy() | Before unload |
Hello World Applet
The classic form extends java.applet.Applet and overrides paint. It no longer compiles: the java.applet package was removed in JDK 11. Treat it as historical reference.
// JDK 11 起无法编译:java.applet 已被移除
import java.applet.Applet;
import java.awt.Graphics;
public class HelloWorldApplet extends Applet {
@Override
public void paint(Graphics g) {
g.drawString("Hello, World", 20, 20);
}
}现代替代方案
Browsers dropped the Java plugin long ago. For Java-based UIs use JavaFX (modern) or Swing (old but stable); for anything in a browser, use the web stack.
- JavaFX — modern desktop UI, FXML + CSS styling
- Swing — legacy desktop UI, still maintained
- Web frontend + REST API — the default choice today
- Compose Multiplatform / Flutter — cross-platform alternatives
Applet 的生命周期
Applet 有四个生命周期方法:init 初始化一次、start 每次可见时调用、paint 负责绘制、destroy 销毁前调用。它由浏览器(而非 main 方法)驱动。
| 方法 | 调用时机 |
|---|---|
| init() | 加载后一次 |
| start() | 每次可见时 |
| paint(Graphics) | 需要重绘时 |
| stop() | 离开屏幕时 |
| destroy() | 卸载前 |
Hello World Applet
传统写法是继承 java.applet.Applet 并重写 paint。这段代码现在编译不过 —— java.applet 包在 JDK 11 中已被移除,这里只作为历史参考。
// JDK 11 起无法编译:java.applet 已被移除
import java.applet.Applet;
import java.awt.Graphics;
public class HelloWorldApplet extends Applet {
@Override
public void paint(Graphics g) {
g.drawString("Hello, World", 20, 20);
}
}现代替代方案
浏览器端早就没有 Java 插件了。需要「Java 写界面」的场景用 JavaFX(现代)或 Swing(老旧但稳定);需要「浏览器里跑」的场景直接用前端技术栈。
- JavaFX —— 现代桌面 UI,FXML + CSS 样式
- Swing —— 老牌桌面 UI,仍在维护
- Web 前端 + REST 接口 —— 当下默认选择
- Compose Multiplatform / Flutter —— 跨平台替代方案