Solaris Java Plug-in ユーザーズガイド

第 3 章 Java Plug-in での OBJECT、EMBED、および APPLET タグの使用

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

はじめに

ここでは、OBJECT および EMBED タグなどの、Java Plug-in に必須のタグ構造について説明します。この章の内容は、HTML ページに手動で Java Plug-in タグを挿入する、Web ページの作成者を対象としています。


注 –

Sun Microsystems が無料で提供している Java Plug-in HTML Converter を使用すると、HTML ファイルの変換を自動的に実行できます。 大半の Web 作成者にはこのツールの使用をお勧めします。


通常、アプレットは HTML ファイル内で次のように指定します。


<APPLET code="XYZApp.class" codebase="html/" align="baseline"
          width="200" height="200">
        <PARAM name="model" value="models/HyaluronicAcid.xyz">
          No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
        </APPLET>
また、通常、APPLET タグにはアプレットに関する情報を指定し、<PARAM> タグにはインスタンスごとのアプレット情報を格納し、そのとき <PARAM> タグ は、<APPLET></APPLET> タグの間に配置します。

ただし、APPLET はブラウザにより描画されるため、ブラウザの動作を遮断して、アプレットの実行に Sun の Java Runtime Environment (JRE) を使用させる簡単な方法はありません。 次に示すように、HTML ページで通常の APPLET タグの代わりに、OBJECT タグと EMBED タグのいずれかまたは両方を使用して特別な Java Plug-in タグ構造を構築することにより、ブラウザにこの動作を実行させることが可能です。これにより、ブラウザが Java Plug-in を起動し、Java Plug-in が Sun の JRE を使用してアプレットを実行します。

以降の節では、特定のブラウザとプラットフォームの各組み合わせで必要な操作について説明します。


注 –

製品のバージョン番号は、次の形式になります。


n1.n2.n3_n4n5

ここで、n1.n2 はメジャーバージョン番号、n3 はマイナーバージョン番号 (保守バージョン番号とも呼ばれます)、および n4n5 は更新バージョン番号を表します。

以下に示す例では、バージョン番号として、メジャーリリース番号 1.4、マイナーリリース番号 0、および必要に応じて仮想的な更新番号を使用します。

1,4,0,nm14 など、バージョンの指定方法が多少異なる場合もあります (後者ではメジャーバージョン番号のみを指定します)。


Microsoft Windows プラットフォームで稼動する Internet Explorer での Java Plug-in

Microsoft Windows プラットフォームで稼動する Internet Explorer で Java Plug-in を使用するには、OBJECT タグを使用します。 以下に、APPLET タグを Java Plug-in タグにマッピングする方法を示します。

元の APPLET タグ


<APPLET code="XYZApp.class" codebase="html/" align="baseline"
          width="200" height="200">
       <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
          No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
       </APPLET>

注 –

この例および以降の例の codebase 属性に示す URL は、単なるサンプルです。指定された URL には、cab ファイルは存在しません


新規 OBJECT タグ


<OBJECT classid="clsid:CAFEEFAC-0014-0000-0000-ABCDEFFEDCBA"
width="200" height="200" align="baseline" 
codebase="http://java.sun.com/jpi/jinstall-14-win32.cab#Version=1,4,0,mn">
<PARAM NAME="code" VALUE="XYZApp.class">
<PARAM NAME="codebase" VALUE="html/">
<PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
		No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
       </OBJECT>

OBJECT タグには、APPLET タグと同様の情報が含まれることに注意してください。 Internet Explorer で Java Plug-in を起動するには、これで十分です。 OBJECT タグ内の classid は、Java Plug-in 自体のクラス識別子です。このクラス識別子は、すべての HTML ページで同じである必要があります。Internet Explorer が OBJECT タグ内のこのクラス識別子を描画する場合、Java Plug-in をブラウザ内にロードしようとします。

OBJECT タグには、幅、高さ、位置合わせなどの属性が存在します。これらの属性は、APPLET タグの対応する属性から直接マッピングされます。Internet Explorer は、これらの属性に含まれる書式情報を使用して、Java Plug-in の位置を決定します。 この情報は、変更されることなく直接マッピングされるため、Java Plug-in を使用するアプレットと APPLET タグを使用するアプレットの位置および外観は同じはずです。

APPLET タグ内の属性をすべて、 OBJECT タグ属性にマッピングできるわけではありません。 たとえば、APPLET タグの code 属性および codebase 属性は、OBJECT タグ属性にはマッピングされません。 一方、code 属性は、 PARAMcode にマッピングされます。これは、HTML 仕様では、OBJECT タグに code 属性が存在しないためです。 OBJECT タグ属性に対応しない属性は、ほかにも存在します。 これらの属性と 1 つの例外属性は、 PARAM タグにマッピングする必要があります。


注 –

OBJECT タグでは、重複するパラメータ名を使用してはなりません。


