App Engine Java 8 Runtime FAQ

The following questions apply to the App Engine Java 8 standard runtime.

What are the changes between the Java 7 and Java 8 standard runtimes?

In general, all features available in the Java 7 runtime should be available in the Java 8 runtime.

If your application code depends on the presence of a Java security manager, or if some class loading restrictions are exposed by the Java 7 security sandbox, then your application may behave differently. Make sure you test your application with the Java 8 runtime before serving customer requests.

Can I use Kotlin with the Java 8 runtime?

Yes, check out our Kotlin samples in the GitHub repository.

Can I use IntelliJ IDEA Community Edition with App Engine?

Yes, using the built-in Maven integration.

You can also use IntelliJ Ultimate Edition, which provides you with more web application development features and has tighter integration with the App Engine deployment process.

Does App Engine Cloud Endpoints v1.0 work in the Java 8 runtime?

No. You must migrate to Cloud Endpoints Frameworks version 2.0.

Why do I get java.lang.NoClassDefFoundError for repackaged classes?

Repackaged internal classes, such as com/google/appengine/repackaged/com/google/common/collect/ImmutableList, are not available anymore in the Java 8 runtime, even if they are defined in previous versions of the App Engine API JAR.

If you need to use the repackaged classes in your Java 8 app, set appengine.api.legacy.repackaging to true in the appengine-web.xml. For example:

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

We recommend that you replace these classes with the public, non-repackaged classes.

Can I do traffic splitting between Java 7 and Java 8?

Yes, each service/module version can use a different runtime version and traffic splitting is supported.

How are Java 8 threads treated when an instance isn't getting requests?

Threads created with App Engine APIs will continue to work as before.

Automatic Scaling Manual Scaling Basic Scaling
Instance terminates due to lack of requests. Instance terminates after the last request (default: 5 minutes) Runs forever.

What Metadata server features are supported in the App Engine Java 8 runtime?

The App Engine Java 8 runtime supports the following Metadata server urls:

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

Why do my requests hang?

If you create a thread pool on a request, you must make sure you explicitly shut it down before the current request terminates.

Was this page helpful? Let us know how we did:

Send feedback about...

App Engine standard environment for Java