7.

Java Applet とは — 廃止された技術と現代の代替(JavaFX / Spring Boot / WebAssembly)

編集
この記事の要点
  • Java Applet は HTML の タグでブラウザ内に Java を埋め込む 1995 年からの技術
  • 2017 年に Oracle が Java Plug-in を廃止、主要ブラウザも NPAPI を削除済 → 現代の Web ブラウザでは動かない
  • 代替の Java Web Start も Java 11 (2018) で廃止
  • デスクトップ用途は JavaFX / Swing、Web 用途は Spring Boot + フロントエンド分離
  • Applet コードを救済するなら JavaFX への移植 または CheerpJ / TeaVM で WebAssembly 化

Java Applet とは

Java Applet は、1995 年に Java 1.0 とともに登場した「ブラウザ内で Java プログラムを実行する仕組み」です。HTML 内に タグを書くと、ブラウザがクライアント側で JVM を起動して Java のコードを動かしました。



  あなたのブラウザは 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-2015Java Plug-in の脆弱性 (CVE) が大量に発覚し、ブラウザベンダが警戒
2015Chrome が NPAPI サポートを廃止 (Java Plug-in 使用不可)
2016Firefox が NPAPI 廃止予告 (ESR を残し本流は終了)
2017Oracle が Java 9 で Java Plug-in を deprecated と宣言
2018Java 11 で Java Plug-in / Java Web Start が完全削除
2020Edge (Chromium 版) も NPAPI 非対応 (Internet Explorer サポートも縮小)
2022Internet 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 の用途現代の代替
ブラウザ内インタラクティブ UIJavaScript / React / Vue / Svelte
業務 Web 画面Spring Boot + フロントエンド (React/Vue)
デスクトップ GUIJavaFX / 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 を学ぶ方が将来役立ちます。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. プラットホーム
  2. 環境構築
  3. 文法
  4. API
  5. Servlet(サーブレット)
  6. JSP
  7. Applet(アプレット)
  8. デザインパターン
  9. フレームワーク
  10. ライブラリ
  11. Androidアプリケーション
  12. Project Jigsaw
  13. エラー一覧
  14. 日付の加算、減算
  15. 文字列の数字チェック
  16. 改行コードの削除
  17. 先頭と末端の文字の削除
  18. warファイルの中身を確認する方法
  19. nullもしくは空文字の判定
  20. beanの中身を確認する方法
  21. org.apache.log4j.Logger のログ出力で printStackTrace() のエラー内容を出力する方法
  22. Javaのバージョン確認方法