パッケージ (Java)Javaパッケージ(Java package)は名前空間の中にあるJavaクラスをまとめるメカニズムである。Javaパッケージは、JARファイルと呼ばれる圧縮ファイルの中に保存することができる。同じパッケージに属するクラス群を1つのグループとしてまとめたほうが、Javaクラスファイルを1つずつダウンロードするよりも高速化される。プログラマも一般に同じカテゴリに属しているクラスや類似した機能を提供するクラスをまとめたパッケージを使う。 Javaソースファイルは先頭に、そのソースファイル内で定義されるクラスが属するパッケージを指定する
特に、他の型の中に定義がネストされておらず、パッケージの直下に属するクラスやインタフェースを「トップレベルクラス」や「トップレベルインタフェース」と呼ぶ[1][2]。トップレベルの型は、その型が 役割としてはC++やC#などの言語に使われている名前空間(英: namespace)に似ているが、その名前空間よりも機能は限定的であり、階層構造の概念はあるもののブロック構文を持たず、主に型名の衝突を避けるために存在する。またそのパッケージ内にある型は、アクセスレベル修飾子(access level modifiers)をデフォルトの無指定にすることでpackage-private設定[4]となり、package-privateな型はパッケージ外部の型からのアクセスが禁止され、カプセル化による情報隠蔽を実現できる。これによりGoFデザインパターンの一つ、Facade パターンをより忠実に実現することができる。 パッケージの使用Javaソースファイルでは、ファイルが所有する(ファイル内に書かれている)クラスまたはクラス群が属しているパッケージが、 package java.awt.event;
あるパッケージが所有するクラスをJavaソースファイル内で使うには、 import java.awt.event.*;
一方、次の宣言はパッケージから import java.awt.event.ActionEvent;
これらの ActionEvent myEvent = new ActionEvent();
クラスの完全修飾名(fully qualified name)を使うことで、 java.awt.event.ActionEvent myEvent = new java.awt.event.ActionEvent();
パッケージアクセス保護あるパッケージ内のクラスは、 JARファイル生成JARファイルは jar cf myPackage.jar *.class
コマンドラインオプション'c'はjarコマンドに「アーカイブの新規作成」を指示する。'f'オプションはファイルの作成を指示する。ファイル名はその次に来て、JARファイルのコンテンツ(内容物)の前に指定される。 パッケージ命名規約パッケージは通常、ピリオド( パッケージ名は組織のトップレベルドメイン名と、そのときの組織のドメインといくつかのサブドメインリストが逆順になったもので始まることが推奨されている。組織はそれらの名前にそのときに特定の名前を選ぶ。パッケージ名は可能ならばすべて小文字にすべきである。 例えば、もしカナダにMySoftと呼ばれる組織がfraction(小数、分数)を扱うパッケージを作るとすると、パッケージをca.mysoft.fractionsとネーミングすることは、他社によって開発された類似するもうひとつのパッケージからfractionパッケージを見分ける。もしMySoftと呼ばれるアメリカの企業もまたfractionパッケージを作るとするが、名前はcom.mysoft.fractionsであり、そのとき、それら二つのパッケージにあるクラスはユニークに定義され、名前空間は分割される。 曖昧でないパッケージ名に関して完全な規約と、パッケージ名に直接使うことができないインターネットドメイン名をパッケージに命名するルールは、Java言語仕様のChapter 6.1で説明されている。 ハイフン(-)が使われているドメイン名をそのままJavaソースコードで使用するとコンパイルエラーを引き起こす。そのためハイフンが使われているドメイン名には、ハイフンの代わりにアンダースコア (_)を使用する。 Java SE 5 から追加されたアノテーション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の代替となるものである。 Java SE 6のコアパッケージ→詳細は「Java Platform, Standard Edition」を参照
脚注出典
関連項目外部リンク |