Domande frequenti sul runtime Java 8 di App Engine

Le seguenti domande si applicano al runtime standard Java 8 di App Engine.

Posso utilizzare Kotlin con il runtime Java 8?

Sì, dai un'occhiata ai nostri esempi di Kotlin nel repository GitHub.

Posso utilizzare IntelliJ IDEA Community Edition con App Engine?

Sì, utilizzando l'integrazione Maven integrata.

Puoi anche utilizzare IntelliJ Ultimate Edition, che offre più funzionalità per lo sviluppo di applicazioni web e un'integrazione più stretta con il processo di implementazione di App Engine.

La versione 1.0 di App Engine Cloud Endpoints funziona nel runtime Java 8?

No. Devi eseguire la migrazione alla versione 2.0 di Cloud Endpoints Frameworks.

Perché ricevo java.lang.NoClassDefFoundError per le classi repackage?

Le classi interne riempestate, comecom/google/appengine/repackaged/com/google/common/collect/ImmutableList, non sono più disponibili nel runtime Java 8, anche se sono definite nelle versioni precedenti del file JAR dell'API App Engine.

Se devi utilizzare le classi riepacchettizzate nella tua app Java 8, imposta appengine.api.legacy.repackaging su true in appengine-web.xml. Ad esempio:

<system-properties>
  <property name="appengine.api.legacy.repackaging" value="true">
</system-properties>

Ti consigliamo di sostituire questi corsi con i corsi pubblici non pacchettizzati.

Posso eseguire la suddivisione del traffico tra Java 8 e Java 11?

Sì, ogni versione del servizio o del modulo può utilizzare una versione del runtime diversa e la suddivisione del traffico è supportata.

Come vengono trattati i thread Java 8 quando un'istanza non riceve richieste?

I thread creati con le API App Engine continueranno a funzionare come prima.

Scalabilità automatica Scalabilità manuale Scalabilità di base
L'istanza viene terminata per mancanza di richieste. L'istanza termina dopo l'ultima richiesta (valore predefinito: 5 minuti) Viene eseguito in modo perpetuo.

Quali funzionalità del server metadati sono supportate nel runtime Java 8 di App Engine?

Il runtime Java 8 di App Engine supporta i seguenti URL di server di metadati:

/computeMetadata/v1/project/numeric-project-id (pending)
/computeMetadata/v1/project/project-id
/computeMetadata/v1/instance/zone
/computeMetadata/v1/instance/service-accounts/default/aliases
/computeMetadata/v1/instance/service-accounts/default/email
/computeMetadata/v1/instance/service-accounts/default/scopes
/computeMetadata/v1/instance/service-accounts/default/token
/computeMetadata/v1/instance/service-accounts/{account}/aliases
/computeMetadata/v1/instance/service-accounts/{account}/email
/computeMetadata/v1/instance/service-accounts/{account}/scopes
/computeMetadata/v1/instance/service-accounts/{account}/token

Metadata Server v1beta1

Il server di metadati v1beta1 è deprecato e la sua disattivazione è pianificata. Assicurati di aggiornare tutte le richieste in modo da utilizzare la versione 1 o successiva. Per saperne di più, consulta Transizione all'endpoint del server di metadati v1.

/computeMetadata/v1beta1/project/numeric-project-id  (pending)
/computeMetadata/v1beta1/project/project-id
/computeMetadata/v1beta1/instance/zone
/computeMetadata/v1beta1/instance/service-accounts/default/aliases
/computeMetadata/v1beta1/instance/service-accounts/default/email
/computeMetadata/v1beta1/instance/service-accounts/default/scopes
/computeMetadata/v1beta1/instance/service-accounts/default/token
/computeMetadata/v1beta1/instance/service-accounts/{account}/aliases
/computeMetadata/v1beta1/instance/service-accounts/{account}/email
/computeMetadata/v1beta1/instance/service-accounts/{account}/scopes
/computeMetadata/v1beta1/instance/service-accounts/{account}/token

Perché le mie richieste non ricevono risposta?

Se crei un pool di thread su una richiesta, devi assicurarti di interromperlo esplicitamente prima che la richiesta corrente termini.