Java Plug-in での OBJECTEMBED、および APPLET タグの使用


 

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

はじめに

このドキュメントでは、Java Plug-in に必要な、OBJECT および EMBED タグを含むタグ構造について説明します。対象読者として、HTML ページに Java Plug-in タグを手動で挿入する Web ページ作成者を想定しています。

 

説明

  1. Sun Microsystems から無料で入手可能な HTML コンバータでは、タグ構造を自動的に生成できます。Web ページ作成者の方には、このツールを利用することを強くお勧めします。
  2. このコンバータを使用すると、ページを下記のどの形式にも変換できます。
  3. 後述のように、.cab ファイルを介して自動的にダウンロードできる JRE リリースの一覧については、「自動ダウンロードファイル (Windows のみ)」を参照してください。

通常、アプレットは、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.2 support for APPLET!!
</APPLET>

また、通常、APPLET タグには、アプレットに関する情報を指定します。<APPLET></APPLET> タグの間に配置される <PARAM> タグには、インスタンスごとのアプレット情報を格納します。

APPLET はブラウザにより描画されますが、ブラウザに割り込みを行い、Sun の Java Runtime Environment (JRE) を使用したアプレットの実行を強制する、簡単な方法はありません。ブラウザにこの動作を実行させるには、HTML ページで、通常の APPLET タグの代わりに、OBJECTEMBED タグのいずれかまたは両方を含む、Java Plug-in の特別なタグ構造を使用します。これにより、ブラウザが Java Plug-in を起動させ、Sun の JRE を使用してアプレットが実行されます。

次のセクションでは、特定のブラウザとプラットフォームを組み合わせた環境で行う操作を細かく説明します。

バージョン番号に関する注記

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

n1.n2.n3_n4n5

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

以降の例では、バージョン番号のメジャーリリースとして 1.4 を、マイナーリリース番号として 2 を、仮想のパッチ番号として mn を使用します。仮想の値を実際の Web ページの HTML に書き込まないでください。

Windows 上の IE で動作する Java Plug-in

Windows 上の IE で 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.2 support for APPLET!!
</APPLET>

新規 OBJECT タグ:

<OBJECT classid="clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA"
    width="200" height="200" align="baseline" 
    codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i586.cab#Version=1,4,2,0">
    <PARAM name="code" value="XYZApp.class">
    <PARAM name="codebase" value="html/">
    <PARAM name="type" value="application/x-java-applet;jpi-version=1.4.2">
    <PARAM name="model" value="models/HyaluronicAcid.xyz">
    <PARAM name="scriptable" value="true">
        No Java 2 SDK, Standard Edition v 1.4.2 support for APPLET!!
</OBJECT>

注:

静的バージョン管理の場合は、codebase を次のように設定します。

http://java.sun.com/products/plugin/autodl/<.cab file for the version you want>

たとえば、1.4.2 リリースの静的バージョン管理の場合は (clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA という classid が使用される)、codebase を次のように設定します。

http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-win.cab

.cab ファイルを介して自動的にダウンロードできる JRE リリースの一覧については、「自動ダウンロードファイル (Windows のみ)」を参照してください。

動的バージョン管理の場合は (clsid:8AD9C840-044E-11D1-B3E9-00805F499D93 という classid が使用される)、codebase を次のように設定します。

http://java.sun.com/products/plugin/autodl/jinstall-<major version of family in underscore format>-windows-i586.cab#Version=<full version number for lowest version in family in comma-separated format>

どのバージョンの Java もインストールされていない場合や、ファミリのメジャーバージョン番号より小さいバージョンがインストールされている場合は、ファミリの最新バージョンに対応する最新の .cab に自動的にリダイレクトされます。

たとえば、1.4.2 リリースの場合で、codebase を次のように設定したとします。

http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0

ユーザの環境にバージョン 1.3.1 がインストールされている場合は、1.4 ファミリの最新バージョンがダウンロードされ、インストールされます。ただし、1.4 ファミリのいずれかのバージョンがインストールされている場合はそれが使用されるので、ダウンロードは行われません。

自動ダウンロード用の .cab ファイルは、パッチのリリースに伴って変更される可能性があります。codebase の解釈に関する詳細は、以下を参照してください。

