
―Javaプログラミングの前提知識―
2001/5/12
|
クラスパスを使わずクラスライブラリを利用する ―エクステンション(拡張)メカニズム― |
|
今回の内容
|
エクステンション(拡張)メカニズムとは、クラスライブラリ(ある特定の目的に利用できるクラスの集まりのこと)を、クラスパスに指定せずに利用するためのメカニズムです。
エクステンションメカニズムが登場する前は、クラスライブラリを利用するアプリケーションは、あらかじめ、どのクラスライブラリを利用するかを調べ、そのクラスライブラリの位置を調べ、それらのクラスライブラリをクラスパスに指定しなければなりませんでした。この作業は、クラスライブラリが少ないうちはよいのですが、利用するクラスライブラリが多いと非常に面倒なことになります。エクステンションメカニズムを用いることで、この面倒なクラスパスの設定を回避することができます。
| エクステンションメカニズムの種類 |
エクステンションメカニズムにはインストール拡張とダウンロード拡張の2種類があります。ここでは、まずインストール拡張について説明し、 次にダウンロード拡張について説明します。
(1)インストール拡張
インストール拡張とは、 Javaの実行環境に、新たにクラスライブラリを追加する機能のことです。追加されたクラスライブラリは、 あたかも標準クラスライブラリであるかのように、クラスパスを指定しなくてもアプリケーションから利用することができます。もちろんjavacなどでもクラスパスを指定せずに利用できます。Java VMが具体的にどのようにクラスを見つけるかについては、「クラスパス(class path)を正しく使う」を参照してください。
インストール拡張を行うためには、JARファイルとしてまとめてあるクラスライブラリを、“ある特定のディレクトリ”に置きます。これだけで、そのクラスライブラリはクラスパスを指定しなくても、アプリケーションから利用することができます。以下では、その“ある特定のディレクトリ”について説明します。
ある特定のディレクトリとは、Java 2 SDKがインストールされているディレクトリ下のディレクトリjre\lib\extを指します。仮にJava 2 SDKをディレクトリC:\jdk1.3にインストールしたとすると、ディレクトリC:\jdk1.3\jre\lib\extとなります。
このディレクトリにJARファイルを置けばよいのです、が、ここにちょっとした落とし穴があります。実は、Java 2 SDK Standard Editionをインストールすると、同時にJava 2 Runtime Environment Standard Edition(JRE)というJavaの実行環境がディレクトリC:\Program Files\JavaSoft\JRE\<バージョン番号>\以下にインストールされます。このJREのインストール拡張のためのディレクトリは、C:\Program Files\JavaSoft\JRE\<バージョン番号>\lib\extとなります。このため、こちらのディレクトリにもJARファイルを置く必要があります。ちなみに、javaコマンドを実行すると、通常それはJREのjavaコマンドを実行したことになります。そのため、エクステンションメカニズムによって検索されるディレクトリはC:\Program Files\JavaSoft\JRE\<バージョン番号>\lib\extとなります。一方、javacコマンドを実行すると、それはJava 2 SDKのjavaコマンドを内部で実行します。そのため、エクステンションメカニズムによって検索されるディレクトリは、仮にJava 2 SDKをディレクトリC:\jdk1.3にインストールしたとすると、C:\jdk1.3\jre\lib\extとなります。このため、もしどちらかのディレクトリにしかJARファイルを置かないと、「実行できるけどコンパイルできない」とか「コンパイルできるけど実行できない」などの不可思議な現象が起こりますので注意してください。
(2)ダウンロード拡張
ダウンロード拡張とは、あるJARファイル中のクラスで使われているクラスライブラリを、自動的にクラスパスに追加できる機能のことです。具体的には、クラスライブラリの作成者は、作成するJARファイル中に、そのJARファイル中のクラスで利用されるクラスライブラリのクラスパスを記述します。Java
VMは、そのJARファイル中のクラスを読み込むときに、そのJARファイルに指定してあるクラスパスを、自動的にクラスの検索場所に追加します。このため、そのクラスライブラリを利用する場合に、よけいなクラスパスを設定する必要がなくなります。
ダウンロード拡張は、アプレットを複数のJARファイルで実現するときに用います。また、クラスライブラリのユーザーによるクラスパスの設定の手間を省くためにも用います。
インストール拡張と比べて、ダウンロード拡張はあまり使われていないようなので、ここではこれ以上の説明は省略します。
ホワイトペーパー(TechTargetジャパン)
- Webの表示速度を遅くする「SSLハンドシェイク」とは (2010/2/9)
安全性を担保しようとWebページにSSLを適用すると、負荷の高い処理が実行される。速度と安全性は両立できるのか? - クラウド活用「雲活」のために押さえるべき39のポイント (2010/2/2)
活用するべきサービスか否か、クラウドの利点・問題点、クラウドプラットフォーム提供企業になるための条件、開発者がするべきことに分けて紹介 - 再利用性の高いクラス作成に重要な“アクセス制御” (2010/1/28)
Javaのアクセス修飾子public、private、protectedや、Eclipseで簡単に作れるアクセサメソッドgetter、setterについて解説 - DB設計の神ツール「ERMaster」なら、ここまでできる (2010/1/21)
直感的なUIに、カスタマイズ可能な、Excel出力のテーブル定義書、辞書機能など多機能なERモデリングの無料Eclipseプラグインです
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |






