人によってはほとんど見かけない Java 文法

 独断と偏見でランクをつけてみました。

レア度 F : abstract

 よく IT ゼネコンさんが気にかける「一山なんぼのプログラマ」はほとんど見ることがないし、なんのためにあるのかもわからないでしょう。元 COBOLer でよれよれになりながら Java をやっている古兵の方々も気にもかけないキーワードかもしれません。

 もちろん、基底クラスを作る役目の人、フレームワークなどを作っている人はたくさん見ていることでしょう。

レア度 E : 大域脱出

 ↓こういう書き方。大域脱出が必要なケースって意外とないんですよね、Java って(C だとしょっちゅうだったような気がしないでもない)。

hoge: for(String[] foo : fuga) {
    for (String bar : foo) {
        if (bar.equals("xxx")) {
            break hoge;
        }
    }
}

レア度 D : synchronized、volatile

 マルチスレッドプログラミングには必須の文法ですが、たとえばマルチスレッドで動いているはずの Servlet に関するプログラミングですら、よくできた Web アプリケーションフレームワークのおかげでほとんど synchronized なんて意識する必要がないですよね。

 また、正しい使い方がわかっている人も意外と少ないのではないでしょうか?

レア度 C : transient

 Eclipse のおかげで何か知らないけど serialVersionUID はつけてるぜ!と言う人は増えてきたかもしれませんが、transient をつけなければならないようなハメになるケースは意外と少ないかもしれません。でも意外と Wicket 使いの人は使っているかも?!

レア度 B : native

 Java 道を邁進し、「Write once, run anyware」の標語を信じ続けてきたある意味での Java 原理主義者の方こそ見る機会がすくないかもしれません(逆に組み込み向けがそもそもの Java の姿だ!という意味での原理主義者にとっては native はあってなんぼでしょうが)。

レア度 A : strictfp

 どういうときに必要になるのか、私もよくわかりません。科学技術計算分野でしょうか?

おまけ : const

 C プログラマがはまるキーワード。Java のキーワードとして const は存在するが、まったく意味がない。