2016-04-11 4 views
2

レガシーJavaコードをJava 1.3でコンパイルし、それをWebsphere Application Server v8.5で実行しました。今は安定している。より高いJavaバージョンでJavaコードをコンパイルするとどうなりますか?

Java 1.6でコードをコンパイルしたいので、結果をWebsphere Application Server v8.5で実行したいと思います。私はコードをコンパイルすることに成功することができます。

新しいJavaバージョンでJavaコードをコンパイルするとどうなりますか?実行中にエラーが発生しますか?

+0

この質問は[tag:compiler-construction]に関するものではありません。無差別にタグを付けないでください。 – EJP

+0

WebshphereがJava 1.3でも動作していると仮定すると、クラスのバージョン・エラーが発生します。 WebsphereがJava 1.6(またはそれ以上)を実行している場合、問題がないはずです – MadProgrammer

+0

これを行う理由はJavacの推奨されていない警告ですか? –

答えて

2

実際の構文とコンパイルの点では、さまざまなバージョンのJava用のrelease notesが参考になります。 Java 5のcertain keywords, like assert and enumの導入により、が実際にになると、コードベースにコンパイルエラーが発生することに注意してください。

以外にも、実際にコードが正常にコンパイルされた場合(偉大で、キーワードを使用していない場合)、さまざまなクラス間の動作が変更されたことを考慮する必要があります。 They're available in the release notes tooであり、レガシーコードが破損しないようにする必要がある場合は、それらを熟読する必要があります。

したがって、一言で言えば、はいの場合、新しいバージョンで変更された動作に依存する上位バージョンを使用すると、コードが壊れる可能性があります。

あなたはは、新しいJDKのバージョンを使用してコードをコンパイルしない場合、あなたが展開任意のJVMは、それが少なくともそのバージョンを使用していますかあなたが正常に実行することができませんことを確認する必要があることを確認してくださいという問題もありますそれ。

+0

OPがWAS 8にデプロイされている場合、彼のコードは新しいjre(Java 7 iirc)上で実行されているので、彼はすでに新しいjdkライブラリのバージョンを受けています。私はここで破損の機会を見逃す(新しいjdkの下でコードがコンパイルされているため)。 –

+0

@NathanHughes:クラス間の動作の変更はそれらに影響を与える可能性があります。新しいJREを実行しているだけでは、新しいクラスを使用しているわけではありません。 – Makoto

関連する問題