セキュリティ アップデートを引き続き受け取り、テクニカル サポートの利用資格を得るには、アプリケーションをサポートされている最新のランタイム バージョンにアップグレードする必要があります。また、Google Cloud サーバーレスの最新版である Cloud Run への移行も検討する必要があります。Cloud Run は、App Engine のエクスペリエンスを改善するために設計されており、スタンダード環境とフレキシブル環境の両方の多くの最良の機能が組み込まれています。機能の違いと移行方法の詳細については、App Engine と Cloud Run の比較ガイドをご覧ください。
既存のアプリをアップグレードするプロセスは、アプリが現在使用しているランタイム バージョンによって異なります。
Java 8: サポートされている最新の Java バージョンにアプリを移行する必要があります。Java 8 は、2024 年 1 月 31 日にサポートを終了しました。既存の Java 8 アプリケーションは引き続き実行され、トラフィックを受信します。ただし、サポート終了日の後は、ランタイムを使用する新しいアプリケーションのデプロイや既存のアプリケーションの更新を行うことはできません。
Java 11 または Java 17:
これらのランタイムは、サポートされている Java バージョンです。引き続き最新のサポート バージョンにアップグレードするには、次の操作を行います。
app.yaml
ファイルを更新するには、アプリで実行する Java のバージョンを指定します。例:runtime: javaVERSION
ここで、VERSION は
MAJOR
のバージョン番号です。例: Java 21 の場合は、
runtime: java21
のように 21 を指定します。詳細については、Java ランタイムの概要をご覧ください。以前のバンドル サービスを使用する場合は、次のいずれかで実行するようにアプリをアップグレードする必要があります。
Java Enterprise Edition 10(EE10 - デフォルト、推奨): Java EE10 は
javax.servlet.*
API をサポートしていないため、Jakarta
名前空間のような新しい Java アーティファクトを使用するようにアプリとサードパーティの依存関係を更新する必要があります。Java Enterprise Edition 8(EE8): Java EE8 では
javax.servlet.*
API を使用できますが、appengine-web.xml
ファイルに若干の構成変更を行う必要があります。
すべてのオプションについては、以前のバンドル サービス用に Java 21 にアップグレードするをご覧ください。
以前のバンドル サービス用に Java 21 にアップグレードする
Java ランタイムの互換性
Jetty とサーブレットのバージョンと互換性のある Java のバージョンについては、次の表をご覧ください。
Enterprise Edition(EE) | Jetty のバージョン | Java のバージョン | サーブレット | 互換性 |
---|---|---|---|---|
EE7 | 9.4 | 11 | 2.5 または 3.1 | |
EE7 | 9.4 | 17 | 2.5 または 3.1 | |
EE8 | 12 | 21 | 2.5 以降 | Java EE8 は、Java EE6 以降と下位互換性があります。詳細については、EE8 で Java 21 にアップグレードするをご覧ください。 |
EE10 | 12 | 21 | 6.0(推奨)。Java 21 は、デフォルトで EE10 を実行するように構成されています。 | Java EE10 を使用するには、アプリケーション サーブレットと依存関係を更新して、Jakarta 名前空間を含める必要があります。詳細については、EE10 で Java 21 にアップグレードするをご覧ください。 |
EE10 で Java 21 にアップグレードする
Enterprise Edition 10(EE10)で Java 21 を使用するには、Maven ファイルと Gradle ファイルでアプリケーション サーブレットと依存関係をアップグレードして、Jakarta
名前空間を含める必要があります。
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>
アプリケーションのサーブレットと依存関係の名前を
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 { ......
Jakarta
名前空間に応じて、残りのアプリケーションのサードパーティ依存関係を新しい Java アーティファクトに更新します。省略可: Java 21 には仮想スレッドのサポートが含まれています。仮想スレッドを有効にするには、
appengine-web.xml
ファイルのsystem-properties
タグ内にappengine.use.virtualthreads
プロパティを追加します。
EE8 で Java 21 にアップグレードする
Jetty 12 には Java EE6 以降との下位互換性があるため、アプリケーション構成に大きな変更を加えることなく、Java EE8 で javax.servlet.*
API を引き続き使用できます。Java EE8 でアプリケーションを実行するには、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>java21</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"/>