applet
、object
、およびembed
タグの使用Java Rich Internet Applicationガイド> アプレット開発者ガイド> applet
、object
およびembed
タグの使用
このセクションでは、applet
、object
およびembed
タグを使用してJavaアプレットをWebページに追加する方法について説明します。また、アプレットをインターネットやイントラネット上に配備したり、各種ブラウザで使用できるように配備したりするためのガイドラインも示します。
次の項目について説明します。
アプレットの配備方法は、ユーザーがWebページにインターネットまたはイントラネットのいずれでアクセスするか、およびユーザーが使用するブラウザのタイプによって異なります。ユーザーに関するこの情報に注意して、次の全般的なガイドラインに従ってください。
アプレットを次のように配備します。
アプレットを次のように配備します。
ブラウザが混在する環境でアプレットを配備する場合は、セクション「ブラウザが混在する環境でのアプレットの配備」のガイドラインに従ってください。
applet
タグの使用appletタグを使用して、マルチブラウザ環境にアプレットを配備します。
applet
タグの詳細は、次を参照してください。
注: HTML仕様では、applet
タグは推奨されておらず、代わりにobject
タグを使用することが推奨されています。ただし、ブラウザがobject
タグを実装してJavaアプレットをサポートする方法に関してこの仕様は明確ではなく、現在のところ一貫性のあるブラウザ・サポートは行われていません。このため、すべてのプラットフォームのブラウザにJavaアプレットを配備するための一貫性のある方法として、applet
タグを継続して使用することをお薦めします。
applet
タグの構文を次に示します。必須属性は太字で示します。オプション属性は普通の書体で示します。ユーザーが指定する値は斜体で示します。
<applet codebase = codebaseURL archive = archiveList code = appletFile ...or... object = serializedApplet alt = alternateText name = appletInstanceName width = pixels height = pixels align = alignment vspace = pixels hspace = pixels legacy_lifecycle = boolean > <param name = appletAttribute1 value = value1> <param name = appletAttribute2 value = value2> ... alternateHTML </applet>
code
、codebase
などはappletタグの属性であり、アプレットに関する情報をブラウザに伝えます。必須属性は、code
、width
およびheight
のみです。各属性について、次に説明します。
codebase = codebaseURL
archive = archiveList
codebase
でAppletClassLoader
のインスタンスを使用してロードされます。archiveList
内のアーカイブはカンマ(,
)で区切ります。注: JDK 1.1では、同じcodebase
を持つ複数のapplet
タグで同じClassLoader
インスタンスを共有します。クライアント・コードには、この方法を使用してアプレット間通信を実装するものがあります。将来のJDKでは、アプレット間通信の別のメカニズムが提供される可能性があります。セキュリティ上の理由から、アプレットのクラス・ローダーは、そのアプレットが起動されたのと同じコード・ベースからしか読み取ることができません。これは、archiveList内のアーカイブがコード・ベースと同じディレクトリか、コード・ベースのサブディレクトリ内になければならないことを意味します。../a/b.jarという形式のarchiveList内のエントリは、セキュリティ・ポリシー・ファイル内で明示的に許可されていないかぎり、機能しません(HTTPコード・ベースの場合は例外で、archiveList内のアーカイブはコード・ベースと同じホストのものでなくてはならないが、パスに親ディレクトリのシンボル(..
)が含まれていても構わない)。code = appletFile
Applet
サブクラスを含んでいるファイルの名前を示します。このファイル名は、アプレットのベースURLからの相対パスで指定します。絶対パスでは指定できません。code
かobject
のいずれかが存在している必要があります。appletFile
値の形式は、classname.class
またはpackagename.classname.class
にできます。object = serializedApplet
init()
メソッドは呼び出されませんが、そのstart()
メソッドは呼び出されます。元のオブジェクトの直列化時に有効だった属性は復元されません。このapplet
インスタンスに渡された属性はすべてそのアプレットで利用できるようになります。この機能の使用には強い制限をかけることをお薦めします。アプレットは、直列化する前に停止する必要があります。code
かobject
のいずれかが存在している必要があります。alt = alternateText
applet
タグを理解できるが、Javaアプレットを実行できない場合に表示されるべきテキストを示します。name = appletInstanceName
width = pixels
height = pixels
align = alignment
img
タグと同じで、left
、right
、top
、texttop
、middle
、absmiddle
、baseline
、bottom
およびabsbottom
です。vspace = pixels
hspace = pixels
vspace
)および左右(hspace
)のピクセル数を示します。img
タグのvspace
およびhspace
属性と同様に扱われます。legacy_lifecycle = boolean
true
に設定されている場合、ユーザーが他のページに移動しても実行中のアプレットは破棄されません。さらに、ユーザーが元のページに戻ると、次が発生しないかぎり、実行中のアプレットが再開します。
<param name = appletAttribute1 value = value1>
<param name = appletAttribute2 value = value2> ...
getParameter()
メソッドを使用してその属性にアクセスします。object
タグの使用object
タグを使用して、Internet Explorerでのみ使用されるアプレットを配備します。object
タグの詳細は、「W3 HTML specification」を参照してください。object
タグの例を次に示します。
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="200" height="200"> <PARAM name="code" value="Applet1.class"> </OBJECT>
classid
属性は、使用するJava Plug-inの最小バージョンを識別します。
次に示す例は、classid
属性のもっとも一般的に使用される形式です。この例では、インストールされているもっとも上位のバージョンのJava Plug-inを使用するようにInternet Explorerに指示します。
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
classid
属性の別の形式を次に示します。
classid="clsid:CAFEEFAC-xxxx-yyyy-zzzz-ABCDEFFEDCBA"
この形式では、「xxxx」、「yyyy」、および「zzzz」は、使用するJava Plug-inの最小バージョンを識別する4桁の数字です。たとえば、Java Plug-inバージョン1.8
を使用するには、次のように指定します。
classid="clsid:CAFEEFAC-0018-0000-0000-ABCDEFFEDCBA"
classid
属性の詳細は、「Deploying Java Applets With Family JRE Versions in Java Plug-in for Internet Explorer」を参照してください。
オプションのcodebase
属性を使用して、JREをダウンロードするかどうか、およびその方法を指定します。codebase=<URL>
形式では、classid
属性によって指定されたJREがローカルにインストールされていない場合に、ユーザーは指定されたURLからJREをダウンロードすることを求められます。
embed
タグの使用embed
タグを使用して、Mozillaファミリのブラウザでのみ使用されるアプレットを配備します。
embed
タグの例を次に示します。
<embed code="Applet1.class" width="200" height="200" type="application/x-java-applet;version=1.8" pluginspage="http://www.oracle.com/technetwork/java/javase/downloads/ea-jsp-142245.html"/>
type属性は、次の2つの形式のいずれかです。
type="application/x-java-applet;version=1.8"
application/x-java-applet;version=1.8
がアプレットを実行するために呼び出されます。指定されたバージョン番号以上のバージョンのJREがローカルにインストールされている場合は、そのJREが呼び出されます。それ以外の場合は、pluginspage
属性の値として指定されたURLにユーザーをリダイレクトします。type="application/x-java-applet;jpi-version=1.8.0_181
jpi-version
の値(この例では、1.8.0_181)によって指定された更新バージョンのJREが、アプレットを実行するために呼び出されます。それ以外の場合は、pluginspage
属性の値として指定されたURLにユーザーをリダイレクトします。次の2つの方法のいずれかで、Internet ExplorerとMozillaファミリのブラウザの両方のユーザーにアプレットを配備できます。
Pure HTMLアプローチを使用してブラウザが混在する環境でアプレットを配備する場合は、次のことに注意してください。
Internet Explorer
object
タグを認識するcomment
タグの内容を無視するclassid
属性が付いたobject
タグを無視するcomment
タグの内容を解釈するHTMLページの次のコード例を検討してください。
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" <param name="code" value="Applet1.class"> <comment> <embed code="Applet1.class" type="application/x-java-applet;version=1.8"> <noembed> No Java Support. </noembed> </embed> </comment> </object>
前述したPure HTMLアプローチを使用する代わりに、JavaScriptを使用してブラウザが混在する環境でアプレットを配備できます。
JavaScriptを使用して、次の手順を実行します。
appName
変数を使用して、ユーザーのブラウザを検出します。
document.write()
メソッドを使用して、appName
変数の値に基づいてタグを記述します。
ブラウザ名が「Mozilla」の場合、embed
タグを記述します。
ブラウザ名が「Microsoft Internet Explorer」の場合、object
タグを記述します。
次の例では、document.write()
メソッドは、ユーザーごとにオン・ザ・フライでembed
またはobject
タグを出力します。
<html> <script language="Javascript"> var _app = navigator.appName; if (_app == 'Mozilla') { document.write('<embed code="Applet1.class"', 'width="200"', 'height="200"', 'type="application/x-java-applet;version=1.8.0">'); } else if (_app == 'Microsoft Internet Explorer') { document.write('<OBJECT ', 'classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"', 'width="200"', 'height="200">', '<PARAM name="code" value="Applet1.class">', '</OBJECT>'); } else { document.write('<p>Sorry, unsupported browser.</p>'); } </script> </html>