Javaパッケージ(Java package)は名前空間の中にあるJavaクラスをまとめるメカニズムである。Javaパッケージは、JARファイルと呼ばれる圧縮ファイルの中に保存することができ、クラス群を一つのグループとしてまとめた方が1つずつダウンロードするよりも高速化される。プログラマも一般に同じカテゴリに属しているクラスや類似した機能を提供するクラスをまとめたパッケージを使う。
Javaソースファイルはファイルの先頭にソースファイルが定義したクラスのパッケージを明示するpackage構文を含むことができる。
パッケージはそれが含むタイプに関してユニークな名前空間を提供する。
同じパッケージにあるクラス群はお互いに保護された(protected)メンバにアクセスできる。
パッケージは次に述べる種類の型を含むことができる。
クラス
インタフェース
列挙型
アノテーション
C++などの言語に使われているnamespace (名前空間)に似ているが、その名前空間よりも機能は限定的であり、階層構造を持たず、クラス名の衝突を避けるために存在する。またそのパッケージ内にあるクラスに対しては、package privateといった設定が可能であり、package privateなクラスはパッケージ外部のクラスからのアクセスが禁止され、カプセル化による情報隠蔽を実現できる。これによりGoFデザインパターンの一つ、Facade パターンをより忠実に実現することができる。 Javaソースファイルでは、ファイルが属しているパッケージにはpackage キーワードが明示されている。package java.awt.event; Javaソースファイル内でパッケージを使うことで、import文でパッケージからクラスをインポートすることは便利なものとなる。この構文 import java.awt.event.*; は java.awt.event からすべてのクラスをインポートする。一方、 import java.awt.event.ActionEvent; はパッケージからActionEventクラスだけをインポートする。これらのimport文どちらも、以下のように単純クラス名でActionEvent クラスを参照利用することができる: ActionEvent myEvent = new ActionEvent(); クラスはクラス完全修飾名を使うことでimport文無しで直接使うことができる。例えば、 java.awt.event.ActionEvent myEvent = new java.awt.event.ActionEvent(); は前述のimport文を要求しない。 パッケージ宣言付きクラスはデフォルトアクセス(default access)宣言(修飾子無指定)したクラスやメンバ、protectedアクセス修飾子 JARファイルはjarコマンドラインユーティリティによって生成される。そのコマンド jar cf myPackage.jar *.class はすべての拡張子.classファイルをJARファイルmyPackage.jarに圧縮する。コマンドラインオプション'c'はjarコマンドに「新しいアーカイブを作れ」と指示する。'f'オプションはJARファイルが生成されるファイル名の直前に置く必要がある。 パッケージは通常、ピリオド(.) (「ドット」と発音)によって分割された階層レベルで階層命名パターンを使用する。名前階層が下位であるパッケージはしばしば上位層に相当するパッケージの「サブパッケージ」と呼ばれるが、パッケージ間には意味的な関係は無い。Java Language Specification パッケージ名は組織のトップレベルドメイン名と、そのときの組織のドメインといくつかのサブドメインリストが逆順になったもので始まることが推奨されている。組織はそれらの名前にそのときに特定の名前を選ぶ。パッケージ名は可能ならばすべて小文字にすべきである。 例えば、もしカナダにMySoftと呼ばれる組織がfraction(小数、分数)を扱うパッケージを作るとすると、パッケージをca.mysoft.fractionsとネーミングすることは、他社によって開発された類似するもうひとつのパッケージからfractionパッケージを見分ける。もしMySoftと呼ばれるアメリカの企業もまたfractionパッケージを作るとするが、名前はcom.mysoft.fractionsであり、そのとき、それら二つのパッケージにあるクラスはユニークに定義され、名前空間は分割される。 曖昧でないパッケージ名に関して完全な規約と、パッケージ名に直接使うことができないインターネットドメイン名をパッケージに命名するルールは、Java言語仕様の ⇒section 7.7で説明されている。 ハイフン(-)が使われているドメイン名をそのままJavaソースコードで使用するとコンパイルエラーを引き起こす。そのためハイフンが使われているドメイン名には、ハイフンの代わりにアンダースコア(_)を使用する。 Java SE 5から追加されたアノテーションは、パッケージも対象にすることができる。パッケージにアノテーションを保存するには、該当するパッケージディレクトリにpackage-info.javaというファイルを作り、以下のように記述する。 /** * パッケージの説明。 * パッケージのコメントにはJavadocのタグがそのまま使える。 */ @Deprecated package com.example.wikipedia; この例は、パッケージcom.example.wikipediaを非推奨にしていることを意味する。このpackage-info.javaはJavaコンパイラに警告を表示させる以外に、Javadocにパッケージの説明を表示するドキュメントを生成させるためにも利用される。package-info.javaは、パッケージにアノテーションを付加するために作られ、従来のpackage.htmlの代替となるものである。
目次
1 パッケージ使用
2 パッケージアクセス保護
3 JARファイル生成
4 パッケージ命名規約
5 Java SE 5 から追加されたアノテーション
6 Java SE 6のコアパッケージ
7 関連項目
8 外部リンク
パッケージ使用
パッケージアクセス保護
JARファイル生成
パッケージ命名規約
Java SE 5 から追加されたアノテーション
Java SE 6のコアパッケージ詳細は「Java Platform, Standard Edition」を参照java.lang
java.util
java.io
java.math
ウィキブックスにJava関連の解説書・教科書があります。
表
話
編
歴
Java
Javaプラットフォーム
プログラミング言語Java
Java仮想マシン
Javaプラットフォーム
エディション
Micro Edition
Standard Edition
Enterprise Edition
コンフィギュレーション・プロファィル
CLDC
MIDP
DoJa
Javaカード
実行環境
Java開発キット
Java実行環境
IKVM.NET
プラットフォーム技術
アプレット