Actualiza una aplicación existente

Actualiza tus aplicaciones a la versión del entorno de ejecución compatible más reciente para seguir recibiendo actualizaciones de seguridad y ser apto para la asistencia técnica.

El proceso de actualización de una aplicación existente depende de la versión del entorno de ejecución que use la aplicación:

  • Java 8: Migra tu aplicación a la versión de Java compatible más reciente. Java 8 llegó al fin de la asistencia el 31 de enero de 2024 y se dará de baja el 31 de enero de 2026. Después de la baja, no podrás implementar aplicaciones de Java 8, incluso si tu organización usó anteriormente una política de la organización para volver a habilitar las implementaciones de entornos de ejecución heredados. Tus aplicaciones existentes de Java 8 seguirán ejecutándose y recibiendo tráfico después de la fecha de baja.

  • Java 11: Actualiza tu aplicación a la versión de Java compatible más reciente. Java 11 llegó al fin de la asistencia el 31 de octubre de 2024 y dejará de estar disponible el 31 de octubre de 2025. Después de la baja, no podrás implementar aplicaciones de Java 11. Tus aplicaciones existentes de Java 11 seguirán ejecutándose y recibiendo tráfico después de la fecha de baja.

  • Entornos de ejecución de segunda generación compatibles (Java 17 y Java 21):

    App Engine admite versiones de entorno de ejecución de Java de segunda generación, como Java 17 y Java 21. Para actualizar a Java 25 (versión preliminar), haz lo siguiente:

    • Actualiza el archivo app.yaml especificando una versión de Java que deseas que ejecute tu app. Por ejemplo:

        runtime: javaVERSION
      

      En el ejemplo anterior, VERSION es el número de versión MAJOR. Por ejemplo, para usar la versión más reciente de Java, Java 25 (versión preliminar), especifica 25. Para obtener más información, consulta la descripción general del entorno de ejecución de Java.

    • Si usas servicios agrupados en paquetes heredados, actualiza tus aplicaciones para que se ejecuten en:

      • Java Enterprise Edition 11 (E11): EE 11 no admite las APIs de javax.servlet.* y requiere que actualices tus aplicaciones y dependencias de terceros para usar artefactos de Java más recientes, como el espacio de nombres Jakarta. Java 25 (versión preliminar) se ejecuta de forma predeterminada en EE 11 y no admite EE 10.

      • Java Enterprise Edition 8 (EE 8): Java EE 8 te permite usar las APIs de javax.servlet.*, pero debes realizar pequeños cambios de configuración en tu archivo appengine-web.xml.

Actualiza a una versión de Java compatible para servicios agrupados en paquetes heredados

Compatibilidad con el entorno de ejecución de Java

Consulta la siguiente tabla para comprender qué versiones de Java son compatibles con tus versiones de servlet. Para obtener más detalles sobre las funciones de punto de entrada, la configuración de propiedades del sistema, la compatibilidad resultante con Jetty y las versiones de EE compatibles, consulta Funciones de punto de entrada.

Enterprise Edition (EE) Versión de Java Servlet Compatibilidad
EE7 11 2.5 o 3.1 No hay asistencia de la comunidad para EE7. Java 11 llegó al fin de la asistencia. Te recomendamos que actualices tu app para usar la versión más reciente de Java.
EE7 17 2.5 o versiones posteriores No hay asistencia de la comunidad para EE7. Te recomendamos que actualices tu app para usar EE 8 y versiones posteriores.
EE 8 17/21/25 (versión preliminar) 2.5 y posteriores Java EE 8 es retrocompatible con Java EE6 y versiones posteriores. Para obtener más información, consulta Actualiza Java en una versión compatible de Enterprise Edition (EE).
EE 10 17/21 6.0 (predeterminada, recomendada). Java 21 está configurado para ejecutar EE 10 de forma predeterminada. Para usar Java EE 10, actualiza los servlets y las dependencias de tu aplicación para incluir el espacio de nombres Jakarta. Para obtener más información, consulta Actualiza Java en una versión compatible de Enterprise Edition (EE). No puedes usar Java 25 (vista previa) en EE10.
EE 11 25 6.1 (predeterminada, recomendada). Java 25 (versión preliminar) está configurado para ejecutar EE 11 de forma predeterminada. Para usar Java EE 11, actualiza los servlets y las dependencias de tu aplicación para incluir el espacio de nombres Jakarta. Para obtener más información, consulta Actualiza Java en una versión compatible de Enterprise Edition (EE).

Actualiza Java en una versión compatible de Enterprise Edition (EE)

Para usar Java 25 (versión preliminar) en Enterprise Edition 11 (EE 11) o Java 21 en Enterprise Edition 10 (EE 10), actualiza los servlets y las dependencias de tu aplicación en tus archivos de Maven y Gradle para incluir el espacio de nombres Jakarta:

Java 25 (versión preliminar, EE 11)

Para usar Java 25 (versión preliminar) en Enterprise Edition 11 (EE 11), sigue estos pasos:

  1. Cambia el número de versión del archivo de configuración web.xml a version=6.1. Por ejemplo:

        <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. Cambia el nombre de los servlets y las dependencias de tu aplicación de javax.servlet.* a 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. Actualiza las dependencias de terceros restantes de tu aplicación a artefactos de Java más recientes, según el espacio de nombres Jakarta.

  4. Agrega la siguiente propiedad del sistema en tu archivo 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. Opcional: Java 25 incluye compatibilidad con subprocesos virtuales. Para habilitar los subprocesos virtuales, agrega la propiedad appengine.use.virtualthreads dentro de la etiqueta system-properties en el archivo appengine-web.xml.

Java 21 (EE 10)

Para usar Java 21 en Enterprise Edition 10 (EE 10), sigue estos pasos:

  1. Cambia el número de versión del archivo de configuración web.xml a version=6.0. Por ejemplo:

        <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. Cambia el nombre de los servlets y las dependencias de tu aplicación de javax.servlet.* a 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. Actualiza las dependencias de terceros restantes de tu aplicación a artefactos de Java más recientes, según el espacio de nombres Jakarta.

  4. Agrega la siguiente propiedad del sistema en tu archivo 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. Opcional: Java 21 incluye compatibilidad con subprocesos virtuales. Para habilitar los subprocesos virtuales, agrega la propiedad appengine.use.virtualthreads dentro de la etiqueta system-properties en el archivo appengine-web.xml.

Java 17 y versiones posteriores (EE 8)

Usar las APIs de javax.servlet.* en Java EE 8 sin cambios importantes en la configuración de la aplicación EE 8 ofrece retrocompatibilidad con Java EE 6 y versiones posteriores.

Para ejecutar tus aplicaciones en Java EE 8, declara una etiqueta system-properties nueva en tu archivo appengine-web.xml con la configuración app.engine.use.EE8 no predeterminada:

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

Opcional: Java 21 y versiones posteriores incluyen compatibilidad con subprocesos virtuales. Para habilitar los subprocesos virtuales, agrega la propiedad appengine.use.virtualthreads dentro de la etiqueta system-properties. Ejemplo: <property name="appengine.use.virtualthreads" value="true"/>