ここで 1 つの例外となるのは、codebase 属性です。APPLET タグでは、codebase 属性は追加クラスおよび jar ファイルのダウンロード元の場所を表します。一方、OBJECT タグでは、codebase 属性は、ローカルマシンで Java Plug-in が検出されなかった場合の Java Plug-in のダウンロード元の場所を表します。 codebase 属性は、APPLET タグと OBJECT タグとで異なる意味を持つため、この属性を OBJECT タグの PARAM タグの codebase 属性にマッピングして、この競合を解決する必要があります。

上の例では、APPLET タグの code 属性および codebase 属性は、OBJECT タグのパラメータにマッピングされます。PARAMcode には、アプレットを指定し、この値は、APPLET タグ内の code 属性と同じにする必要があります。 PARAMcodebase には、アプレットの codebase を指定します。 Java Plug-in は、パラメータからアプレットのダウンロード先を読み取ることができます。 パラメータタイプは、APPLET タグからはマッピングされません。OBJECT タグにパラメータタイプを指定する必要があります。 Java 実行可能ファイルのタイプ (アプレットなど) を認識することにより、Java Plug-in は Java 実行可能ファイルの初期化方法を識別します。 上の例の 3 つの PARAM タグ (codecodebase、および type) は、Java Plug-in により指定されています。これらのタグは、元の APPLET タグの PARAM 内には存在しません。 OBJECT タグ内の model パラメータが、APPLET タグ内の model パラメータと同一であることに注意してください。 Java Plug-in で指定されている最初の 3 つのパラメータ (codecodebase、および type) を除く、残りのパラメータは、APPLET タグ内部のパラメータと同じです。

Java Plug-in 1.3 から、新たに PARAM scriptable タグが追加されました (Java Plug-in 1.4 でも有効)。 このタグの追加により、JavaScript や VBScript を必要としないアプレットのパフォーマンスが改善されます。 アプレットがスクリプト作成によるサポートを必要とする場合は値を true に、必要としない場合は false に設定します。 デフォルト値は、false です。

PARAM scriptablePARAM Mayscript は同じではないことに注意してください。 Mayscript は Java アプレットから JavaScript への通信のみをサポートするのに対し、scriptable は Internet Explorer での JavaScript から Java アプレットへの通信のみをサポートします。

「No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!」というテキストは APPLET タグ内にあり、 <OBJECT> タグと </OBJECT> タグの間にマッピングされています。本来、これは、ブラウザが Java をサポートしない場合にのみ表示されるテキストです。これを OBJECT タグの内部にマッピングすると、ブラウザが OBJECT タグをサポートしない場合にこのテキストが表示されます。

APPLET タグと OBJECT タグの属性マッピングは次のようになります。

属性 

APPLET タグのサポート 

OBJECT タグのサポート 

OBJECT タグの属性のマッピング先 

ALIGN 

ALIGN 属性 

ALT 

 

 

ARCHIVE 

 

archive パラメータ 

CODE 

code パラメータ 

CODEBASE 

codebase パラメータ 

HEIGHT 

HEIGHT 属性 

HSPACE 

HSPACE 属性 

NAME 

NAME 属性、NAME パラメータ 

OBJECT 

 

object パラメータ 

TITLE 

TITLE 属性 

VSPACE 

VSPACE 属性 

WIDTH 

WIDTH 属性 

MAYSCRIPT 

MAYSCRIPT パラメータ 

OBJECT タグに固有の属性もいくつかあります。EMBED タグに固有の属性は次のとおりです。

属性/パラメータ 

OBJECT タグ内の意味 

classid 属性 

動的バージョンサポートの場合、常に同じ値 (clsid:8AD9C840-044E-11D1-B3E9-00805F499D93) を保持する。静的バージョンサポートの場合、バージョン固有の値 (たとえば、clsid:CAFEEFAC-0014-0000-0000-ABCDEFFEDCBA) を保持する 

注:この節に示す例では、動的バージョンサポートを使用します。

codebase 属性 

ネットワーク上の CAB ファイルを指す絶対 URL。デフォルトでは、Java Software Web サイトのバイナリを指す 

type パラメータ 

Java アプレットの場合、値は “application/x-java-applet;jpi-version=1.4” または “application/x-java-applet”。JavaBeans コンポーネントの場合、値は “application/x-java-bean;jpi-version=1.4” または “application/x-java-bean” 

codebase パラメータ 

アプレットのベース URL を指定する。 この属性は省略可能 

code パラメータ 

Java アプレットまたは JavaBeans コンポーネントの名前を指定する。同じ OBJECT タグの内部で object パラメータとともに使用することはできない

scriptable パラメータ 

JavaScript または VBScript を使用して、HTML ページからアプレットをスクリプト処理できるかどうかを指定する。true または false を指定できる。この属性は Java Plug-in 1.4 で新たに導入された

object パラメータ 

直列化された Java アプレットまたは JavaBeans コンポーネントの名前を指定する。同じ OBJECT タグの内部で code パラメータとともに使用することはできない。この属性は省略可能

archive パラメータ 

Java アーカイブの名前を指定する。この属性は省略可能 

mayscript パラメータ 

アプレットに netscape.javascript.JSObject へのアクセスを許可するかどうかを指定する。true または false を指定できる。この属性は省略可能

