Javaを学び始めると、「パッケージ」や「クラスパス」という用語に出会います。これらはプログラムの構成や実行において重要な役割を果たしますが、初心者には少し難しく感じられるかもしれません。この記事では、これらの概念を初心者の方にもわかりやすく解説します。
パッケージとは何か?
パッケージは、関連するクラスやインターフェースをまとめるための仕組み。名前空間を提供することで、クラス名の衝突を避けることができます。
パッケージに親子関係は存在しない
パッケージ名はドット(.
)で区切られた構造を持つように見えますが、これはあくまで見た目上のものであり、実際には親子関係は存在しません。
例えば、com.example.app
とcom.example.util
は同じ階層にあると考えてください。
クラスパスとは?
クラスパスは、Java仮想マシン(JVM)がクラスファイルを探す際の検索パスを指定するもの。
クラスパスのデフォルト設定
クラスパスを指定していない場合、Javaは現在の作業ディレクトリ(javaコマンドを実行したディレクトリ)をクラスパスとして使用します。
パッケージ名の衝突を避ける方法
複数の開発者が同じクラス名やパッケージ名を使用すると、名前の衝突が発生する可能性があります。これを避けるために、ドメイン名を逆順にした文字列をパッケージ名の接頭辞として使用することが推奨されています。
- 例:ドメインが
example.com
の場合、パッケージ名はcom.example
となります。
The prefix of a unique package name is always written in all-lowercase ASCII letters and should be one of the top-level domain names, currently com, edu, gov, mil, net, org, or one of the English two-letter codes identifying countries as specified in ISO Standard 3166, 1981.
クラスローダーとは?
クラスローダーは、JVMがクラスファイルをメモリに読み込む際に使用する仕組み
クラスローダーの仕組み
クラスローダーは以下の順序でクラスを検索します。
- ブートストラップクラスローダー:JREの基本クラス(
java.lang
など)を読み込みます。 - 拡張クラスローダー:拡張ディレクトリにあるクラスを読み込みます。
- アプリケーションクラスローダー:ユーザが定義したクラスパスからクラスを読み込みます。
参考
