Actualizar una aplicación

Actualiza tus aplicaciones a la versión de tiempo de ejecución compatible más reciente para seguir recibiendo actualizaciones de seguridad y poder optar a la asistencia técnica.

El proceso de actualización de una aplicación depende de la versión del tiempo de ejecución que utilice la aplicación:

  • Java 8: migra tu aplicación a la versión de Java más reciente compatible. Java 8 ha llegado al final del periodo de asistencia el 31 de enero del 2024 y quedará obsoleto el 31 de enero del 2026. Después de la retirada, no podrás desplegar aplicaciones Java 8, aunque tu organización haya usado anteriormente una política de organización para volver a habilitar los despliegues de los tiempos de ejecución antiguos. Tus aplicaciones Java 8 seguirán ejecutándose y recibiendo tráfico después de la fecha de retirada.

  • Java 11: actualiza tu aplicación a la versión de Java compatible más reciente. Java 11 ha llegado al final de la asistencia el 31 de octubre del 2024 y dejará de estar disponible el 31 de octubre del 2025. Después de la retirada, no podrás desplegar aplicaciones Java 11. Tus aplicaciones de Java 11 seguirán ejecutándose y recibiendo tráfico después de la fecha de retirada.

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

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

    • Actualiza el archivo app.yaml especificando la versión de Java con la que quieres que se ejecute tu aplicación. Por ejemplo:

        runtime: javaVERSION
      

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

    • Si utilizas servicios antiguos agrupados, actualiza tus aplicaciones para que se ejecuten en uno de los siguientes entornos:

      • Java Enterprise Edition 11 (E11): EE 11 no admite las APIs 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 (vista previa) se ejecuta de forma predeterminada en EE 11 y no es compatible con EE 10.

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

Actualizar a una versión de Java compatible para servicios antiguos empaquetados

Compatibilidad con el tiempo de ejecución de Java

Consulta la siguiente tabla para saber qué versiones de Java son compatibles con tus versiones de servlet. Para obtener más información sobre las funciones de punto de entrada, las configuraciones de propiedades del sistema, la compatibilidad con Jetty resultante 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 ha llegado al final del periodo de asistencia. Te recomendamos que actualices tu aplicación para usar la versión más reciente de Java.
EE7 17 2.5 o posterior No hay asistencia de la comunidad para EE7. Te recomendamos que actualices tu aplicación para que use EE 8 y versiones posteriores.
EE 8 17/21/25 (vista previa) 2.5 y versiones posteriores Java EE 8 es retrocompatible con Java EE6 y versiones posteriores. Para obtener más información, consulta Actualizar Java en una versión compatible de Enterprise Edition (EE).
EE 10 17/21 6.0 (predeterminada y 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 Actualizar 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 y recomendada). Java 25 (vista previa) 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 Actualizar Java en una versión compatible de Enterprise Edition (EE).

Actualizar Java a una versión compatible de Enterprise Edition (EE)

Para usar Java 25 (vista previa) 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 los archivos Maven y Gradle para incluir el espacio de nombres Jakarta:

Java 25 (vista previa, EE 11)

Para usar Java 25 (vista previa) 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 de las aplicaciones restantes a artefactos Java más recientes, según el espacio de nombres Jakarta.

  4. Añade la siguiente propiedad del sistema al 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 hilos virtuales. Para habilitar los hilos virtuales, añada la propiedad appengine.use.virtualthreads a 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 de las aplicaciones restantes a artefactos Java más recientes, según el espacio de nombres Jakarta.

  4. Añade la siguiente propiedad del sistema al 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 hilos virtuales. Para habilitar los hilos virtuales, añade la propiedad appengine.use.virtualthreads a la etiqueta system-properties en el archivo appengine-web.xml.

Java 17 y versiones posteriores (EE 8)

Usa las APIs de javax.servlet.* en Java EE 8 sin hacer 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 nueva etiqueta system-properties 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: La versión 21 de Java y posteriores incluyen compatibilidad con los hilos virtuales. Para habilitar los hilos virtuales, añada la propiedad appengine.use.virtualthreads a la etiqueta system-properties. Ejemplo: <property name="appengine.use.virtualthreads" value="true"/>