JavaTM 2 SDK, Standard Edition, (J2SETM) バージョン 1.4 は、次に示す非互換性を除いて、J2SE 1.3 との上位バイナリ互換性を持っています。つまり、この非互換性を除けば、バージョン 1.3 コンパイラで構築したクラスファイルは J2SE 1.4 でも正しく動作します。
一般的に、ポリシーは次のとおりです。
同じファミリ (たとえば、1.2.x) 内の保守リリース (たとえば、1.2.1 と 1.2.2) は上位と下位のバイナリ互換性を持っています。
同じファミリ (たとえば、1.x) 内の機能リリース (たとえば、1.3 と 1.4) は上位バイナリ互換性を持っていますが、必ずしも下位バイナリ互換性を持っているとは限りません。
初期のバイトコードオブファスケータの中には、仮想マシンの仕様とは異なる形式のクラスファイルを生成するものがありました。このような不適切な形式のクラスファイルは J2SE の仮想マシン上では動作しませんが、初期バージョンの仮想マシン上では動作するものもあります。この問題を修復するには、適切な形式のクラスファイルを生成する新しいオブファスケータでクラスファイルを生成し直します。