このパッケージはアプレットのベースとなる Appletクラスを提供します。
パッケージは1個のクラスと3個のインターフェイスしか含みません。
以下の3つのインターフェイスは、 アプレットを表示するブラウザにインプリメントされるものです。
awt(abstract window toolkit)は、JDKの胴体あるいは手足に
たとえるべき存在です。
事実 awt は JDKで最も大きなパッケージです。
このパッケージを通じてプログラマーは、ウィンドウ・システム
のオブジェトを利用し、
グラフィックのコントロールやイベントの処理を実現します。
正確に言えば、このパッケージ自身はウィンドウ・システムの
ライブラリではありません。
それぞれのマシンのウィンドウシステム
(X-Window、Windows、MacOSなど)
へのインターフェイスを提供するのが、このパッケージの役割です。
このパッケージによって開発されたアプリケーションは、
特定のウィンドウ・システムに縛られません。
しかしプログラミング上の取り扱いは、
直接ウィンドウ・オブジェクトを操作している場合と変わりはありません。
むしろ、従来のウィンドウ・プログラミングよりもはるかに
簡単な記述で必要な機能を呼び出すことができます。
このパッケージには
含まれるクラスの数も多いので、いくつかのグループに分けて解説する
ことにします。
これらのクラスは、プログラムの内部で直接使うことはありません。 しかし、他のウィンドウ・オブジェクトに共通する性質を 定義する大切な役割を持っています。
ボタンや選択メニューなどの機能を提供する部品です。 これらはすべて Component のサブ・クラスで、 アプレットの内部に配置することができます。 Panel は Container のサブ・クラスでもあり、 他のオブジェクトを内部に配置することができます。 TextField 及び TextArea の2つは、TextComponent のサブ・クラスでもあります。
これは Image などのメディアのオブジェクトを内部にデータとして保持 することが可能なクラスです。
これらは、実際に目に見えるオブジェクトではありません。 レイアウトのルールやポリシーを決め、 レイアウトをコントロールする手段を与えます。
Point, Dimension は今のところ二次元です。 Pointは (x,y)の座標、 Dimensionは width,height のサイズを表すクラスです。 Rectangleは矩形の領域を表すクラス、Polygonは多角形を表すクラスです。
これらは、ポップアップ・メニューを作成するためのクラスです。
ユーザー・インターフェイスのためにある部品ですが、 独立したウィンドウになります。 アプレットやその内部のオブジェクトのようにビューワに表示されるわけでは ありません。 Window が「裸の状態」のウィンドウを生成するのに対して、 Frame はタイトルバーなどの枠が付いて表示されるなど、 ウィンドウ・システムとのインターフェイスの機能を持ちます。 Dialog および FileDialog にはプッシュボタン、リスト・アイテムなど の付属の部品を内部に含む半ば特殊化されたクラスです。
Eventクラスのオブジェクトには、イベントに関する情報 (イベントの種類、イベントの発生したオブジェクト、 イベントの発生した時刻など)が記憶されています。 このクラスのオブジェクトはアプレットの外部から渡されるもので、 プログラムの中で生成することはありません。 イベントを扱うメソッドに引数として渡されます。 多くのイベント処理では、Eventクラスのデータは形式的に 渡されるだけで、特に利用されることはありません。 むしろ、それが普通だと思ってください。 イベントの配送先のオブジェクトやイベントの種類の識別などは、 メソッドに渡された段階で既に処理が終わっていることが多いからです。
このクラスは、マシンのシステムごとに実装が異なるウィンドウシステムに 対し、共通のインターフェイスを提供するためのスーパークラスとなります。 このクラスのメソッドのほとんどは、コンポーネントの各クラスの内部で 呼び出され、アプリケーションの中で直接利用することはあまりまりません。
イメージの取り扱いは、通常ハードウェアやファイル形式に大きく依存します。 このパッケージはイメージを高度に抽象化し、 そうした依存を取り除いたコントロールをプログラマーに提供します。 Imageクラスそのものは awtパッケージに存在します。 このパッケージが提供するのは、イメージのデータを操作するための さまざまな手段です。
MemoryImageSource はイメージの実体であるデータへの
アクセスを提供します。
ColorModel およびその2つのサブ・クラスは、
実際の画面のピクセル値(もしくはカラーマップのインデックス)
と RGBカラー情報との間の変換を行います。
ImageFilter とその2つのサブ・クラスは、イメージにフィルタ処理を
提供します。
FilterdImageSource はフィルタ処理を受けたイメージデータへのアクセス
を提供します。
上の3つのインターフェイスは、
イメージを扱うクラスに組み込むべき機能を提供します。
ImageProducer はイメージのデータを生成する
FilterdImageSource と MemoryImageSource に実装されます。
ImageConsumer はイメージのデータを受け取り加工する
ImageFilter に実装されます。
ImageObserver はイメージの読み込み状況を監視する機能を提供します。
このパッケージのクラスではなく、awtパッケージの
Component と MediaTracker に実装されます。
したがって Applet も ImageObserver としての機能を持ちます。
パッケージの大半を占める入出力関連のクラスは、
さまざまなレベルのオブジェクトへの入出力の手段を提供してくれます。
StreamTokenizer は入力の字句解析の手段を提供します。
File と FileDescriptor は単にファイルのオブジェクトを生成するだけでなく、
ファイル・システムへのインターフェイスを提供します。
RandomAccessFile は File のサブ・クラスではありません。
ファイル入出力の手段を提供します。
*注)アプレットのプログラムでは作成する場合セキュリティ上の理由から、 ファイルに関係するクラスの利用は多くの制限を受けます。
この他に以下の3つのインターフェイスが存在します。
DataInput と DataOutput は、int, float などのデータを
マシンに依存しない形式で入出力するための機能を提供します。
(ビットのオーダーなどを気にする必要がなくなる。)
DataInputStream と DataOutputStream のクラスで実装されます。
FilenameFilter はファイル名のフィルタリングの機能を提供します。
awt パッケージの FileDialogなどのクラスで利用されます。
このパッケージは、Java言語のプログラムの
基本要素となるクラスを提供します。
Javaインタープリタや Javaコンパイラなどの機能を実現するために必要なクラス
も含まれます。
String, Thread, System などのクラスは最も頻繁に利用されるクラスです。
逆に、いくつかのクラスは
皆さんのプログラムの中で直接に用いる機会は少ないでしょう。
しかし、その意味を知っておくことは、
Java言語の理解のために重要です。
いくつかのグループに分けて、その機能の概要を紹介しましょう。
Boolean, Character, Double, Float, Interger, Long は、
原始型 boolean,char,double,float,int,long にそれぞれ
対応したクラスです。
これらのクラスは、原始型のデータの操作、たとえば Stringクラスとの
相互の変換などの機能を提供します。
Number は数値に対応するクラスの共通のスーパー・クラスです。
String と StringBuffer は文字列のデータを扱うための機能を提供します。
String と StringBuffer の違いは、
前者は「定数」のデータ、後者は「可変」なデータということです。
Object は全てのクラスの親になるクラスです。
Math クラスは、sin(), cos()などの初等関数、乱数発生などの機能を 提供します。 (乱数の機能は、java.util の Random クラスによっても提供されます。 しかし、Math のクラスのメソッドの方が手軽に利用できます。)
以上のクラスは、 アプレットのプログラムでもしばしば利用される 重要な機能を提供するクラスです。 Thread と ThreadGroup はスレッドの機能をコントロールするための 手段を提供します。 System は、 標準入出力を含むシステムとのさまざまなインターフェイスを提供します。
以上のクラスは、 主にコンパイラやインタープリタなどのシステムによって利用される クラスです。 (アプレットのプログラムの中で使用することは、あまりありません。) Throwable は、エラーのクラス Error と Exception のスーパー・クラスです。 SecurityManagerは アプレット使用に対するセキュリティ対策を提供するクラスです。
Runnable は、
スレッドの処理を定義するための機能を提供する重要なインターフェイスです。
Clonable は、オブジェクトがコピーされたオブジェクトであることを識別する
ためだけにインプリメントされる特殊なインターフェイスです。
(新しいメソッドは何も提供しません。)
以上はインターネットを通じ、 WWW サーバーとの交信を行うためのクラスです。 ContentHandler は受け取ったデータを取り扱うためのクラスです。
以上のクラスは、さらに低いレベルで直接 TCP/IP を扱うためのクラスです。 SocketImpl はマシンに依存する部分を実装するためのクラスです。 その他の Socket 関連のクラスはマシンやシステムに依存しなくなります。
これらのインターフェイスはそれぞれ、 上記の ContentHandler, URLStreamHandler, SocketImplクラスで実装すべき 機能を提供します。
このパッケージは、種々の便利な機能を提供してくれます。
時刻の取得や乱数の発生、
ビット・アレイやスタックなど多くのプログラムでひんぱんに
利用される機能がクラスとして用意されています。
(このパッケージは、ここで紹介する機能に留まらず、
今後拡張される可能性があります。
プログラミングの定番のデータ構造は、このパッケージに
追加されていくでしょう。)
このパッケージにあるクラスは、継承関係にあるもの以外は
互いに関連を持ちません。個別に紹介します。
ビット単位で操作できるデータを提供します。 必要に応じたサイズのビット数のデータを生成し、 配列のようにアクセスすることができます。
与えられた文字列の分解、サブ・ストリングの検出など 字句解析の機能を提供するクラスです。
Hashtable はハッシュ・テーブルの機能を提供するクラスです。 Dictionary は Hashtable を提供するためのスーパー・クラスです。 Properties は Hashtable のサブ・クラスで、 数値ではなくキーワードを用いてテーブルのデータにアクセスする ことができます。
乱数を利用するためのクラスです。 特に指定しなくても、 時刻から自動的に seed を生成する機能があります。 もちろん別の方法で生成した seed を明示的に与えることもできます。
汎用的なスタックの機能を提供するクラスです。
汎用的なベクトル型のデータを提供するクラスです。
列挙型データのクラスを実現するためにインプリメントする インターフェイスです。
インターフェイス Observer とクラス Observableは、 オブジェクト間の情報伝達の機構を実現します。 Observableのサブ・クラスのオブジェクトは、 何らかの変化が生じた時に、 登録された特定のオブジェクトに伝達する機能を持ちます。 伝達を受けるオブジェクトは、Observerをインプリメントしている 必要があり、メソッド update() の実装を持つ必要があります。