JDK1.2.1 のパッケージの概要

・ JDK(Java Development Kit) は Javaの標準のクラスライブラリを提供します。 これらは階層化された構造を持つパッケージ群によって構成されています。 JDK1.2.1 に提供されている全パッケージの概要を紹介します。


・ JDK1.2.1には、 JDK1.2 の 57個のパッケージに、javax.swing.text.html.parser, javax.swing.text.rtfの2個が追加され、 以下の 59個のパッケージ(サブパッケージも含む)が提供されています。 JDK1.1 から引き続き存在しているものは、そのうち 22個にすぎません。 また、それらのいくつかにも新しいクラスの追加が行われています。
 Swing関連のパッケージは javax.swing 以下に提供されています。 javax の下には、Swing関連の他 accessibilityのパッケージも含まれています。 また CORBAに関連するパッケージ群は開発元の OMG(Object Management Group) のドメイン名に基づいて org.omg以下の名称を持ちます。
 なお、以下に紹介するのは公式の APIのドキュメントに含まれているもののみに 限定します。実は現在配布されている クラスライブラリには、他にも含まれているパッケージが存在しており、 アプリケーションの中で利用することも可能です 具体的には java.awt.peer, com.sun.java.swing.plf.motif, com.sun.image.codec, org.omg.CosNaming.NamingContextPackageなどです。 これらのパッケージは過去のバージョンとの互換性のためだけに存在したり、 配布の際のライセンスの問題などの理由から公式にアナウンスされている パッケージとは別の扱いになっているようです。

図 JDK1.2.1 のパッケージ一覧


GUIの構築のためのパッケージ


・ パッケージのうちの約半数は GUIを構築するためのものです JDK1.2からは javax以下の Swingコンポーネント関連のパッケージが追加され、 その構成も大規模になっています。

・ java.appletパッケージはアプレットを開発するためのものです。 アプレットとは WWWのページ内に「張り付ける」ことが可能な小規模なプログラムです。 すべてのアプレットの基になる Appletクラスとアプレットの動作環境を実現する ための機能を定めたインターフェイスから構成されています。 アプレットについては本書では詳しく触れませんでしたが、 Appletクラス自身は Containerのサブクラスであり、描画の方法やイベント処理など、 その取り扱いは java.awtのコンポーネントとほぼ共通です。

・ java.awtパッケージは、 ウィンドウシステムを表す Toolkit、 グラフィックスの表示の手段を提供する Graphics,Graphics2D、グラフィックスの操作の基本のデータである Color,Image,Font,Point,Dimensionなどのクラス、 JDK1.1までのコンポーネントのクラス、 レイアウトの方針を定めるためのクラスなどを提供します。
 このように広範囲に渡っているのは歴史的な事情と言えるでしょう。 JDKの初期のバージョンでは GUIの機能のほとんどすべてが、 このパッケージ1個にまとめられていたのです。 JDK1.0までの古いイベントスタイルでイベントを表す Eventクラスも このパッケージに互換性を保つために残されています。 また JDK1.2から追加された描画時の細かな指定を行う Stroke,Paint,Compositeの各インターフェイスとそれらを実装した BasicStroke,TexturePaint,AlphaCompositeなどのクラスも、 このパッケージに新たに追加されています。

・ java.awt.colorパッケージは JDK1.2から新たに追加されたものです。 色空間を表すColorSpaceのクラスを提供します。 また色の国際標準を定める International Color Consorsiumの規格に したがって、デバイスに依存しない色の表現を実現するための機能を提供します。

・ java.awt.datatransferパッケージは、アプリケーション間のデータの受け渡し、 具体的には「コピー&ペースト」の機能を、 Javaのアプリケーションレベルで実現するためのものです。 JDK1.1から追加されました。 データを一時的に記憶する Clipboard、データの種類を識別するための DataFlavorなどのクラスを提供します。

・ java.awt.dndパッケージはアプリケーション間のデータの受け渡しを、 いわゆる「ドラッグ&ドロップ」の機能によって実現するためのものです。 JDK1.2から新たに追加されました。 ドラッグ&ドロップの操作の各段階のイベントを処理するための イベントおよびリスナのクラスを提供します。

・ java.awt.eventパッケージは JDK1.1から採用された「代理人モデル」に基づく イベント処理のためのイベント及びリスナのクラスを提供します。 マウスやキーボードの入力、コンポーネントの操作に対応するイベントは、 このパッケージの中のクラスを用いて処理します。

