components}このコンパイル単位はクラスのメンバ宣言に互いのクラスをもつ二つのクラスを定義する。すべての型宣言をもち,更に現在のコンパイル単位内にすべてをもつため,この例は正しくコンパイルされる。前方参照することは問題ではない。アクセス修飾子のうちの一つでも含むならば,コンパイル時エラーとする。選択して,二つの公開されたパッケージが同じ名前をもつ可能性を排除する手順を踏むことが望ましい。これは,パッケージを容易及び自動的にインストール及び管理可能とする。7.7では,一意なパッケージ名を生成するための推奨される規約を規定する。Javaプラットフォームの処理系は,局所的及び暫定的なパッケージ名を,7.7で記述する一意な名前の書式にパッケージの集合を変換する自動的な方法を提供することが望ましい。一意なパッケージ名を使用していなければ,名前の衝突が生じたどちらかのプログラムを開発してからはるかに時間が経過した時点で,パッケージ名の衝突が生じる可能性がある。この場合,ユーザ又はプログラマにとって,解決が困難又は不可能な状況が生じる。使うことによって,同じ名前をもったパッケージを互いに使い分けることができる。ようなインターネットドメイン名を取得する(あるいは,それをもっている組織に所属する)。して),パッケージ名の前置詞として使用する。それ以降の名前は,パッケージ名を管理するための組織内で開発された規約を使用する。インターネットのドメイン名が有効なパッケージ名ではない場合がある。そのような場合に推奨される規約を示す。ドメイン名に,ハイフン,又は識別子(3.8)で許されていない他の特殊文字が含まれている場合,下線に置き換える。(3.9)である場合,下線を追加する。結果として得られるパッケージ名の構成要素が数字又は,識別子の頭文字として許されていない他の文字で始まる場合,構成要素の前に下線を付ける。した規約では,ディレクトリ名の構成要素を,部,課,プロジェクト,マシン又はログインの名前に指定するかもしれない。3166:1981で規定された英字2文字の国名コードの一つとする。パッケージの名前は,インターネットにおいてパッケージが格納されている場所についての何らかの情報を示すものではない。入手できるというわけではない。一意なパッケージ名を生成するための推奨される規約は,パッケージ名のために独自の登録簿を作る代りとして,既存の広く知られた一意な名前の登録簿の上にパッケージ名前付け規約を追加しているだけである。