OBJECT タグには、APPLET タグと同様の情報が含まれることに留意してください。IE で Java Plug-in を起動するには、これで十分です。OBJECT タグの classid は、Java Plug-in 自体のクラス識別子です。IE が OBJECT タグ内でこのクラス識別子を描画するとき、ブラウザ内への Java Plug-in のロードを試みます。バージョン管理に関する情報は、後述の「classid 属性」を参照してください。

widthheight、および align など、OBJECT タグ内のいくつかの属性は、APPLET タグ内の対応する属性から直接マッピングされます。IE は、これらに含まれるフォーマット情報を利用して、Java Plug-in の位置を設定します。この情報は変更されることなく直接マッピングされるため、Java Plug-in を使用するアプレットの位置および外観は、APPLET タグを使用するアプレットと同じになります。

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

注:

Java Plug-in の OBJECT タグでは、重複するパラメータ名の使用は禁止されています。

ただし、codebase 属性は例外です。APPLET タグでは、codebase 属性は、追加のクラスファイルおよび JAR ファイルのダウンロード元の位置を表します。一方、OBJECT タグでは、codebase 属性は、ローカルマシンに Java Plug-in が見つからない場合の Java Plug-in のダウンロード元の位置を表します。codebase 属性は APPLET タグと OBJECT タグとで異なる意味を持っています。したがって、競合を回避するために、APPLET タグ内の codebase 属性は、OBJECT タグ内の PARAM codebase にマッピングされます。

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

Java Plug-in 1.3 では、PARAM scriptable が新たに追加されました (1.4.x でも有効)。これが追加された理由は、JavaScript や VBScript を必要としないアプレットのパフォーマンスを向上させるためです。アプレットがスクリプティングサポートを必要とする場合は true に、必要としない場合は false に値を設定する必要があります。デフォルト値は false です。

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

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

APPLET タグから OBJECT タグへの属性のマッピングは次のとおりです。

属性名 APPLET タグのサポート OBJECT タグのサポート OBJECT タグへの属性マッピング
align 0 0 OBJECTalign 属性
alt 0    
archive 0   PARAM 要素の archive
code 0 0 PARAM 要素の code
codebase 0 0 PARAM 要素の codebase
height 0 0 OBJECTheight 属性
hspace 0 0 OBJECThspace 属性
name 0 0

OBJECTname 属性、PARAM 要素の name

この場合は例外です。元の APPLET 要素の name 属性は、OBJECT 要素と、入れ子にされた PARAM の両方で、name 属性にマッピングされる必要があります。元のアプレットが次のようなものであると仮定します。

<APPLET name="clock" ...>
</APPLET>

この場合、マッピングは次のようになります。

<OBJECT name="clock" ...>
<PARAM name="name" value="clock">
</OBJECT>

object 0   PARAM 要素の object
title 0 0 OBJECTtitle 属性
vspace 0 0 OBJECTvspace 属性
width 0 0 OBJECTwidth 属性
mayscript 0   PARAM 要素の mayscript

OBJECT の属性と、入れ子にされた PARAM 要素には、OBJECT タグに固有のものもあります。これらは次のとおりです。

属性/PARAM OBJECT タグ内の意味
classid 属性

動的バージョンのサポートの場合は、同じ値 (clsid:8AD9C840-044E-11D1-B3E9-00805F499D93 など) を保持する必要があります。静的バージョンのサポートの場合は、バージョン固有の値 (clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA など) が保持されます。

静的バージョン管理と動的バージョン管理の対比については、「Encountering OBJECT, EMBED, and APPLET Tags With Different Plug-in Versions and Browsers」を参照してください。

注: 上記の例では、静的バージョン管理が使用されています。

codebase 属性

ネットワーク上の .cab ファイルを指し示す完全な URL を指定する必要があります。この属性の目的は、ユーザのコンピュータに Plug-in がまったくインストールされていない場合や、インストールされている Plug-in のバージョンが適切でない場合に、Plug-in のダウンロードとインストールを可能にすることです。デフォルトでは、URL は Java ソフトウェア Web サイト上のページを指し示します。

例:

上記の例で、codebase は次のとおりです。

codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i586.cab#Version=1,4,2,0"

ただし、これは静的バージョン管理の場合の例です。また、.cab ファイルのあとに付加されたバージョン番号は、ユーザのコンピュータにバージョン 1.4.2 の Plug-in がインストールされている必要があることを示しています。この条件が満たされていない場合は、ダウンロードとインストールが試みられます。