元の APPLET タグが PARAM typecodebasecodeobject、または archive を保持する場合、パラメータ名が重複するため、OBJECT タグへのマッピングで問題が発生します。 これを回避するため、Java Plug-in は次のパラメータ名セットも別途サポートします。

元のパラメータ名 

新しいパラメータ名 

code 

java_code 

codebase 

java_codebase 

archive 

java_archive 

object 

java_object 

type 

java_type 

これらの新しいパラメータ名は、必要な場合にのみ使用してください。1 つの OBJECT タグに新しいパラメータ名と元のパラメータ名の両方が存在する場合、Java Plug-in は常に新しいパラメータ名に関連付けられた値を使用してアプレットまたは JavaBean をロードします。

Microsoft Windows や Linux プラットフォームまたは SolarisTM オペレーティング環境で稼働する Netscape Navigator での Java Plug-in

Microsoft Windows や Linux プラットフォーム、または SolarisTM オペレーティング環境で稼働する Netscape NavigatorTM 4 ブラウザで Java Plug-in を使用する場合は、EMBED タグを使用します。次の例は、APPLET タグを Java Plug-in の EMBED タグにマッピングする方法を示します。

元の APPLET タグ


<APPLET code="XYZApp.class" codebase="html/" align="baseline"
          width="200" height="200">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
          No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET>

新規 EMBED タグ


<EMBED type="application/x-java-applet;jpi-version=1.4" width="200"
        height="200" align="baseline" code="XYZApp.class"
        codebase="html/" model="models/HyaluronicAcid.xyz"
        pluginspage="http://java.sun.com/jpi/plugin-install.html">
<NOEMBED>
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</NOEMBED>
</EMBED>

EMBED タグには APPLET タグと同様の情報が含まれることに注目してください。Netscape Navigator ブラウザで Java Plug-in を起動するには、この情報で十分です。EMBED タグ内の type 属性は、Java プログラミング言語実行可能ファイルの種類 (アプレットや Bean など) の識別に使用されます。Netscape Navigator ブラウザが EMBED タグ内のこの属性を描画するときに、Java Plug-in をブラウザへロードしようとします。type 属性を指定することにより、Java Plug-in は Java プログラミング言語の実行可能ファイルの初期化方法を識別します。

上の例では、EMBED タグ内のいくつかの属性 (width、height、align など) が APPLET タグの対応する属性から直接マッピングされています。Netscape Navigator ブラウザは、これらの属性に含まれる書式情報を使用して、Java Plug-in の位置を決定します。この情報は、変更されることなく直接マッピングされるため、Java Plug-in を使用するアプレットと APPLET タグを使用するアプレットの位置および外観は同じはずです。

OBJECT タグとは異なり、PARAM を使用せずに、すべての情報を <EMBED> タグ内に格納する必要があります。このため、APPLET タグ内のすべての属性およびパラメータを、EMBED タグ内部で属性と値のペアとしてマッピングする必要があります。

上の例では、APPLET タグ内の code 属性および codebase 属性は、EMBED タグ属性にマッピングされています。code は、アプレットを識別する属性です。この値は、APPLET タグの code 属性と同じにする必要があります。codebase 属性は、アプレットのコードベースを識別します。Java Plug-in は、この属性から情報を読み取ることで、アプレットや JavaBeans コンポーネントのダウンロード先を識別します。EMBED タグ内部の model 属性が、 APPLET タグ内部の model パラメータからマッピングされている点にも注目してください。

OBJECT タグの codebase 属性と同様、Java Plug-in がインストールされていない場合、Netscape Navigator ブラウザは EMBED タグの pluginspage 属性を使用します。この属性からは、Java Software Web サイトの「Java Plug-in Download Page」を常に参照する必要があります。

「No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!」というテキストは APPLET タグ内にあり、 <NOEMBED> タグと </NOEMBED> タグの間にマッピングされています。 本来、これは、ブラウザが Java テクノロジをサポートしない場合にのみ表示されるテキストです。このテキストを NOEMBED タグ内にマッピングすると、ブラウザが EMBED タグをサポートしていないか、またはブラウザが Java Plug-in の起動に失敗した場合に、このテキストが表示されます。

APPLET タグと EMBED タグの属性のマッピングは次のようになります。

属性 

APPLET タグのサポート 

EMBED タグのサポート 

EMBED タグの属性のマッピング先 

ALIGN 

ALIGN 属性 

ALT 

ALT 属性 

ARCHIVE 

 

archive 属性 

CODE 

 

code 属性 

CODEBASE 

 

codebase 属性 

HEIGHT 

HEIGHT 属性 

HSPACE 

HSPACE 属性 

NAME 

NAME 属性 

OBJECT 

 

object 属性 

TITLE 

TITLE 属性 

VSPACE 

VSPACE 属性 

WIDTH 

WIDTH 属性 

MAYSCRIPT 

MAYSCRIPT 属性 

EMBED タグに固有の属性もいくつかあります。EMBED タグに固有の属性は次のとおりです。

属性 

