アプリケーション起動用 Web ページの作成



この章では、次のトピックについて説明します。

はじめに

ある Web ページから JNLP 経由でアプリケーションを起動するには、そのページ内に JNLP ファイルへのリンクが含まれている必要があります。たとえば、Web サイト http://www.MySite.com 上にあるアプリケーション app.jnlp を起動できるようにするには、ページ内に次のリンクを含める必要があります。

<a href=http://www.MySite.com/app.jnlp>Launch the application</a>

ただし、ユーザのコンピュータに Java Web Start がインストールされていない場合もあります。したがって、ページ内に、そうした場合に対応するためのロジック (スクリプト) を含める必要があります。実際、ページ内に次のようなロジックを含める必要があります。

Java Web Start がインストールされているかどうかを確認する

以下で、スクリプトおよび自動インストールページの HTML について説明します。

Netscape 上に Java Web Start がインストールされているかどうかを確認する

JNLP 経由でのアプリケーション起動時に Web ページ上で最初に実行する必要のあるスクリプトを、次に示します。

<SCRIPT LANGUAGE="JavaScript"> 
var javawsInstalled = 0; var javaws142Installed=0;
var javaws150Installed=0;
isIE = "false";
if (navigator.mimeTypes && navigator.mimeTypes.length) {
x = navigator.mimeTypes['application/x-java-jnlp-file'];
if (x) { javawsInstalled = 1;
javaws142Installed=1; javaws150Installed=1;
}
}
else {
isIE = "true";
}
</SCRIPT>

このスクリプトは、navigator.mimeTypes オブジェクトとその変数 navigator.mimeTypes.length を検索し、ブラウザが Netscape、IE のどちらであるかを判断します。length が 0 であった場合、そのブラウザは IE であるとみなされます。というのも、IE では navigator.mimeTypes 配列は定義されていますが、その内容は常に空だからです。length が 0 以外であった場合、そのブラウザは Netscape であるとみなされ、さらにその Netscape 上における JNLP MIME タイプの存在有無がチェックされます。 存在していた場合、javawsInstalledjavaws142Installed、および javaws150Installed のすべてに、1 が設定されます。Netscape の場合、どのバージョンの Java Web Start がインストールされているかは判断できないため、4 つの変数のすべてに 1 が設定されます。

IE 上に Java Web Start がインストールされているかどうかを確認し、インストールされている場合はそのバージョンを確認する

上記 JavaScript のあとに、次のような、Internet Explorer ブラウザ関連の変数を設定する VBScript を記述する必要があります。

<SCRIPT LANGUAGE="VBScript">
on error resume next
If isIE = "true" Then
If Not(IsObject(CreateObject("JavaWebStart.isInstalled"))) Then
javawsInstalled = 0
Else
javawsInstalled = 1
End If
If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.4.2.0"))) Then
javaws142Installed = 0
Else
javaws142Installed = 1
End If
If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.5.0.0"))) Then
javaws150Installed = 0
Else
javaws150Installed = 1
End If
End If
</SCRIPT>

この VBScript が実行されるのは、先の JavaScript で設定された変数 isIE"true" である場合、つまり、エンドユーザのブラウザが Internet Explorer である場合です。このスクリプトは、JavaWebStart.dll 内の isInstalled COM オブジェクトをインスタンス化し、これを使って次の 4 つのことを判断します。

上記 2 つのスクリプトの実行が完了すると、次に示すように、変数 javawsInstalledjavaws142Installed、および javawsInstalled150 に 1、0 のいずれかが設定された状態となります。

ブラウザ
javawsInstalled javaws142Installed javaws150Installed
Internet Explorer 任意のバージョンの Java Web Start がインストールされている場合は 1、そうでない場合は 0 Java Web Start 1.4.2 がインストールされている場合は 1、そうでない場合は 0 Java Web Start 1.5.0 がインストールされている場合は 1、そうでない場合は 0
Netscape Navigator 任意のバージョンの Java Web Start がインストールされている場合は 1、そうでない場合は 0 任意のバージョンの Java Web Start がインストールされている場合は 1、そうでない場合は 0 任意のバージョンの Java Web Start がインストールされている場合は 1、そうでない場合は 0

