Java言語では、クラスはとても簡単なルールによって管理されています。
| バイトコード | コンパイル単位 | パッケージ | クラスライブラリ |
|---|---|---|---|
| 単独のクラス | 同一のソースファイル | パッケージ名が共通 | 階層構造を持つパッケージ |
もちろん、1つのクラスのみを含むコンパイル単位、 単独のコンパイル単位のみのパッケージ、 サブ・パッケージを含まないクラスライブラリが存在してもかまいません。
ソースファイル内でパッケージ名を指定しない場合は、
暗黙のうちに「名前なしのパッケージ」という共通のパッケージに
含まれると解釈されます。
アプリケーションの規模が小さい場合は、これで特に問題ありません。
ただし大規模な開発を行う場合は、クラス名の衝突を防ぐためにもパッケージ名
の指定が必要になってきます。
各サブ・パッケージの階層構造は、現実のファイルシステムのディレクトリ構造に
対応させるルールになっています。
クラスライブラリにアクセスするには、
その「ルート・ディレクトリ」に該当する場所を「クラスパス」として指定します。
上のルールは非常に明快ですが、現実にファイルの数が増えてくると管理が面倒です。
クラスライブラリの「アーカイブ」に当たるものが利用できると便利でしょう。
現在の JDKでは、zip形式に圧縮されたファイルを、現実のファイルシステムと
同様に取り扱うことができます。
その場合、圧縮されたファイルが存在するディレクトリをクラスパスに指定します。