![]() |
拡張機能 - 概要 |
拡張機能は、JAR ファイルの形で提供され、すべての JAR ファイルは拡張機能になり得ます。JAR ファイルが拡張機能の役割を果たすのは、次の 2 つの場合です。
jre ディレクトリは、Java Runtime Environment のトップレベルのディレクトリ、または JDK ソフトウェアのディレクトリ階層にある jre ディレクトリのどちらかです。このディレクトリに JAR ファイルを置いておけば、CLASSPATH に明示的に含めなくても、中に含まれるクラスをブートストラップクラスの一部であるかのようにアプレットおよびアプリケーションから使用できます。jre/lib/ext
インストール型拡張機能のネイティブコードバイナリは、存在する場合には次のディレクトリに置きます。
jre¥bin [Win32] jre/lib/<arch> [Solaris]
<arch>
は、Solaris プロセッサアーキテクチャで、sparc
か i386
です。ネイティブライブラリもまた、Win32 と Solaris のどちらでも jre/lib/ext/<arch> に置かれ、Win32 システムでは、<arch> は i386 になります。jre/lib/ext/<arch> ディレクトリは、jre¥bin (win32) または jre/lib/<arch> (Solaris) の次に検索されます。
Java VM は、特定の名前のクラスを探すとき、最初にブートストラップクラスを検索します。ブートストラップクラスの中に目的のクラスがない場合は、jre/lib/ext
に置かれた JAR ファイルからそのクラスを検索します。
JAR ファイルや、それに含まれるクラスは、jre/lib/ext
に置かれることによってインストール型拡張機能となるのであって、インストール型拡張機能となる特別な JAR ファイルがあるわけではありません。
目的のクラスがブートストラップクラスからもインストール型拡張機能内のクラスからも見つからない場合は、ダウンロード型拡張機能が検索されます。
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 ソフトウェア |