既存のアプリケーションをアップグレードする

アプリケーションを最新のサポート対象ランタイム バージョンにアップグレードして、引き続きセキュリティ アップデートを受けられるようにし、テクニカル サポートを受ける資格を確保してください。

既存のアプリケーションをアップグレードするプロセスは、アプリケーションが使用しているランタイム バージョンによって異なります。

  • Java 8: アプリケーションをサポートされている最新の Java バージョンに移行してください。Java 8 は 2024 年 1 月 31 日にサポート終了となり、2026 年 1 月 31 日には非推奨となります。非推奨となった後は、過去に組織ポリシーで以前のランタイムのデプロイを再有効化していた場合でも、Java 8 アプリケーションをデプロイできなくなります。ただし、既存の Java 8 アプリケーションは、非推奨となる日付以降も引き続き稼働し、トラフィックも受け続けます。

  • Java 11: アプリケーションをサポートされている最新の Java バージョンにアップグレードします。Java 11 は 2024 年 10 月 31 日にサポート終了となり、2025 年 10 月 31 日には非推奨となります。非推奨となった後は、Java 11 アプリケーションをデプロイできなくなります。既存の Java 11 アプリケーションは、非推奨となる日付以降も引き続き稼働し、トラフィックも受け続けます。

  • サポートされている第 2 世代ランタイム(Java 17 と Java 21):

    App Engine は、Java 17 や Java 21 などの第 2 世代の Java ランタイム バージョンをサポートしています。Java 25(プレビュー)にアップグレードする手順は次のとおりです。

    • アプリで実行する Java のバージョンを指定して、app.yaml ファイルを更新します。例:

        runtime: javaVERSION
      

      ここで、VERSIONMAJOR のバージョン番号です。たとえば、最新の Java バージョン(Java 25、プレビュー版)を使用するには、25 を指定します。詳細については、Java ランタイムの概要をご覧ください。

    • 以前のバンドル サービスを使用する場合は、次のいずれかで実行するようにアプリケーションをアップグレードします。

      • Java Enterprise Edition 11(E11): EE 11 は javax.servlet.* API をサポートしていないため、Jakarta 名前空間のような新しい Java アーティファクトを使用するようにアプリケーションとサードパーティの依存関係を更新する必要があります。Java 25(プレビュー版)はデフォルトで EE 11 で実行され、EE 10 をサポートしていません。

      • Java Enterprise Edition 8(EE8): Java EE 8 では javax.servlet.* API を使用できますが、appengine-web.xml ファイルに若干の構成変更を行う必要があります。

以前のバンドル サービスのために、サポートされている Java バージョンにアップグレードする

Java ランタイムの互換性

サーブレットのバージョンと互換性のある Java のバージョンについては、次の表をご覧ください。エントリー ポイント機能、システム プロパティ構成、結果として得られる Jetty サポート、互換性のある EE バージョンの詳細については、エントリー ポイント機能をご覧ください。

Enterprise Edition(EE) Java のバージョン サーブレット 互換性
EE7 11 2.5 または 3.1 EE7 はコミュニティ サポートの対象外です。Java 11 はサポートが終了しました。最新バージョンの Java を使用するためにアプリをアップグレードすることをおすすめします。
EE7 17 2.5 以降 EE 7 はコミュニティ サポートの対象外です。EE 8 以降のバージョンを使用するためにアプリをアップグレードすることをおすすめします。
EE 8 17/21/25(プレビュー版) 2.5 以降 Java EE 8 は、Java EE 6 以降と下位互換性があります。詳細については、互換性のある Enterprise Edition(EE)バージョンで Java をアップグレードするをご覧ください。
EE 10 17/21 6.0(デフォルト、推奨)。Java 21 はデフォルトで EE 10 を実行するように構成されています。 Java EE 10 を使用するには、アプリケーション サーブレットと依存関係を更新して、Jakarta 名前空間が含まれるようにします。詳細については、互換性のある Enterprise Edition(EE)バージョンで Java をアップグレードするをご覧ください。EE 10 で Java 25(プレビュー版)を使用することはできません。
EE 11 25 6.1(デフォルト、推奨)。Java 25(プレビュー版)は、デフォルトで EE 11 を実行するように構成されています。 Java EE 11 を使用するには、アプリケーション サーブレットと依存関係を更新して、Jakarta 名前空間が含まれるようにします。詳細については、互換性のある Enterprise Edition(EE)バージョンで Java をアップグレードするをご覧ください。

