Javaパッケージ(Java package)は名前空間の中にあるJavaクラスをまとめるメカニズムである。 Javaパッケージは、JARファイルと呼ばれる圧縮ファイルの中に保存することができ、クラス群を一つのグループとしてまとめた方が1つずつダウンロードするよりも高速化される。プログラマも一般に同じカテゴリに属しているクラスや類似した機能を提供するクラスをまとめたパッケージを使う。
Javaソースファイルはファイルの先頭にソースファイルが定義したクラスのパッケージを明示するpackage構文を含むことができる。
protected)メンバにアクセスできる。
目次 |
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アクセス修飾子宣言されたクラスメンバにアクセスできる。デフォルトアクセスはpublic、protected、privateアクセス修飾子が宣言に指定されていないときに強要される。それとは対照的に、他のパッケージ内にあるクラスはデフォルトアクセス宣言されたクラスやメンバにアクセスできない。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と飛ばれるアメリカの企業もまた半端物パッケージを作るとするが、名前はcom.mysoft.fractionsであり、そのとき、そら二つのパッケージにあるクラスはユニークに定義され、名前空間は分割される。
曖昧でないパッケージ名に関して完全な規約と、パッケージ名に直接使うことができニアインターネットドメイン名をパッケージに命名するルールは、Java言語仕様のsection 7.7で説明されている。
Java SE 5から追加されたアノテーションは、パッケージも対象にすることができる。 パッケージにアノテーションを保存するには、該当するパッケージディレクトリにpackage-info.javaというファイルを作り、以下のように記述する。
/** * パッケージの説明。 * パッケージのコメントにはJavadocのタグがそのまま使える。 */ @Deprecated package com.example.wikipedia;
この例ではパッケージcom.example.wikipediaを非推奨にしていることを意味する。
詳細はJava Platform, Standard Editionを参照
java.lang |
— 基本言語機能性と基本型basic language functionality and fundamental types |
java.util |
— コレクションデータ構造クラス |
java.io |
— 入出力操作 |
java.math |
— 多倍長演算 |
java.nio |
— JavaによるNew I/Oフレームワーク |
java.net |
— ネットワーク命令、ソケット、DNSルックアップ... |
java.security |
— 暗号鍵生成、暗号化、復号 |
java.sql |
— データベースへアクセスするためのJava Database Connectivity (JDBC) |
java.awt |
— ネイティブGUIコンポーネントのパッケージの基本階層 |
javax.swing |
— プラットフォーム非依存リッチGUIコンポーネントのパッケージ階層 |
|
|
|
|---|---|
| 主要技術 | プログラミング言語Java - Javaプラットフォーム - Java Development Kit - Java仮想マシン - Java Runtime Environment - Javaコンパイラ - Javaバイトコード - JAR |
| 歴史 | Javaに対する批判 - Java Community Process - サン・マイクロシステムズ |
| 言語機能 | 文法 - Javaの予約語 - パッケージ - Javadoc |
| 関連技術 | Jakarta Project - Apache Tomcat - NetBeans - Java Beans - Java Message Service - Java Transaction API - Java3D - JDBC - Java Web Start - Applet - Servlet - JavaServer Pages - Java Foundation Classes |