A-2 JDK 1.02 のパッケージとクラスの解説

 JDK(Java Developers' Kit) は Java言語の標準のクラス・ライブラリです。 JDK 1.0で提供されているパッケージとクラスの概要を紹介します。 (ただし、Error および Exception のクラスは省略しました。) なお、特に重要なクラスに関しては 「主要なクラスの変数とメソッド」で詳しい情報に触れることにします。

java.applet

 このパッケージはアプレットのベースとなる Appletクラスを提供します。 パッケージは1個のクラスと3個のインターフェイスしか含みません。

このクラスはアプレットのベースとなるクラスです。 すべてのアプレットは、このクラスのサブ・クラスです。 Appletは、 Panel の、Panelは Container の、 Containerは Component のサブ・クラスです。 したがって Appletは、これらのクラスから 継承した性質をすべて備えています。

以下の3つのインターフェイスは、 アプレットを表示するブラウザにインプリメントされるものです。


AppletContextは、 アプレットを取り巻く環境について情報を受け取るために利用します。 AppletStub はブラウザがアプレットを管理する手段を与えます。 通常のアプレットのプログラムでは利用しません。 AudioClip は抽象化された音声データへの操作手段を与えます。 実装された AppletContext と AudioClip の機能を呼び出すには、 Appletのクラスに定義されたメソッドを利用します。

java.awt

 awt(abstract window toolkit)は、JDKの胴体あるいは手足に たとえるべき存在です。 事実 awt は JDKで最も大きなパッケージです。 このパッケージを通じてプログラマーは、ウィンドウ・システム のオブジェトを利用し、 グラフィックのコントロールやイベントの処理を実現します。 正確に言えば、このパッケージ自身はウィンドウ・システムの ライブラリではありません。 それぞれのマシンのウィンドウシステム (X-Window、Windows、MacOSなど) へのインターフェイスを提供するのが、このパッケージの役割です。 このパッケージによって開発されたアプリケーションは、 特定のウィンドウ・システムに縛られません。 しかしプログラミング上の取り扱いは、 直接ウィンドウ・オブジェクトを操作している場合と変わりはありません。 むしろ、従来のウィンドウ・プログラミングよりもはるかに 簡単な記述で必要な機能を呼び出すことができます。
 このパッケージには 含まれるクラスの数も多いので、いくつかのグループに分けて解説する ことにします。

java.awt.image

 イメージの取り扱いは、通常ハードウェアやファイル形式に大きく依存します。 このパッケージはイメージを高度に抽象化し、 そうした依存を取り除いたコントロールをプログラマーに提供します。 Imageクラスそのものは awtパッケージに存在します。 このパッケージが提供するのは、イメージのデータを操作するための さまざまな手段です。

 MemoryImageSource はイメージの実体であるデータへの アクセスを提供します。
 ColorModel およびその2つのサブ・クラスは、 実際の画面のピクセル値(もしくはカラーマップのインデックス) と RGBカラー情報との間の変換を行います。
 ImageFilter とその2つのサブ・クラスは、イメージにフィルタ処理を 提供します。
 FilterdImageSource はフィルタ処理を受けたイメージデータへのアクセス を提供します。

 上の3つのインターフェイスは、 イメージを扱うクラスに組み込むべき機能を提供します。
 ImageProducer はイメージのデータを生成する FilterdImageSource と MemoryImageSource に実装されます。
 ImageConsumer はイメージのデータを受け取り加工する ImageFilter に実装されます。
 ImageObserver はイメージの読み込み状況を監視する機能を提供します。 このパッケージのクラスではなく、awtパッケージの Component と MediaTracker に実装されます。 したがって Applet も ImageObserver としての機能を持ちます。

java.awt.peer

 ウィンドウ・システムは、それぞれ固有の Look & Feel (ボタンなどのデザインや操作性)を持っています。 JDKは特に指定がなければデフォルトの Look & Feel を実装して使用します。 WindowsのPC や Machintosh の場合はシステムの固有な Look & Feel です。 X-window の場合は、特別な標準はありませんが、 JDKは Motif のウィジェット・セットを採用しています。 これら以外の Look & Feel にカスタマイズしたいような場合 には、このパッケージ内のインターフェイスを実装します。

上のように、このパッケージに用意されている各クラスは、 awtパッケージの中にあるユーザー・インターフェイスを扱うクラス に対応しています。 このパッケージには実装を持つクラスは存在しません。 実装の内容はプログラマー自身が用意することになります。

java.io

 入出力の処理およびファイル、 パイプなどの操作、ファイル・システムへのアクセスを 扱うパッケージです。

 パッケージの大半を占める入出力関連のクラスは、 さまざまなレベルのオブジェクトへの入出力の手段を提供してくれます。
 StreamTokenizer は入力の字句解析の手段を提供します。
 File と FileDescriptor は単にファイルのオブジェクトを生成するだけでなく、 ファイル・システムへのインターフェイスを提供します。
 RandomAccessFile は File のサブ・クラスではありません。 ファイル入出力の手段を提供します。

*注)アプレットのプログラムでは作成する場合セキュリティ上の理由から、 ファイルに関係するクラスの利用は多くの制限を受けます。