・ java.awt.fontパッケージは JDK1.2から新たに追加されました。 スケーラブルフォント、文字列の向きの指定、Glyphの概念の導入など 国際化対応も含めてより高度なフォントの操作を可能にします。

・ java.awt.geomパッケージは JDK1.2から新たに追加されました。 画面のデバイスに依存しない座標系の中で取り扱うことが可能な基本図形 のクラス群および座標変換のクラス AffineTransformを提供します。

・ java.awt.imパッケージは JDK1.2から新たに追加されました。 "im" とは Input Methodの意味です。 日本語などの非アルファベット文字の入力と変換の機能を Javaのレベルで 実現するためのものです。

・ java.awt.imageパッケージは JDK1.1から存在しています。 Imageクラスのオブジェクトをシステムやデバイスに依存しない ように抽象化して取り扱うための機能を提供します。 JDK1.1からはイメージのピスセル値の取り出しやフィルタリングのための クラスが追加されました。 JDK1.2ではさらに大幅な拡張があり、BufferedImage, Rasterなどの クラスの導入でより高度な処理が可能となりました。

・ java.awt.image.renderableパッケージは JDK1.2から新たに追加されました。 システムやデバイスに依存しない抽象化したイメージの取り扱いを、 さらに拡張したインターフェイスとクラスを提供します。 それらはイメージを生成する処理の途中の段階で利用されます。

・ java.awt.printパッケージは JDK1.2から新たに追加されました。 印刷処理のための PrintJob, Paper, Bookなどのクラスを提供します。

・ javax.accessibilityパッケージは JDK1.2から新たに追加されました。 身障者などのためのユーザーインターフェイスを定義するための機能を提供します。

・ javax.swingパッケージは JDK1.2から新たに追加されました。 従来のコンポーネントに代わって導入された高機能の Swingコンポーネント およびそれらを実現するためのクラスを提供します。
 新しいコンポーネントは JButton,JCheckBoxなどのように先頭に Jの文字が 付きます。 JSlider,JTree,JTableなど従来には存在しなかった新しいコンポーネントの クラスも多数追加されています。 また Swingコンポーネントの機能を実現するために、 以下の多数のサブパッケージが存在します。 (もちろん、それらもすべて JDK1.2から新たに追加されたものです。)

・ javax.swing.borderパッケージは、Swingコンポーネントの 境界の部分のデザインを提供します。 LineBorder,MatteBorderなど Borderのオブジェクトを設定することで コンポーネントの外見を統一的に変更することが可能になります。

・ javax.swing.colorchooserパッケージは JColorChooserクラスを 実現するための機能を提供します。 (通常のアプリケーションでは利用することはないでしょう。)

・ javax.swing.eventパッケージは Swingコンポーネントで新たに 定義されたイベントおよびリスナのクラスを提供します。 ListSelectionEvent,TreeSelectionEvent,MenuEvent,PopupMenuEventなど 個々のコンポーネントに対応するもの、Changeイベントのように 汎用で用いられるものなどが含まれています。

・ javax.swing.filechooserパッケージは JFileChooserクラスを 実現するための機能を提供します。 (通常のアプリケーションでは利用することはないでしょう。)

・ javax.swing.plafパッケージは "Pluggable Look And Feel"の機能を提供します。 Swingコンポーネントは Look And Feelの設定を変更することで デザインを統一的に変更することが可能です。 個々の Look And Feelに対応するコンポーネントの実装は、 このパッケージのさらに下にあるサブパッケージの中に与えられています。

・ javax.swing.plaf.basicパッケージは Look And Feelの実装を行うための基本的な共通部分を提供します。 このパッケージのクラスを基にすることで、Look And Feelの実装の労力を 軽減することが可能になります。

・ javax.swing.plaf.metalパッケージは Metalの Look And Feelを実装した クラスを提供します。 この Look And Feelは Swingのデフォルトとして用いられます。

・ javax.swing.plaf.multiパッケージは Multiの Look And Feelを実装したクラスを提供します。

・ javax.swing.tableパッケージは JTableクラスを 実現するための機能を提供します。 (通常のアプリケーションでは利用することはないでしょう。)