動的バージョン管理の場合は、codebase は次のようになります。

codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0"

末尾に付加されたバージョン番号は、ユーザのコンピュータにバージョン 1.4.0 以降の Plug-in がインストールされている場合、ダウンロードは行われないことを示しています。つまり、1.4 ファミリ (メジャーバージョン 1.4) の Plug-in がインストールされていれば、それが実行されます。これより前のバージョンがインストールされている場合は、.cab ファイルを介して新しいバージョンのダウンロードとインストールが試みられます。

PARAM 要素の type

type パラメータの value は次のようになります。

"application/x-java-<object_type>;<version_type>=<implementation_version>"

この例では、

object_typeapplet または bean です。

version_type は、静的バージョン管理の場合は jpi-version、動的バージョン管理の場合は version です。

implementation_version は Implementation-Version です。これは、「付録 6: Sun のサポートする Specification-Version および Implemenation-Version の形式」で定義されています。

静的バージョン管理と動的バージョン管理の対比については、「Encountering OBJECT, EMBED, and APPLET Tags With Different Plug-in Versions and Browsers」を参照してください。

例:

Plug-in のバージョンが 1.4.1、パッチリリースが 02 の静的バージョン管理のために配備されるアプレットの場合は、typevalue は次のようになります。

"application/x-java-applet;jpi-version=1.4.1_02"

Plug-in のバージョンが 1.4.1、パッチリリースが 03 の動的バージョン管理のために配備される Bean の場合は、typevalue は次のようになります。

"application/x-java-bean;version=1.4"

これは、動的バージョン管理の場合はメジャーバージョン番号だけがチェックされるためです。つまり、そのメジャーバージョンのファミリに属する Plug-in がインストールされている場合、ダウンロードは不要です。

PARAM 要素の codebase アプレットのベース URL を指定します。相対 URL または絶対 URL を指定できますが、現在のドキュメントと同じドメイン内にあることが必要です。この PARAM 要素が必要になるのは、ドキュメントとは異なるディレクトリにアプレットが置かれている場合だけです。
PARAM 要素の code Java アプレットまたは JavaBeans コンポーネントの名前を指定します。同じ OBJECT タグ内に、入れ子にされた PARAM 要素の object がある場合は、併用することはできません。
PARAM 要素の scriptable JavaScript または VBScript を使用して、HTML ページからアプレットをスクリプト記述可能かどうかを指定します。値には、true または false を指定できます。これは、Java Plug-in 1.4 で新たに追加された属性です。
PARAM 要素の object 直列化された Java アプレットまたは JavaBeans コンポーネントの名前を指定します。同じ OBJECT タグ内に、入れ子にされた PARAM 要素の code がある場合は、併用することはできません。この属性は省略可能です。
PARAM 要素の archive Java Archive の名前を指定します。この属性は省略可能です。
PARAM 要素の mayscript netscape.javascript.JSObject へのアクセスをアプレットに許可するかどうかを指定します。値には、true または false を指定できます。この属性は省略可能です。

元の APPLET 要素に typecodebasecodeobject、または archive 属性が使用されている場合で、入れ子にされた PARAM 要素にも typecodebasecodeobject、または archive 属性が使用されているときは、APPELET から PARAM への直接の属性マッピングに問題が発生します。これは、複数の PARAM 要素で name 属性が重複するためです。次に例を示します。

元のアプレットが次のようなものであると仮定します。

<APPLET codebase = "a/b/c ...>
<PARAM name="codebase" value="my.jar">
</APPLET>

この場合、直接マッピングは次のようになります。

<OBJECT ...>
<PARAM name="codebase" value="a/b/c">
<PARAM name="codebase" value="my.jar">
</OBJECT>

この問題を回避するには、元のアプレットの APPLET に、その属性と同じ PARAM 要素が含まれている場合は、次のようにマッピングする必要があります。

APPLET 要素内の元の属性 OBJECT 要素の PARAM の新しい属性
code java_code
codebase java_codebase
archive java_archive
object java_object
type java_type

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

元のアプレットが次のようなものであると仮定します。

<APPLET codebase = "a/b/c ...>
<PARAM name="codebase" value="my.jar">
</APPLET>

