Java Rich Internet Application ガイド > アプレット開発者ガイド > アプレット配備パラメータ
アプレットは、applet
、object
、または embed
タグを、必要なパラメータとともに手動でコーディングすることによって配備できます。このセクションでは、これらのパラメータについて説明します。ただし、ブラウザ間の互換性を保証するために、配備ツールキットを使用してアプレットを配備することをお勧めします。配備ツールキットの使用、および JNLP を使用したアプレットの配備については、「Java Rich Internet Application 配備アドバイス」を参照してください。
次の項目について説明します。
jnlp_href
プラグインがアプレットを起動するために使用すべき情報を含むファイル。
Java Plug-in では、アプレットがロードされる前に表示されるイメージのカスタマイズ機能が向上しています。「特別な属性」で説明されている image
パラメータのターゲットとして、動画 GIF がサポートされるようになりました。また、次のパラメータもサポートされています。
boxborder
アプレットがロードされる前に表示されるイメージの表示中に、アプレット領域の縁の周囲に 1 ピクセル幅の境界を描画するべきかどうかを示す boolean 型パラメータ。デフォルトは true
です。ちらつきの発生を防止するために、特にロードイメージとして動画 GIF を使用している場合は、この値を false
に設定することをお勧めします。
centerimage
ロードイメージを左上隅から表示し始めるのではなく、アプレット領域内の中央にそろえるべきかどうかを示す boolean 型パラメータ。デフォルトは false
です。
boxborder
パラメータと centerimage
パラメータの使用例を次に示します。
<APPLET archive="large_archive.jar" code="MyApplet" width="300" height="300"> <!-- Use an animated GIF as an indeterminate progress bar while the applet is loading --> <PARAM NAME="image" VALUE="animated_gif.gif"> <!-- Turn off the box border for better blending with the surrounding web page --> <PARAM NAME="boxborder" VALUE="false"> <!-- Center the image in the applet's area --> <PARAM NAME="centerimage" VALUE="true"> </APPLET>
java-vm-args
Java 起動時にアプリケーションが JNLP クライアントに使用させる標準の仮想マシンの引数と非標準の仮想マシンの引数の追加セットを指定します。java_arguments
と java-vm-args
の両方が存在する場合は、java-vm-args
引数が優先されます。
java_arguments
このアプレットインスタンスの実行時に使用される JVM コマンド行引数を指定します。ほぼすべての JVM コマンド行引数がサポートされていますが、特定の規則や制限が存在します。java_arguments
と java-vm-args
の両方が存在する場合は、java-vm-args
引数が優先されます。
java_arguments
オプションは、アプレットの起動中にクライアントの Java VM が再起動されないようにすることを主な目的としています。良い方法として、java_arguments
と java-vm-args
の両方を指定する場合は、それらに同じ値を含めるようにしてください。
java_arguments
と java-vm-args
の関係を示す例
シナリオ 1:両方のパラメータが定義され、それらの値が異なっています。
java_arguments = -Xmx256m java-vm-args = -verbose
すべてのプラットフォーム上で予想される動作:-verbose
JVM は最初に、java_arguments
タグで指定された値を使って起動します。クライアント JVM は不一致を検出し、-verbose
のみを使って再起動します。警告が Java コンソールに出力されます。
シナリオ 2:両方のパラメータが定義され、java-vm-args
で指定された値が、java_arguments
で指定された値のサブセットになっています。
java_arguments = -Xmx256m -verbose java-vm-args = -verbose
すべてのプラットフォーム上で予想される動作:-verbose
JVM は最初に、java_arguments
で指定された完全な引数セットを使って起動します。クライアント JVM は不一致を検出し、java-vm-args
で指定された小さい引数セットのみを使って再起動します。パラメータの不一致に関する警告が Java コンソールに出力されます。
シナリオ 3:java_arguments
タグは HTML ファイルで定義されているが、java-vm-args
タグは JNLP ファイルで定義されていません。
java_arguments = -Xmx256m java-vm-args = [not defined]
すべてのプラットフォーム上で予想される動作:[no jvm params]
JVM は最初に、java_arguments
で指定された値を使って起動します。クライアント JVM は不一致を検出し、パラメータを使わずに JVM を再起動します。パラメータの不一致に関する警告が Java コンソールに出力されます。
シナリオ 4:java_arguments
タグは HTML ファイルで定義されていないが、java-vm-args
タグは JNLP ファイルで定義されています。
java_arguments = [not defined] java-vm-args = -Xmx256m
すべてのプラットフォーム上で予想される動作:-Xmx256m
java_arguments
タグには何も指定されていないため、JVM は最初に JVM 引数を使わずに起動します。クライアント JVM は不一致を検出し、java-vm-args
で指定された値を使って JVM を再起動します。
その他の例
<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300"> <PARAM name="java_arguments" value="-Xmx128m"> </APPLET>
<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300"> <PARAM name="java_arguments" value="-Xmx256m -Dsun.java2d.noddraw=true"> </APPLET>
<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300"> <PARAM name="java_arguments" value="-verbose:gc -ea:MyApplet"> </APPLET>
「Java Web Start 開発者ガイド」の「JNLP ファイルの構文」のセクションには、一連の「安全な」JVM コマンド行引数およびシステムプロパティーが定義されています。Java Plug-in では、java_arguments
パラメータで指定されたすべての JVM コマンド行引数がセキュアであるかぎり、アプレットや、それによってロードされるどのクラスもアクセス権なしで実行できます。
java_arguments
パラメータでは、安全でない JVM コマンド行引数 (つまり、安全なリストに記載されていないコマンド行引数) が指定される可能性もあります。この場合は、セキュリティー上の問題が発生する可能性があるため、Java Plug-in によって、署名されていないクラスをロードできないという規則が適用されます。つまり、このような JVM インスタンスでは、ユーザーがセキュリティーダイアログボックスを受け入れた信頼されたコードのみをロードできます。セキュリティー保護されていないシステムプロパティーが指定された JVM インスタンスで、署名なしの、または信頼されていないクラスをロードしようとした場合は、署名がないために指定されたクラスをロードできなかったことを示す ClassNotFoundException
がスローされます。
java_arguments
パラメータで渡すことのできるコマンド行引数に関する制限はごく少数しかありません。一般に、-Xbootclasspath
引数のほか、-classpath
や -jar
などの、パスを指定するために使用されるコマンド行引数はすべて禁止されます。ほかの (現在および将来の) コマンド行引数はすべて、上記の安全なコマンド行引数と安全でないコマンド行引数についての注意書きを付けてサポートするようにしてください。
java_arguments
パラメータで渡されたコマンド行引数は、Java コントロールパネルの「Java Runtime Environment 設定」ダイアログで指定された任意のコマンド行引数に追加されます。コントロールパネルからのコマンド行引数は、それらのコマンド行引数が指定されたバージョンのすべての JVM インスタンスに使用されます。そのため、java_arguments
パラメータでそれを完全に置き換えることはできません。
JVM コマンド行引数が指定された場合は、その要求を満たすために、Java Plug-in が別の JVM インスタンスを起動することが必要になる可能性があります。つまり、既存の JVM インスタンスがその要求を満たすような一連の正しいコマンド行引数で起動された可能性はほとんどありません。特定のアプレットを起動するために新しい JVM インスタンスを正確にいつ起動するかについての規則は、意図的に指定されないまま残されており、今後のリリースで変更が必要になる可能性があります。新しい JVM インスタンスの共有と作成についての一連の概略のガイドラインを次に示します。
java_arguments
なしで指定されたコマンド行引数) で起動されている場合は、java_arguments
でコマンド行引数が 1 つしか指定されていないアプレットであっても、この JVM インスタンスがアプレットの起動に使用されることは決してありません。-Xmx
は特別に処理されます。既存の JVM インスタンスが java_arguments
を使用して、たとえば -Xmx256m
で起動されており、新しいアプレットが -Xmx128m
を要求した場合、その新しいアプレットは既存の JVM インスタンスで実行される可能性が高くなります。つまり、-Xmx
の指定は「より大きいか、または等しい」のテストで照合されます。特定のアプレットを起動するために使用される JVM インスタンスに「名前を付け」て、以降のアプレットにその JVM インスタンスでの実行を「強制する」方法はありません。
特定のアプレットを、独自の JVM インスタンス内でその他のすべてのアプレットから切り離すには、「separate_jvm
」パラメータのセクションを参照してください。
separate_jvm
特定のアプレットを独自の JVM インスタンス内で実行すべきであることを指定する boolean 型パラメータ。このパラメータは、同じ JVM 内で実行され、ヒープスペースやその他のリソースを消費している可能性のあるほかのアプレットからのどのような干渉も許容できない、特定の強力なデスクトップアプレットをサポートします。
<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300"> <PARAM name="java_arguments" value="..."> <PARAM name="separate_jvm" value="true"> </APPLET>
java_version
特定のアプレットを起動するための JRE バージョンを指定します。
例
<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300"> <PARAM name="java_version" value="1.5.0_09"> </APPLET>
<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300"> <PARAM name="java_version" value="1.5*"> </APPLET>
<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300"> <PARAM name="java_version" value="1.5+"> </APPLET>
classid
Internet Explorer での 属性Internet Explorer ブラウザは、<object>
タグの classid
属性を使用して、そのタグの内容の表示方法を示します。classid
属性を codebase
属性と組み合わせて使用すると、現在システム上に使用可能な JRE バージョンが存在しない場合は、特定の JRE バージョンを自動的にダウンロードしてインストールできます (「classid の使用法」を参照)。最近では、特定のファミリ内の任意の JRE を選択する方法を提供するために、ファミリ CLSID の概念が導入されています。(詳細は、「Deploying Java Applets With Family JRE Versions in Java Plug-in for Internet Explorer」を参照してください。)
以前のドキュメントで説明されている classid オプションのすべてが、Java Plug-in と連動して機能して、特定の JRE バージョンを選択したり、場合によっては自動的にダウンロードしてインストールしたりできるわけではありません。このセクションでは、Java Plug-in と連動して機能するオプションの種類と、使用されている下位互換性メカニズムについて説明します。
classid 属性の推奨される使用法は、上で説明した java_version
パラメータとの組み合わせです。複数の JRE をサポートする最新バージョンの Java Plug-in を使用することを示すには、<object>
タグに、インストールされている最新の JRE バージョンを常にポイントする動的 classid を指定してください。次に、java_version
パラメータを使用して、アプレットを実行するために使用する JRE のバージョンを指定してください。
推奨される使用法の例:
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase="http://www.example.com/out-of-proc-plugin-url-placeholder.exe#1,6,0,10" width="200" height="200"> <param name="code" value="MyApplet"> <param name="java_version" value="1.5*"> </object>
現時点では、Oracle は、Java Plug-in を記述するための新しい CLSID を提供しておらず、動的 classid の使用をオーバーロードしていることに注意してください。つまり、Java Plug-in での複数の JRE バージョンがサポートされていない以前のバージョンの JRE がすでにインストールされている場合は、その classid のハンドラがすでに使用可能であるため、Java Plug-in が自動的にダウンロードされてインストールされることはありません。その結果、java_version
パラメータを使用したバージョンの選択は無視されます。新しい classid を提供しないというこの決定は、将来見直される可能性があります。当面の間、Oracle は、複数の JRE バージョンの選択および Java Plug-in の自動ダウンロードを必要とする上級開発者が、コンテンツを正しく実行するにはユーザーが Java Plug-in をインストールして設定する必要があることをドキュメント化するか、または多くの企業でよく見られるようにクライアントコンピュータを管理制御するかのどちらかを行うことを期待しています。
すでに classid 属性を使用している開発者が容易に移行できるようにするために、2 つの下位互換性メカニズムが導入されました。つまり、classid を使用して特定の JRE バージョン、または特定のファミリ内の任意の JRE のどちらかを選択する機能です。どちらの場合も、Java Plug-in と、アプレットのターゲット JRE バージョンの両方がすでにインストールされ、構成されていることが前提になります。これらの下位互換性メカニズムと組み合わせて、Java Plug-in を提供している JRE、またはアプレットを実行するために使用される JRE のどちらの JRE の自動ダウンロードもサポートされていません。
これらの下位互換性メカニズムは、将来のリリースで削除される可能性があることに注意してください。既存のコンテンツを、前述の新しいメカニズムに移行することをお勧めします。
個々のアプレットのための特定の JRE バージョン (1.5.0_11) の選択:
<object classid="clsid:CAFEEFAC-0015-0000-0011-ABCDEFFEDCBA" width="200" height="200"> <param name="code" value="MyApplet"> </object>
ファミリ CLSID を使用した特定のファミリ (1.5) からの最新の JRE の選択:
<object classid="clsid:CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA" width="200" height="200"> <param name="code" value="MyApplet"> </object>
codebase
パラメータを使用して旧バージョンの JRE をダウンロードしようとしても無視されることに注意してください。それは、これらの classid が、Java Plug-in のインストールプロセス中に DLL のより新しいバージョンをポイントするようシステムに登録されているためです。また、java_version
パラメータをこれらの classid と組み合わせて使用することがサポートされていないことにも注意してください。java_version
パラメータと、静的またはファミリ classid の両方を指定すると、未定義の動作が発生します。
version
および jpi-version
属性Mozilla ブラウザファミリは、<embed>
タグ内の MIME タイプを使用して、そのタグの内容の表示方法を示します。また、<embed>
タグは、JRE の特定バージョンの自動ダウンロードもサポートしています。
以前のバージョンの Java Plug-in は、application/x-java-applet
MIME タイプの version
および jpi-version
部分を使用して、JRE バージョンの選択を実行していました。以前のドキュメントで説明されているこれらのメカニズムのすべてが、Java Plug-in と連動して機能して、特定の JRE バージョンを選択したり、場合によっては自動的にダウンロードしてインストールしたりできるわけではありません。このセクションでは、Java Plug-in と連動して機能するオプションの種類と、使用されている下位互換性メカニズムについて説明します。
<embed>
タグの推奨される使用法は、アプレットの MIME タイプで version
または jpi-version
を指定しないことです。代わりに、java_version
パラメータを使用して、アプレットを実行するための特定の JRE バージョンを選択します。以前の Java バージョンがインストールされていない場合は、pluginspage
パラメータを使用して、Java Plug-in の自動ダウンロードを有効にすることができます。
<embed code="MyApplet" type="application/x-java-applet" pluginspage="http://www.example.com/out-of-proc-plugin-url-placeholder.xpi" width="200" height="200"> java_version="1.5*" </embed>
現時点では、Oracle は、Java Plug-in を記述するための新しい MIME タイプを提供しておらず、application/x-java-applet
MIME タイプの使用をオーバーロードしていることに注意してください。つまり、Java Plug-in での複数の JRE バージョンがサポートされていない以前のバージョンの JRE がすでにインストールされている場合は、その MIME タイプをサポートしているプラグインがすでに使用可能であるため、Java Plug-in が自動的にダウンロードされてインストールされることはありません。その結果、java_version
パラメータを使用したバージョンの選択は無視されます。新しい MIME タイプを提供しないというこの決定は、将来見直される可能性があります。当面の間、Oracle は、複数の JRE バージョンの選択および Java Plug-in の自動ダウンロードを必要とする上級開発者が、コンテンツを正しく実行するにはユーザーが Java Plug-in をインストールして設定する必要があることをドキュメント化するか、または多くの企業でよく見られるようにクライアントコンピュータを管理制御するかのどちらかを行うことを期待しています。
すでに MIME タイプの version
および jpi-version
部分を使用している開発者が容易に移行できるようにするために、Java Plug-in では、制限されたレベルの下位互換性がサポートされています。具体的には、version
属性で、特定のファミリまたはそれ以降の任意のファミリ内の任意の JRE を要求することがサポートされています。特定の JRE バージョンを選択するための jpi-version
属性の使用はサポートされなくなりました。Java Plug-in の正しい動作が妨げられる可能性があるため、それを使用しないことを強くお勧めします。
この下位互換性メカニズムは、将来のリリースで削除される可能性があることに注意してください。既存のコンテンツを、前述のメカニズムに移行することをお勧めします。
version
属性を使用して 1.5 以降の JRE を要求するには、次のようにします。
<embed code="MyApplet" type="application/x-java-applet;version=1.5" width="200" height="200"> </embed>
version
属性のセマンティクスでは、1.5+
の値を持つ上のタグが java_version
パラメータの使用と等価であることが示されています。この Java Plug-in は、5.0 より新しいバージョンである Java SE 6 Update 10 で提供されるため、このバージョン要求は実質的に何の効果もありません。
また、version
属性と java_version
パラメータの組み合わせがサポートされていないことにも注意してください。java_version
パラメータと version
属性の両方を指定すると、未定義の動作が発生します。
classloader_cache
Java Plug-in は、アプレットごとに、アプレットでのクラスローダーキャッシュの使用から抜け出るための方法を提供します。
<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300"> <PARAM name="classloader_cache" value="false"> </APPLET>
classloader_cache
パラメータのデフォルト値は true
であり、クラスローダーキャッシュはデフォルトで有効になっています。
permissions
アプレットの実行に必要とされるアクセス権のレベルを指定します。次の値が有効です。
sandbox
- アプレットはセキュリティーサンドボックス内で実行されます。all-permissions
- アプレットはユーザーのシステム上のリソースへのアクセスを必要とします。default
- アプレットが署名されている場合は、すべてのアクセス権がリクエストされます。それ以外の場合、アプレットはセキュリティーサンドボックス内で実行されます。 <APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300"> <PARAM name="permissions" value="sandbox" /> </APPLET>
このパラメータを省略した場合は、default
が指定されているとみなされます。
Java アプリケーションで使用するファイルは、あとですぐに実行できるように特別なフォルダに格納されます。このフォルダは Java キャッシュとも呼ばれます。Java コントロールパネルの「一般」パネルの「インターネット一時ファイル」サブパネルを使用すると、Java キャッシュに格納されているファイルを表示したり、使用しているコンピュータで Java キャッシュが占有できるディスク容量を制御したりできます。
cache_archive
cache_archive 属性には、キャッシュするファイルのリストを指定します。
<param name="cache_archive" VALUE="a.jar,b.jar,c.jar">
applet タグの archive 属性と同様に、cache_archive 属性の JAR ファイルのリストには完全な URL は指定されていませんが、常に embed/object タグに指定されている codebase からダウンロードされます。