この章の内容は次のとおりです。
Java Web Startは、任意のWebブラウザ上でクリックするだけでフル装備のアプリケーションを起動できる機能をユーザーに提供する、アプリケーション・デプロイメントのためのテクノロジです。ユーザーは、複雑なインストール手順に従わなくてもアプリケーションをダウンロードして起動できます。
Java Web Startでは、ユーザーはWebページ上のリンクをクリックしてアプリケーションを起動します。そのアプリケーションがコンピュータに存在しない場合は、Java Web Startにより、必要なすべてのファイルが自動的にダウンロードされます。ダウンロード後は、ファイルがコンピュータ上にキャッシュされるため、デスクトップ上のアイコンかブラウザ上のリンクを使用して、ユーザーは必要なときにいつでもアプリケーションを再起動できるようになります。どの方法でアプリケーションを起動しても、常に最新バージョンのアプリケーションが起動されます。
Java Web Startの基盤となるテクノロジは、Java Network Launching Protocol & API (JNLP)です。このテクノロジは、Java Community Process (JCP)を通じて開発が進められました。Java Web Startは、JNLP仕様のリファレンス実装(RI)です。JNLPテクノロジでは様々な標準が定義されています。アプリケーションの起動方法を記述するファイルの標準ファイル形式であるJNLPファイルもその1つです。JNLPの仕様については、JSR 56: Java Network Launching Protocol and APIを参照してください。
Java Web Startは、技術面での利点を数多く備えているため、アプリケーションのデプロイ用のプラットフォームとして非常に魅力的です。
それらの利点は次のとおりです。
Java Web Startは、Java Platform, Standard Edition向けに記述されたアプリケーションのみを起動するように設計されています。したがって、ある単一のアプリケーションを特定のWebサーバー上で利用可能にするだけで、Windows 7+、Linux、macOSなど、様々なプラットフォーム上にそのアプリケーションをデプロイできるようになります。
Java Web Startは、複数リビジョンのJava Platform, Standard Editionをサポートしています。したがって、各アプリケーションは、Java SE 9など、自身の動作に必要となる特定バージョンのプラットフォームを要求できます。競合を発生させずに、複数のアプリケーションを異なるプラットフォーム・リビジョンで同時に実行できます。
Java Web Startを使用すると、Webブラウザを使用せずにアプリケーションを起動できます。この方法を使用すると、アプリケーションをオフラインで実行できます。オフライン状態では、ブラウザによるアプリケーションの起動は不便な場合や不可能な場合があります。また、デスクトップのショートカット経由でアプリケーションを起動することも可能です。この方法を使用すると、ネイティブ・アプリケーションと似た操作でWebデプロイされたアプリケーションを起動できます。
Java Web Startは、Javaプラットフォームのセキュリティ機能を利用します。サンドボックス・アプリケーションは、ローカル・ディスクとネットワーク・リソースへのアクセスが制限された保護環境内で実行されます。アプリケーションの初回起動時には、ユーザーが実行に同意する必要もあります。
Java Web Startで起動されたアプリケーションは、ローカルにキャッシュされます。したがって、ダウンロード済のアプリケーションは、従来の方法でインストールされたアプリケーションと同様に起動されます。
Java Web StartはJava Platform, Standard Edition開発キット(JDK)およびJava Runtime Environment (JRE)に含まれており、Javaプラットフォームのセキュリティ機能が含まれています。
JDKおよびJREは、java.com Webサイトから入手できます。
Java Web Startを使えば、JavaテクノロジベースのアプリケーションをWebから直接起動できます。アプリケーションの起動方法には、次の3通りがあります。
Webブラウザからリンクをクリックすることで起動
デスクトップのアイコンまたは「スタート」メニューから起動
Javaキャッシュ・ビューアから起動
どの方法を使用した場合も、アプリケーションが起動されるたびに、Java Web StartはWebサーバーに接続し、アプリケーションの更新版があるかどうかをチェックします。
WebブラウザにJNLPアプリケーションへのリンクを含むページを表示し、そのリンクをクリックします。
セキュリティ・ダイアログ・ボックスがポップアップし、アプリケーション・コードにだれがデジタル署名したかに基づいてアプリケーションの提供元に関する情報が表示され、要求されたアクセス・レベルも表示されます。アプリケーションが実行されるのは、そのベンダーをユーザーが信頼すると決めた場合だけです。
以上がJava Web Startの使い方に関するすべてですが、これはどのような仕組みで動作するのでしょうか。アプリケーションを起動するHTMLリンクは、実際のところ、単なる標準のHTMLリンクです。ただし、他のWebページを指すかわりに、JNLPファイルと呼ばれる特殊な設定ファイルを指しています。Webブラウザは、そのファイルのファイル拡張子またはMIMEタイプを検査し、そのファイルがJava Web Start用のものであることを認識します。その後に、ダウンロードされたJNLPファイルを引数としてJava Web Startを起動します。Java Web Startは、JNLPファイルの指示に従って、アプリケーションをダウンロード、キャッシュ、および実行します。
Java Web Startテクノロジでは、デスクトップ上と「スタート」メニュー内に、WebデプロイされたJavaテクノロジ・ベース・アプリケーションのショートカットを自動作成できます。ショートカットの設定の制御には、Javaコントロール・パネルを使用します。ショートカットは、Java Web Startキャッシュ・ビューアの、インストール・ショートカット・メニュー項目を使用して追加することも可能です。
Java Web Startソフトウェアのプロキシ設定が正しくなかった場合、ファイアウォールの外側にあるアプリケーションを起動できません。Java Web Startソフトウェアは、システム上のデフォルト・ブラウザ(Microsoft Windows上ではInternet ExplorerまたはMozillaブラウザ、Solarisオペレーティング環境およびLinux上ではMozillaブラウザ)から、プロキシ設定を自動的に検出しようとします。Java Web Startテクノロジは、Webプロキシ自動設定スクリプトの大部分をサポートしています。ほとんどすべての環境でプロキシ設定を検出できます。
また、Javaコントロール・パネルの「ネットワーク設定」タブを使用して、プロキシ構成を表示または編集することもできます。
アプリケーションは、任意の標準Webサーバーからデプロイできます。Java Web Startは、HTTPプロトコルやWebサーバーといった既存のインターネット・テクノロジを利用します。このため、Java Web Startを使用してJavaテクノロジベースのアプリケーションをデプロイする際に、HTMLベースのコンテンツをデプロイする既存インフラストラクチャを再利用できます。
アプリケーションをクライアント・マシンにデプロイするために、アプリケーションを構成するすべてのファイルにWebサーバーからアクセスできることを確認します。これは通常、1つ以上のJARファイルと1つのJNLPファイルを、Webサーバーのディレクトリ内にコピーすることを必要とします。WebサイトでのJava Web Startのサポートの有効化は、HTMLベースのコンテンツのデプロイと似ています。さらに、Java Web Startを使用するには、Webサーバーがapplication/x-java-jnlp-file
MIMEタイプをサポートするように構成されている必要があります。
多くのWebサーバーは、Java Web StartのMIMEタイプがデフォルトで構成されています。使用するWebサーバーで構成されていない場合は、.jnlp
ファイル拡張子を持つすべてのファイルがapplication/x-java-jnlp-file
MIMEタイプに設定されるように構成します。
大部分のWebブラウザは、Webサーバーからコンテンツとともに送られてくるMIMEタイプに基づいて、各コンテンツの処理方法を判断します。サーバーがJNLPファイルに対してapplication/x-java-jnlp-file
MIMEタイプを返さなかった場合、Java Web Startは起動されません。
MIMEタイプを追加する方法は、Webサーバーごとに異なります。たとえば、Apache Webサーバーの場合、.mime.types
構成ファイルに次の行を追加します。
application/x-java-jnlp-file JNLP
使用しているWebサーバーの詳細については、付属のマニュアルを参照してください。
このファイルを作成する最も簡単な方法は、既存のJNLPファイルを必要に応じて変更することです。次の例に単純なJNLPファイルを示します。
<?xml version="1.0" encoding="utf-8"?> <jnlp spec="9.0+" codebase="http://example.com/demos/helloworld" href="HelloWorld.jnlp"> <information> <title>HelloWorld</title> <description>HelloWorld demo application</description> </information> <resources> <j2se version="9"/> <jar href="HelloWorld.jar" size="47013" download="eager" /> </resources> <application-desc main-class="HelloWorld"/> </jnlp>
JNLPファイルの構文と形式については、JNLPファイルの構文で説明します。
JNLPファイル内に記載されたURLで、アプリケーションのJARファイルとJNLPファイルにアクセスできることを確認してください。
Webページを作成し、Java Web Startアプリケーションを起動する次のオプションのいずれかを含めます。
次の例に示すように、JNLPファイルへのリンクを使用します。
<a href="/some/path/HelloWorld.jnlp">Launch HelloWorld demo</a> <a href="https://docs.oracle.com/javase/tutorialJWS/samples/deployment/dynamictree_webstartJWSProject/dynamictree_webstart.jnlp">Launch DynamicTree demo</a> <a href="http://docs.oracle.com/javase/tutorialJWS/samples/deployment/dynamictree_webstartJWSProject/dynamictree_webstart.jnlp">Launch DynamicTree demo</a>
次の例に示すように、JavaScriptを使用します。
<script src="https://www.java.com/js/deployJava.js"></script> <script> var url = "https://docs.oracle.com/javase/tutorialJWS/samples/deployment/dynamictree_webstartJWSProject/dynamictree_webstart.jnlp"; deployJava.createWebStartLaunchButton(url, '1.6.0'); </script>
次の例に示すように、jnlp:
スキーマを使用したリンクを使用します。
<a href="jnlp:https://docs.oracle.com/javase/tutorialJWS/samples/deployment/dynamictree_webstartJWSProject/dynamictree_webstart.jnlp">Launch DynamicTree demo</a>
Javaパッケージャ・ツールによって生成されたHTMLファイルからJavaScriptコードをコピーします。
Javaパッケージャ・ツールを使用する場合、Webページの作成を参照してください。
Java Web Startには、カスタムURIスキームjnlp:
およびjnlps:
を処理するためのプロトコル・ハンドラが含まれています。Java Web Startアプリケーションを起動する直接的な方法として、これらのスキームを使用します。
プロトコル・ハンドラはWindowsおよびmacOSシステムに自動的にインストールされます。Linuxシステムには手動でインストールする必要があります。
Linux上でChromeブラウザを使用している場合、jnlp
またはjnlps
プロトコルを使用してJava Web Startアプリケーションを起動できるようにするプロトコル・ハンドラを手動でインストールします。
xdg-open
コマンドを使用して、ユーザーの優先アプリケーションのファイルまたはURLを開きます。プロトコル・ハンドラをインストールするには、jnlp
またはjnlps
プロトコルを含むURLに対してJava Web Startを使用するようにxdg-open
を構成します。jnlp
またはjnlps
プロトコルが含まれる場合に、Java Web Startを使用してアプリケーションが起動されます。たとえば、次のURLは、JavaチュートリアルからDynamic Treeサンプルを起動します。jnlps://docs.oracle.com/javase/tutorialJWS/samples/deployment/dynamictree_webstartJWSProject/dynamictree_webstart.jnlp
Linux上でFirefoxブラウザを使用している場合、jnlp
またはjnlps
プロトコルを使用してJava Web Startアプリケーションを起動できるようにするプロトコル・ハンドラを手動でインストールします。
jnlp
またはjnlps
プロトコルを使用するURLを入力するか、リンクをクリックすると、ファイルを開くために使用するアプリケーションを選択するよう求められます。「Java Web Start Launcher」を選択するか、jre-home/bin
のjavaws.exe
ファイルを参照します。