この場合、マッピングは次のようになります。

<OBJECT ...>
<PARAM name="java_codebase" value="a/b/c">
<PARAM name="codebase" value="my.jar">
</OBJECT>

Windows または SolarisTM オペレーティング環境の Netscape Navigator で動作する Java Plug-in

Windows または Solaris オペレーティング環境の Netscape Navigator 4.x で 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.1 support for APPLET!!
</APPLET>

新規 EMBED タグ:

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

EMBED タグには APPLET タグと同様の情報が含まれます。Navigator で Java Plug-in を起動するには、この情報で十分です。EMBED タグの type 属性は、Java 実行可能ファイルのタイプ (アプレットや Bean など) の識別に使用します。Navigator が EMBED タグ内で属性を描画する際、ブラウザ内への Java Plug-in のロードを試みます。バージョン番号も付加されます。ユーザのコンピュータにインストールされているバージョンとこの番号が比較され、別のバージョンのインストールが必要かどうかが判断されます。この詳細については、下記の 2 番目の表で説明します。

上の例では、EMBED タグ内の widthheight、および align などの属性は、APPLET タグ内の対応する属性から直接マッピングされます。Navigator は、これらに含まれるフォーマット情報を利用して、Java Plug-in の位置を設定します。この情報は変更されることなく直接マッピングされるため、Java Plug-in を使用するアプレットの位置および外観は、APPLET タグを使用するアプレットと同じになります。

OBJECT タグとは異なり、すべての情報を <EMBED> タグの内部に格納する必要があります。EMBED タグでは PARAM 要素は使用されません。したがって、APPLET の属性および関連する PARAM 要素はすべて、EMBED タグの内部に属性として name="value" ペアの形式でマッピングする必要があります。

上の例では、 APPLET タグの code および codebase 属性は、EMBED タグ属性にマッピングされます。code 属性は、アプレットを識別します。この属性の値は、APPLET タグの code 属性と同じにする必要があります。codebase 属性は、アプレットのコードベースを識別します。Java Plug-in は、この情報を属性から読み取ることができるため、アプレットまたは JavaBeans コンポーネントのダウンロード先を認識します。EMBED タグ内の model 属性は、APPLET タグ内に入れ子にされた PARAM 要素の model からマッピングされます。

OBJECT タグの codebase 属性と同様、ユーザのコンピュータに Java Plug-in がインストールされていない場合や、インストールされている Java Plug-in のバージョンが適切でない場合には、EMBED タグの pluginspage 属性が Navigator により使用されます。ここでは Java ソフトウェア Web サイト上の Java Plug-in ダウンロードページを指します。あるいは、イントラネットでの配備の場合は、イントラネット上の Java Plug-in のダウンロードページを指すようにします。

APPLET タグ内のテキスト「No Java 2 SDK, Standard Edition v 1.4.1 support for APPLET!!」は、<NOEMBED> タグと </NOEMBED> タグの内部にマッピングされます。従来の APPLET タグでは、ブラウザが Java の内部サポートを持っていない場合のみ、このテキストが表示されます。このテキストは NOEMBED タグ内部にマッピングされるため、ブラウザが EMBED タグをサポートしていない場合や、Navigator が Java Plug-in の起動に失敗した場合に表示されます。

APPLET タグから EMBED タグへの属性のマッピングは次のとおりです。

属性
APPLET タグのサポート
EMBED タグのサポート
EMBED タグへの属性マッピング

align

0 0 align 属性
alt 0 0 alt 属性
archive 0   archive 属性
code 0   code 属性
codebase 0   codebase 属性
height 0 0 height 属性
hspace 0 0 hspace 属性
name 0 0 name 属性
object 0   object 属性
title 0 0 title 属性
vspace 0 0 vspace 属性
width 0 0 width 属性
mayscript 0   mayscript 属性

EMBED タグ独自の属性もあります。これらの属性を次に示します。

属性
EMBED タグ内の意味
type 属性

type は次のようになります。

"application/x-java-<object_type>;<version_type>=<implementation_version>"

この例では、

object_typeapplet または bean です。

version_type は、静的バージョン管理の場合は jpi-version、動的バージョン管理の場合は version です。

