プライマリ・コンテンツに移動
Java Platform, Standard Editionデプロイメント・ガイド
リリース9
E90918-01
目次へ移動
目次

前
次

4 Java Web Startテクノロジの概要

この章の内容は次のとおりです。

Java Web Startの概要

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 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 Web StartはJava Platform, Standard Edition開発キット(JDK)およびJava Runtime Environment (JRE)に含まれており、Javaプラットフォームのセキュリティ機能が含まれています。

JDKおよびJREは、java.com Webサイトから入手できます。

Java Web Startソフトウェアの使い方

Java Web Startを使えば、JavaテクノロジベースのアプリケーションをWebから直接起動できます。アプリケーションの起動方法には、次の3通りがあります。

  • Webブラウザからリンクをクリックすることで起動

  • デスクトップのアイコンまたは「スタート」メニューから起動

  • Javaキャッシュ・ビューアから起動

どの方法を使用した場合も、アプリケーションが起動されるたびに、Java Web StartはWebサーバーに接続し、アプリケーションの更新版があるかどうかをチェックします。

Webブラウザからの起動

WebブラウザにJNLPアプリケーションへのリンクを含むページを表示し、そのリンクをクリックします。

セキュリティ・ダイアログ・ボックスがポップアップし、アプリケーション・コードにだれがデジタル署名したかに基づいてアプリケーションの提供元に関する情報が表示され、要求されたアクセス・レベルも表示されます。アプリケーションが実行されるのは、そのベンダーをユーザーが信頼すると決めた場合だけです。

以上がJava Web Startの使い方に関するすべてですが、これはどのような仕組みで動作するのでしょうか。アプリケーションを起動するHTMLリンクは、実際のところ、単なる標準のHTMLリンクです。ただし、他のWebページを指すかわりに、JNLPファイルと呼ばれる特殊な設定ファイルを指しています。Webブラウザは、そのファイルのファイル拡張子またはMIMEタイプを検査し、そのファイルがJava Web Start用のものであることを認識します。その後に、ダウンロードされたJNLPファイルを引数としてJava Web Startを起動します。Java Web Startは、JNLPファイルの指示に従って、アプリケーションをダウンロード、キャッシュ、および実行します。

デスクトップのアイコンおよび「スタート」メニューからの起動(Microsoft WindowsおよびGNOME 2.0+を実行するLinuxの場合)

Java Web Startテクノロジでは、デスクトップ上と「スタート」メニュー内に、WebデプロイされたJavaテクノロジ・ベース・アプリケーションのショートカットを自動作成できます。ショートカットの設定の制御には、Javaコントロール・パネルを使用します。ショートカットは、Java Web Startキャッシュ・ビューアの、インストール・ショートカット・メニュー項目を使用して追加することも可能です。

プロキシ・サーバーまたはファイアウォール環境でのJava Web Startソフトウェアの使用

Java Web Startソフトウェアのプロキシ設定が正しくなかった場合、ファイアウォールの外側にあるアプリケーションを起動できません。Java Web Startソフトウェアは、システム上のデフォルト・ブラウザ(Microsoft Windows上ではInternet ExplorerまたはMozillaブラウザ、Solarisオペレーティング環境およびLinux上ではMozillaブラウザ)から、プロキシ設定を自動的に検出しようとします。Java Web Startテクノロジは、Webプロキシ自動設定スクリプトの大部分をサポートしています。ほとんどすべての環境でプロキシ設定を検出できます。

また、Javaコントロール・パネルの「ネットワーク設定」タブを使用して、プロキシ構成を表示または編集することもできます。

Webサーバーの設定

アプリケーションは、任意の標準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タイプをサポートするように構成されている必要があります。

手順1   Java Web StartのMIMEタイプを使用するようにWebサーバーを構成します。

多くの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サーバーの詳細については、付属のマニュアルを参照してください。

手順2   アプリケーションに対するJNLPファイルを作成します。

このファイルを作成する最も簡単な方法は、既存の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ファイルの構文で説明します。

手順3   Webサーバー上でアプリケーションをアクセスできるようにします。

JNLPファイル内に記載されたURLで、アプリケーションのJARファイルとJNLPファイルにアクセスできることを確認してください。

手順4   アプリケーション起動用Webページを作成します。

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プロトコル・ハンドラのインストール

Java Web Startには、カスタムURIスキームjnlp:およびjnlps:を処理するためのプロトコル・ハンドラが含まれています。Java Web Startアプリケーションを起動する直接的な方法として、これらのスキームを使用します。

プロトコル・ハンドラはWindowsおよびmacOSシステムに自動的にインストールされます。Linuxシステムには手動でインストールする必要があります。

Chromeのプロトコル・ハンドラのインストール

Linux上でChromeブラウザを使用している場合、jnlpまたはjnlpsプロトコルを使用してJava Web Startアプリケーションを起動できるようにするプロトコル・ハンドラを手動でインストールします。

Linuxでは、xdg-openコマンドを使用して、ユーザーの優先アプリケーションのファイルまたはURLを開きます。プロトコル・ハンドラをインストールするには、jnlpまたはjnlpsプロトコルを含むURLに対してJava Web Startを使用するようにxdg-openを構成します。
  1. テキスト・エディタを使用して、~/.local/share/applicationsディレクトリにjavaws.desktopというファイルを作成します。
  2. 次の例に示すように文を含めます。
    [Desktop Entry] 
    Encoding=UTF-8 
    Name=Java(TM) Web Launcher 
    Exec=jre-home/bin/javaws %U 
    Terminal=false 
    Type=Application 
    MimeType=x-scheme-handler/jnlp;x-scheme-handler/jnlps 
    
  3. ファイルを保存します。
  4. 次のコマンドを実行します。
    xdg-mime default javaws.desktop x-scheme-handler/jnlp 
    xdg-mime default javaws.desktop x-scheme-handler/jnlps 
プロトコル・ハンドラをインストールした後は、URLにjnlpまたはjnlpsプロトコルが含まれる場合に、Java Web Startを使用してアプリケーションが起動されます。たとえば、次のURLは、JavaチュートリアルからDynamic Treeサンプルを起動します。
jnlps://docs.oracle.com/javase/tutorialJWS/samples/deployment/dynamictree_webstartJWSProject/dynamictree_webstart.jnlp

Firefoxのプロトコル・ハンドラのインストール

Linux上でFirefoxブラウザを使用している場合、jnlpまたはjnlpsプロトコルを使用してJava Web Startアプリケーションを起動できるようにするプロトコル・ハンドラを手動でインストールします。

プロトコル・ハンドラをインストールするには、Firefox構成にプロパティを追加します。
  1. Firefoxのアドレス・バーにabout:configと入力します。
    保証を無効にすることについての警告のページが表示された場合、「I'll be careful, I promise!」をクリックして構成ページへと続行します。
  2. Booleanプロパティを追加します。
    1. ページを右クリックし、「New」「Boolean」を順に選択します。
    2. 「New Boolean Value」ウィンドウで、名前network.protocol-handler.expose.jnlpを入力して「OK」をクリックします。
    3. 値の「false」を選択し、「OK」をクリックします。
    プロパティが構成に追加されます。
  3. 前述の手順を繰り返して、値falseを持つプロパティnetwork.protocol-handler.expose.jnlpsを追加します。
jnlpまたはjnlpsプロトコルを使用するURLを入力するか、リンクをクリックすると、ファイルを開くために使用するアプリケーションを選択するよう求められます。「Java Web Start Launcher」を選択するか、jre-home/binjavaws.exeファイルを参照します。