EMBED タグ内の意味 

type 属性 

アプレットの場合、値は "application/x-java-applet;jpi-version=1.4" または "application/x-java-applet" を指定する。Bean の場合、値は "application/x-java-bean;jpi-version=1.4" または "application/x-java-bean" を指定する 

codebase 属性 

アプレットのベース URL を指定する。 この属性は省略可能 

code 属性 

Java アプレットまたは JavaBeans コンポーネントの名前を指定する。同じ EMBED タグの内部で object パラメータとともに使用することはできない 

object 属性 

直列化された Java アプレットまたは JavaBeans コンポーネントの名前を指定する。EMBED タグの内部で code パラメータとともに使用することはできまない。この属性は省略可能 

archive 属性 

Java アーカイブの名前を指定する。この属性は省略可能 

pluginspage 属性 

ネットワーク上の HTML ページを指す絶対 URL 

mayscript 属性 

アプレットに netscape.javascript.JSObject へのアクセスを許可するかどうかを指定する。true または false を指定できる。この属性は省略可能 

OBJECT タグの場合と同様、元の APPLET タグに PARAM typecodebasecodeobject、または archive が含まれる場合、これを EMBED タグ属性にマッピングすると問題が発生します。これを回避するため、Java Plug-in は次の属性名セットも新たにサポートしています。

元の属性名 

新しい属性名 

code 

java_code 

codebase 

java_codebase 

archive 

java_archive 

object 

java_object 

type 

java_type 

これらの新しい属性名は、必要な場合にのみ使用してください。1 つの EMBED タグに新しい属性名と元の属性名の両方が存在する場合、Java Plug-in は、常に新しい属性名に関連付けられた値を使用して、アプレットまたは Bean をロードします。

Internet Explorer および Netscape Navigator ブラウザでの Java Plug-in

Microsoft Windows プラットフォームまたは Solaris オペレーティング環境で HTML ページをブラウズする場合、Internet Explorer で OBJECT タグを、Netscape Navigator で EMBED タグを指定すると、HTML で Java Plug-in を使用できます。ただし、HTML ページがインターネットまたはイントラネット上に存在する場合、ページが Internet Explorer と Netscape Navigator ブラウザの両方でブラウズされる可能性があります。Netscape Navigator と Internet Explorer の両方で同じ HTML ページをブラウズする場合は、Java Plug-in を起動する必要があります。この操作を実行するには、Java Plug-in の OBJECT タグを次のように指定します。

元の APPLET タグ


<APPLET code="XYZApp.class" codebase="html/" align="baseline"
          width="200" height="200">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
No Java 2 SDK, Standard Editoin v 1.4 support for APPLET!!
</APPLET>      

新規 OBJECT タグ


<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/jpi/jinstall-14-win32.cab#Version=1,4,0,mn">
<PARAM NAME="code" VALUE="XYZApp.class">
<PARAM NAME="codebase" VALUE="html/">
<PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
<COMMENT>
<EMBED type="application/x-java-applet;jpi-version=1.4" width="200"
    height="200" align="baseline" code="XYZApp.class" 
    codebase="html/" model="models/HyaluronicAcid.xyz"
    pluginspage="http://java.sun.com/jpi/plugin-install.html">
<NOEMBED>
</COMMENT>
        No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</NOMEMBED></EMBED>
</OBJECT>

Internet Explorer は <OBJECT> タグを認識するため、Java Plug-in の起動を試みます。<COMMENT> タグは Internet Explorer のみが理解できる特殊な HTML タグです。Internet Explorer は、<COMMENT> タグと </COMMENT> タグの間にあるテキストを無視します。上記のタグは、実際には次のようになります。


<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/jpi/jinstall-14-win32.cab#Version=1,4,0,mn">
<PARAM NAME="code" VALUE="XYZApp.class">
<PARAM NAME="codebase" VALUE="html/">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="scriptable" VALUE="true">
   No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</NOEMBED></EMBED>
</OBJECT>

これは、上述の OBJECT タグの例と同じになります。 </NOEMBED> タグおよび </EMBED> タグは、対応する <NOEMBED> タグおよび <EMBED> タグが存在しないため、OBJECT タグにより無視されます。

Netscape Navigator ブラウザは OBJECT および COMMENT タグを理解しないため、上記のタグは次のように認識されます。


<EMBED type="application/x-java-applet;jpi-version=1.4" 
    width="200" height="200"
    align="baseline" code="XYZApp.class" codebase="html/"
    model="models/HyaluronicAcid.xyz"
    pluginspage="http://java.sun.com/jpi/plugin-install.html">
<NOEMBED>
    No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</NOEMBED>
</EMBED>	

これは、上述の EMBED タグの例と同じになります。<OBJECT> タグおよび <COMMENT> タグは、Internet Explorer ブラウザのみで理解される HTML 拡張機能であるため、Netscape Navigator ブラウザはこれらのタグを無視します。

この例は、Internet Explorer と Netscape Navigator のどちらが使用される場合でも、OBJECT タグおよび EMBED タグを組み合わせて使用することにより、ブラウザ内で Java Plug-in をアクティブにできることを示しています。すべてのユーザが同機種環境で HTML ページをブラウズするのでない限り、この複合タグを使用することが強く推奨されています。Sun Microsystems の提供する Java Plug-in HTML Converter を使用すると、HTML ページをこのタグの書式に自動的に変換できます。

環境に依存しない Java Plug-in

インターネット/イントラネット環境では、HTML ページを表示するブラウザのプラットフォームが異なることが考えられます。Java Plug-in を起動するのは、ブラウザとプラットフォームの組み合わせが適切な場合だけに限定する必要があります。組み合わせが適切でない場合は、ブラウザのデフォルト JVM を使用してください。この操作の実行には、次の Java Plug-in タグを使用します。

元の APPLET タグ


<APPLET code="XYZApp.class" codebase="html/" align="baseline"
          width="200" height="200">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
          No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET>

新しい書式のタグ

次に、上記のタグと等価な Java Plug-in タグの例を示します。この例には、コメントも含まれています。


<!-- The following code is specified at the beginning of the <BODY> tag. -->
<SCRIPT LANGUAGE="JavaScript"><!--
 var _info = navigator.userAgent; var _ns = false;
      var _ie = (_info.indexOf("MSIE")> 0 && _info.indexOf("Win")> 0
          && _info.indexOf("Windows 3.1") < 0);
  //--></SCRIPT>
<COMMENT><SCRIPT LANGUAGE="JavaScript1.1"><!--
var _ns = (navigator.appName.indexOf("Netscape")>= 0
    && ((_info.indexOf("Win")> 0 && _info.indexOf("Win16") < 0
    && java.lang.System.getProperty("os.version").indexOf("3.5") < 0)
    || _info.indexOf("Sun")> 0));
  //--></SCRIPT></COMMENT>

<!-- The following code is repeated for each APPLET tag -->
<SCRIPT LANGUAGE="JavaScript"><!--
      if (_ie == true) document.writeln('
<OBJECT
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/jpi/jinstall-14-win32.cab#Version=1,4,0,mn">
      <NOEMBED><XMP>');
      else if (_ns == true) document.writeln('
<EMBED
      type="application/x-java-applet;jpi-version=1.4" 
      width="200" height="200"
      align="baseline" code="XYZApp.class" codebase="html/"
      model="models/HyaluronicAcid.xyz"
      pluginspage="http://java.sun.com/jpi/plugin-install.html">
      <NOEMBED><XMP>');
//--></SCRIPT>
      <APPLET code="XYZApp.class" codebase="html/" align="baseline"
          width="200" height="200">
</XMP>
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
      No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED>
</OBJECT>

<!--
      <APPLET code="XYZApp.class" codebase="html/" align="baseline"
          width="200" height="200">
      <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
      No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
      </APPLET>
-->

このタグは元の APPLET タグと比較して複雑に見えますが、実際にはそうではありません。Java Plug-in タグのコードの大部分は、使用されるアプレットに関係なく同じです。Web ページの作成者は、たいていの場合、Java Plug-in タグをコピー&ペーストできます。

スクリプトの最初のブロックで、ブラウザおよびプラットフォームを抽出します。アプレットを実行するブラウザおよびプラットフォームを判別する必要があります。 これは、JavaScriptTM を使用して、まずブラウザ名、次にプラットフォームを抽出することで実行します。HTML ドキュメントごとに、この操作を 1 回実行します。

スクリプトの 2 番目のブロックで、APPLET タグの置換を実行します。各 APPLET タグを類似のコードブロックで置き換える必要があります。スクリプトは、ブラウザに応じて、APPLET タグを EMBED タグまたは OBJECT タグに置き換えます。Internet Explorer ブラウザの場合は OBJECT タグ、Netscape Navigator ブラウザの場合は EMBED タグに置き換えます。最後に、元の APPLET タグをコメントとして末尾に含めます。Java Plug-in の起動を解除することを考えて、元の APPLET タグを残しておくことをお勧めします。

最初の JavaScript で、ブラウザおよびそのブラウザが実行されているプラットフォームを確立します。現在のところ、Java Plug-in は Microsoft Windows プラットフォームおよび Solaris オペレーティング環境のみをサポートするため、この操作が必要になります。Java Plug-in がサポートしない Win32 プラットフォームは、Windows NT 3.51 だけです。Java Plug-in の起動は、サポートされているブラウザおよびプラットフォーム上でのみ実行する必要があります。ブラウザが Internet Explorer の場合、スクリプトにより変数 _ie が true に設定されます。Netscape ブラウザの場合、変数 _ns が true に設定されます。(JavaScript では、変数名はすべて "_" で始まることに注意してください。これは、同一ページのほかの JavaScript 変数との競合を避けるためです。)

適切なブラウザを検出するため、JavaScript は JavaScript の navigator オブジェクト内の次の 3 つの文字列を評価します。userAgent , appVersion, および appName 。これらの文字列には、ブラウザおよびプラットフォームに関する情報が含まれます。次に示す、文字列 userAgent のいくつかの例を参考にすることにより、userAgent を評価してブラウザを判別する方法を理解できます。以下に示すのは、Internet Explorer 内で使用されるさまざまなプラットフォーム用の userAgent 文字列の例です。この表では、IE は Internet Explorer を表します。

プラットフォームとブラウザ 

JavaScript の Navigator.userAgent 文字列

Windows 2000 と IE 5.0 

"Mozilla/4.0 (compatible; MSIE 5.01; Window NT5.0) 

Windows NT 4.0 と IE 4.0 

"Mozilla/4.0 (compatible; MSIE 4.0; Windows NT)" “ 

Windows 95 と IE 4.0 

"Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)“ 

Windows NT 3.51 と IE 4.0 

"Mozilla/4.0 (compatible; MSIE 4.0; Windows 3.1)“ 

Windows 3.1 と IE 4.0 

"Mozilla/4.0 (compatible; MSIE 4.0; Windows 3.1)“ 

Windows NT 4.0 と Navigator 4.04 

Mozilla/4.04 [en] (WinNT; I) I)“ 

Windows NT 3.51 と Navigator 4.04 

Mozilla/4.04 [en] (WinNT; I) I)“ 

