Java Web Start

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タイプにおける拡張子



  • - .jnlp

作り方



Java Web Start対応のJavaアプリケーションを作成するには、作成したSwingアプリケーションに、Java Web Startの仕様に従って記述されたXML形式のファイル(拡張子*.jnlpファイル)を追加し、ウェブサーバにアップロードします。

類似技術



類似技術として、マイクロソフトが開発したClickOnce(ノータッチデプロイメント)があります。

参考文献



Java Web Start
JSR 56 - JNLP 1.0, 1.5 and 6.0

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。