08/04/07 18:34:32
jdk1.4.2で作成された既存 web アプリケーションを、Java VM だけ 1.6 に移行することになりました。
(ソースコード修正は行わない)。
ちなみに既存システムなので、1.4.2 でコンパイルされた class ファイルはあります。
このとき、以下のうちどうすべきですか?
1.jdk 1.6 ではコンパイルしない。
既存コンパイル済みの class ファイルを jdk1.6 で動かす。
2.jdk 1.6 でコンパイルしなおす。このとき、-source オプションは何もつけない。
コンパイル結果の class ファイルを jdk1.6 で動かす。
3.jdk 1.6 でコンパイルしなおす。このとき、-source 1.4 をつける。
コンパイル結果の class ファイルを jdk1.6 で動かす。
4.jdk 1.6 でコンパイルしなおす。このとき、-source 1.6 をつける。
コンパイル結果の class ファイルを jdk1.6 で動かす。
私の考察:
jdk1.4.2 時代に作られたソースコードなので、当然ソースコードは1.4準拠です。
しかしこのソースは「1.4にはあるけど1.5以降で削除されたメソッド」は使っていないので、
jdk1.6でもコンパイルは通ります(←Generics は使ってないけど、1.6準拠と言える?)
-source 1.4 をつけると class ファイル(バイトコード)も 1.4 準拠になるのですよね。
VM は jdk1.6 なので、-source 1.6 をつけて class ファイル(バイトコード)を 1.6 準拠のものを生成した
ほうが、パフォーマンスはいいと考えました(計測してみたなどの根拠はありません)。
つまり正解は4.?