とりあえず、これでJavaのソースコードの基本的な書き方はわかってきました。が、実際に、あちこちでJavaのサンプルコードなどを見たことがある人なら、「あれ? 何か足りないな?」と思うかも知れません。――よく見るJavaのサンプルコードでは、一番最初にこんな文があるはずです。
package ○○;
○○のところには、いろいろなテキストが来ていると思いますが、必ず最初には「
package」というのが書かれているはずです。これは一体、何でしょう?
この
packageで始まる文は、クラスの「
パッケージ」を指定するものなのです。パッケージというのは、「それが置かれる場所」のことです。つまり、「そのクラスが、どこに置かれるか」を示すものなのです。
例えば、ハードディスクにあるファイルを思い出してください。ハードディスクの中には、何万、何十万というファイルが保存されています。それらがずべて、ずらーっと表示され、まったく整理されていなかったら大変でしょう。必要なファイルを探すのも苦労しますし、何より同じ名前のファイルを複数置けませんからファイル名にも苦労しそうです。そこで通常は、必要に応じてフォルダを用意して、ファイルの用途や内容ごとにフォルダ分けして整理するわけですね。
Javaのクラスも同じです。Javaでは、標準で数百ものクラスがライブラリに用意されています。それらを整理するために、パッケージが使われているのです。パッケージは、いわばクラスを整理する「フォルダ」みたいなものなのです。
packageは、
package abc.efg.xyz;
例えばこんな感じに、各階層をドットでつなげて既述します。上の例なら、「abcフォルダの中のefgフォルダ内のxyzフォルダ」を指定していることになります。
実際、パッケージを指定してプログラムを作る場合には、フォルダでソースコードファイルを整理することになっているんです。例えば、上の例なら、まず作業スペースに「abc」フォルダを作り、その中に「efg」フォルダを作り、更にその中に「xyz」フォルダを作って、そこにソースコードファイルを配置します。ここに、例えば
「Hello.java」というファイルがあるとしたら、このソースコードファイルをコンパイルするときには、作業スペースにcdで移動をした後、
javac abc\efg\xyz\Hello.java
こんな具合に実行することになります。また、こうして作成されたプログラムを実行する場合も、
java abc.efg.xyz.Hello
というようになります。――え?「面倒くさい!」って? そうですね。確かに面倒くさいので、もうちょっと簡単な方法を覚えておきましょう。まず、ソースコードファイル(例として、Hello.javaとします)を、作業スペースにそのまま配置します。フォルダとかは一切作らなくてかまいません。そして、
javac -d . Hello.java
こんな具合に実行します。
javacの後に、「
-d .」というのをつけるわけですね(最後のドットを忘れないように)。これで、そのソースコードファイルに書かれた
packageにあわせてフォルダを自動生成してクラスファイルを保存するようになります。
パッケージは、自分でクラスを書いて動かすときは、特に指定しなくてもかまいません。その場合は、「
デフォルトパッケージ」というものに入っているものとして扱ってくれます。ただし、最近のJavaでは、パッケージを指定していないとコンパイル時に文句をいってくるようになりました。実際に試してみて、何か警告が出てきて驚いた人もいることでしょう。
最近のJavaの開発ツール(EclipseとかNetBeansといったものがよく使われます)では、ソースコードファイルを作るときに必ずパッケージを指定するようになっていて、プログラムのコンパイルや実行もそれにあわせて自動的に作業してくれるようになっています。ですので、こうしたツールを利用してプログラミングするなら、「パッケージを指定するのが基本」と考えておきましょう。
そうでなくて、テキストエディタで書いて、コマンドでコンパイルして……というスタイルを貫きたいなら,
先ほどの「-d .」をうまく使ってコンパイルするとよいでしょう。