この章では、次のトピックについて説明します。
IE上にJava Web Startがインストールされているかどうかを確認し、インストールされている場合はそのバージョンを確認する
Java Web Startがインストールされている場合はアプリケーションを起動し、そうでない場合は自動インストール・ページまたは汎用ダウンロード・ページへのリンクを表示する
次の情報は、Java SE 6 update 10リリースに配備ツールキット・スクリプトが導入される前のものです。
配備ツールキット・スクリプトの使用方法については、「ブラウザでのデプロイメント」を参照してください。
ある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の自動インストールが可能なページへのリンクを表示する
そうでない場合、JDK/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のいずれかが設定された状態となります。
ブラウザ |
|
|
|
|
---|---|---|---|---|
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 JDK/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
だけです。javaws142Installed
、javaws150Installed
、javaws160Installed
は使用されていません。
「?
」と「&
」の直後にある改行は、コードを読みやすくするためだけに挿入されています。実際のスクリプトでは、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
上の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)、以前のページに戻ることもできます。
アプリケーション開発に関連する問題の詳細は、次の章、「アプリケーション開発時の考慮点」を参照してください。