注: Java 拡張機能は、「オプションパッケージ」と呼ばれることもあります。
このセクションでは、次のトピックについて説明します。
Java アプレットは、さまざまな Java 拡張機能を使用してユーザに特定の機能を提供します。 Java アプレット使用時に Java Plug-in 内で Java 拡張機能を動的に配備するのは、特に何千ものマシンの配備されたイントラネット/インターネット環境で開発を行う場合に、開発者にとって困難でした。
Java 拡張機能インストールを利用すると、さまざまな Java 拡張機能 (JavaHelp、Java3D など) を Java アプレットと共に Java 2 Runtime Environment に容易に配備およびインストールできます。 このドキュメントでは、Java Plug-in のインストール型 Java 拡張機能を配備する基本的な手順を示します。Java 拡張機能の稼動方法の詳細は、Java 2 の「Java 拡張機能機構」を参照してください。
Java Plug-in で Java 拡張機能インストールを使用するには、拡張機能に関する情報を次の 3 か所で指定する必要があります。
¥lib¥ext
ディレクトリからダウンロードする JAR ファイル)lib/ext
内) の拡張機能名、バージョン、およびベンダー情報と比較できるようになります。その後、Java Plug-in は拡張機能のインストールやアップグレードが必要かどうかを判断します。
アプレットに Java 拡張機能を配備するには、アプレットを JAR ファイルとしてパッケージ化する必要があります。 アプレットの MANIFEST ファイルには、「オプションパッケージのバージョン管理」に従って、インストールする Java 拡張機能に関する適切な情報を含める必要があります。 次に例を示します。
Extension-List:RectangleArea RectanglePerimeter RectangleArea-Extension-Name:com.mycompany.RectangleArea RectangleArea-Specification-Version: 1.2 RectangleArea-Implementation-Version: 1.2 RectangleArea-Implementation-Vendor-Id:com.mycompany RectangleArea-Implementation-URL:http://mycompany.com/RectangleArea.jar RectanglePerimeter-Extension-Name:com.mycompany.RectanglePerimeter RectanglePerimeter-Specification-Version: 1.2 RectanglePerimeter-Implementation-Version: 1.2 RectanglePerimeter-Implementation-Vendor-Id:com.mycompany RectanglePerimeter-Implementation-URL:http://mycompany.com/RectanglePerimeter.jar
この例では、アプレットに 2 つの拡張機能 RectangleArea および RectanglePerimeter が配備されます。 これらがインストールされていないか、アップデートが必要な場合、指定した Implementation-URL
から適切なバージョンがダウンロードされます。 Implementation-URL
は、Java 拡張機能インストールの JAR ファイルを指定している必要があります。
適切な JAR 拡張機能の識別に関する注意事項インストールされた拡張機能の
Sun のサポートする
|
Java Plug-in では、3 つのタイプの Java 拡張機能インストールがサポートされています。
Implementation-URL
を介して指定されます。 インストール時に、これらの Java 拡張機能の JAR ファイルは、ダウンロードおよび検証されてから、Java 2 Runtime の lib/ext
ディレクトリにコピーされます。
Implementation-URL
に指定する必要があります。 インストール時に、JAR ファイルのダウンロードおよび検証が行われます。その後、JAR ファイル内の Java インストーラの main-class
が実行されて、インストーラが起動します。 Java インストーラによって、インストーラ内の Java 拡張機能が Java 2 Runtime (lib/ext
) の適切な場所にコピーされます。
Implementation-URL
に指定する必要があります。 インストール時に JAR ファイルのダウンロードおよび検証が行われ、次にネイティブインストーラが起動します。 ネイティブインストーラによって、インストーラ内の Java 拡張機能が Java 2 Runtime (lib/ext
) の適切な場所にコピーされます。 Java 拡張機能インストールが適正にダウンロードおよびインストールされることを保証するため、Java 拡張機能インストールを JAR ファイルとしてバンドルし、アプレットの MANIFEST 内の Implementation-URL に指定する必要があります。 各 Java 拡張機能は、JAR ファイルとしてバンドルすること、および「オプションパッケージのバージョン管理」に従って、MANIFEST ファイル内に適切なバージョン情報を含めることが必要です。 次に例を示します。
Extension-Name: javax.help Specification-Vendor: Sun Microsystems, Inc Specification-Version: 1.4 Implementation-Vendor-Id: com.sun Implementation-Vendor: Sun Microsystems, Inc Implementation-Version: 1.4.0_01この場合、これは raw Java 拡張機能として認識され、
lib/ext
ディレクトリに直接コピーされます。
Extension-Name:javax.help Specification-Vendor:Sun Microsystems, Inc Specification-Version: 1.4 Implementation-Vendor-Id:com.sun Implementation-Vendor:Sun Microsystems, Inc Implementation-Version: 1.4.0-beta2 Main-Class:com.sun.javahelp.installerこの場合、MANIFEST に
Main-Class
が存在するため、Java インストーラとして扱われ、Main-class
が呼び出されます。 Java インストーラによって、Java 拡張機能が適切な lib/ext
ディレクトリにコピーされます。 ただし、lib/ext
ディレクトリにコピーする各 Java 拡張機能にも、適切なバージョン情報を含める必要があります。 次に例を示します。Extension-Name:javax.help Specification-Vendor:Sun Microsystems, Inc Specification-Version: 1.4 Implementation-Vendor-Id:com.sun Implementation-Vendor:Sun Microsystems, Inc Implementation-Version: 1.4.0-beta2
このため、lib/ext
ディレクトリ内のすべての JAR ファイルの MANIFEST ファイルを確認することで、拡張機能のバージョン情報を判別できます。
Extension-Name:javax.help Specification-Vendor:Sun Microsystems, Inc Specification-Version: 1.4 Implementation-Vendor-Id:com.sun Implementation-Vendor:Sun Microsystems, Inc Implementation-Version: 1.4.0-rc1 Extension-Installation: installer.exeこの場合、MANIFEST 内に
Extension-Installation
が存在するため、ネイティブインストーラとして扱われ、インストーラ自体が起動します。 ネイティブインストーラによって、Java 拡張機能が適切な lib/ext
ディレクトリにコピーされます。 ただし、Java インストーラの場合と同様、lib/ext
ディレクトリにコピーする各 Java 拡張機能にも、適切なバージョン情報を含める必要があります。 次に例を示します。Extension-Name:javax.help Specification-Vendor:Sun Microsystems, Inc Specification-Version: 1.4 Implementation-Vendor-Id:com.sun Implementation-Vendor:Sun Microsystems, Inc Implementation-Version: 1.4.0-rc1
このため、lib/ext
ディレクトリ内のすべての JAR ファイルの MANIFEST ファイルを確認することで、拡張機能のバージョン情報を判別できます。
Java Plug-in を使用して Java アプレットと共にオプションパッケージを配備するには、以下の手順に従います。
A. オプションパッケージのインストーラを取得します。Java Plug-in では、Java、Native、Raw という 3 つのタイプのインストーラをサポートしています。 以下に従い、インストールタイプに対して正しいマニフェスト属性を使用してください。
Java:
Main-Class
Native:Extension-Installation
Raw: マニフェスト属性なしB. オプションパッケージのマニフェストファイルを作成します。 以下は、ネイティブインストーラ (
jai-1_1_1-lib-win-jre.exe
) を使用するオプションパッケージ Java Advanced Imaging API (jai_win.jar
) のマニフェストの例です。 この例がネイティブインストーラとして認識される理由は、マニフェスト属性Extension-Installation
を使用しているからです。
Manifest-Version:1.0
Extension-Name: javax.media.jai
Extension-Installation: jai-1_1_1-lib-win-jre.exe
Specification-Version: 1.1
Specification-Vendor: Sun Microsystems. Inc
Implementation-Version: 1.1.1
Implementation-Vendor: Sun Microsystems, Inc
Implementation-Vendor-Id: com.sunC. インストーラをオプションパッケージのマニフェストファイルとバンドルし、オプションパッケージのインストール JAR ファイルにします。 JAR ファイルには必ず拡張子 .jar を付けてください。 また、オプションパッケージやインストールタイプによっては、オプションパッケージのインストール用 JAR ファイルにオプションパッケージ JAR ファイルを含めたり、Web サーバでオプションパッケージ JAR ファイルを実行したりする必要があります。 オプションパッケージのインストールとオプションパッケージそのものは両方とも JAR ファイルにバンドルされ、適切なバージョン管理情報が格納されていなければなりません。
jar cmfv manifest-addition jar-file.jar input-file(s)
D. JAR ファイルに署名します。
JAR ファイルに署名できるようになるには、証明書発行局 (Thawte、VeriSign) から RSA 証明書を取得しなければなりません。 以下に、JAR ファイルへの署名に使用するツールとコマンドをいくつか示します。 以下に挙げたものがすべてではありません。
詳細は、Plug-in のドキュメントにある「RSA 署名付き証明書を使用したアプレットの署名方法」およびその他の関連ドキュメントを参照してください。
keytool
を使用して RSAkeypair
とkeystore
を生成します。
keytool -genkey -keyalg rsa -alias MyCert -validity 360
keytool
を使用してkeystore
に証明書をインポートします。
keytool -import -file <path>/mycerts/my_veri.p12
jarsigner
を使用して JAR ファイルに署名します。
jarsigner InstallMyOptPkg.jar MyCert
jarsigner
を使用して JAR ファイルの署名が適切かどうかを確認します。
jarsigner -verify -verbose -certs InstallMyOptPkg.jar
Eでき上がった JAR ファイル (およびその他の必要な JAR ファイル) を Web サーバに置き、ユーザがダウンロードできるようにします。 URL は、テストアプレットのマニフェストファイルにあるマニフェスト属性
<extension>-Implementation-URL
の中で指定されています。
A. オプションパッケージの機能を使用するアプレットを作成します。
B. アプレットのマニフェストファイルを作成します。 以下は、アプレットのマニフェストファイルがオプションパッケージ Java Advanced Imaging API への依存性を宣言している例です。
Extension-List: jai
jai-Extension-Name: javax.media.jai
jai-Specification-Version: 1.1
jai-Implementation-Version: 1.1.1
jai-Implementation-Vendor-Id: com.sun
jai-Implementation-URL: http://myserver.com/jai_win.jarオプションパッケージの中には、オぺレーティングシステムごとに異なる JAR ファイル内にパッケージされるものもあります。 アプレットを異なる OS 上で動作させる場合は、
Implementation-URL
マニフェスト属性で$(os-name)$
構造体を使用できます。$(os-name)$
は、アプレットが実行されるターゲット OS (例: SunOS、Windows-NT) への変換を行います。
optpkg-Implementation-URL: http://.../optpkg-$(os-name)$.jar
C. アプレットが使用する
*.class
ファイル (およびその他のサポートしているファイル) とアプレットのマニフェストファイルを JAR ファイルにバンドルします。 JAR ファイルには必ず拡張子 .jar を付けてください。
jar cmfv manifest-addition jar-file.jar input-file(s)
D. アプレットの HTML ページを作成します。 前述の JAR ファイル名を
ARCHIVE
パラメータに設定します。 必要な形式に関する詳細は、「Java Plug-in におけるOBJECT
、EMBED
およびAPPLET
タグの使用」を参照してください。
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,0">
<PARAM NAME="code" VALUE="myapplet.class">
<PARAM NAME ="archive" VALUE = "myapplet.jar">
<PARAM NAME="type" VALUE="application/x-java-applet;version=1.4">
<PARAM NAME="scriptable" VALUE="false">
<COMMENT>
<EMBED type="application/x-java-applet;version=1.4" width="200"
height="200" align="baseline" code="myapplet.class" archive="myapplet.jar"
pluginspage="http://java.sun.com/products/plugin/1.4/plugin-install.html">
<NOEMBED>
</COMMENT>
Optional Package Deployment Using Java Plug-in
</NOEMBED></EMBED>
</OBJECT>E. でき上がった HTML ページを使用してアプレットをロードします。
アプレットの実行時に Java Plug-in によって Java Security Warning (オプションパッケージがインストールされていない場合) が表示され、アプレットがhttp://someserver.com/some.jar
からのオプションパッケージname
のインストールを必要としていることが通知されます。 オプションパッケージのインストールを許可すると、インストーラが<jre>¥lib¥ext
ディレクトリに JAR ファイルをインストールします。 インストールが完了したらアプレットを実行できます。
Java 拡張機能を使用してアプレットを配備する際、アプレットの MANIFEST ファイルに格納された Java 拡張機能情報が検査されます。 拡張機能の更新アルゴリズムは、「オプションパッケージのバージョン管理」に示されたアルゴリズムに基づいています。 更新が必要な場合、Java 拡張機能インストールのダウンロードおよび検証が行われて、拡張機能が適正に署名されていることが確認されます。 有効な場合、Plug-in によりセキュリティダイアログがポップアップし、次の 3 つのオプションが提供されます。
ユーザがセキュリティダイアログでオプションを選択すると、対応するセキュリティコンテキスト内で、拡張機能インストールが実行されます。 拡張機能が正しくインストールされない限り、アプレットは起動できません。
Java 拡張機能は Java 2 Runtime の lib/ext
ディレクトリにダウンロードおよびインストールされるため、各 Java 拡張機能インストールに署名する必要があります。 Java 拡張機能のインストール後に、Java 拡張機能は、ポリシーファイルを介して Java 拡張機能に付与された適切なアクセス権を保持します。
archive/cache_archive
属性内で最初に指定された JAR ファイルにバージョン情報を含めることをお勧めします。Main-class
を終了させないことを確認してください。 場合によっては、Java インストーラが AWT ウィンドウを作成して制御を別のスレッドに切り替え、その後すぐ Main-class
に戻ることもあります。 Main-class
から制御が返されると、Java インストーラがインストール処理中であっても、アプレットのロードおよび起動が即座に行われます。 この場合、拡張機能がインストールされていないため、アプレットのロードに失敗します。