Java Web Startは、
Javaで開発されたアプリケーションをウェブサーバから自動的に
ダウンロード、
インストール、
アップデートし、サンドボックス環境下で実行するための技術です。
Java 5から
Java 10まで搭載されていましたが、
Java 9で非推奨となり、
Java 11で完全に削除されました。この技術は、
Swing APIなどで作成されたGUIアプリケーションを実行するために利用されました。
概要
Java Web Startは、Flashに比べて多くの問題点があったと指摘される
Javaアプレットの代替として、リッチクライアントアプリケーションを提供する役割を担っていました。ウェブブラウザ上で
Java Web Startに対応したアプリケーションのリンクをクリックすると、ブラウザ内に埋め込まれる
Javaアプレットとは異なり、外部アプリケーションとして
Java Web Startが起動します。
Java Web Startが
インストールされていない環境では、まず
Java Web Startソフトウェアが自動的に
ダウンロードされ、
インストールされます。JRE(
Java Runtime Environment)が
インストールされていない場合も同様に、自動で
インストールされます。さらに、JREや
Java Web Startのバージョンが古い場合は、自動的に
アップデートが行われます。アプリケーション自体も、最新バージョンがサーバに存在すれば、実行前に自動的に更新されます。
一度
ダウンロードされた
Java Web Start対応アプリケーションは、ローカルマシンに保存されるため、2回目以降の起動は高速に行われます。また、
Java Web StartはOSとの連携機能も備えており、Windowsでは「プログラムの追加と削除」からアン
インストールが可能です。さらに、プログラムメニューやデスクトップへのショートカットアイコンの作成もサポートされています。
実装
開発者は、JNLP(
Java Network Launching Protocol)拡張子を持つ特別なXMLファイル(JNLPファイル)を作成します。このファイルには、アプリケーションの必要な情報、コードの場所、パラメータ、そして必要な権限などが記述されます。ブラウザはこのファイルを
ダウンロードし、MIMEタイプに基づいてWeb Startツールで開きます。Web Startツールは、指定されたリソースをすべて
ダウンロードし、アプリケーションを起動します。
Java Web Startはjavax.jnlpパッケージ内のクラス群を通じて、アプリケーションにさまざまなサービスを提供します。これらのサービスは、アプリケーションの動作を制限しつつ、ファイルやシステムクリップボードなど、注意深く制御された範囲内でリソースへのアクセスを許可するために設計されています。
サン・マイクロシステムズは2001年3月にWeb Startのバージョン1.0を導入し、
64ビット版Windowsへのサポートは、
Java 6から追加されました。J2SE 1.4以降、Web StartはJREにjavawsという名前でデフォルトで同梱されるようになったため、別途
インストールする必要がなくなりました。
Java Network Launching Protocol (JNLP)
プログラマーは、
Java Web Startと同義の言葉としてJNLPという用語を使うことがあります。JNLPプロトコルは、
Java Web Startアプリケーションの起動方法を定義するもので、XMLスキーマで定義されています。JNLPファイルには、JARファイルの場所、アプリケーションのメインクラス名、その他のパラメータといった情報が含まれています。適切に設定されたブラウザは、JNLPファイルをJREに渡し、JREがアプリケーションを
ダウンロードして実行します。JNLP規約の開発は
Java Community ProcessのJSR 56で行われ、1.0版リリース後、複数回の保守リリースが行われています。
Web Startの重要な機能として、JREが
インストールされていない場合に自動的に
ダウンロード、
インストールする機能や、プログラマーが実行するJREのバージョンを指定できる機能があります。
ダウンロードされたプログラムはローカルキャッシュから実行されるため、常にインターネット接続が必要ではありません。ソフトウェアの
アップデートは、インターネット接続時に自動的に行われ、デプロイの負担を軽減できます。JNLPクライアント(一般的には
Java Web Start)を
インストールすることで、どのコンピュータからでもJNLPを利用可能です。この
インストールも自動化できるため、エンドユーザーは最初の実行時にクライアントランチャーの
ダウンロードと
インストールを見るだけで済みます。
JNLPは、HTTP/HTMLがウェブで機能するのと同様の働きをします。ウェブブラウザがHTMLを表示するように、JNLPクライアントが
Javaアプリケーションを「表示」します。ユーザーがウェブリンクをクリックすると、ブラウザはウェブサーバにURLを送信し、サーバはJNLPファイルを返します。JNLPクライアントは、このファイルを解釈し、必要なリソース(jarファイル群)を
ダウンロードし、準備が整い次第、アプリケーションを起動します。JNLPファイルは、リソースの遅延読み込みを指定することもできます。
JNLPファイルの例
アプレットを起動するためのシンプルなJNLPファイルの例では、コードベース、ソース、メインクラス、ウィンドウサイズなどを指定します。このファイルは、必要な情報をすべて含み、自己完結的にアプリケーションを起動します。この例では、特別な権限を要求していないため、コードはサンドボックス内で実行されます。また、オフラインでの実行(キャッシュされた場合)、およびバックグラウンドでの
アップデートが指定されています。
Pack200圧縮
Java Web Startアプリケーションのサイズを削減するために、
サン・マイクロシステムズは
Java 1.5.0でPack200という圧縮方式を導入しました。Pack200を使うと、大きなjarファイルを最大で元のサイズの9分の1まで圧縮できます。当初、Pack200の利用にはサーバ側の設定が必要でしたが、
Java SE 6u10以降は特別な設定なしで利用可能になりました。アプリケーション開発者は、JNLPファイルでこの機能の有効/無効を切り替えることができます。Pack200は、低速な接続環境下でのアプリケーションの起動時間と
ダウンロード時間を改善します。
署名付きWeb Startアプリ
デフォルトでは、
Java Web Startアプリは制限付きで実行され、ローカルファイルなどのシステムリソースへのアクセスが制限されています。しかし、アプリ配布側がJDK付属のjarsignerツールで署名し、ユーザーがこの署名を受け入れると、これらの制限を解除することができます。
MIMEタイプにおける拡張子
作り方
Java Web Start対応の
Javaアプリケーションを作成するには、作成した
Swingアプリケーションに、
Java Web Startの仕様に従って記述されたXML形式のファイル(拡張子*.jnlpファイル)を追加し、ウェブサーバに
アップロードします。
類似技術
類似技術として、
マイクロソフトが開発したClickOnce(ノータッチデプロイメント)があります。
参考文献
Java Web Start
JSR 56 - JNLP 1.0, 1.5 and 6.0