Per continuare a ricevere aggiornamenti della sicurezza e avere diritto all'assistenza tecnica, devi eseguire l'upgrade delle tue applicazioni all'ultima versione supportata del runtime . Ti consigliamo anche di eseguire la migrazione a Cloud Run, l'ultima evoluzione di Google Cloud Serverless. Cloud Run è progettato per migliorare l'esperienza di App Engine, incorporando molte delle migliori funzionalità sia dell'ambiente standard sia dell'ambiente flessibile. Per confrontare le funzionalità e capire come eseguire la migrazione, consulta la guida al confronto tra App Engine e Cloud Run
Il processo di upgrade di un'app esistente dipende dalla versione di runtime che l'app utilizza attualmente:
Java 8: devi eseguire la migrazione della tua app all'ultima versione di Java supportata. Java 8 ha raggiunto la fine del supporto il 31 gennaio 2024. Le applicazioni Java 8 esistenti continueranno a essere eseguite e a ricevere traffico. Tuttavia, non puoi eseguire il deployment di applicazioni nuove o aggiornare applicazioni esistenti che utilizzano runtime dopo la data di fine del supporto.
Java 11 o Java 17:
Questi runtime sono versioni Java supportate. Per continuare a eseguire l'upgrade alla versione di supporto più recente:
Puoi aggiornare il file
app.yaml
specificando la versione di Java che vuoi che venga eseguita nell'app. Ad esempio:runtime: javaVERSION
Dove VERSION è il numero di versione
MAJOR
.Esempio: per Java 21, specifichi 21 come
runtime: java21
. Per ulteriori informazioni, consulta la panoramica del runtime Java.Se utilizzi servizi in bundle legacy, 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 l'aggiornamento delle app e delle dipendenze di terze parti per utilizzare artefatti Java più recenti come lo spazio dei nomiJakarta
.Java Enterprise Edition 8 (EE8): Java EE8 consente di utilizzare le API di
javax.servlet.*
, ma devi apportare modifiche di piccola entità alla configurazione al fileappengine-web.xml
.
Consulta l'articolo Eseguire l'upgrade a Java 21 per i servizi in bundle legacy per tutte le opzioni.
Esegui l'upgrade a Java 21 per i servizi in bundle legacy
Compatibilità del runtime Java
Consulta la seguente tabella per capire quali versioni Java sono compatibili con le tue versioni di Jetty e di servlet:
Versione Enterprise (EE) | Versione Jetty | Versione Java | Servlet | Compatibilità |
---|---|---|---|---|
EE7 | 9,4 | 11 | 2,5 o 3,1 | |
EE7 | 9,4 | 17 | 2,5 o 3,1 | |
EE8 | 12 | 21 | 2,5 e versioni successive | Java EE8 è compatibile con le versioni precedenti di Java EE6 e versioni successive. Per ulteriori informazioni, consulta la pagina relativa all'upgrade a Java 21 su EE8. |
EE10 | 12 | 21 | 6.0 (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, consulta la pagina relativa all'upgrade di Java 21 su EE10. |
Esegui 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
:
Cambia il numero di versione nel file di configurazione
web.xml
inversion=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>
Rinomina i servlet e le dipendenze dell'applicazione da
javax.servlet.*
ajakarta.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 { ......
Aggiorna le dipendenze di terze parti dell'applicazione rimanenti agli artefatti Java più recenti, a seconda dello spazio dei nomi
Jakarta
.Facoltativo: Java 21 include il supporto per i thread virtuali. Per abilitare i thread virtuali, aggiungi la proprietà
appengine.use.virtualthreads
all'interno del tagsystem-properties
nel fileappengine-web.xml
.
Esegui l'upgrade a Java 21 su EE8
Puoi continuare a utilizzare le API javax.servlet.*
su Java EE8 senza importanti modifiche alla configurazione delle applicazioni, poiché Jetty 12 offre compatibilità con le versioni precedenti di Java EE6 e versioni successive. Per eseguire le tue applicazioni su Java EE8, devi dichiarare un nuovo tag system-properties
nel tuo file appengine-web.xml
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>
<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 abilitare i thread virtuali, aggiungi la proprietà appengine.use.virtualthreads
all'interno del tag system-properties
. Esempio:
<property name="appengine.use.virtualthreads" value="true"/>