Il runtime Java è lo stack software responsabile dell'installazione del codice e delle dipendenze dell'applicazione e della sua esecuzione nell'ambiente flessibile.
Versioni di Java
Java 25 utilizza buildpack. I buildpack ti aiutano a creare e configurare container che puoi eseguire il deployment su Google Cloud.
Per l'elenco completo delle versioni di Java supportate e della versione di Ubuntu corrispondente, consulta la pianificazione del supporto del runtime.
Per utilizzare una versione di Java supportata, devi:
Installa gcloud CLI versione 420.0.0 o successive. Puoi aggiornare gli strumenti CLI eseguendo il comando
gcloud components update. Per visualizzare la versione installata, puoi eseguire il comandogcloud version.Per eseguire il deployment utilizzando Maven, devi aggiungere il plug-in Maven per App Engine al tuo
pom.xml:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.8.1</version> </plugin>Altre opzioni per il deployment includono il comando
gcloud app deployo il plug-in Gradle di App Engine.Includi le impostazioni
runtime_configeoperating_systemnel fileapp.yamlper specificare un sistema operativo.Se vuoi, puoi specificare una versione del runtime includendo l'impostazione
runtime_versionnel fileapp.yaml. Per impostazione predefinita, viene utilizzata l'ultima versione di Java se l'impostazioneruntime_versionnon è specificata.Esempi
Per specificare Java 25 su Ubuntu 24:
runtime: java env: flex runtime_config: operating_system: "ubuntu24" runtime_version: "25"Per specificare l'ultima versione di Java supportata su Ubuntu 24:
runtime: java env: flex runtime_config: operating_system: "ubuntu24"
Versioni precedenti del runtime
Per Java 8, specifica le impostazioni runtime_config e jdk nel file
app.yaml.
Java 8 supporta:
Il runtime Eclipse Jetty 9 ed esegue Jetty 9 utilizzando Servlet 3.1.
Il tuo codice server che rimane in ascolto sulla porta 8080 come parte della tua applicazione. Questa funzionalità ti consente di utilizzare framework di microservizi come SparkJava e Spring-Boot.
Esempi
Specifica della versione 9 di Jetty (predefinita / facoltativa):
runtime_config: jdk: openjdk8 server: jetty9Specifica della versione 8 di Java:
runtime_config: jdk: openjdk8app.yamlcampione per Java 8:
Consulta pom.xml per configurare Maven e build.gradle per configurare Gradle.
File opzionali
Questi file di configurazione sono facoltativi:
Posiziona questi file al primo livello di MyDir. Se utilizzi uno di questi file, devi eseguirne il deployment separatamente con il comando gcloud app deploy.
web.xml
è facoltativo e necessario solo se non utilizzi le annotazioni Servlet 3.x.
Puoi inserire contenuti web statici, nonché le pagine JavaServer, nella directory
webapp/.
Jetty 9, che l'ambiente flessibile App Engine utilizza come contenitore Servlet, utilizza
Apache Jasper
come implementazione JSP predefinita e include le librerie di tag JSTL.
Il file Dockerfile è facoltativo e viene utilizzato per personalizzare il runtime Java.
Abilitazione della compressione gzip
Il gestore gzip è incluso in Jetty, ma non è attivato per impostazione predefinita. Per
attivare questo modulo, imposta la variabile di ambiente JETTY_MODULES_ENABLE=gzip
nel file app.yaml:
env_variables:
JETTY_MODULES_ENABLE: 'gzip'
Utilizzo di Avvio rapido
Jetty
può velocizzare
il tempo di avvio dell'applicazione eseguendo la pre-scansione dei contenuti e generando
i file di configurazione.
Se utilizzi un'immagine estesa, puoi attivare l'avvio rapido eseguendo /scripts/jetty/quickstart.sh nel Dockerfile, dopo aver aggiunto il file WAR dell'applicazione.
Variabili di ambiente
Puoi impostare le seguenti variabili di ambiente facoltative specifiche per il runtime Java 8/Jetty 9. Puoi anche impostare le variabili di ambiente OpenJDK 8.
Per impostare le variabili di ambiente, utilizza la chiave env_variables nel file app.yaml.
| Env Var | Maven Prop | Valore/Commento |
|---|---|---|
JETTY_PROPERTIES |
Elenco separato da virgole di coppie name=value aggiunte a $JETTY_ARGS |
|
JETTY_MODULES_ENABLE |
Elenco separato da virgole di moduli da attivare aggiungendoli a $JETTY_ARGS |
|
JETTY_MODULES_DISABLE |
Elenco separato da virgole dei moduli da disattivare rimuovendoli da $JETTY_BASE/start.d |
|
JETTY_ARGS |
Argomenti passati a start.jar di Jetty. Qui devono essere passati tutti gli argomenti utilizzati per la configurazione Jetty personalizzata. |
|
JAVA_OPTS |
Argomenti di runtime JVM |
Cloud Logging avanzato (beta)
Quando viene eseguito nell'ambiente flessibile App Engine, puoi configurare Java Util Logging per inviare i log a Cloud Logging impostando la variabile di ambiente JETTY_ARGS. Ad esempio:
env_variables:
JETTY_ARGS: -Djava.util.logging.config.file=WEB-INF/logging.properties
Devi fornire un file logging.properties che configuri un LoggingHandler nel seguente modo:
handlers=com.google.cloud.logging.LoggingHandler
# Optional configuration
.level=INFO
com.google.cloud.logging.LoggingHandler.level=FINE
com.google.cloud.logging.LoggingHandler.log=gae_app.log
com.google.cloud.logging.LoggingHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%3$s: %5$s%6$s
Supporto di altri runtime Java
Se devi utilizzare una versione di Java non supportata, puoi creare un runtime personalizzato e selezionare un'immagine di base valida con la versione di Java che ti serve.
Per le immagini di base fornite da Google o le immagini di base Docker Java, consulta Creazione di runtime personalizzati.
Organizzare i file
L'albero delle origini dovrebbe avere il seguente aspetto:
MyDir/
[pom.xml]
[build.gradle]
[index.yaml]
[cron.yaml]
[dispatch.yaml]
src/main/
appengine/
app.yaml
docker/
[Dockerfile]
java/
com.example.mycode/
MyCode.java
webapp/
[index.html]
[jsp.jsp]
WEB-INF/
[web.xml]Test locale
Quando esegui i test nel tuo ambiente locale, puoi utilizzare servizi Google Cloudemulati anziché servizi Google Cloud remoti. Puoi utilizzare i seguenti emulatori:
Utilizza il comando gcloud per avviarli prima di eseguire l'app:
gcloud beta emulators datastore start
gcloud beta emulators pubsub start
gcloud beta emulators bigtable start
Maven
Aggiungi queste righe al file pom.xml di Maven per aggiungere il
plug-in Maven Jetty 9:
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.2.v20170220</version>
</plugin>
Per eseguire l'app in locale, utilizza il comando Maven:
mvn jetty:run-exploded
Gradle
Segui le istruzioni riportate in
Creazione di un nuovo progetto Gradle
per aggiungere il
plug-in Gretty Gradle
al tuo build.gradle e utilizza il comando:
gradle jettyRun
esegui il deployment dell'app
Per inizializzare Google Cloud CLI, esegui:
gcloud init
Dopo aver completato le configurazioni, puoi utilizzare Google Cloud CLI per eseguire il deployment
di questa directory contenente i file app.yaml e WAR utilizzando:
gcloud app deploy app.yaml
Se utilizzi uno dei file di configurazione facoltativi (index.yaml,
cron.yaml e dispatch.yaml), eseguine il deployment separatamente con il comando gcloud. Ad esempio:
gcloud app deploy cron.yaml
Maven
Utilizza Maven per eseguire il deployment dell'app:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud . Se il
tuo file pom.xml
specifica già
l'ID progetto, non devi includere la proprietà -Dapp.deploy.projectId nel
comando che esegui.
Gradle
Utilizza Gradle per eseguire il deployment della tua app:
gradle appengineDeploy