The introduction of Google App Engine in 2008 opened up a whole new world for developers – one without worrying about infrastructure management or scaling web applications. Java 8, 11 and 17 all run on this platform along with alternative JVM languages like Apache Groovy or Kotlin are also part of it.
But now, Google has finally opened-source the Java Source code for its Google App Engine Standard environment, which includes all of its production runtime features as well as APIs and local SDKs.
In the below picture representation, items in orange are public modules artifacts and items in yellow are internal ones. Modules ending with * are only used on the production server-side:


Package | Description |
---|---|
com.google.appengine.api | Provides facilities for server lifecycle management, threading and namespaces/multitenancy. |
com.google.appengine.api.appidentity | Provides a service to sign arbitrary byte arrays using an internally-generated, rotated private key. |
com.google.appengine.api.backends | Provides access to long-running, addressable servers. |
com.google.appengine.api.blobstore | Provides management and persistent storage of large, immutable byte arrays. |
com.google.appengine.api.capabilities | Provides status information about the services available via the Google App Engine APIs. |
com.google.appengine.api.datastore | Provides persistent storage, also accessible via JDO or JPA interfaces. |
com.google.appengine.api.files | Provides a service for file storage and access. |
com.google.appengine.api.images | Provides facilities for the creation and manipulation of images. |
com.google.appengine.api.log | Provides access to request logs and application logs. |
com.google.appengine.api.mail | Provides a service to send email messages on behalf of administrators or authenticated users, also accessible via a JavaMail interface. |
com.google.appengine.api.memcache | Provides fast but unreliable data storage, also accessible via a JCache interface. |
com.google.appengine.api.modules | Utility functions for working with modules. |
com.google.appengine.api.oauth | Provides a method for clients to access server resources on behalf of a resource owner, as well as a process for end-users to authorize third-party access to their server resources without sharing their credentials. |
com.google.appengine.api.quota | Provides measurement of API and CPU usage during requests. |
com.google.appengine.api.search | Provides a service for indexing documents and retrieving them using search queries. |
com.google.appengine.api.search.checkers | |
com.google.appengine.api.search.query | |
com.google.appengine.api.taskqueue | Provides a mechanism to perform work initiated by a user request, outside of that request. |
com.google.appengine.api.urlfetch | Provides a service to make HTTP/S requests of other servers on the internet. |
com.google.appengine.api.users | Provides facilities to check if a user has authenticated, retrieve their email address, and check if they are an administrator for this application. |
com.google.appengine.api.utils | Provides common utility classes. |
com.google.apphosting.api | Provides access to the ApiProxy, which dispatches API calls to backend services. |
Github: https://github.com/GoogleCloudPlatform/appengine-java-standard
References:
- https://cloud.google.com/appengine/docs/standard/java/javadoc
- https://cloud.google.com/blog/topics/developers-practitioners/open-sourcing-app-engine-standard-java-runtime
- https://www.infoq.com/news/2022/03/google-appengine-java/