【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷




―Javaプログラミングの前提知識―

前田俊行
2001/5/12
Javaプログラミング
ワンポイントレクチャーについて

   クラスパスを使わずクラスライブラリを利用する
  ―エクステンション(拡張)メカニズム―

今回の内容

エクステンションメカニズムの種類
(1)インストール拡張

(2)ダウンロード拡張

 エクステンション(拡張)メカニズムとは、クラスライブラリ(ある特定の目的に利用できるクラスの集まりのこと)を、クラスパスに指定せずに利用するためのメカニズムです。

 エクステンションメカニズムが登場する前は、クラスライブラリを利用するアプリケーションは、あらかじめ、どのクラスライブラリを利用するかを調べ、そのクラスライブラリの位置を調べ、それらのクラスライブラリをクラスパスに指定しなければなりませんでした。この作業は、クラスライブラリが少ないうちはよいのですが、利用するクラスライブラリが多いと非常に面倒なことになります。エクステンションメカニズムを用いることで、この面倒なクラスパスの設定を回避することができます。

 エクステンションメカニズムの種類

  エクステンションメカニズムにはインストール拡張とダウンロード拡張の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ファイルで実現するときに用います。また、クラスライブラリのユーザーによるクラスパスの設定の手間を省くためにも用います。

 インストール拡張と比べて、ダウンロード拡張はあまり使われていないようなので、ここではこれ以上の説明は省略します。

Javaプログラミング・ワンポイントレクチャー INDEX



ホワイトペーパーTechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

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