implementation_version は Implementation-Version です。これは、「付録 6: Sun のサポートする Specification-Version および Implemenation-Version の形式」で定義されています。

静的バージョン管理と動的バージョン管理の対比については、「Encountering OBJECT, EMBED, and APPLET Tags With Different Plug-in Versions and Browsers」を参照してください。

例:

Plug-in のバージョンが 1.4.1、パッチリリースが 02 のとき、静的バージョン管理のために配備されるアプレットの場合は、type は次のようになります。

"application/x-java-applet;jpi-version=1.4.1_02"

Plug-in のバージョンが 1.4.1、パッチリリースが 03 のとき、動的バージョン管理のために配備される Bean の場合は、type は次のようになります。

"application/x-java-bean;version=1.4"

これは、動的バージョン管理の場合はメジャーバージョン番号だけがチェックされるためです。つまり、そのメジャーバージョンのファミリに属する Plug-in がインストールされている場合、ダウンロードは不要です。

codebase 属性 アプレットまたは JavaBeans コンポーネントのベース URL を指定します。相対 URL または絶対 URL を指定できますが、現在のドキュメントと同じドメイン内にあることが必要です。この属性が必要になるのは、ドキュメントとは異なるディレクトリにアプレットが置かれている場合だけです。
code 属性 Java アプレットまたは JavaBeans コンポーネントの名前を指定します。同じ EMBED タグ内のパラメータ object と併用することはできません。
object 属性 直列化された Java アプレットまたは JavaBeans コンポーネントの名前を指定します。同じ EMBED タグ内の code 属性と併用することはできません。この属性は省略可能です。
archive 属性 Java Archive の名前を指定します。この属性は省略可能です。
pluginspage 属性 Java Plug-in をダウンロードするための HTML ページを指す、完全な URL を指定します。ユーザのコンピュータに Plug-in がまったくインストールされていない場合や、インストールされている Plug-in のバージョンが type 属性で指定されているものと異なっている場合は、このページが表示されます。
mayscript 属性 netscape.javascript.JSObject へのアクセスをアプレットに許可するかどうかを指定します。値には、true または false を指定できます。この属性は省略可能です。

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

OBJECT 要素の場合と同様に、元の APPLET 要素に typecodebasecodeobject、または archive 属性が使用されている場合で、入れ子にされた PARAM 要素にも typecodebasecodeobject、または archive 属性が使用されているときは、APPELET から EMBED への直接の属性マッピングに問題が発生します。この問題を回避するために、Java Plug-in では、EMBED タグの新規属性名のセットも、下記のようにサポートされています。

元の属性名
新規属性名
code java_code
codebase java_codebase
archive java_archive
object java_object
type java_type

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

IE および Navigator で動作する Java Plug-in

アプレット持つ Web ページでは、前述のような新しい OBJECT 要素の方式により、Java Plug-in を Internet Explorer で使用できるようになります。また、新しい EMBED 要素の方式により、Java Plug-in を Netscape で使用できるようになります。ただし、Web ページが両方のブラウザで表示される場合には変更が必要になります。つまり、Internet Explore で表示される場合には OBJECT 方式を使用し、Netscape で表示される場合には 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 Editoin v 1.4 support for APPLET!!
</APPLET>

入れ子にされた EMBED 要素を持つ新しい OBJECT 要素:

<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
    width="200" height="200" align="baseline"
    codebase="http://java.sun.com/products/plugin/1.4/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/products/plugin/1.4/plugin-install.html">
            <NOEMBED>
                No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
            </NOEMBED>
        </EMBED>
    </COMMENT>
</OBJECT>

IE は <OBJECT> タグを認識するため、Java Plug-in の起動を試みます。<COMMENT> タグは、IE だけが理解する特殊な HTML タグであることに留意してください。IE は、<COMMENT></COMMENT> タグの間のテキストを無視します。実際のところ、上記のタグは次のようになります。

<COMMENT> は IE 固有の要素です。IE では、<COMMENT></COMMENT> の間にあるテキストは無視されます。したがって、上記の構造は、IE では次のように読み取られます。

<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
    width="200" height="200" align="baseline"
    codebase="http://java.sun.com/products/plugin/1.4/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">
</OBJECT>

これは、前述の新しい OBJECT タグの例と同一です。

Navigator では、OBJECT 要素も COMMENT 要素も認識されないので、上記の構造は、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/products/plugin/1.4/plugin-install.html">
    <NOEMBED>
        No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
    </NOEMBED>
</EMBED>

これは、前述の新しい EMBED 要素の例と同一です。

したがって、この新しい要素構造 (入れ子にされた EMBED 要素を持つ OBJECT 要素) を使用することで、IE でも Netcape でも、アプレットの含まれているページに遭遇したときに Java Plug-in を呼び出すことができます。この形式を使用することをお勧めします。

その他の環境での Java Plug-in

警告!

このセクションの内容は古くなっています。今後この内容は更新されます。下記のスクリプトの説明は、HtmlConverter の Extended オプションに対応するものです。今のところ、このオプションは使用しないようにしてください。Standard オプションを使用することをお勧めします。

インターネットまたはイントラネットのほとんどの環境で、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/products/plugin/1.4/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/products/plugin/1.4/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 ドキュメントごとに、この操作を行います。

スクリプトの 2 番目のブロックでは、APPLET タグを置き換えています。各 APPLET タグを、類似のコードブロックで置き換える必要があります。このスクリプトは、APPLET タグを、ブラウザに応じて EMBED タグまたは OBJECT タグに置き換えます。IE には OBJECT タグを、Netscape Navigator には EMBED タグを使用します。最後に、元の APPLET タグが、コメントとして末尾に含まれます。Java Plug-in の呼び出しを削除する場合のことを念頭において、元の APPLET タグを含めておくのは望ましい方法です。

最初の JavaScript により、ブラウザおよびブラウザの稼動するプラットフォームが確立されます。この操作が必要なのは、現在のところ、Java Plug-in は、Windows 95、Windows 98、Windows NT 4.0、および Solaris のみをサポートするためです。Java Plug-in がサポートしない Win32 プラットフォームは、Windows NT 3.51 だけです。Java Plug-in の呼び出しは、サポートされるブラウザおよびプラットフォームでのみ行う必要があります。ブラウザが Internet Explorer の場合、スクリプトにより変数 _ie が true に設定されます。ブラウザが Navigator の場合、変数 _ns が true に設定されます。(JavaScript ではすべての変数名が「_」で始まることに注目してください。これは、同じページの他の JavaScript 変数と競合することを防ぐためです。)

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

プラットフォームおよびブラウザ 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 NT 4.0 および IE 3.02 "Mozilla/2.0 (compatible; MSIE 3.02; Windows NT)" 
Windows 95 および IE 4.0 "Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)"
Windows 95 および IE 3.02 "Mozilla/2.0 (compatible; MSIE 3.02; 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)"
Windows NT 4.0 および Navigator 3.04 "Mozilla/3.04 (WinNT; I)"
Windows NT 3.51 w/Navigator 4.04 "Mozilla/4.04 [en] (WinNT; I)"
Windows NT 3.51 および Navigator 3.04 "Mozilla/3.04 (WinNT; I)"
Windows 95 および Navigator 4.03 "Mozilla/4.03 [en] (Win95; I)"
Windows 95 および Navigator 3.03 "Mozilla/3.03 (Win95; 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 で稼動する IE では、userAgent 文字列に部分文字列「Windows 3.1」が含まれます。これらのプラットフォームの IE は 16 ビットであるためです。IE 4 は Solaris および Mac でも動作しますが、これらのバージョンでは userAgent 文字列に部分文字列「Win」は含まれません。また、Windows CE で稼動する IE は、JavaScript をサポートしません。これらは、次のようにまとめることができます。

userAgent 文字列/ブラウザ Windows 3.1 上の IE 3/4 Windows NT 3.51 上の IE 3/4 Windows 95 上の IE 3/4 Windows NT 4.0 上の IE 3/4 Windows CE 上の IE Mac 上の IE UNIX 上の IE いずれかのプラットフォームで稼動する他のブラウザ
「MSIE」が含まれている 0 0 0 0   0 0  
「Win」が含まれている 0 0 0 0        
「Windows 3.1」が含まれていない     0 0   0 0 0

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

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

<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 を実行するには、Navigator で LiveConnect を使用して、OS のバージョン番号を判別する必要があります。これらは、次のようにまとめることができます。