・ javax.swing.textパッケージはテキストを表示するための Swingコンポーネント、 JTextField, JTextArea, JEditorPaneおよび JTextPaneクラス を実現するための機能を提供します。 AbstractDocumentやEditorKitなどのクラス、 キャロット(カーソル)の制御、テキストの反転表示、タブの設定など 多様な機能が含まれています。

・ javax.swing.text.htmlパッケージは HTML文書の表示や編集を行うコンポーネントを実現するための機能を提供します。

・ ・

・ javax.swing.treeパッケージは JTreeクラスを 実現するための機能を提供します。 (通常のアプリケーションでは利用することはないでしょう。)

・ javax.swing.undoパッケージは アプリケーションの操作取り消し(undo)の機能を提供します。

・ java.beansパッケージは Javaのコンポーネントの共通の規格を定めた JavaBeansに 関するパッケージです。JDK1.1から追加されました。 このパッケージが主として提供するのは、 JavaBeansによる開発を行う GUIベースの開発ツールが備えるべき機能を定義した BeanInfo, PropertyEditor, Customizerなどの インターフェイスや、開発ツールおよび Beans内部で利用される BeanDescripter,PropertyChangeEventなどのクラスです。

・ java.beans.beancontextパッケージは JDK1.2から追加されました。 Beansを部品としてさらに Beansを設計するというように、 階層的な構造の記述を可能にする BeanContextの機能を提供します。


アプリケーションの基本的な機能を提供するパッケージ


・ java.ioパッケージは JDK1.0から存在する基本的なパッケージです。 ストリームへの入出力を提供するクラス群と、 ファイルシステムを取り扱うための Fileクラスなどを提供します。

・ java.langパッケージは JDK1.0から存在する基本的なパッケージです。 Javaのシステム自身を管理するためのクラスを提供します。 すべてのクラスの共通のスーパークラスとなる Object、 クラスを取り扱うための Class、VMを表す System、 スレッドを管理する Thread、 初等関数や乱数を取り扱う Math、 文字列を取り扱う Stringおよび StringBufferなどのクラスが含まれます。

・ java.lnag.refパッケージは JDK1.2から追加されました。 JVMが管理するオブジェクトへの参照を、プログラムの側から操作するための Referenceおよびそのサブクラスを提供します。

・ java.lnag.reflectパッケージは JDK1.1から追加されました。 クラスのメンバの情報をプログラム内から動的に取得するための Field, Constructor, Methodなどのクラスを提供します。

・ java.mathパッケージは JDK1.1から追加されました。 long型、double型に収まらない巨大な数値やきわめて精度の高い数値を 取り扱うための BigInteger, BigDecimalのクラスを提供します。

・ java.securityパッケージは JDK1.1から追加されました。 セキュリティの機能を実現するためのクラスを提供します。 JDK1.2から大幅に拡張され、より強力で柔軟な機能を提供しています。

・ java.security.aclパッケージは JDK1.1から追加されました。 アクセスの制御に関する情報(Access Control List)の管理を行うためのクラスを 提供します。

・ java.security.certパッケージは JDK1.2から追加されました。 認証の処理を行うためのクラスを提供します。

・ java.security.interfacesパッケージは JDK1.1から追加されました。 電子署名と公開鍵暗号の「鍵」のクラスが必要とする機能を定義した インターフェイスを提供します。

・ java.security.specパッケージは JDK1.2から追加されました。 暗号化の「鍵」を個々のアルゴリズムに基づいて実現しするための手段を定め、 それらを一般的に取り扱うためのクラスとインターフェイスを提供します。

・ java.textパッケージは JDK1.1から追加されました。 国際化に対応してテキストの表示を行うためのクラスを提供します。 日付や数値などの表現の書式や 文字、語の区切りやソートの機能を国際化対応で提供します。

・ java.utilパッケージは JDK1.0から存在する基本的なパッケージです。 ただし、このパッケージには統一的な性格があるわけではなく、 アプリケーションでよく利用される「便利な」クラスを集めたものです。 JDK1.0から存在するものには Vector,Stack, Hashtable,Bitsetなど 汎用のデータ構造を提供するクラスがあります。 システムの時刻を取得するための Date、 文字列をトークンに分割する StringTokenizerなどのクラスも含まれています。
 JDK1.1からは国際化機能に関連する Locale, Timezone, ResourceBundleなどのクラスと 「代理人モデル」に基づくイベント処理関連の EventObject, EventListenerが追加されました。
 JDK1.2からは従来の Hashtableや Vectorなどのクラスは再構成され、 新しい Collectionクラス群として提供されています。 Iterator, ArrayListなどが追加されています。