Windows 95 と Navigator 4.03 

Mozilla/4.03 [en] (Win95; I) I)“ 

Solaris 2.6 と Navigator 4.02 

"Mozilla/4.02 [en] (X11; l; SunOS 5.6 sun4u) 

どの場合でも、Internet Explorer 内の文字列 userAgent に、部分文字列 "MSIE" が常に含まれます。また、Windows 3.1 および Windows 3.51 で稼働する Internet Explorer は 16 ビットであるため、これらのプラットフォーム上の Internet Explorer の userAgent 文字列には、部分文字列 "Windows 3.1" が含まれます。Internet Explorer 4 は Macintosh および Solaris オペレーティング環境でも利用可能であるため、これらのバージョンでは userAgent 文字列に部分文字列 "Win" は含まれません。また、Windows CE 上の Internet Explorer は JavaScript をサポートしません。これらをまとめると、次のようになります。

userAgent 文字列/ブラウザ

“MSIE” を含む 

“Win” を含む 

“Windows 3.1” を含まない 

Windows 3.1 と IE 4 

 

Windows NT 3.51 と IE 4 

 

Windows 95 と IE 4 

Windows NT 4.0 と IE 4 

Windows CE と IE 

 

 

 

Mac と IE 

 

UNIX と IE 

 

任意のプラットフォームのほかのブラウザ 

 

 

上の表から、Windows 95 および Windows NT 4.0 で稼働する Internet Explorer だけが Java Plug-in のブラウザおよびプラットフォーム要件を満たすことがわかります。ただし、ここでは、今後の Internet Explorer のリリースや Internet Explorer を搭載する Microsoft Windows のリリースのことは考慮に入れていません。userAgent 文字列に "MSIE" および "Win" が含まれる限り、上記のコードはWin32 用 Internet Explorer の将来のリリースで動作するはずです。

このロジックをまとめると、次のようになります。


<SCRIPT LANGUAGE="JavaScript">
          var _info = navigator.userAgent;
          var _ie = (_info.indexOf("MSIE")> 0 && _info.indexOf("Win")> 0
                  && _info.indexOf("Windows 3.1") < 0);
//--></SCRIPT>

Navigator が動作しているプラットフォームが適切であることを検出するのは、もっと難しい問題です。JavaScript を使用するだけでは、ブラウザが稼働しているオペレーティングプラットフォームが、Windows NT 3.51 と Windows NT 4.0 のどちらかなのかを判別することはできません。(上記の表を参照して、文字列 userAgent を確認してください。Navigator ブラウザでは、Windows NT 3.51 と Windows NT 4.0 オペレーティングプラットフォームの文字列 userAgent が同じになります。)Java Plug-in は Windows NT 4.0 オペレーティングプラットフォームだけをサポートするため、この違いを識別することは重要です。適切なプラットフォームで Java Plug-in を実行するには、Netscape Navigator ブラウザで LiveConnect を使用して OS のバージョン番号を判別する必要があります。これらをまとめると、次のようになります。

ロジック検査/ブラウザ 

appName に “Netscape” を含む 

userAgent に "Win" あり 

userAgent に "Win16" を含まない 

os.version に "3.5" を含まない 

userAgent に "Sun" を含む 

Windows 3.1 と Netscape 4 

 

 

Windows NT 3.51 と Netscape 4 

 

 

Windows 95 と Netscape 4 

 

Windows NT 4.0 と NS 4 

 

Solaris と NS 

 

 

 

Solaris と IE 

 

 

 

 

ほかのプラットフォームの Netscape 

O  

 

OS に依存 

 

ほかのプラットフォームの IE 

 

 

 

任意のプラットフォームのほかのブラウザ 

 

 

 

 

 

上記のロジックは、次のコードで表されます。


<SCRIPT LANGUAGE="JavaScript">
         var _info = navigator.userAgent; var _ns = false;