テストロジック/ブラウザ Windows 3.1 上の NS 3/4 Windows NT 3.51 上の NS 3/4 Windows 95 上の NS 3/4 Windows NT 4.0 上の NS 3/4 Solaris 上の NS Solaris 上の IE 他のプラットフォーム上の NS 他のプラットフォーム上の IE いずれかのプラットフォームで稼動する他のブラウザ
appName に「Netscape」が含まれている 0 0 0 0 0   0    
userAgent に「Win」が含まれている 0 0 0 0       0  
userAgent に「Win16」が含まれていない   0 0 0     0 0  
os.version に 3.5 を含まない 0   0 0     OS に依存    
userAgent に「Sun」が含まれている         0 0      

上記のロジックをまとめると、次のようなコードになります。

<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 オペレーティング環境で稼動する Navigator だけです。LiveConnect は OS のバージョン番号の取得に使用され、Navigator だけが LiveConnect をサポートするため、LiveConnect にアクセスする JavaScript は IE からは認識されません。これが問題となるのを防ぐには、IE 固有のコメントタグである COMMENT タグを使用して、このスクリプト部を遮断します。IE は COMMENT タグ内のテキストを無視しますが、Navigator は無視しません。また、ブラウザが Navigator 2 の場合、スクリプト言語を JavaScript1.1 と指定してこれを遮断する必要があります。

これまでの IE および 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 本文ごとに 1 回だけ必要になります。

HTML タグの 2 番目のブロックは、対応する OBJECT および EMBED タグです。これらのタグは、APPLET タグ内のデータからマッピングされます。ブラウザが Windows 95、Windows 98、または Windows NT 4.0 オペレーティング環境で稼動する IE の場合、JavaScript は OBJECT タグを出力することに留意してください。ブラウザが Windows 95、Windows 98、Windows NT 4.0、または Solaris オペレーティング環境で稼動する Navigator 3/4 の場合、JavaScript は EMBED タグも (わずかに異なる構文で) 出力します。ブラウザおよびプラットフォームの検出メカニズムは、前述のセクションで解説済みです。(HTML では、コメントに <!-- and --> タグが使用されます。)

元の 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/products/plugin/1.4/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/products/plugin/1.4/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">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> 

元の APPLET タグも、新規 Java Plug-in タグにマッピングされることに留意してください。これは、Java Plug-in を、サポートされるプラットフォームでのみ使用することを意図しているためです。スクリプト内に APPLET タグを残しておくことにより、Java Plug-in をサポートしないブラウザや JavaScript をサポートしないブラウザが、デフォルトの JVM を使用してアプレットを適切に処理できるようになります。Java Plug-in をサポートしないプラットフォームの HotJava ブラウザ、IE、および 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/">
<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> 

これらのブラウザは、対応する <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」というメッセージが表示されます。

前の例とは異なり、マッピングされた PARAM 名には、codecodebasetype の代わりに、java_codejava_codebasejava_type が含まれます。これが必要な理由は、<APPLET></APPLET> タグ内部の <PARAM>code および codebase を指定すると、ブラウザによっては問題が発生するためです。

Windows 上の IE は、タグを次のように読み取ります。

<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
    width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.4/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="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> 

<XMP> タグを使用する場合は、注意が必要です。IE は <OBJECT> タグを描画するため、<APPLET> タグを無効にする必要があります。無効にしない場合、2 つのアプレットがブラウザに同時に表示されます。1 つのアプレットは Microsoft の JVM で、もう 1 つのアプレットは Sun の JVM で Java Plug-in を使用して稼動します。<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/products/plugin/1.4/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;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 タグの例と同一です。<OBJECT> タグでは <NOEMBED></NOEMBED>、および </EMBED> タグが無視されることに注目してください。

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

<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/products/plugin/1.4/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>

<APPLET> タグも無効にするため、<XMP> タグが <EMBED> タグ内で再度使用されている点に注目してください。<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/products/plugin/1.4/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 と組み合わせることが勧められています。このドキュメントで解説した OBJECT タグを IE で、また EMBED タグを Navigator で使用する限り、Java Plug-in の実行には何の問題もありません。現在のところ、Java Plug-in HTML コンバータにはいくつかの変換テンプレートが同梱されています。Web マスターは、その中から自らのニーズに合ったテンプレートを見つけることができます。また、必要に応じてこれらのテンプレートを修正することも勧められています。