保守派の意見を聞いてみる

Tiger」ことJ2SE 5.0が互換性を分断する?
http://www.itmedia.co.jp/enterprise/articles/0407/26/news061.html
Java 'Tiger' Divides the Enterprise
http://internetnews.com/dev-news/article.php/3385441

上は ITmedia エンタープライズの記事。下はその原文。J2SE5 に関する記事だが、どうも記者は、完全には変更点を把握していないようだ。Java プログラミングの経験がないのかもしれない。間違いの指摘なので原文を引用するけど、

The new version includes four language changes: enhanced for loop, enumerated types, static import and autoboxing.

Java 'Tiger' Divides the Enterprise

あれ、足りないですよ。単に書き漏らしたのかと思ったら

The caution by some of the members centers on APIs (define), such as the new java.util.concurrent, which use annotations and generics and is similar to templates in the C++ programming language.

Java 'Tiger' Divides the Enterprise

ここでは annotations and generics がちゃんと書いてある……。
というわけで、ちょっと疑いながら読む必要はあるけど、記事に書かれている指摘自体は、そんなに変じゃない。要約すると、列挙型、アノテーションジェネリクスという "互換性無視の変更" が言語に加えられたために、J2SE5 とそれより前のバージョンで互換性のあるコードが書けなくなるのではないか、というもの。
今までも、言語や API に変更はあったけど、ある程度までなら互換性のあるコードが書けた。例を挙げてみる。

互換性のない言語機能を使わない
インナークラスを使わずに、独立したクラスとして設計する (Java 1.0 vs. Java 1.1 以降)
互換性のない API を使わない
Java 2 の Collections API を使わず、Vector や Hashtable を使う (J2SE vs. J2ME, Java 1.1)
古い API に対する互換性をあてにする
古い AWT イベントモデルを使う (Java 1.0 vs. Java 1.1 以降)

5.0 で追加される機能について、こういう対策 (あるいは別種の対策) がどの程度できるのか、というのが、上記の記事中で心配している人の意見だろう。
ちなみに記事中では、Sun の人が「大丈夫ですよー」と言っているのだが、それは新バージョンへの移行に関する話だけで、以上のような「逆方向への互換性」についてはふれていない。MSJVM から J2RE への移行がしやすいという話も載っているが、それは問題のごくごくごくごく一部だ。