互換性のある Enterprise Edition(EE)バージョンで Java をアップグレードする

Enterprise Edition 11(EE 11)で Java 25(プレビュー版)を使用するか、Enterprise Edition 10(EE 10)で Java 21 を使用するには、Maven ファイルと Gradle ファイルでアプリケーション サーブレットと依存関係をアップグレードして、Jakarta 名前空間が含まれるようにします。

Java 25(プレビュー版、EE 11)

Enterprise Edition 11(EE 11)で Java 25(プレビュー版)を使用するには、次の操作を行います。

  1. web.xml 構成ファイルのバージョン番号を version=6.1 に変更します。例:

        <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
          version="6.1">
          ...
        </web-app>
    
  2. アプリケーションのサーブレットと依存関係の名前を javax.servlet.* から jakarta.servlet.* に変更します。

        import jakarta.servlet.ServletException;
        import jakarta.servlet.annotation.WebServlet;
        import jakarta.servlet.http.Cookie;
        import jakarta.servlet.http.HttpServlet;
        import jakarta.servlet.http.HttpServletRequest;
        import jakarta.servlet.http.HttpServletResponse;
    
        @WebServlet(name = "viewer", urlPatterns = {"/view"})
        public class MyServlet extends HttpServlet {
        ......
    
  3. Jakarta 名前空間に応じて、残りのアプリケーションのサードパーティ依存関係を新しい Java アーティファクトに更新します。

  4. appengine-web.xml ファイルに次のシステム プロパティを追加します。

    <?xml version="1.0" encoding="utf-8"?>
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
        <runtime>java25</runtime>
        <system-properties>
          <property name="appengine.use.EE11" value="true"/>
        </system-properties>
        <app-engine-apis>true</app-engine-apis>
    </appengine-web-app>
    
  5. 省略可: Java 25 には仮想スレッドのサポートが含まれています。仮想スレッドを有効にするには、appengine-web.xml ファイルの system-properties タグ内に appengine.use.virtualthreads プロパティを追加します。

Java 21(EE 10)

Enterprise Edition 10(EE 10)で Java 21 を使用する手順は次のとおりです。

  1. web.xml 構成ファイルのバージョン番号を version=6.0 に変更します。例:

        <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
          version="6.0">
          ...
        </web-app>
    
  2. アプリケーションのサーブレットと依存関係の名前を javax.servlet.* から jakarta.servlet.* に変更します。

        import jakarta.servlet.ServletException;
        import jakarta.servlet.annotation.WebServlet;
        import jakarta.servlet.http.Cookie;
        import jakarta.servlet.http.HttpServlet;
        import jakarta.servlet.http.HttpServletRequest;
        import jakarta.servlet.http.HttpServletResponse;
    
        @WebServlet(name = "viewer", urlPatterns = {"/view"})
        public class MyServlet extends HttpServlet {
        ......
    
  3. Jakarta 名前空間に応じて、残りのアプリケーションのサードパーティ依存関係を新しい Java アーティファクトに更新します。

  4. appengine-web.xml ファイルに次のシステム プロパティを追加します。

    <?xml version="1.0" encoding="utf-8"?>
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
        <runtime>java21</runtime> <!-- or java17 -->
        <system-properties>
          <property name="appengine.use.EE10" value="true"/>
        </system-properties>
        <app-engine-apis>true</app-engine-apis>
    </appengine-web-app>
    
  5. 省略可: Java 21 には仮想スレッドのサポートが含まれています。仮想スレッドを有効にするには、appengine-web.xml ファイルの system-properties タグ内に appengine.use.virtualthreads プロパティを追加します。

Java 17 以降(EE 8)

アプリケーション構成に大きな変更を加えることなく、Java EE 8 で javax.servlet.* API を使用します。EE 8 には Java EE 6 以降との下位互換性があります。

Java EE 8 でアプリケーションを実行するには、appengine-web.xml ファイルで新しい system-properties タグを、デフォルト以外の app.engine.use.EE8 構成で宣言します。

  <?xml version="1.0" encoding="utf-8"?>
  <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
      <runtime>java17</runtime>
      <system-properties>
        <property name="appengine.use.EE8" value="true"/>
      </system-properties>
      <app-engine-apis>true</app-engine-apis>
  </appengine-web-app>

省略可: Java バージョン 21 以降には仮想スレッドのサポートが含まれています。仮想スレッドを有効にするには、system-properties タグ内に appengine.use.virtualthreads プロパティを追加します。例: <property name="appengine.use.virtualthreads" value="true"/>