//--></SCRIPT>
<COMMENT><SCRIPT LANGUAGE="JavaScript1.1">
    var _ns = (navigator.appName.indexOf("Netscape")>= 0
        && ((_info.indexOf("Win")> 0  && _info.indexOf("Win16") < 0
        && java.lang.System.getProperty("os.version").indexOf("3.5") < 0)
        || _info.indexOf("Sun")> 0));
//--></SCRIPT></COMMENT>

上記の表で、すべての条件を満たすのは Windows 95、Windows NT 4.0、および Solaris オペレーティング環境の Netscape Navigator ブラウザだけであることに注目してください。LiveConnect を使用して OS のバージョン番号を取得しますが、LiveConnect は Netscape Navigator ブラウザだけがサポートしているため、Internet Explorer では LiveConnect を使用する JavaScript は認識されません。このことで問題が発生するのを防ぐため、スクリプトのこの部分を Internet Explorer 固有のコメントタグである COMMENT タグで囲む必要があります。Internet Explorer は COMMENT タグ内のテキストを無視しますが、Netscape Navigator は無視しません。さらに、ブラウザが Netscape Navigator 2 の場合には、スクリプト言語を JavaScript1.1 と指定することにより、このテキストが無視されるようにする必要があります。

ここで、Internet Explorer と Netscape Navigator に対応した上記のロジックをまとめると、次のようなスクリプトになります。


<!-- The following code is specified at the beginning of the <BODY> tag. -->
<SCRIPT LANGUAGE="JavaScript"><!--
    var _info = navigator.userAgent; var _ns = false;
    var _ie = (_info.indexOf("MSIE")> 0 && _info.indexOf("Win")> 0
                 && _info.indexOf("Windows 3.1") < 0);
