オプションパッケージ - 概要 |
オプション・パッケージは、Java クラスとそれに関連するネイティブコードのパッケージです。 拡張機能を使うことにより、アプリケーションの開発者はコアプラットフォームの機能を拡張できます。拡張機能機構により、ブートストラップクラスとほとんど同じように Java 仮想マシンからオプションパッケージクラスを利用できます。ブートストラップクラスは、コアプラットフォームを実装しているクラスであり、jre/lib/rt.jar および他のいくつかの重要な jar ファイルにあります。これらの jar ファイルには、java.lang、java.io などの public API のクラス、およびプラットフォームの国際化および地域対応の機能をサポートするクラスが格納されます。ブートストラップクラスと同様に、オプションパッケージのクラスはクラスパスに置く必要はありません。拡張機能機構により、必要なオプションパッケージが Java 2 Runtime Environment または JDK にインストールされていない場合は、指定された URL から取得することもできます。
オプションパッケージは、JAR ファイルの形で提供され、すべての JAR ファイルはオプションパッケージになり得ます。JAR ファイルがオプションパッケージの役割を果たすのは、次の 2 つの場合です。
このディレクトリに JAR ファイルを置いておけば、CLASSPATH に明示的に含めなくても、中に含まれるクラスをブートストラップクラスの一部であるかのようにアプレットおよびアプリケーションから使用できます。lib/ext [in the JRE] jre/lib/ext [in the JDK]
インストール型オプションパッケージのネイティブコードバイナリは、存在する場合には次のディレクトリに置きます。
jre\bin [Microsoft Windows] jre/lib/<arch> [Solaris operating environment]
<arch>
は、Solaris プロセッサアーキテクチャで、sparc
か i386
です。また、ネイティブライブラリは、Microsoft Windows と Solaris オペレーティング環境の両方で jre/lib/ext/<arch> ディレクトリに置かれます。Microsoft Windows システムでは <arch> は i386 です。jre/lib/ext/<arch> ディレクトリは、jre\bin または jre/lib/<arch> の「次に」検索されます。
Java VM は、特定の名前のクラスを探すとき、最初に実行環境でそのクラスを検索します。標準の実行環境のクラスから検出できなかった場合は、VM はオプションパッケージのディレクトリに置かれているすべての JAR ファイルから検索します。
JAR ファイルや、それに含まれるクラスは、jre/lib/ext
に置かれることによってインストール型オプションパッケージとなるのであって、インストール型オプションパッケージとなる特別な JAR ファイルがあるわけではありません。
インストール型オプションパッケージの JAR ファイルのマニフェスト属性には、そのオプションパッケージクラスを使うアプレットで利用できるバージョンとベンダーの情報が指定されている必要があります。バージョンとベンダーの情報を指定する属性については、「オプションパッケージのバージョン管理」 で説明します。マニフェストの例を次に示します。
Java Plug-in では、アプレットの実行時にこのバージョンとベンダーの情報を使って、アプレットに必要なオプションパッケージがインストールされていること、最新のバージョンであること、アプレットに適したベンダーのオプションパッケージであることが確認されます。インストールされていない場合、またはインストールが不正な場合は、適切なオプションパッケージのダウンロードを要求するプロンプトが表示されます。詳細は、「オプションパッケージのバージョン管理」を参照してください。Manifest-version: 1.0 Extension-Name:javax.extension Specification-Version: 1.0 Specification Vendor:Sun Microsystems, Inc. Implementation-Vendor:Sun Microsystems, Inc. Implementation-Vendor-Id:com.sun Sealed:true
目的のクラスがシステムクラスからもインストール型オプションパッケージ内のクラスからも見つからない場合は、ダウンロード型オプションパッケージ内のクラスが検索されます。
Class-Path ヘッダの例を次に示します。
この場合、ファイルClass-Path:servlet.jar infobus.jar acme/beans.jar
servlet.jar
、infobus.jar
、および acme/beans.jar
に含まれるクラスが、マニフェストにこのヘッダが含まれる JAR ファイルのクラスのオプションパッケージになります。Class-Path フィールドに URL を指定した場合、その URL は、アプレットまたはアプリケーションが含まれる JAR ファイルの URL からの相対 URL になります。
インストール型オプションパッケージと違って、ダウンロード型オプションパッケージとなる JAR ファイルが置かれる位置には何の意味もありません。ダウンロード型オプションパッケージは、特定の場所に置かれるからではなく、ほかの JAR ファイルのマニフェストの Class-Path ヘッダの値として指定されるからオプションパッケージなのです。
インストール型オプションパッケージとダウンロード型オプションパッケージのもう 1 つの違いは、JAR ファイルに含まれているアプレットやアプリケーションだけがダウンロード型オプションパッケージを利用できるという点です。JAR ファイルに含まれていないアプレットやアプリケーションは、ダウンロード型オプションパッケージを参照するマニフェストを持ちません。
VM は、特定のクラスを探すとき、最初にシステムクラスとインストール型オプションパッケージを検索します。目的のクラスがシステムクラスからもインストール型オプションパッケージ内のクラスからも見つからない場合は、アプリケーションまたはアプレットのマニフェストで参照しているダウンロード型オプションパッケージを検索します。目的のクラスがインストール型オプションパッケージの中から見つかった場合は、アプレットやアプリケーションのマニフェストファイルでダウンロード型オプションパッケージを参照していても、ダウンロード型オプションパッケージはダウンロードされません。
拡張機能機構では、ダウンロード型オプションパッケージは JRE または JDK のディレクトリ構造にインストールされません。ダウンロード型オプションパッケージは、ダウンロードされてもインストール型オプションパッケージにはなりません。
ダウンロード型オプションパッケージの場合、インストール型オプションパッケージとは異なり、ネイティブコードを含むことはできません。
Copyright © 1997, 1998 Sun Microsystems, Inc.All Rights Reserved. |
Java ソフトウェア |