この章では、次のトピックについて説明します。
IE 上に Java Web Start がインストールされているかどうかを確認し、インストールされている場合はそのバージョンを確認する
Java Web Start がインストールされている場合はアプリケーションを起動し、そうでない場合は自動インストールページまたは汎用ダウンロードページへのリンクを表示する
次の情報は、Java SE 6 update 10 リリースに配備ツールキットスクリプトが導入される前のものです。
配備ツールキットスクリプトの使用方法については、Java Rich Internet Application 配備アドバイスを参照してください。
ある 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 がインストールされているかどうかを確認する
インストールされている場合、アプリケーションを起動する。
インストールされていない場合、ユーザーが Windows 上で IE を実行しているかどうかを確認する。
実行している場合、Windows 用 JRE の自動インストールが可能なページへのリンクを表示する
そうでない場合、SDK/JRE の汎用ダウンロードページへのリンクを表示する。
次に、スクリプトおよび自動インストールページの 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 つのことを判断します。
クライアントマシンに、Java Web Start のいずれかのバージョンがインストールされているかどうか。
クライアントマシンに、Java Web Start 1.2 がインストールされているかどうか。
クライアントマシンに、Java Web Start 1.4.2 がインストールされているかどうか。
クライアントマシンに、Java Web Start 1.5.0 がインストールされているかどうか。
クライアントマシンに、Java Web Start 1.6.0 がインストールされているかどうか。
上記 2 つのスクリプトの実行が完了すると、次に示すように、変数 javawsInstalled、javaws142Installed
、javawsInstalled150
、および javawsInstalled160
に 1、0 のいずれかが設定された状態となります。
Browser |
|
|
|
|
---|---|---|---|---|
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 を使って、次のいずれを実行するかを判断できます。
アプリケーションの jnlp ファイルへのリンクを表示する (Java Web Start がインストールされている場合)。
Java Web Start が含まれている JRE 6.0 の自動ダウンロードを起動する (Java Web Start がインストールされておらず、ユーザーが Windows 上で IE を実行している場合)。
6.0 SDK/JRE の汎用ダウンロードページへのリンクを表示する (Java Web Start がインストールされておらず、ユーザーが Windows 上で IE を実行していない場合)。
これらのシナリオを処理する 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-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
ファイルが取得されます。
URL
http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab
により、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)、以前のページに戻ることもできます。
アプリケーション開発に関連する問題の詳細は、次の章、「アプリケーション開発時の考慮点」を参照してください。