私の古いプロジェクトは Java 6 (1.6) を使用していますが、いつ更新 (Java 7) したかわかりませんが、正常に実行できますか?
5 に答える
Oracle の Java 6 と Java 7 の間の既知の非互換性の公式リストがあります (公開 API におけるバイナリ レベルとソース レベルの両方の非互換性の説明を含む)。
また、Java API Tracker プロジェクトで API 変更の独立した分析を見ることができます: http://abi-laboratory.pro/java/tracker/timeline/jre/
レポートはjapi-compliance-checkerツールによって生成されます。
はい、そうするべきです。Java には、下位互換性に関してかなり強力な歴史があります。ただし、これらが何らかの形で重要なプロジェクトである場合は、本番環境のような場所にデプロイする前に、徹底的なテスト パスを実行する必要があります。
JVM は基本的に同じであるため、互換性の違いはありません。ただし、まだ始まったばかりなので、人々がまだ気づいていない問題を引き起こす微妙な違いがあるかもしれません.
たとえば、Eclipse は Windows の java.exe でサプライヤを参照し、サプライヤごとに異なるコマンド ライン引数を設定します。Oracleが「Sun」から「Oracle」に変更したかったため、Java 6 update 22に問題があります。これは変更されたと思いますので、Java 7 では「Oracle」です (ただし、Java 6 では「Sun」のままです)。
私が言いたいのは、一般的な Java コードを記述すれば問題はないということです。ただし、少し特殊なことをしている場合は、アプリケーションを再テストする必要がある可能性があります。
すでに述べたように、下位互換性は新しい Java リリースの非常に重要な側面であるため、一般に新しい Java バージョンへの切り替えに問題はないはずです。ただし、この場合、Java 7 には、新しい hotspot コンパイラーの最適化にいくつかのバグがあるようです。Apache Software Foundation は、自社製品の Lucene と Solr がこれらのバグの影響を受けるという警告を発しました。
影響を受けるループの最適化は、java を-XX:-UseLoopPredicate
.
AFAIS here、Java 7で非推奨になるJava 6機能はないので、プロジェクトは正常に動作するはずです。