この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
ページ更新者:T
更新日時:2026-06-11 07:12:00

タイトル: Applet(アプレット)
SEOタイトル: Java Applet とは — 廃止された技術と現代の代替(JavaFX / Spring Boot / WebAssembly)

この記事の要点
  • Java Applet は HTML の <applet> タグでブラウザ内に 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 内に <applet> タグを書くと、ブラウザがクライアント側で JVM を起動して Java のコードを動かしました。

<!-- 当時の典型的な使い方 (1990 年代〜2000 年代前半) -->
<applet code="HelloApplet.class" width="300" height="200">
  あなたのブラウザは Java をサポートしていません。
</applet>

<!-- HTML 4 / 5 では object タグも使われた -->
<object type="application/x-java-applet" width="300" height="200">
  <param name="code" value="HelloApplet.class">
</object>
import java.applet.Applet;
import java.awt.Graphics;

public class HelloApplet extends Applet {
    public void paint(Graphics g) {
        g.drawString(&quot;Hello Applet World&quot;, 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(&quot;Hello, Swing Applet&quot;));
    }
}

なぜ廃止されたのか

時期出来事
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 で削除されました。

<!-- 旧来の JNLP (もう使えない) -->
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://example.com/app">
  <information>
    <title>My App</title>
    <vendor>ACME Inc.</vendor>
  </information>
  <resources>
    <j2se version="1.6+"/>
    <jar href="MyApp.jar" main="true"/>
  </resources>
  <application-desc main-class="com.example.Main"/>
</jnlp>

代替として 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(&quot;Hello JavaFX&quot;);
        Scene scene = new Scene(new StackPane(label), 300, 200);
        stage.setScene(scene);
        stage.setTitle(&quot;Migrated from Applet&quot;);
        stage.show();
    }

    public static void main(String[] args) { launch(args); }
}
// jpackage で .exe / .app / .deb として配布可能

CheerpJ — Applet を WebAssembly で動かす

レガシー Applet をどうしてもブラウザで動かしたい場合、Leaning Technologies 社の CheerpJ が使えます。Applet の JAR を WebAssembly に変換してブラウザで実行できます。商用利用は要ライセンス。

<!-- CheerpJ で旧 Applet をブラウザ復活させる例 -->
<script src="https://cjrtnc.leaningtech.com/3.0/cj3loader.js"></script>
<script>
  cheerpjInit();
  cheerpjCreateDisplay(800, 600);
  cheerpjRunJar("/app/HelloApplet.jar");
</script>

FAQ

Q: Internet Explorer なら Applet が今でも動く?
A: 動きません。IE 自体が 2022 年にサポート終了済。Windows 11 では起動すらできません。

Q: 自治体・銀行で Applet を使い続けている事例があるが?
A: 専用ブラウザや OpenWebStart で延命しているケースがありますが、セキュリティリスクが大きく早期移行が必要です。多くの公共システムが 2020 年前後に置き換えを完了しています。

Q: 学習目的で Applet を書きたい
A: 教育用途なら Java 8 + 旧 Eclipse で appletviewer を使う方法がありますが、現代の入門としてはJavaFX や Swing を学ぶ方が将来役立ちます。