セキュリティ アップデートを引き続き受け取り、テクニカル サポートの利用資格を得るには、アプリケーションをサポートされている最新のランタイム バージョンにアップグレードする必要があります。
既存のアプリをアップグレードするプロセスは、アプリが現在使用しているランタイム バージョンによって異なります。
Java 8: サポートされている最新の Java バージョンにアプリを移行する必要があります。Java 8 は、2024 年 1 月 31 日にサポートを終了しました。既存の Java 8 アプリケーションは引き続き実行され、トラフィックを受信します。ただし、サポート終了日以降には、ランタイムを使用する新しいアプリケーションのデプロイや既存のアプリケーションの更新を行うことはできません。
Java 第 2 世代ランタイム(サポート終了後): サポートされている Java バージョンにアップグレードするには、次の操作を行います。
app.yaml
ファイルを更新するには、アプリで実行する Java のバージョンを指定します。次に例を示します。runtime: javaVERSION
ここで、VERSION は
MAJOR
のバージョン番号です。たとえば、最新の Java バージョン(Java 21)を使用するには、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 17:
App Engine はこのバージョンをサポートしています。引き続き最新のサポート バージョンにアップグレードするには、次の操作を行います。
app.yaml
ファイルを更新するには、アプリで実行する Java のバージョンを指定します。次に例を示します。runtime: javaVERSION
ここで、VERSION は
MAJOR
のバージョン番号です。たとえば、最新の Java バージョン(Java 21)を使用するには、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"/>