Javaアプレット

Javaアプレット（Java Applet）は、ネットワークを通してWebブラウザに読み込まれ実行されるJavaのアプリケーションの一形態。Java 10まではJava Runtime Environmentに搭載されていて、Java 9より非推奨になり、Java 11で廃止Java Client Roadmap Update - An Oracle White Paper March 2018。使用できないにもかかわらずAPIが残っていたが、APIもJava 26で取り除かれた。

 概要 
最初の実装は1995年に公開されたHotJavaへのもので、その後1996年にNetscape Navigatorに搭載されたことで普及した。単にアプレットとも言う。基本的にデスクトップ版Javaの全機能を持つが、Webページの一部として自動的に読み込まれて動作するため、セキュリティー上の観点から一般のアプリケーションプログラムと比べさまざまな制限（サンドボックス）が課せられている。ただし、このセキュリティー上の制限は、ユーザーの許諾により解除する事もできる。

Javaアプレットを実行するにはWebブラウザがをサポートしていることが必要である。Google Chromeはバージョン42(2015年4月)でNPAPIが標準状態で無効になりバージョン45(2015年9月)以降でNPAPIをサポートしなくなった。Mozilla Firefoxはバージョン52(2017年3月)以降でFlash Player以外のすべてのNPAPIプラグインのサポートを打ち切ったhttps://support.mozilla.org/ja/kb/npapi-plugins。オラクル社は2017年9月22日にリリースされたJava 9でJavaアプレットを非推奨にし、Java 11では廃止することを2016年1月27日に発表したhttps://blogs.oracle.com/java-platform-group/moving-to-a-plugin-free-web。JavaアプレットだけでなくFlashやSilverlightといった類似技術も多数のWebブラウザがサポート廃止予定で今後はHTML5とJavaScriptなどに移行する流れである。

 歴史 
Webの普及初期に、インタラクティブ性を高められる技術の一つとして注目を浴び、当時のWeb普及に寄与した。しかし、当時Internet Explorerとシェアを二分していたNetscape 4.xにおいて当時まだできたばかりのJITコンパイルに時間がかかった等の理由により、Javaアプレットをロードすると数十秒から数分の間操作を受け付けなくなるという現象が起こり、この現象が影響してJavaアプレットを利用したサイトが敬遠されるようになってしまった。また、当初は以下のような技術的な問題もあり、ShockwaveやFlashの台頭もあって、ウェブ上でインタラクティブ性を実現する用途には、広く使われているとは言えない状況であった。
ブロードバンドインターネット接続の普及前は、Javaアプレットを快適に動作するのに必要な高速な回線を利用できるユーザが少なかった。
Javaがまだ生まれて間もない技術だったためWebブラウザ上のJava VMの動作が遅かった。
最初の1 - 2年は、ベンダごとのJava仮想マシンの実装が仕様に合わず、Microsoft社製のJava仮想マシンがSUNのライセンスに違反した独自仕様の実装を進めたこともあり、環境ごとの互換性を取るのが難しかった。
これらは主にJavaアプレットが登場したときまだ十分にWeb関連の技術や環境が発達していなかったことによるが、その後のJava VMの改良や、回線速度の向上、ハードウェア性能の向上により解消されているものが多い。その後は、利用シェアが大きいとは言えないものの、オンライントレードのローソク足チャート表示、チャットやCGアニメーション、ゲーム、教育機関による学習システムなどでの利用を見ることができた。

 利点 
登場時には画期的であった、以下のような特徴がある。
ほぼ完全なJavaの環境であり、オブジェクト指向プログラミングで、高機能なアプリケーションを作成できる。実際にJPEG2000デコーダーやSSHクライアント等の、通常はC言語などで書かれるような高度なアプリケーションも存在する。
HTML内に埋め込むことにより、シームレスに高機能デスクトップ・アプリケーションの配布が可能であり、アプリケーションの配布コストを低減できる。
サンドボックスと呼ばれる強力なセキュリティー機構を持つため、インターネットでのアプリケーション配布が可能である。
ポータブルなクロスプラットフォーム環境である。同一の配布ファイルで、Windows、Mac OS、Linux等の処理系でアプリケーションを動作させることができる。

 欠点 
終盤においても以下の欠点があり、利用上の問題点となるときがあった。

Javaが得意としない動画やベクター描画の処理は、必然的にJavaアプレットでも得意とされない。統合開発環境でのこれらの処理の記述サポートが貧弱であった。
Java言語で書かれるので、専門的なプログラマー以外には難易度が高いとされる。この点を補うためにJavaFXが登場しているが、認知度が高いとは言えなかった。
ブラウザーにインストールされていないことがあった。Web Browser Plugin Market Share / Global UsageによればブラウザーのJava VMのインストール率は80%前後であり、同種の機能を持つAdobe Flashの95%超には及ばない。

 ブラウザー以外の用途 
Webブラウザに組み込んで使うことを目指して作成され、その後の仕様変更・機能追加もWebブラウザ利用に焦点を置いたものであるが、Javaアプレットを動作させるアプリケーションが必ずWebブラウザでなければならないわけではない。例えばOpenOffice.orgでは、文書内にJavaアプレットを埋め込むことができる。

 セキュリティー制限とその解除 
Java アプレットには、インターネットでの配布を可能にするために以下のようなセキュリティー上の制限が設けられている。

ローカルの資源にアクセスできない（クリップボードやディスクの読み書きができない、印刷機能を扱えないなど）。
アプレットのダウンロード元サーバとしか通信できない。

これらの制限は、ユーザーがポリシー・ファイルを作成し、これらの動作を許諾することによって外すことができる。ポリシー・ファイルは、URIで指定されるコードベース（codeBase）、もしくは電子署名（signedBy）ごとに承諾する動作を規定する。なお、後者の場合はアプレット開発者がアプレットにJarSignerというツールを使って電子署名する必要があるが、署名に必要な鍵は他の処理系で使われる鍵と同一のもの、例えばOpenSSLで生成したものが利用できる。

 関連技術 
アプリケーション配布システムとしては、Javaアプレットよりも便利で高度なJava Web Startの登場により、必要性が薄れてきている。

 関連項目 

 Javaアプリケーション
 Java Servlet
 サンドボックス
 HotJava
 Java Web Start
 JavaFX

 参照 

Category:Java
Category:Javaプラットフォーム
Category:ウェブ開発