Vorhandene Anwendung aktualisieren

Sie müssen ein Upgrade Ihrer Anwendungen auf die neueste unterstützte Laufzeitversion ausführen, um weiterhin Sicherheitsupdates zu erhalten und Anspruch auf technischen Support zu haben. Sie sollten auch zu Cloud Run migrieren, der neuesten Entwicklung von Google Cloud Serverless. Cloud Run wurde entwickelt, um die App Engine-Umgebung zu verbessern. Es beinhaltet viele der besten Funktionen der Standardumgebung und der flexiblen Umgebung. Informationen zum Vergleichen von Features und zum Migrieren finden Sie im Vergleichsleitfaden für App Engine und Cloud Run.

Das Upgradeprozess einer vorhandenen Anwendung hängt von der Laufzeitversion ab, die Ihre Anwendung derzeit verwendet:

  • Java 8: Sie müssen Ihre App zur neuesten unterstützten Java-Version migrieren. Java 8 hat das Ende des Supports am 31. Januar 2024 erreicht. Ihre vorhandenen Java 8-Anwendungen werden weiterhin ausgeführt und erhalten Traffic. Sie können jedoch keine neuen Anwendungen bereitstellen oder vorhandene Anwendungen aktualisieren, die Laufzeiten verwenden, für die der Support abgelaufen ist.

  • Java 11 oder Java 17:

    Diese Laufzeiten sind unterstützte Java-Versionen. So führen Sie ein Upgrade auf die neueste Supportversion aus:

    • Zum Aktualisieren der Datei app.yaml geben Sie die Java-Version an, die von der Anwendung ausgeführt werden soll. Beispiel:

        runtime: javaVERSION
      

      Dabei ist VERSION die MAJOR-Versionsnummer.

      Beispiel: Für Java 21 geben Sie 21 wie runtime: java21 an. Weitere Informationen finden Sie unter Java-Laufzeit.

    • Wenn Sie gebündelte Legacy-Dienste verwenden, müssen Sie Ihre Anwendungen aktualisieren, dass sie auf einem der Folgenden ausgeführt werden:

      • Java Enterprise Edition 10 (EE10 – Standard, empfohlen): Java EE10 unterstützt keine javax.servlet.* APIs und erfordert die Aktualisierung Ihrer Anwendungen und Drittanbieterabhängigkeiten, um neuere Java-Artefakte wie Namespace Jakarta zu verwenden.

      • Java Enterprise Edition 8 (EE8): Mit Java EE8 können Sie javax.servlet.* APIs verwenden. Sie müssen jedoch geringfügige Konfigurationsänderungen an der appengine-web.xml-Datei vornehmen.

      Alle Optionen finden Sie unter Upgrade auf Java 21 für gebündelte Legacy-Dienste.

Upgrade auf Java 21 für gebündelte Legacy-Dienste

Kompatibilität mit Java-Laufzeiten

In der folgenden Tabelle sehen Sie, welche Java-Versionen mit den Versionen von Jetty und Servlet kompatibel sind:

Enterprise Edition (EE) Jetty-Version Java-Version Servlet Kompatibilität
EE7 9.4 11 2.5 oder 3.1
EE7 9.4 17 2.5 oder 3.1
EE8 12 21 2.5 und höher Java EE8 ist abwärtskompatibel mit Java EE6 und höher. Weitere Informationen finden Sie unter Upgrade auf Java 21 auf EE8.
EE10 12 21 6.0 empfohlen Java 21 ist so konfiguriert, dass EE10 standardmäßig ausgeführt wird. Um Java EE10 zu verwenden, müssen Sie Ihre Anwendungs-Servlets und -abhängigkeiten so aktualisieren, dass sie den Namespace Jakarta enthalten. Weitere Informationen finden Sie unter Java 21 auf EE10 aktualisieren.

Upgrade auf Java 21 auf EE10

Um Java 21 auf Enterprise Edition 10 (EE10) zu verwenden, müssen Sie Ihre Anwendungs-Servlets und -abhängigkeiten in Ihren Maven- und Gradle-Dateien aktualisieren, um den Namespace Jakarta aufzunehmen:

  1. Ändern Sie die Versionsnummer in Ihrer Konfigurationsdatei web.xml in version=6.0. Beispiel:

        <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. Benennen Sie Ihre Anwendungs-Servlets und -abhängigkeiten von javax.servlet.* in jakarta.servlet.* um:

         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. Aktualisieren Sie je nach Jakarta-Namespace die verbleibenden Anwendungs-Drittanbieter-Abhängigkeiten auf neuere Java-Artefakte.

  4. Optional: Java 21 unterstützt virtuelle Threads. Zum Aktivieren von virtuellen Threads fügen Sie das Attribut appengine.use.virtualthreads im Tag system-properties in der Datei appengine-web.xml hinzu.

Upgrade auf Java 21 in EE8

Sie können weiterhin javax.servlet.* APIs in Java EE8 verwenden, ohne dass die Anwendungskonfiguration erheblich geändert wird, da Jetty 12 Abwärtskompatibilität für Java EE6 und höher bietet. Zur Ausführung Ihrer Anwendungen auf Java EE8 müssen Sie ein neues system-properties-Tag in Ihrer appengine-web.xml-Datei mit dem nicht standardmäßigen app.engine.use.EE8 Konfiguration deklarieren.:

   <?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>

Optional: Java 21 unterstützt virtuelle Threads. Zum Aktivieren virtueller Threads fügen Sie dem Tag system-properties das Attribut appengine.use.virtualthreads hinzu. Beispiel: <property name="appengine.use.virtualthreads" value="true"/>