・ java.util.jarパッケージは JDK1.2から追加されました。 JAR(Java Archive)形式のファイルへの入出力のストリーム、 エントリの追加と復元の機能を提供します。

・ java.util.zipパッケージは JDK1.1から追加されました。 ZIP形式のファイルへの入出力のストリーム、 エントリの追加と復元の機能を提供します。 また GZIP形式の圧縮ファイルへの入出力のストリームも提供しています。


ネットワーク、分散オブジェクトに関連するパッケージ


・ java.netパッケージは JDK1.0から存在する基本的なパッケージです。 インターネット上のIPアドレスやDNS名、URLなどを取り扱うクラス、 TCP/IP,UDPによる通信を直接行うための Socket,Packetなどのクラスを 提供します。

・ java.sqlパッケージは JDK1.1から追加されました。 データベースの標準である SQLの Javaの側のインターフェイスを提供します。

・ java.rmiパッケージは JDK1.1から追加されました。 以下に述べる4個のサブパッケージとともに、 RMI(Remote Method Invocation)の機構により、 異なる VM間でオブジェクトのメソッドを呼び出す 分散オブジェクトの機能を実現します。 このパッケージは主として、 RMIによって分散オブジェクトを記述するための基本的なクラスとインターフェイス を提供します。

・ java.rmi.activationパッケージは JDK1.2から追加されました。 RMIの呼び出しによってサーバ側の VMを動的に起動する Activationの機構を 実現します。このパッケージには Activationを利用する分散オブジェクトを 記述するためのクラスとインターフェイスも提供されています。

・ java.rmi.dgcパッケージは JDK1.1から追加されました。 "dgc" とは Distribute Garbage Collectionの意味です。 複数の JVMにまたがる分散環境のガーベジコレクションの機能を実現するための クラスを提供します。通常のアプリケーションで直接利用することはないでしょう。

・ java.rmi.registryパッケージは JDK1.1から追加されました。 RMIの分散オブジェクトの管理を行う Registryの機能を定義したインターフェイスを 提供します。

・ java.rmi.serverパッケージは JDK1.1から追加されました。 サービスを提供する分散オブジェクトの側の機能を実現するクラスを提供します。 分散オブジェクトの設計のスーパークラスとなる UnicastRemoteObjectクラスは このパッケージに含まれます。

・ org.omg.CORBAパッケージは JDK1.2から追加されました。 以下の6個のパッケージとともに、 CORBAによる分散オブジェクトの Javaによる記述を可能にします。 このパッケージには CORBAのオブジェクトが満たすべき機能を定義した Objectインターフェイス、 CORBAのシステムの中核となる ORB(Object Request Broker) を表す ORBクラス、 IDL(Interface Definition Language)に定義された基本の データ型を取り扱うクラスなどが提供されています。

・ org.omg.CORBA.DynAnyPackageパッケージは オブジェクトを動的に要求する処理で発生する可能性のある 例外(Exception)のクラスを定義しています。

・ org.omg.CORBA.ORBPackageパッケージは ORBのサービスを提供する分散オブジェクトを得る処理で発生する 可能性のある例外(Exception)のクラスを定義しています。

・ org.omg.CORBA.portableパッケージは org.omg.CORBAで定義されたインターフェイスを実装したクラスを提供します。 Javaで記述される分散オブジェクトは、 このパッケージの中の ObjectImplのサブクラスとして設計されます。

・ org.omg.CORBA.TypeCodePackageパッケージは データの型の識別に関連して発生する 可能性のある例外(Exception)のクラスを定義しています。

・ org.omg.Namingパッケージは ORBのサービスのうち最も基本的なネームサービスに関連したクラスを提供します。 アプリケーションがネームサービスから情報を得たり、 分散オブジェクトをネームサービスを通じてやりとりする場合には、 このパッケージの中の NamingContext,NameComponentなどのクラスが必須です。

・ org.omg.Naming.NamingContextPackageパッケージは NamingContextを通じたやりとりによって発生する可能性がある 例外(Exception)のクラスと、それらをデータとして転送する際の Helperと Holderのクラスを提供します。