タイトル: Applet(アプレット)
SEOタイトル: Java Applet とは — 廃止された技術と現代の代替(JavaFX / Spring Boot / WebAssembly)
| この記事の要点 |
|
Java Applet とは
Java Applet は、1995 年に Java 1.0 とともに登場した「ブラウザ内で Java プログラムを実行する仕組み」です。HTML 内に タグを書くと、ブラウザがクライアント側で JVM を起動して Java のコードを動かしました。
import java.applet.Applet;
import java.awt.Graphics;
public class HelloApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello Applet World", 50, 50);
}
}
// javac HelloApplet.java で生成した .class をブラウザが読み込む
Swing が使える JApplet もありました:
import javax.swing.JApplet;
import javax.swing.JLabel;
public class HelloJApplet extends JApplet {
public void init() {
add(new JLabel("Hello, Swing Applet"));
}
}
なぜ廃止されたのか
| 時期 | 出来事 |
|---|---|
| 2013-2015 | Java Plug-in の脆弱性 (CVE) が大量に発覚し、ブラウザベンダが警戒 |
| 2015 | Chrome が NPAPI サポートを廃止 (Java Plug-in 使用不可) |
| 2016 | Firefox が NPAPI 廃止予告 (ESR を残し本流は終了) |
| 2017 | Oracle が Java 9 で Java Plug-in を deprecated と宣言 |
| 2018 | Java 11 で Java Plug-in / Java Web Start が完全削除 |
| 2020 | Edge (Chromium 版) も NPAPI 非対応 (Internet Explorer サポートも縮小) |
| 2022 | Internet Explorer 11 廃止 (Microsoft が IE をサポート終了) |
主な廃止理由:
- セキュリティ: サンドボックスをすり抜ける脆弱性が多発、PC ウイルスの主要侵入経路に
- NPAPI 終焉: モダンブラウザは古いプラグイン規格を排除
- JavaScript の進化: HTML5 / Canvas / WebGL で Applet のできることは置き換え可能に
- モバイル非対応: スマートフォンのブラウザでは元々 Applet が動かない
Java Web Start も廃止
ブラウザ廃止後の代替として「JNLP ファイルをクリックで Java アプリを起動する」 Java Web Start (JWS) が用意されていましたが、これも Java 11 で削除されました。
My App
ACME Inc.
代替として OpenWebStart という OSS プロジェクトはありますが、新規採用は推奨されません。
現代における代替手段
| 旧 Applet の用途 | 現代の代替 |
|---|---|
| ブラウザ内インタラクティブ UI | JavaScript / React / Vue / Svelte |
| 業務 Web 画面 | Spring Boot + フロントエンド (React/Vue) |
| デスクトップ GUI | JavaFX / Swing / SWT |
| クロスプラットフォーム実行 | jpackage で .exe / .dmg 配布、または Electron |
| 3D / グラフィック | WebGL / Three.js / WebGPU |
| Java コードを Web で動かしたい | CheerpJ (Applet を WebAssembly 化) / TeaVM |
JavaFX への移行例
Applet を JavaFX デスクトップアプリに置き換える簡単な例:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloFx extends Application {
@Override
public void start(Stage stage) {
Label label = new Label("Hello JavaFX");
Scene scene = new Scene(new StackPane(label), 300, 200);
stage.setScene(scene);
stage.setTitle("Migrated from Applet");
stage.show();
}
public static void main(String[] args) { launch(args); }
}
// jpackage で .exe / .app / .deb として配布可能
CheerpJ — Applet を WebAssembly で動かす
レガシー Applet をどうしてもブラウザで動かしたい場合、Leaning Technologies 社の CheerpJ が使えます。Applet の JAR を WebAssembly に変換してブラウザで実行できます。商用利用は要ライセンス。
FAQ
Q: Internet Explorer なら Applet が今でも動く?
A: 動きません。IE 自体が 2022 年にサポート終了済。Windows 11 では起動すらできません。
Q: 自治体・銀行で Applet を使い続けている事例があるが?
A: 専用ブラウザや OpenWebStart で延命しているケースがありますが、セキュリティリスクが大きく早期移行が必要です。多くの公共システムが 2020 年前後に置き換えを完了しています。
Q: 学習目的で Applet を書きたい
A: 教育用途なら Java 8 + 旧 Eclipse で appletviewer を使う方法がありますが、現代の入門としてはJavaFX や Swing を学ぶ方が将来役立ちます。