Esegui l'upgrade delle applicazioni alla versione del runtime supportata più recente per continuare a ricevere aggiornamenti di sicurezza ed essere idoneo all'assistenza tecnica.
La procedura di upgrade di un'applicazione esistente dipende dalla versione del runtime utilizzata dall'applicazione:
Java 8: esegui la migrazione dell'applicazione alla versione di Java supportata più recente. Il supporto di Java 8 è terminato il 31 gennaio 2024 e verrà ritirato il 31 gennaio 2026. Dopo il ritiro, non potrai eseguire il deployment delle applicazioni Java 8, anche se la tua organizzazione in precedenza utilizzava una policy dell'organizzazione per riattivare i deployment dei runtime legacy. Le applicazioni Java 8 esistenti continueranno a essere eseguite e a ricevere traffico dopo la data di ritiro.
Java 11: esegui l'upgrade dell'applicazione alla versione di Java supportata più recente. Il supporto di Java 11 è terminato il 31 ottobre 2024 e verrà ritirato il 31 ottobre 2025. Dopo il ritiro, non potrai eseguire il deployment delle applicazioni Java 11. Le applicazioni Java 11 esistenti continueranno a essere eseguite e a ricevere traffico dopo la data di ritiro.
Runtime di seconda generazione supportati (Java 17 e Java 21):
App Engine supporta le versioni del runtime Java di seconda generazione, come Java 17 e Java 21. Per eseguire l'upgrade a Java 25:
Aggiorna il file
app.yamlspecificando una versione di Java su cui vuoi che venga eseguita l'app. Ad esempio:runtime: javaVERSIONDove VERSION è il numero di versione
MAJOR. Ad esempio, per utilizzare la versione più recente di Java, Java 25, specifica25. Per ulteriori informazioni, consulta la panoramica sul runtime Java.Se utilizzi i servizi in bundle legacy, esegui l'upgrade delle applicazioni in modo che vengano eseguite su:
Java Enterprise Edition 11 (E11): EE 11 non supporta le API
javax.servlet.*e richiede di aggiornare le applicazioni e le dipendenze di terze parti in modo da utilizzare artefatti Java più recenti, come lo spazio dei nomiJakarta. Per impostazione predefinita, Java 25 viene eseguito su EE 11 e non supporta EE 10.Java Enterprise Edition 8 (EE 8): Java EE 8 ti consente di utilizzare le API
javax.servlet.*, ma devi apportare piccole modifiche di configurazione al fileappengine-web.xml.
Eseguire l'upgrade a una versione di Java supportata per i servizi in bundle legacy
Compatibilità del runtime Java
Per impostazione predefinita, App Engine include un server web EE incorporato nel tuo progetto Java. A partire da Java 25, in App Engine il server web EE viene installato durante il deployment. Google pubblica periodicamente una nuova versione del file JAR. App Engine utilizza l'ultima versione del server web EE incorporato ogni volta che riesegui il deployment dell'applicazione.
Consulta la tabella seguente per capire quali versioni di Java sono compatibili con le tue versioni di servlet. Per maggiori dettagli sulle funzionalità del punto di ingresso, sulle configurazioni delle proprietà di sistema, sul supporto di Jetty risultante e sulle versioni di EE compatibili, consulta Funzionalità del punto di ingresso.
| Enterprise Edition (EE) | Versione di Java | Servlet | Compatibilità |
|---|---|---|---|
| EE7 | 11 | 2.5 o 3.1 | Non è disponibile il supporto della community per EE7. Il supporto di Java 11 è terminato. Ti consigliamo di eseguire l'upgrade dell'app in modo da utilizzare la versione più recente di Java. |
| EE7 | 17 | 2.5 o versioni successive | Non è disponibile il supporto della community per EE7. Ti consigliamo di eseguire l'upgrade dell'app in modo da utilizzare EE 8 e versioni successive. |
| EE 8 | 17/21/25 | 2.5 e versioni successive | Java EE 8 è compatibile con le versioni precedenti di Java EE6 e successive. Per ulteriori informazioni, consulta Eseguire l'upgrade di Java a una versione di Enterprise Edition (EE) compatibile. |
| EE 10 | 17/21 | 6.0 (impostazione predefinita, consigliata). Per impostazione predefinita, Java 21 è configurato per eseguire EE 10. | Per utilizzare Java EE 10, aggiorna le servlet e le dipendenze dell'applicazione in modo da includere lo spazio dei nomi Jakarta. Per ulteriori informazioni, consulta Eseguire l'upgrade di Java a una versione di Enterprise Edition (EE) compatibile. Non puoi utilizzare Java 25 su EE10. |
| EE 11 | 25 | 6.1 (impostazione predefinita, consigliata). Per impostazione predefinita, Java 25 è configurato per eseguire EE 11. | Per utilizzare Java EE 11, aggiorna le servlet e le dipendenze dell'applicazione in modo da includere lo spazio dei nomi Jakarta. Per ulteriori informazioni, consulta Eseguire l'upgrade di Java a una versione di Enterprise Edition (EE) compatibile. |
Eseguire l'upgrade di Java a una versione di Enterprise Edition (EE) compatibile
Per utilizzare Java 25 su Enterprise Edition 11 (EE 11) o Java 21 su Enterprise Edition 10 (EE 10), esegui l'upgrade delle servlet e delle dipendenze dell'applicazione nei file
Maven e Gradle in modo da includere lo spazio dei nomi Jakarta:
Java 25 (EE 11)
Per utilizzare Java 25 su Enterprise Edition 11 (EE 11):
Modifica il numero di versione nel file di configurazione
web.xmlinversion=6.1. 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_1.xsd" version="6.1"> ... </web-app>Rinomina le 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 ad artefatti Java più recenti, a seconda dello spazio dei nomi
Jakarta.Aggiungi la seguente proprietà di sistema nel file
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>(Facoltativo) Java 25 include il supporto dei thread virtuali. Per attivare i thread virtuali, aggiungi la
appengine.use.virtualthreadsproprietà all'interno del tagsystem-propertiesnel fileappengine-web.xml.
Java 21 (EE 10)
Per utilizzare Java 21 su Enterprise Edition 10 (EE 10):
Modifica il numero di versione nel file di configurazione
web.xmlinversion=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 le 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 ad artefatti Java più recenti, a seconda dello spazio dei nomi
Jakarta.Aggiungi la seguente proprietà di sistema nel 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>(Facoltativo) Java 21 include il supporto dei thread virtuali. Per attivare i thread virtuali, aggiungi la proprietà
appengine.use.virtualthreadsall'interno del tagsystem-propertiesnel fileappengine-web.xml.
Java 17 e versioni successive (EE 8)
Utilizza le API javax.servlet.* su Java EE 8 senza apportare modifiche significative alla configurazione dell'applicazione. EE 8 offre la compatibilità con le versioni precedenti di Java EE 6 e successive.
Per eseguire le applicazioni su Java EE 8, dichiara un nuovo
system-properties tag nel tuo
appengine-web.xml
file con la configurazione non predefinita app.engine.use.EE8:
<?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>
(Facoltativo) La versione 21 di Java e successive include il supporto dei 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"/>