さる理由で、ちょっとJ2SE Development Kit 5.0を入れて軽く使ってみました。
インストーラの初期ディレクトリ §
これまでのJDKのWindows用インストーラは、デフォルトでいきなりルートディレクトリ直下に自分のディレクトリを配置しようとする極悪な代物でした。UN*Xで同じことをしたら呪詛で瞬殺されると思いますが、Windowsでも気にする人は気にします。実際、そのことだけでも、私から見たJDKは入れたくないソフトの1つにリストアップされていたと言っても過言ではありません。
しかし、J2SE Development Kit 5.0の初期設定は違いました。
提示されたのはこれです。
D:\Program Files\Java\jdk1.5.0\
おそらく、OSがドライブDに入っているので、Dドライブが提示されたのだと思いますが、つまりはWindowsの標準的なディレクトリ レイアウトに沿ったものです。
これなら、とりあえず入れておいても良いかな、という程度に不快感が緩和されます。
for each構文を試してみよう §
というわけで、Java言語仕様のニューフェイス、for each構文を試してみました。
用意したサンプルソースはこんな感じです。
public class sample004 {
public static void main(String[] args)
{
for (String s : args) {
System.out.println(s);
}
}
}
コンパイルと実行の結果はこんな感じです。
D:\w\test\JDK50_001>"D:\Program Files\Java\jdk1.5.0\bin\javac.exe" sample002.java
D:\w\test\JDK50_001>"D:\Program Files\Java\jdk1.5.0\bin\java.exe" sample002 a b c
a
b
c
D:\w\test\JDK50_001>
確かに動いてますね。
-Xlint:unchecked §
上記のサンプルソースを得るに当たって、インターネット上から見つけてきたサンプルソースを試してみましたが、その際、javacが以下のようなメッセージを出すことがありました。
注: sample001.java の操作は、未チェックまたは安全ではありません。
注: 詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてくださ
い。
気持ちが悪いので、javacに-Xlint:uncheckedを付けてコンパイルしてみると、こんなメッセージが。
sample001.java:10: 警告: [unchecked] raw 型 java.util.List のメンバとしての add(
E) への無検査呼び出しです。
list.add(new Integer(i));
^
警告 1 個
おおむね、実装の都合でこうなったことが何となく見える結果ですが。
どの条件でメッセージを出すか、そのメッセージの内容はどのようなものが妥当か、について、何となく釈然としないものが残ります。
クラス名とファイル名の同期 §
ここまでの過程で、「あ、Javaって駄目じゃん。groovy欲しくなるよね」と思う事態が発生しました。それは、ソースを部分的に修正して試そうとした時、ファイル名を変更してコンパイルするとエラーになったことです。
こういうメッセージですね。
sample005.java:4: クラス sample003 は public であり、ファイル sample003.java で宣言しなければなりません。
ファイル名とクラス名が常に同期していなけばならないという要請は、クラスの再利用という幻想物語には有利に働くかも知れませんが、そんなものには何の価値もないという前提に立っていれば、単に邪魔なだけですね。