Mettre à niveau une application existante

Mettez à niveau vos applications vers la dernière version d'exécution compatible pour continuer à recevoir les mises à jour de sécurité et bénéficier de l'assistance technique.

Le processus de mise à niveau d'une application existante dépend de la version d'exécution utilisée par votre application :

  • Java 8 : migrez votre application vers la dernière version compatible de Java. Java 8 n'est plus compatible depuis le 31 janvier 2024 et sera obsolète le 31 janvier 2026. Après l'arrêt, vous ne pourrez plus déployer d'applications Java 8, même si votre organisation utilisait auparavant une règle d'administration pour réactiver les déploiements d'anciens environnements d'exécution. Vos applications Java 8 existantes continueront à fonctionner et à recevoir du trafic après leur date d'abandon.

  • Java 11 : mettez à niveau votre application vers la dernière version compatible de Java. Java 11 ne sera plus pris en charge à partir du 31 octobre 2024 et deviendra obsolète le 31 octobre 2025. Après l'arrêt, vous ne pourrez plus déployer d'applications Java 11. Vos applications Java 11 existantes continueront à fonctionner et à recevoir du trafic après leur date d'abandon.

  • Environnements d'exécution de deuxième génération compatibles (Java 17 et Java 21) :

    App Engine est compatible avec les versions d'environnement d'exécution Java de deuxième génération, telles que Java 17 et Java 21. Pour passer à Java 25 (bêta) :

    • Mettez à jour le fichier app.yaml en spécifiant la version de Java que vous souhaitez que votre application exécute. Exemple :

        runtime: javaVERSION
      

      VERSION est le numéro de version de MAJOR. Par exemple, pour utiliser la dernière version de Java, Java 25 (preview), spécifiez 25. Pour en savoir plus, consultez la présentation de l'environnement d'exécution Java.

    • Si vous utilisez d'anciens services groupés, mettez à jour vos applications pour qu'elles s'exécutent sur l'une des versions suivantes :

      • Java Enterprise Edition 11 (E11) : EE 11 n'est pas compatible avec les API javax.servlet.* et vous oblige à mettre à jour vos applications et vos dépendances tierces pour qu'elles utilisent les artefacts Java les plus récents comme l'espace de noms Jakarta. Java 25 (preview) s'exécute par défaut sur EE 11 et n'est pas compatible avec EE 10.

      • Java Enterprise Edition 8 (EE 8) : Java EE 8 vous permet d'utiliser les API javax.servlet.*, mais vous devez apporter des modifications mineures à la configuration de votre fichier appengine-web.xml.

Passer à une version Java compatible pour les anciens services groupés

Compatibilité avec l'environnement d'exécution Java

Reportez-vous au tableau suivant pour savoir quelles versions de Java sont compatibles avec vos versions de servlet. Pour en savoir plus sur les fonctionnalités de point d'entrée, les configurations de propriétés système, la compatibilité Jetty qui en résulte et les versions EE compatibles, consultez Fonctionnalités de point d'entrée.

Enterprise Edition (EE) Version Java compatible Servlet Compatibilité
EE7 11 2.5 ou 3.1 Aucune assistance de la communauté n'est disponible pour EE7. Java 11 n'est plus compatible. Nous vous recommandons de mettre à niveau votre application pour utiliser la dernière version de Java.
EE7 17 2.5 ou version ultérieure Aucune assistance de la communauté n'est disponible pour EE7. Nous vous recommandons de mettre à niveau votre application pour utiliser EE 8 et les versions ultérieures.
EE 8 17/21/25 (preview) 2.5 et versions ultérieures Java EE8 est rétrocompatible avec Java EE6 et les versions ultérieures. Pour en savoir plus, consultez Mettre à niveau Java sur une version Enterprise Edition (EE) compatible.
EE 10 17/21 6.0 (par défaut, recommandé). Java 21 est configuré pour exécuter EE10 par défaut. Pour utiliser Java EE 10, mettez à jour les servlets et les dépendances de votre application afin d'inclure l'espace de noms Jakarta. Pour en savoir plus, consultez Mettre à niveau Java sur une version Enterprise Edition (EE) compatible. Vous ne pouvez pas utiliser Java 25 (bêta) sur EE10.
EE 11 25 6.1 (par défaut, recommandé). Java 25 (bêta) est configuré pour exécuter EE 11 par défaut. Pour utiliser Java EE 11, mettez à jour les servlets et les dépendances de votre application afin d'inclure l'espace de noms Jakarta. Pour en savoir plus, consultez Mettre à niveau Java sur une version Enterprise Edition (EE) compatible.

Mettre à niveau Java sur une version Enterprise Edition (EE) compatible

Pour utiliser Java 25 (bêta) sur Enterprise Edition 11 (EE 11) ou Java 21 sur Enterprise Edition 10 (EE 10), mettez à niveau les servlets et les dépendances de votre application dans vos fichiers Maven et Gradle pour inclure l'espace de noms Jakarta :

Java 25 (bêta, EE 11)

Pour utiliser Java 25 (bêta) sur Enterprise Edition 11 (EE 11), procédez comme suit :

  1. Remplacez le numéro de version dans le fichier de configuration web.xml par version=6.1. Exemple :

        <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. Renommez les servlets et les dépendances de votre application de 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. Mettez à jour les dépendances tierces restantes de votre application vers des artefacts Java plus récents en fonction de l'espace de noms Jakarta.

  4. Ajoutez la propriété système suivante dans votre fichier 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. Facultatif : Java 25 est compatible avec les threads virtuels. Pour activer les threads virtuels, ajoutez la propriété appengine.use.virtualthreads dans la balise system-properties de votre fichier appengine-web.xml.

Java 21 (EE10)

Pour utiliser Java 21 sur Enterprise Edition 10 (EE10), procédez comme suit :

  1. Remplacez le numéro de version dans le fichier de configuration web.xml par version=6.0. Exemple :

        <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. Renommez les servlets et les dépendances de votre application de 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. Mettez à jour les dépendances tierces restantes de votre application vers des artefacts Java plus récents en fonction de l'espace de noms Jakarta.

  4. Ajoutez la propriété système suivante dans votre fichier 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. Facultatif : Java 21 est compatible avec les threads virtuels. Pour activer les threads virtuels, ajoutez la propriété appengine.use.virtualthreads dans la balise system-properties de votre fichier appengine-web.xml.

Java 17 et versions ultérieures (EE 8)

Utilisez les API javax.servlet.* sur Java EE 8 sans modifier la configuration majeure de l'application. EE 8 offre une rétrocompatibilité pour Java EE 6 et les versions ultérieures.

Pour exécuter vos applications sur Java EE 8, déclarez un nouveau tag system-properties dans votre fichier appengine-web.xml avec la configuration app.engine.use.EE8 non définie par défaut :

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

Facultatif : Java version 21 et ultérieure est compatible avec les threads virtuels. Pour activer les threads virtuels, ajoutez la propriété appengine.use.virtualthreads dans la balise system-properties. Exemple : <property name="appengine.use.virtualthreads" value="true"/>