Java Web Start がインストールされている場合はアプリケーションを起動し、そうでない場合は自動インストールページまたは汎用ダウンロードページへのリンクを表示する

さらに別の JavaScript を使って、次のいずれを実行するかを判断することができます。

これらのシナリオを処理する JavaScript を、次に示します。

<script language="JavaScript">
/* Note that the logic below always launches the JNLP application
*if the browser is Gecko based.This is because it is not possible
*to detect MIME type application/x-java-jnlp-file on Gecko-based browsers.
*/ if (javawsInstalled || (navigator.userAgent.indexOf("Gecko") !=-1)) { document.write("<a href=http://www.MySite.com/app.jnlp>Launch the application</a>"); } else { document.write("Click "); document.write("<a href=http://java.sun.com/PluginBrowserCheck? pass=http://www.MySite.com/download.html& fail=http://java.sun.com/j2se/1.5.0/download.html>here</a> "); document.write("to download and install JRE 1.5.0 and the application."); } </SCRIPT>

注 -

  1. このスクリプトで使用されているのは、javawsInstalled だけです。javaws142Installedjavaws150Installed は使用されていません。
  2. ?」と「&」の直後にある改行は、コードを読みやすくするためだけに挿入されています。実際のスクリプトでは、href 文字列内に改行を含めないでください。

javawsInstalled が 1 である場合 (Java Web Start がすでにクライアント上で利用可能になっている場合)、スクリプトは、アプリケーションの jnlp ファイルへのリンクを表示します。Java Web Start がクライアント上にインストールされていない場合、スクリプトは代わりに、java.sun.com Web サイト上の PluginBrowserCheck プログラムへのリンクを表示します。PluginBrowserCheck は、クライアントが Microsoft Windows プラットフォーム上で Internet Explorer を実行しているかどうかをチェックします。実行している場合、PluginBrowserCheck は、自動インストールページ http://www.MySite.com/download.html にユーザをリダイレクトします (Windows 上で動作する IE 向けの自動インストールページの作成方法については、次のセクション「自動インストールページを作成する」を参照)。PluginBrowserCheck は、ユーザが Microsoft Windows 上で Internet Explorer を使用していないと判断した場合、java.sun.com 上の 5.0 JRE 汎用ダウンロードページにユーザをリダイレクトします。

自動インストールページを作成する

注:

次の codebase 属性に指定された .cab ファイルが利用可能になるのは、5.0 SDK/JRE の GA リリースが公開されたあとです。

以下の方法で .cab ファイルとして自動ダウンロード可能な JRE リリースの完全な一覧については、自動ダウンロードファイル (Windows のみ) を参照してください。

download.html ファイルは、サーバ側に配置する必要があります。このファイルに含まれる特殊な OBJECT タグと PARAM タグにより、JRE 5.0 の自動インストーラがクライアントにダウンロードされます。Java Web Start に加え、ActiveX コントロールが、クライアントにダウンロードされます。ActiveX コントロールは、新しくインストールされた Java Web Start を使ってアプリケーションを起動します。download.html ファイルのサンプルを、次に示します。

<HTML>
<BODY>
<OBJECT codebase="http://java.sun.com/update/1.5.0/jinstall-1_5_0-windows-i586.cab" 
classid="clsid:5852F5ED-8BF4-11D4-A245-0080C6F74284" height=0 width=0>
<PARAM name="app" value="http://www.MySite.com/app.jnlp">
<PARAM name="back" value="true">
<!-- Alternate HTML for browsers which cannot instantiate the object -->
<A href="http://java.sun.com/j2se/1.5.0/download.html">
Download Java Web Start</A>
</OBJECT>
</BODY>
</HTML>

この OBJECT タグによって、JRE 5.0 の自動インストーラが収められた .cab ファイルが取得されます。クライアントへの JRE のインストール完了後にアプリケーションが自動的に起動されるように、アプリケーションの jnlp ファイルの場所が PARAM タグに指定されています。

アプリケーション開発に関連する問題の詳細は、次の章、「アプリケーション開発時の考慮点」を参照してください。