The App Engine standard environment has two generations of runtime environments. The second-generation runtimes significantly improve the capabilities of App Engine and remove some of the limitations of the first-generation runtimes. This page describes the similarities and differences between the first- and second-generation runtimes.
Second-generation | First-generation | |
---|---|---|
Supported languages |
Python 3 Java 11, 17 Node.js PHP 7/8 Ruby Go 1.12+ |
Python 2.7 Java 8 PHP 5.5 Go 1.11 |
Language extension and system library support | Any extension or library | Python 2.7, PHP 5.5: Extensions and libraries that use allowlist Java 8, Go 1.11: Any extension or library |
Supported APIs |
To access full-featured Google Cloud services, use the open source Cloud Client Libraries. When updating to the Python 3, Java 11/17, or Go 1.12+ runtimes, you can continue using many of the App Engine bundled services. To learn more, see the Python 3, Java 11/17 and Go 1.12+ guides for details. |
Cloud Client Libraries and App Engine bundled services |
For large blob file storage, use the
Cloud Storage or continue using the App Engine Blobstore API bundled
service. |
App Engine Blobstore API | |
For data persistence, use Firestore in Datastore mode
and Cloud SQL for
relational storage. Alternatively, you can continue using
the App Engine Datastore API bundled service. |
App Engine Datastore API | |
For deferred task execution, continue using the Deferred API (Python),
DeferredTask API (Java), and Delay API (Go). PHP users can continue to
specify deferred execution via the Task Queues API bundled service.
Alternatively, you can implement the deferred functionality using
Cloud Tasks. |
App Engine Deferred API | |
For image processing, you can use Cloud Storage
to serve images directly, or use a third-party content delivery network
(CDN) or image processing library.
Alternatively, you can continue using the App Engine Images API bundled service. |
App Engine Images API | |
For inbound or outbound messaging, continue using App Engine Mail API
bundled service. Alternatively for outbound
messaging, you can use a 3rd-party mail provider such as
SendGrid,
Mailgun,
or Mailjet. A recommended 3rd-party alternative for inbound messaging is not available at this time. |
App Engine Mail API | |
For caching app data, create a Memorystore instance and connect it to your app using Serverless VPC Access. Alternatively, continue using the App Engine Memcache API bundled service. | App Engine Memcache API | |
For searchable document indexes, host any full-text search database such as Elasticsearch on Compute Engine and access it from your service. The Google Cloud Marketplace also offers a SaaS-based Elasticsearch service. Alternatively, continue using the App Engine Search API bundled service. | App Engine Search API | |
For running external tasks, stay on the App Engine Task Queues API
bundled service for both push and pull queues, or migrate push queues to
Cloud Tasks. and pull queues to Pub/Sub. |
App Engine Task Queue API | |
For user authentication, continue using the App Engine Users API bundled service, or migrate to any authentication service described in User Authentication Options. | App Engine Users API | |
External network access | Full access | Python 2.7, PHP 5.5: Via URL Fetch API Java 8, Go 1.11: Full access. |
File system access | Read/write access to /tmp |
Python 2.7, PHP 5.5: None Java 8, Go 1.11: Read/write access to /tmp |
Language runtime | Unmodified, open source runtime | Modified for App Engine |
Isolation mechanism | gVisor-based container sandbox | gVisor-based container sandbox |
App Engine first-generation runtime support
There are no plans to deprecate additional App Engine first-generation runtimes at this time. The second-generation runtimes represent the future direction of App Engine; however, developers and customers using the first-generation runtimes will continue to receive support and required system updates.
To learn more about the support plan for first-generation runtimes, see Long-term support for legacy runtimes and Runtime lifecycle.
Similarities between first- and second-generation runtimes
- Nearly instantaneous scale-up time to respond to traffic spikes
- Applications are built using the same build process
- Same SLA for GA services
- Identical
gcloud
command support and the same GCP console interface - Free tier
First- to second-generation runtime migration resources
Migration guides are available for each language runtime on the Long-term support page.