水曜日, 5月 03, 2006

初心者本に書いていないこと

Javaの本を何冊も読んで知識がついたつもりになって、さあコーディングという時にコンパイルでつまづきまくって全然進まない。そうこうしているうちに週末がタイムアウトになって、なんとなくそのまま。これが今までの私のパターン。

今年からは初心に帰ってベーシックなところから勉強をやり直しているのだが、今までつまづいていた原因がなんとなく分かってきた。それは初心者本では解説されることの少ない、いくつかのシンプルで重要な要点が見えていなかったということに尽きると思う。



  1. 環境変数
    必要なファイルを参照する際に毎回フルパスで書くのは大変。だからOSに変数としてそのパスを登録しときましょ、ということ。一方で、一部のアプリはこの設定があることを前提に動作したりするから、毎回フルパスで指定すればよいというものでもないみたい。

  2. パッケージ
    いわゆる名前空間。クラスパスが"."だけの時は、パッケージのファイルを使用するクラスはパッケージのルートフォルと同じ階層にいないとパッケージを参照できない(だから、パッケージに属しているクラスと同じフォルダから参照しようとしてもクラスがないと怒られる)。

  3. Javaコマンドは拡張子をつけられない
    javac コマンドは「javac sample.java」のように拡張子つきで実行できるが、できたクラスファイルを実行すべく「java sample.class」とするとクラスがないというエラーになる。「java sample」としなければならないので、コマンドラインのファイル名補完を使う場合は要注意。

  4. Mainメソッドはマイノリティ
    Mainメソッドはプログラムのエントリーポイントとなるクラスにしか存在する必要がない。なので、いっぱいあるクラスの中ではMainメソッドを持っているクラスの方が稀ということ。本の中のサンプルではMainメソッドがあるクラスを自己参照していたりすることが多いが、Mainメソッドしかないクラスも全然アリである。