この他に以下の3つのインターフェイスが存在します。

 DataInput と DataOutput は、int, float などのデータを マシンに依存しない形式で入出力するための機能を提供します。 (ビットのオーダーなどを気にする必要がなくなる。) DataInputStream と DataOutputStream のクラスで実装されます。
 FilenameFilter はファイル名のフィルタリングの機能を提供します。 awt パッケージの FileDialogなどのクラスで利用されます。

java.lang

 このパッケージは、Java言語のプログラムの 基本要素となるクラスを提供します。 Javaインタープリタや Javaコンパイラなどの機能を実現するために必要なクラス も含まれます。
 String, Thread, System などのクラスは最も頻繁に利用されるクラスです。 逆に、いくつかのクラスは 皆さんのプログラムの中で直接に用いる機会は少ないでしょう。 しかし、その意味を知っておくことは、 Java言語の理解のために重要です。 いくつかのグループに分けて、その機能の概要を紹介しましょう。

java.net

 このパッケージは、ネットワークを取り扱うためのクラスの集まりです。 3個のインターフェイスと11個のクラスからなります。 クラスの数は多くありませんが、インターネットとの接続を実現する 重要なパッケージです。 awtパッケージと並んで強力な機能を提供してくれるパッケージと言えます。
 通常のアプレットのプログラムのレベルでは、クラス URL を操作する以上に 内部に立ち入る必要はありません。 しかし、自分で TCP/IP のプロトコルを直接扱うアプリケーションを 開発したいならば、 Socketクラスなどを利用することになるでしょう。

 以上はインターネットを通じ、 WWW サーバーとの交信を行うためのクラスです。 ContentHandler は受け取ったデータを取り扱うためのクラスです。

以上のクラスは、さらに低いレベルで直接 TCP/IP を扱うためのクラスです。 SocketImpl はマシンに依存する部分を実装するためのクラスです。 その他の Socket 関連のクラスはマシンやシステムに依存しなくなります。

これらのインターフェイスはそれぞれ、 上記の ContentHandler, URLStreamHandler, SocketImplクラスで実装すべき 機能を提供します。

java.util

 このパッケージは、種々の便利な機能を提供してくれます。 時刻の取得や乱数の発生、 ビット・アレイやスタックなど多くのプログラムでひんぱんに 利用される機能がクラスとして用意されています。 (このパッケージは、ここで紹介する機能に留まらず、 今後拡張される可能性があります。 プログラミングの定番のデータ構造は、このパッケージに 追加されていくでしょう。)
 このパッケージにあるクラスは、継承関係にあるもの以外は 互いに関連を持ちません。個別に紹介します。

ビット単位で操作できるデータを提供します。 必要に応じたサイズのビット数のデータを生成し、 配列のようにアクセスすることができます。

日付と時刻をシステムから取得し、利用できる形で提供してくれるクラスです。 (UNIX の dateコマンド同様、日付のみでなく時刻の情報も含みます。)

与えられた文字列の分解、サブ・ストリングの検出など 字句解析の機能を提供するクラスです。

Hashtable はハッシュ・テーブルの機能を提供するクラスです。 Dictionary は Hashtable を提供するためのスーパー・クラスです。 Properties は Hashtable のサブ・クラスで、 数値ではなくキーワードを用いてテーブルのデータにアクセスする ことができます。

乱数を利用するためのクラスです。 特に指定しなくても、 時刻から自動的に seed を生成する機能があります。 もちろん別の方法で生成した seed を明示的に与えることもできます。

汎用的なスタックの機能を提供するクラスです。

汎用的なベクトル型のデータを提供するクラスです。

列挙型データのクラスを実現するためにインプリメントする インターフェイスです。

インターフェイス Observer とクラス Observableは、 オブジェクト間の情報伝達の機構を実現します。 Observableのサブ・クラスのオブジェクトは、 何らかの変化が生じた時に、 登録された特定のオブジェクトに伝達する機能を持ちます。 伝達を受けるオブジェクトは、Observerをインプリメントしている 必要があり、メソッド update() の実装を持つ必要があります。