Java

オプションパッケージ - 概要

目次

オプションパッケージについて

注: これまで、オプションパッケージは、「標準拡張機能」または単に「拡張機能」として知られていました。

オプション・パッケージは、Java クラスとそれに関連するネイティブコードのパッケージです。 拡張機能を使うことにより、アプリケーションの開発者はコアプラットフォームの機能を拡張できます。 拡張機能機構により、ブートストラップクラスとほとんど同じように Java 仮想マシンからオプションパッケージクラスを利用できます。ブートストラップクラスは、コアプラットフォームを実装しているクラスであり、jre/lib/rt.jar および jre/lib/i18n.jar にあります。これらの jar ファイルには、java.langjava.io などの public API のクラス、およびプラットフォームの国際化および地域対応の機能をサポートするクラスが格納されます。 ブートストラップクラスと同様に、オプションパッケージのクラスはクラスパスに置く必要はありません。 必要なオプションパッケージが Java 2 Runtime Environment または Java 2 SDK にインストールされていない場合は、指定された URL から取得することもできます。

オプションパッケージは、JAR ファイルの形で提供され、すべての JAR ファイルはオプションパッケージになり得ます。 JAR ファイルがオプションパッケージの役割を果たすのは、次の 2 つの場合です。

VM は、ある名前のクラスを探すとき、最初にブートストラップクラスを検索します。 ブートストラップクラスの中に目的のクラスがない場合は、次にインストール型オプションパッケージからそのクラスを検索します。 ブートストラップクラスからもインストール型オプションパッケージからも見つからない場合は、アプリケーションまたはアプレットが参照しているダウンロード型オプションパッケージを検索します。 ブートストラップクラスとオプションパッケージクラスのどちらでもクラスを検索できない場合は、VM はクラスパスだけを検索します。

インストール型オプションパッケージ

インストール型オプションパッケージは、次のディレクトリに置かれた JAR ファイルです。
lib/ext       [in the Java 2 Runtime Environment]
jre/lib/ext   [in the Java 2 SDK]
このディレクトリに JAR ファイルを置いておけば、CLASSPATH に明示的に含めなくても、中に含まれるクラスをブートストラップクラスの一部であるかのようにアプレットおよびアプリケーションから使用できます。

インストール型オプションパッケージのネイティブコードバイナリは、存在する場合には次のディレクトリに置きます。

jre¥bin         [Win32]
jre/lib/<arch>  [Solaris]
<arch> は、Solaris プロセッサアーキテクチャで、sparci386 です。 ネイティブライブラリは、Win32 と Solaris の両方の jre/lib/<arch> ディレクトリに置かれます。Win32 システムでは、<arch>x86 です。 jre/lib/ext/ ディレクトリは、jre¥bin (win32) または jre/lib/<arch> (Solaris) の次に検索されます。

Java VM は、特定の名前のクラスを探すとき、最初に実行環境でそのクラスを検索します。 標準の実行環境のクラスから検出できなかった場合は、VM はオプションパッケージのディレクトリに置かれているすべての JAR ファイルから検索します。

JAR ファイルや、それに含まれるクラスは、 jre/lib/ext に置かれることによってインストール型オプションパッケージとなるのであって、インストール型オプションパッケージとなる特別な JAR ファイルがあるわけではありません。

インストール型オプションパッケージの JAR ファイルのマニフェスト属性には、そのオプションパッケージクラスを使うアプレットで利用できるバージョンとベンダーの情報が指定されている必要があります。 バージョンとベンダーの情報を指定する属性については、「オプションパッケージのバージョン管理」 で説明します。マニフェストの例を次に示します。

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 
Java Plug-in では、アプレットの実行時にこのバージョンとベンダーの情報を使って、アプレットに必要なオプションパッケージがインストールされていること、最新のバージョンであること、アプレットに適したベンダーのオプションパッケージであることが確認されます。 インストールされていない場合、またはインストールが不正な場合は、適切なオプションパッケージのダウンロードを要求するプロンプトが表示されます。 詳細は、「オプションパッケージのバージョン管理」を参照してください。

目的のクラスがシステムクラスからもインストール型オプションパッケージ内のクラスからも見つからない場合は、ダウンロード型オプションパッケージ内のクラスが検索されます。

ダウンロード型オプションパッケージ

ダウンロード型オプションパッケージは、別の JAR ファイルのマニフェスト内の Class-Path ヘッダフィールドで指定される JAR ファイルです。 ダウンロード型オプションパッケージのクラスは、参照する JAR ファイルのクラスで使用されます。 ある JAR ファイルにアプレットが含まれていて、その JAR ファイルのマニフェストで、そのアプレットのオプションパッケージとなる JAR ファイル (複数の場合もあり) を参照しているというのが典型的な例です。 同様に、オプションパッケージ同士で互いに参照し合う場合もあります。

Class-Path ヘッダの例を次に示します。

Class-Path: servlet.jar infobus.jar acme/beans.jar
この場合、ファイル servlet.jarinfobus.jar、および acme/beans.jar に含まれるクラスが、マニフェストにこのヘッダが含まれる JAR ファイルのクラスのオプションパッケージになります。Class-Path フィールドに URL を指定した場合、その URL は、アプレットまたはアプリケーションが含まれる JAR ファイルの URL からの相対 URL になります。

インストール型オプションパッケージと違って、ダウンロード型オプションパッケージとなる JAR ファイルが置かれる位置には何の意味もありません。 ダウンロード型オプションパッケージは、特定の場所に置かれるからではなく、ほかの JAR ファイルのマニフェストの Class-Path ヘッダの値として指定されるからオプションパッケージなのです。

インストール型オプションパッケージとダウンロード型オプションパッケージのもう 1 つの違いは、JAR ファイルに含まれているアプレットやアプリケーションだけがダウンロード型オプションパッケージを利用できるという点です。 JAR ファイルに含まれていないアプレットやアプリケーションは、ダウンロード型オプションパッケージを参照するマニフェストを持ちません。

VM は、特定のクラスを探すとき、最初にシステムクラスとインストール型オプションパッケージを検索します。目的のクラスがシステムクラスからもインストール型オプションパッケージ内のクラスからも見つからない場合は、アプリケーションまたはアプレットのマニフェストで参照しているダウンロード型オプションパッケージを検索します。目的のクラスがインストール型オプションパッケージの中から見つかった場合は、アプレットやアプリケーションのマニフェストファイルでダウンロード型オプションパッケージを参照していても、ダウンロード型オプションパッケージはダウンロードされません。

拡張機能機構では、ダウンロード型オプションパッケージは Java 2 Runtime Environment または Java 2 SDK のディレクトリ構造にインストールされません。ダウンロード型オプションパッケージは、ダウンロードされてもインストール型オプションパッケージにはなりません。

ダウンロード型オプションパッケージの場合、インストール型オプションパッケージとは異なり、ネイティブコードを含むことはできません。


Copyright © 1997, 1998 Sun Microsystems, Inc.All Rights Reserved. Sun

Java ソフトウェア