Eseguire l'upgrade di un'applicazione esistente

Per continuare a ricevere aggiornamenti della sicurezza e poter usufruire dell'assistenza tecnica, devi eseguire l'upgrade delle tue applicazioni alla versione di runtime supportata più recente.

Il processo di upgrade di un'app esistente dipende dalla versione di runtime attualmente utilizzata dall'app:

  • Java 8: devi eseguire la migrazione dell'app all'ultima versione Java supportata. Il 31 gennaio 2024 è terminato il supporto di Java 8. Le tue applicazioni Java 8 esistenti continueranno a essere eseguite e a ricevere traffico. Tuttavia, non puoi eseguire il deployment di nuove applicazioni o aggiornare quelle esistenti che utilizzano i runtime dopo la data di fine del supporto.

  • Runtime Java di seconda generazione (dopo il termine dell'assistenza): per eseguire l'upgrade a una versione di Java supportata, segui questi passaggi:

    • Aggiorna il file app.yaml specificando la versione di Java in cui vuoi eseguire la tua app. Ad esempio:

        runtime: javaVERSION
      

      dove VERSION è il numero di versione MAJOR. Ad esempio, per utilizzare la versione Java più recente, Java 21, specifica 21. Per ulteriori informazioni, consulta la panoramica del runtime Java.

    • Se utilizzi servizi in bundle precedenti, devi eseguire l'upgrade delle app in modo che vengano eseguite su:

      • Java Enterprise Edition 10 (EE10, predefinito, consigliato): Java EE10 non supporta le API javax.servlet.* e richiede di aggiornare le app e le dipendenze di terze parti per utilizzare elementi Java più recenti come lo spazio dei nomi Jakarta.

      • Java Enterprise Edition 8 (EE8): Java EE8 ti consente di utilizzare le API javax.servlet.*, ma devi apportare piccole modifiche alla configurazione del file appengine-web.xml.

        Per tutte le opzioni, consulta Eseguire l'upgrade a Java 21 per i servizi in bundle legacy.

  • Java 17:

    App Engine supporta questa versione. Per continuare a eseguire l'upgrade alla versione supportata più recente:

    • Aggiorna il file app.yaml specificando la versione di Java in cui vuoi eseguire la tua app. Ad esempio:

        runtime: javaVERSION
      

      dove VERSION è il numero di versione MAJOR. Ad esempio, per utilizzare la versione Java più recente, Java 21, specifica 21. Per ulteriori informazioni, consulta la panoramica del runtime Java.

    • Se utilizzi servizi in bundle precedenti, devi eseguire l'upgrade delle app in modo che vengano eseguite su:

      • Java Enterprise Edition 10 (EE10, predefinito, consigliato): Java EE10 non supporta le API javax.servlet.* e richiede di aggiornare le app e le dipendenze di terze parti per utilizzare elementi Java più recenti come lo spazio dei nomi Jakarta.

      • Java Enterprise Edition 8 (EE8): Java EE8 ti consente di utilizzare le API javax.servlet.*, ma devi apportare piccole modifiche di configurazione al file appengine-web.xml.

      Per tutte le opzioni, consulta Eseguire l'upgrade a Java 21 per i servizi in bundle legacy.

Upgrade a Java 21 per i servizi in bundle legacy

Compatibilità con il runtime Java

Consulta la tabella seguente per capire quali versioni di Java sono compatibili con le tue versioni di servlet:

Enterprise Edition (EE) Versione Java Servlet Compatibilità
EE7 11 2.5 o 3.1 Non è disponibile assistenza della community per EE7. Java 11 ha raggiunto la fine del supporto. Ti consigliamo di eseguire l'upgrade dell'app per utilizzare la versione più recente di Java.
EE7 17 2.5 o versioni successive Non è disponibile assistenza della community per EE7. Ti consigliamo di eseguire l'upgrade dell'app per utilizzare EE8.
EE8 17/21 2.5 e versioni successive Java EE8 è compatibile con le versioni precedenti di Java EE6. Per ulteriori informazioni, consulta Eseguire l'upgrade a Java 21 su EE8.
EE10 17/21 6.0 (opzione consigliata). Java 21 è configurato per eseguire EE10 per impostazione predefinita. Per utilizzare Java EE10, devi aggiornare i servlet e le dipendenze dell'applicazione in modo da includere lo spazio dei nomi Jakarta. Per ulteriori informazioni, vedi Eseguire l'upgrade di Java 21 su EE10.

Eseguire l'upgrade a Java 21 su EE10

Per utilizzare Java 21 su Enterprise Edition 10 (EE10), devi eseguire l'upgrade dei servlet e delle dipendenze dell'applicazione nei file Maven e Gradle in modo da includere lo spazio dei nomi Jakarta:

  1. Modifica il numero di versione nel file di configurazione web.xml in version=6.0. Ad esempio:

        <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. Rinomina i servlet e le dipendenze dell'applicazione da 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. Aggiorna le rimanenti dipendenze di terze parti dell'applicazione agli elementi Java più recenti, a seconda dello spazio dei nomi Jakarta.

  4. Aggiungi la seguente proprietà di sistema al file 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. (Facoltativo) Java 21 include il supporto per i thread virtuali. Per attivare i thread virtuali, aggiungi la proprietà appengine.use.virtualthreads al tag system-properties nel file appengine-web.xml.

Esegui l'upgrade a Java 17 o 21 su EE8

Puoi continuare a utilizzare le API javax.servlet.* su Java EE8 senza modifiche sostanziali alla configurazione dell'applicazione, perché EE8 offre compatibilità con le versioni precedenti per Java EE6 e versioni successive. Per eseguire le applicazioni su Java EE8, devi dichiarare un nuovo system-properties tag nel appengine-web.xml file con la configurazione app.engine.use.EE8 non predefinita:

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

(Facoltativo) Java 21 include il supporto per i thread virtuali. Per attivare i thread virtuali, aggiungi la proprietà appengine.use.virtualthreads all'interno del tag system-properties. Esempio: <property name="appengine.use.virtualthreads" value="true"/>