Actualizar una aplicación

Debe actualizar sus 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 tu aplicación:

  • Java 8: debes migrar tu aplicación a la versión de Java más reciente compatible. Java 8 llegó al final del ciclo de asistencia el 31 de enero del 2024. Tus aplicaciones Java 8 seguirán ejecutándose y recibiendo tráfico. Sin embargo, no puedes implementar aplicaciones nuevas ni actualizar las que ya tengas que usen runtimes después de la fecha de finalización del soporte.

  • Entornos de ejecución de Java de segunda generación (después de la finalización del ciclo de asistencia): para actualizar a una versión compatible de Java, 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 21, especifica 21. Para obtener más información, consulta la descripción general del tiempo de ejecución de Java.

    • Si usas servicios antiguos agrupados, debes actualizar tus aplicaciones para que se ejecuten en uno de los siguientes entornos:

      • Java Enterprise Edition 10 (EE10 - predeterminado y recomendado): Java EE10 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 Enterprise Edition 8 (EE8): Java EE8 te permite usar las APIs de javax.servlet.*, pero debes hacer pequeños cambios en la configuración del archivo appengine-web.xml.

        Consulta todas las opciones en el artículo Actualizar a Java 21 para los servicios antiguos incluidos.

  • Java 17:

    App Engine admite esta versión. Para seguir actualizando a la versión de asistencia más reciente, 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 21, especifica 21. Para obtener más información, consulta la descripción general del tiempo de ejecución de Java.

    • Si usas servicios antiguos agrupados, debes actualizar tus aplicaciones para que se ejecuten en uno de los siguientes entornos:

      • Java Enterprise Edition 10 (EE10 - predeterminado y recomendado): Java EE10 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 Enterprise Edition 8 (EE8): Java EE8 te permite usar APIs de javax.servlet.*, pero debes hacer pequeños cambios en la configuración de tu archivo appengine-web.xml.

      Consulta todas las opciones en el artículo Actualizar a Java 21 para los servicios antiguos incluidos.

Actualizar a Java 21 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:

Enterprise Edition (EE) Versión de Java Servlet Compatibilidad
EE7 11 2.5 o 3.1 No hay asistencia comunitaria 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 comunitaria para EE7. Te recomendamos que actualices tu aplicación para usar EE8.
EE8 17/21 2.5 y versiones posteriores Java EE8 es retrocompatible con Java EE6 y versiones posteriores. Para obtener más información, consulta Actualizar a Java 21 en EE8.
EE10 17/21 6.0 (recomendado). Java 21 está configurado para ejecutar EE10 de forma predeterminada. Para usar Java EE10, debes actualizar 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 21 en EE10.

Actualizar a Java 21 en EE10

Para usar Java 21 en Enterprise Edition 10 (EE10), debes actualizar los servlets y las dependencias de tu aplicación en los archivos Maven y Gradle para incluir el espacio de nombres Jakarta:

  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 en función del 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.

Actualizar a Java 17 o 21 en EE8

Puedes seguir usando las APIs de javax.servlet.* en Java EE8 sin hacer cambios importantes en la configuración de la aplicación, ya que EE8 ofrece retrocompatibilidad con Java EE6 y versiones posteriores. Para ejecutar tus aplicaciones en Java EE8, debes declarar 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>java21</runtime> <!-- or java17 -->
      <system-properties>
        <property name="appengine.use.EE8" value="true"/>
      </system-properties>
      <app-engine-apis>true</app-engine-apis>
   </appengine-web-app>

Opcional: Java 21 incluye compatibilidad con 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"/>