ある 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 について説明します。
JNLP 経由でのアプリケーション起動時に Web ページ上で最初に実行する必要のあるスクリプトを、次に示します。
<SCRIPT LANGUAGE="JavaScript">
var javawsInstalled = 0; var javaws142Installed=0;
var javaws150Installed=0;
var javaws160Installed = 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;
javaws160Installed = 1;
}
}
else {
isIE = "true";
}
</SCRIPT>
このスクリプトは、navigator.mimeTypes
オブジェクトとその変数 navigator.mimeTypes.length
を検索し、ブラウザが Netscape、IE のどちらであるかを判断します。length
が 0 であった場合、そのブラウザは IE であるとみなされます。 というのも、IE では navigator.mimeTypes
配列は定義されていますが、その内容は常に空だからです。length が 0 以外であった場合、そのブラウザは Netscape であるとみなされ、さらにその Netscape 上における JNLP MIME タイプの存在有無がチェックされます。存在していた場合、javawsInstalled
、javaws142Installed
、javaws150Installed
、および javaws160Installed
のすべてに、1 が設定されます。Netscape の場合、どのバージョンの Java Web Start がインストールされているかは判断できないため、4 つの変数のすべてに 1 が設定されます。
上記 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 If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.6.0.0"))) Then javaws160Installed = 0 Else javaws160Installed = 1 End If End If </SCRIPT>
この VBScript が実行されるのは、先の JavaScript で設定された変数 isIE が "true" である場合、つまり、エンドユーザーのブラウザが Internet Explorer である場合です。このスクリプトは、JavaWebStart.dll 内の isInstalled
COM オブジェクトをインスタンス化し、これを使って次の 4 つのことを判断します。
上記 2 つのスクリプトの実行が完了すると、次に示すように、変数 javawsInstalled、javaws142Installed
、javawsInstalled150
、および javawsInstalled160
に 1、0 のいずれかが設定された状態となります。
BrowserjavawsInstalled
javaws142Installed
javaws150Installed
javaws160Installed
Internet Explorer 任意のバージョンの Java Web Start がインストールされている場合は 1、そうでない場合は 0 Java Web Start 1.4.2 がインストールされている場合は 1、そうでない場合は 0 Java Web Start 1.5.0 がインストールされている場合は 1、そうでない場合は 0 Java Web Start 1.6.0 がインストールされている場合は 1、そうでない場合は 0。 Netscape Navigator 任意のバージョンの Java Web Start がインストールされている場合は 1、そうでない場合は 0 任意のバージョンの Java Web Start がインストールされている場合は 1、そうでない場合は 0 任意のバージョンの Java Web Start がインストールされている場合は 1、そうでない場合は 0 任意のバージョンの Java Web Start がインストールされている場合は 1、そうでない場合は 0
さらに別の 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/javase/downloads/ea.jsp>here</a> "); document.write("to download and install JRE 5.0 and the application."); } </SCRIPT>
注 -
|
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
上の 6.0 JRE 汎用ダウンロードページにユーザーをリダイレクトします。
注: 次の 以下の方法で |
download.html ファイルは、サーバー側に配置する必要があります。このファイルに含まれる特殊な OBJECT タグと PARAM タグにより、JRE 6.0 の自動インストーラがクライアントにダウンロードされます。Java Web Start に加え、ActiveX コントロールが、クライアントにダウンロードされます。ActiveX コントロールは、新しくインストールされた Java Web Start を使ってアプリケーションを起動します。download.html ファイルのサンプルを、次に示します。
<HTML> <BODY> <OBJECT codebase="http://java.sun.com/update/1.6.0/jinstall-1_6-windows-i586.cab#Version=6,0,0,0" 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/javase/downloads/ea.jsp"> Download Java Web Start</A> </OBJECT> </BODY> </HTML>OBJECT タグによって、JRE 6.0 の自動インストーラが収められた
.cab
ファイルが取得されます。http://java.sun.com/update/1.6.0/jinstall-1_6-windows-i586.cab の URL が、Java SE 6 リリースで使用できる最新版のリリースを返します。
Version=6,0,0,0 の文字列は、上記の CLSID で登録された wsdetect.dll バージョンの比較に使用します。ローカルマシンに dll がインストールされており、そのバージョンが指定の Version 以上であれば、ローカルマシンに dll をロードするだけです。それ以外は、指定のコードベースから Java をダウンロードしてインストールします。
クライアントへの JRE のインストール完了後にアプリケーションが自動的に起動されるように、アプリケーションの
jnlp
ファイルの場所が PARAM タグに指定されています。
app
:Java Web Start の Active X コントロールがインストール (またはロード) されると、Java Web Start が呼び出され、この URL に指定されたアプリケーションが起動します。
back
:アプリケーション起動後のブラウザの動作を制御します。現在のページを継続することもでき (この場合、download.html)、以前のページに戻ることもできます。
アプリケーション開発に関連する問題の詳細は、次の章、「アプリケーション開発時の考慮点」を参照してください。