//--></SCRIPT>
<COMMENT><SCRIPT LANGUAGE="JavaScript1.1"><!--
    var _ns = (navigator.appName.indexOf("Netscape")>= 0
        && ((_info.indexOf("Win")> 0 && _info.indexOf("Win16") < 0
        && java.lang.System.getProperty("os.version").indexOf("3.5") < 0
        || _info.indexOf("Sun")> 0));
//--></SCRIPT></COMMENT>

この JavaScript ブロックは、HTML ファイルの <BODY> 部の先頭に配置する必要があります。先頭に配置することにより、ほかの JavaScript が変数 _ie および _ns を参照できるようになります。この JavaScript はどの HTML ファイルでも同一であり、各 HTML 本体に一度だけ指定します。

HTML タグの第 2 ブロックは、APPLET タグ内のデータからマッピングされた、対応する OBJECT タグおよび EMBED タグです。ブラウザが Windows 95、Windows 98、または Windows NT 4.0 オペレーティング環境で稼働する Internet Explorer の場合、JavaScript は OBJECT タグを出力します。ブラウザが Windows 95、Windows 98、Windows NT 4.0、または Solaris オペレーティング環境で稼働する Netscape Navigator 4 ブラウザの場合、JavaScript は (構文は多少異なりますが) EMBED タグも出力します。ブラウザおよびプラットフォームの検出機構は、すでに説明したとおりです。(<!— タグおよび –> タグは HTML 内でコメントの記述に使用されます。)

元の APPLET タグ


<APPLET code="XYZApp.class" codebase="html/" align="baseline"
          width="200" height="200">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
          No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET>

新しい書式のタグ


<SCRIPT LANGUAGE="JavaScript"><!--
if (_ie == true) document.writeln('<OBJECT
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/jpi/jinstall-14-win32.cab#Version=1,4,0,mn">
<NOEMBED><XMP> ');
    else if (_ns == true) document.writeln('<EMBED
    type="application/x-java-applet;version=1.4" width="200" height="200"
      align="baseline" code="XYZApp.class" codebase="html/"
      model="models/HyaluronicAcid.xyz"
      pluginspage="http://java.sun.com/jpi/plugin-install.html"> 
<NOEMBED><XMP>');
//--></SCRIPT>
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
          width="200" height="200"></XMP>
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
          LUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
          No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED> </OBJECT>

新しい Java Plug-in タグでは、元の APPLET タグもマッピングされていることに注目してください。これは、サポートされるプラットフォームでのみ Java Plug-in を使用するためです。スクリプト内に APPLET タグを残しておくことにより、Java Plug-in をサポートしないブラウザや、JavaScript をサポートしないブラウザがデフォルトの JVM を使用するアプレットを適切に処理できます。Java Plug-in をサポートしないプラットフォームの HotJava Browser、Internet Explorer、および Netscape Navigator ブラウザ、または JavaScript をサポートしないブラウザは、上述のタグを次のように読み取ります。


<APPLET code="XYZApp.class" codebase="html/" align="baseline"
          width="200" height="200"></XMP>
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PPARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
         No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
</APPLET></NOEMBED></EMBED></OBJECT>

これらのブラウザは、</XMP> </OBJECT></EMBED>、および </NOEMBED> タグも無視します。これは、対応する <XMP><OBJECT><EMBED>、および <NOEMBED> タグが存在しないためです。Java Plug-in は、Java 2 SDK, Standard Edition v 1.4 以降のリリースの機能を対象にして設計されています。そのため、Java 2 SDK 1.4 を完全にはサポートせず、Java Plug-in をサポートしないこれらのブラウザでは、「No Java 2 SDK, Standard Edition v 1.4 support for APPLET」というメッセージが表示されます。

これまで示した例とは異なり、マッピングされたパラメータ 名には、codecodebase、および type ではなく、 java_codejava_codebase、および java_type が含まれます。これが必要なのは、<APPLET> タグと </APPLET> タグの間の <PARAM> 内で code および codebase を指定すると、一部のブラウザで問題が発生するためです。

Windows 95、Windows 98、または Windows NT 4.0 で稼働する Internet Explorer は、タグを次のように読み取ります。


<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/jpi/jinstall-14-win32.cab#Version=1,4,0,mn">
<NOEMBED><XMP>
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
          width="200" height="200"></XMP>
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="scriptable" VALUE="true">
          No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED>
</OBJECT>

<XMP> タグを使用する場合には注意が必要です。Internet Explorer は <OBJECT> タグを認識するため、<APPLET> タグを無効にする必要があります。無効にしない場合、2 つのアプレットがブラウザ内で同時に表示されます。1 つは Microsoft の JVM で動作し、もう 1 つは Java Plug-in を使用する Sun の JVM で動作します。<XMP> タグを使用することで、この問題を解決できます。<XMP> および </XMP> タグの基本動作は、その間に記述されたすべての HTML タグを静的テキストのストリームに変換することです。上の例では、<XMP> および </XMP> タグを指定することにより、ブラウザが <APPLET> タグを HTML タグとしてではなく静的テキストとして処理します。ブラウザは <OBJECT> タグと <PARAM> タグの間の静的テキストをすべて無視するため、上のタグは実質的に次のようになります。


<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/jpi/jinstall-14-win32.cab#Version=1,4,0,mn">
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
   No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</OBJECT>

これは、上に示した OBJECT タグの例と同じになります。<OBJECT> タグは <NOEMBED></NOEMBED>、および <EMBED> タグを無視することに注意してください。

Windows 95、Windows 98、または Windows NT 4.0 オペレーティング環境で動作する Netscape Navigator 4 は、タグを次のように読み取ります。


<EMBED type="application/x-java-applet;jpi-version=1.4" 
         width="200" height="200"
         align="baseline" code="XYZApp.class" codebase="html/"
         model="models/HyaluronicAcid.xyz"
         pluginspage="http://java.sun.com/jpi/plugin-install.html">
<NOEMBED><XMP>
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
         width="200" height="200"></XMP>
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
         No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED></OBJECT>

ここでも、<EMBED> タグの内部で <XMP> タグが使用されているため、<APPLET> タグが無効にされています。<EMBED> タグは <PARAM> タグおよび </OBJECT> タグも無視します。このため、上のタグは実質的に次のようになります。


<EMBED type="application/x-java-applet;jpi-version=1.4" 
         width="200" height="200"
         align="baseline" code="XYZApp.class" codebase="html/"
         model="models/HyaluronicAcid.xyz"
         pluginspage="http://java.sun.com/jpi/plugin-install.html">
<NOEMBED>
        No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</NOEMBED>
</EMBED>

これは、上述の EMBED タグの例と同じになります。

OBJECT-EMBED-JavaScript の複合タグを使用して、適切なプラットフォームの適切なブラウザで Java Plug-in を起動することができます。この複合タグは複雑なため、異機種混在環境で HTML ページを表示する場合にのみ使用してください。

まとめ

このマニュアルでは、Java Plug-in が利用するOBJECT タグおよび EMBED タグの指定方法について説明しています。マニュアル内では、特に APPLET タグから OBJECT タグおよび EMBED タグへの変換に焦点を合わせています。現在のところ、HTML 4.0 では、HTML ページに Java アプレットおよび JavaBeans コンポーネントを挿入する最善の方法として、OBJECT タグの使用が勧められています。OBJECT タグを Java Plug-in のタグ書式に変換する必要が生じた場合には、このマニュアルの内容は更新される予定です。このマニュアルで公開した情報は、HTML 移行ツールを作成する ISV、および Java Plug-in への移行を行う Web ページの作成者を支援するためのものです。このマニュアルで説明されているタグの書式は、将来変更される可能性があります。

Java Plug-in の使用は、このマニュアルに示したタグの書式だけに限定されるものではありません。実際のところ、Web ページの作成者には、必要に応じてタグの書式を変更したり、JavaScript とタグを連携させて使用することが勧められています。Internet Explorer で OBJECT タグが使用され、Netscape Navigator ブラウザで EMBED タグが使用されている限り、Java Plug-in の実行に問題はありません。現在、いくつかの変換テンプレートが Java Plug-in HTML Converter に添付されています。Web ページの作成者の皆さんには、ニーズに合ったテンプレートを選択し、必要に応じてテンプレートを変更して使用することをお勧めします。