Java 7 から Java 8 への移行

この記事では、Java 7 から Java 8 へのアプリケーションの移行に関する概要について説明します。 Java 8 の機能の使用方法については説明しません。

Java 7 から Java 8 にコードを移行するための万能のソリューションはありません。 通常、Java 7 から Java 8 に移行する作業はごくわずかです。 可能性のある問題としては、いくつかの変更された API、javac での型の推定の強化、クラス ローダーへの変更、permgen (ガベージ コレクションの一部) の変更などがあります。

一般に、いきなり再コンパイルするのではなく、まずは Java 8 で実行してみるのが最善の方法です。 この方法を使用すると、できるだけ早くアプリケーションを稼働させることができます。 ライブラリの目標は、JDK 8 を使用してコンパイルおよびテストされた成果物を発行することです。

Java 7 の有効期間 (EOL)

Java 7 の有効期間が 2022 年 7 月 29 日に切れると、コミュニティによるサポートは終了します。 Java 7 で実行されているすべてのアプリケーションは引き続き動作しますが、Java 7 自体は更新プログラムやセキュリティ パッチを受け取らなくなります。 リスクと潜在的なセキュリティの脆弱性を最小限に抑えるには、ワークロードの要件に応じて、アプリケーションを Java 8 または 11 にアップグレードしてください。

従う必要のある正規のガイドは、Oracle JDK 移行ガイドです。 この移行ガイドでは、Java 仕様でのすべての非互換性と、JDK の実装における非互換性について説明されています。 これらの非互換性のほとんどはエッジ ケースであり、警告が表示されたりエラーが発生したりしたときは、ご自分で調査していただく必要があります。

Java 8 上での実行

ほとんどのアプリケーションは、変更しなくても Java 8 上で実行できるはずです。 まず、コードを再コンパイルせずに、Java 8 で実行してみてください。 実行することのポイントは、実行からどの警告とエラーが生成されるかを確認できることです。 この方法では、
行う必要のある最小限の作業に焦点が明らかになるので、Java 8 上でアプリケーションをより迅速に実行できます。

発生する可能性のあるほとんどの問題を、コードを再コンパイルする必要なしに解決できます。 コードの問題を修正する必要がある場合は、修正を行いますが、コンパイルは引き続き JDK 7 で行います。 可能であれば、JDK 8 を使用して "コンパイルする" 前に、java バージョン 8 でアプリケーションが "実行する" ようにします。

Java 8 を使用したコンパイル

JDK 8 を使用してコンパイルには、ビルド スクリプト、ツール、テスト フレームワーク、含まれるライブラリを更新することが必要になる場合があります。 JDK の内部 API とその他の警告の使用方法の詳細を取得するには、javac-Xlint:unchecked オプションを使用します。

Azure App Service に関する Java 7 からの移行

App Services を Java 7 から Java 8 または 11 に移行するには、Azure portal にサインインし、更新する Web アプリに移動してから、 [構成]>[設定]>[スタックの設定] に移動します。 ドロップダウンに、Java のメジャー バージョンとマイナー バージョンおよび Tomcat を使用している場合は Tomcat のバージョンが表示されます。 Java 8 または 11 を選択します。 デプロイ スロットでこの構成変更を行って構成の変更を安全にテストしてから、新しい環境を運用環境にスワップできることにご注意ください。 (古いランタイムに依存しないようにするため、Java 7 は表示されない場合があります)。詳細については、「Azure App Service でステージング環境を設定する」を参照してください。

Use the selector to change your Java version

新しいランタイム オプションを指定する必要がある場合は、JAVA_TOOLS アプリ設定を使用できます。それらは、アプリケーションの開始時に適用されます。 詳細については、「Azure App Service 向けの Java アプリを構成する」を参照してください。 App Service のランタイムに対するサポート ポリシーの詳細については、「App Service の概要」の「組み込みの言語とフレームワーク」セクションを参照してください。

次のステップ

アプリケーションが Java 8 で実行するようになったら、次のガイドを使用して Java 11 への Java 最新化パスに従うことをお勧めします。