Legacy runtimes support language versions that are no longer maintained by open source communities. Because many App Engine customers still depend on these language versions, Google will provide long term support for the following legacy runtimes in the App Engine standard environment:
Google is committed to providing long term support for these runtimes, continuing our more than decade-long history of supporting your apps as you move to the future at your own pace.
To support these runtimes for the long term, we will make the following changes over time:
Return the runtimes to their unforked, open-source states as much as possible. We had to heavily restrict and modify some of the runtimes to securely run your apps in our data centers. By making changes to how we operate the runtimes in our data centers, we can provide a secure and scalable environment for these runtimes over the long term.
Add full build systems that support package repositories, native component builds, and asset repositories.
Some of these changes may require us to deprecate APIs or development tools you are currently using. We will follow our standard deprecation policy for each deprecated API and tool.
As communities stop maintaining versions of their languages, your app may be exposed to vulnerabilities for which no publicly available fix exists. Thus, continuing to run your app in some App Engine runtimes involves more risk than upgrading to a runtime that has a community supported language.
Where possible, we will work with open source communities and vendors to maintain the security of the languages. We will update the runtimes with operating system changes and security fixes for as long as those updates are available to us.
We can't commit to fixing every API your app uses. You may find that fixes are only available in libraries for newer versions of the language.
Support for App Engine bundled services
The Python 2.7, Java 8, Go 1.11, and PHP 5.5 runtimes provide bundled App Engine services and APIs such as Blobstore, Memcache, and Task Queues.
You can continue to access many of these bundled services and APIs in select second-generation runtimes:
Your app can call the bundled services APIs through language idiomatic libraries, and access the same functionality as on the legacy runtimes. The bundled services are offered on the newer runtimes to provide more flexibility, giving you the choice to migrate to the unbundled services (Python, Java, Go), or continue using the App Engine bundled services.
If any deprecations are in the pipeline, we will follow our standard deprecation policy and suggest alternatives. We don't expect the majority of apps to require code changes or redeployments.
Current status of each runtime
We launched the Python 2.7 runtime on February 27, 2012. While we have already removed our modifications and restrictions from large sections of this runtime, we will make further updates to normalize the build process, request path, and package availability. These changes to the runtime enables Google Cloud to support the Python 2.7 runtime long past January 1, 2020, which is when the Python community will end its official support of Python 2.7.
The changes we have made to the Python 2.7 runtime make it possible for you to replace the bundled App Engine services with Google Cloud services and migrate to Python 3 at your own pace. See the migration guide for moving apps from Python 2.7 to Python 3.
We launched the Java 8 runtime on June 28, 2017. This runtime was slightly modified for App Engine and it provided broad support for importing Java packages.
We will make the following updates to this runtime:
Return the Java runtime to the open source state.
Normalize the request path.
Upgrade to Jetty 9.4.
These changes will enable Google Cloud to support the Java 8 runtime for the foreseeable future.
The changes we have made to the Java 8 runtime allow you to replace the bundled App Engine services with Google Cloud services and migrate to Java 11 at your own pace. See information about migrating from Java 8 to Java 11.
We were able to automatically migrate Java 6 and Java 7 apps to the Java 8 runtime without requiring changes in the app code. However, Java 11 breaks backward compatibility in ways that make it impossible for us to automatically migrate apps to the Java 11 runtime. Since you may need to make significant changes to your Java 6, Java 7, and Java 8 apps when migrating to Java 11, you can keep those apps running in the Java 8 runtime and migrate at your own pace.
We launched the Go 1.11 runtime on March 20, 2019 and recommended Go 1.6-1.9 apps migrate to the Go 1.11 runtime. The Go 1.11 runtime is the long term state for apps built with Go 1.6 through Go 1.11.
Once your apps are running on Go 1.11, you can start replacing the bundled App Engine services and APIs to Google Cloud services and upgrading to Go 1.12 or newer at your own pace. You can find more information on migrating, see migrating your App Engine app to Go 1.12.
We launched the PHP 5.5 runtime on May 16, 2013. This runtime removed many features from the open source version and ran apps inside a custom sandbox.
We are currently returning this runtime to its open source state and modernizing the sandbox. We will make further updates to normalize the request path and optimize performance. These changes enable us to support the PHP 5.5 runtime for the foreseeable future.
The changes we have made to the PHP 5.5 runtime allow you to replace the bundled App Engine services with Google Cloud services and migrate to PHP 7 at your own pace. See information about moving apps from PHP 5.5 to PHP 7.2.