Overview of App Engine Features
This page summarizes the various features of App Engine. A particular feature may be available in all runtime languages, or only in a subset of languages. While the functionality of a feature is usually constant across all runtimes that offer it, there can be exceptions. In the tables that follow, each feature is described in general terms, followed by links that will take you to the language-specific pages that will cover the details.
Languages and runtimes
You can write an App Engine application in the following languages. Each language has its own runtime and SDK that contains tools for deploying your app, and for developing and testing it locally.
| Language | Runtime | |||
|---|---|---|---|---|
| Java | The Java runtime executes your code in a Java 7 environment. | Release Notes | Documentation | SDK |
| Python | The Python runtime executes your code in a Python 2.7 environment. | Release Notes | Documentation | SDK |
| PHP Preview |
The PHP runtime executes your code in a PHP 5.4 environment. This runtime is in Preview. | Release Notes | Documentation | SDK |
| Go Experimental |
The Go runtime executes your code in a Go 1.2 environment. This runtime is Experimental. | Release Notes | Documentation | SDK |
Generally available (GA) features
GA features are publicly available and are covered by App Engine’s SLA and deprecation policy. The implementation of a GA feature is stable; any changes made to it will be backwards-compatible. The tables below group GA features by the general functions they serve.
Data storage, retrieval, and search
| Feature | Description | Supported Languages | |||
|---|---|---|---|---|---|
| Google Cloud SQL | A fully-managed web service that allows you to create, configure, and use relational databases that live in Google's cloud. | PHP | Python | Java | Go |
| Datastore | A schemaless object datastore providing robust, scalable storage for your web application, a rich data modeling API, and a SQL-like query language called GQL. | --- | Python | Java | Go |
| Blobstore | Allows your application to serve large data objects, such as video or image files, that are too large for storage in the Datastore service. | --- | Python | Java | Go |
| Search | Allows your application to perform Google-like searches over structured data such as: plain text, HTML, atom, numbers, dates, and geographic locations. | --- | Python | Java | Go |
| Memcache | A distributed, in-memory data cache that can be used to greatly improve application performance. | PHP | Python | Java | Go |
| Dedicated Memcache | Provides a fixed cache capacity assigned exclusively to your application. | PHP | Python | Java | Go |
| Logs | Provides programmatic access to application and request logs from within your application. | PHP | Python | Java | Go |
| HRD Migration Tool | Migrates application data stored in the Blobstore or the deprecated Master/Slave Datastore into the new Datastore. | --- | Python | Java | Go |
Communications
| Feature | Description | Supported Languages | |||
|---|---|---|---|---|---|
| Channel | Creates a persistent connection between your application and Google servers, so you can send messages to JavaScript clients in real time without "polling." | --- | Python | Java | Go |
| Google Cloud Endpoints | Enables automatic generation of APIs, making it easier to create a web backend for web clients and mobile clients such as Android or Apple's iOS. | --- | Python | Java | --- |
| Sends email messages on behalf of administrators and users with Google Accounts, and receives mail at various addresses. | PHP | Python | Java | Go | |
| URL Fetch | Uses Google's networking infrastructure to efficiently issue HTTP and HTTPS requests to URLs on the web. | PHP | Python | Java | Go |
| XMPP | Enables an application to send and receive chat messages to and from any XMPP-compatible chat messaging service. | --- | Python | Java | Go |
Process management
| Feature | Description | Supported Languages | |||
|---|---|---|---|---|---|
| Task Queue | Allows applications to perform work outside of a user request, and organize that work into small, discrete units, called "tasks," to be executed later. | PHP | Python | Java | Go |
| Scheduled Tasks | Allows applications to configure regularly scheduled tasks that operate at defined times or regular intervals. | PHP | Python | Java | Go |
Computation
| Feature | Description | Supported Languages | |||
|---|---|---|---|---|---|
| Images | Manipulates, combines, and enhances images, converts images between formats, and queries image metadata such as height and frequency of colors. | --- | Python | Java | Go |
App configuration and management
| Feature | Description | Supported Languages | |||
|---|---|---|---|---|---|
| App Identity | Gives code access to the application identity; provides framework to assert this identity over OAuth. | PHP | Python | Java | Go |
| Capabilities | Provides detection of outages and scheduled maintenance for specific APIs and services, so that your application may bypass them or inform your users. | --- | Python | Java | Go |
| Modules | Lets developers factor large applications into logical components that can share stateful services and communicate in a secure fashion. | PHP | Python | Java | Go |
| Multitenancy | Makes it easy to compartmentalize your data to serve many client organizations from a single instance of your application. | --- | Python | Java | Go |
| Remote | Lets external applications transparently access App Engine services. For example, you can use Remote API to access a production datastore from an app running on your local machine. | --- | Python | Java | Go |
| SSL for Custom Domains | Allows applications to be served via both HTTPS and HTTP via a custom domain instead of an appspot.com address. | PHP | Python | Java | Go |
| Traffic Splitting | Allows you to roll out features for your app slowly over a period of time, and do A/B Testing. Traffic Splitting works by splitting incoming requests to different versions of your app. | PHP | Python | Java | Go |
| Users | Allows applications to sign in users with Google Accounts or OpenID, and address these users with unique identifiers. | PHP | Python | Java | Go |
Preview features
Features in preview are guaranteed to eventually become GA features in some future App Engine release, but while they are in preview their implementation may change in backward-incompatible ways. If a feature here is listed in limited preview it is not publicly available; access to a limited preview feature is by request only.
| Feature | Description | Supported Languages | |||
|---|---|---|---|---|---|
| Google Cloud Storage Client Library | Lets your application read files from and write files to buckets in Google Cloud Storage, with with internal error handling and retry logic. | PHP | Python | Java | Go (*) |
| MapReduce | An optimized adaptation of the MapReduce computing model for efficient distributed computing over large data sets. | --- | --- | Java | --- |
| Sockets | Enables support for outbound sockets using the language-specific, built-in libraries. | PHP | Python | Java | Go |
(*) This feature is available but no documentation exists for it in this runtime.
Experimental features
Experimental features may or may not become GA features in some future App Engine release, and their implementation may change in backward-incompatible ways. Experimental features are usually publicly available. However, if an experimental feature here is listed as trusted tester it is only available to a closed group of users, who are required to sign up to use it.
| Feature | Description | Supported Languages | |||
|---|---|---|---|---|---|
| Datastore Admin/Backup/Restore | Allows you to export or import data to or from your application's Datastore in the Admin Console. | --- | Python | Java | Go |
| MapReduce | An optimized adaptation of the MapReduce computing model for efficient distributed computing over large data sets. | --- | Python | --- | --- |
| OAuth | Using Google Accounts and the OAuth API, any App Engine application can be an OAuth consumer. | --- | Python | Java | Go |
| OpenID | An open technology used for authenticating users across various web services. | PHP | Python | Java | Go |
| PageSpeed | A family of tools that automatically optimizes the performance of your application. | PHP | Python | Java | Go |
| Prospective Search | A querying service that allows your application to match search queries against real-time data streams. | --- | Python | Java | --- |
| Task Queue REST API | Enables the use of an App Engine task queue over REST. | PHP | Python | Java | Go |
| Task Queue Tagging | Leases up to a specified number of tasks with the same tag from the queue for a specified period of time. | --- | Python | Java | Go |
| Appstats Analytics Trusted Tester |
Enables visualization and other analytics of data pertaining to the utilizaiton of your application. | --- | Python | Java | Go |
Third-party services
Google partners with other companies to extend the capabilities of the App Engine platform by offering helper libraries and documentation that make it easy for your app to do things that Google did not build into the core App Engine product. In addition to the helper libraries, these partners sometimes include special offers for App Engine customers.
| Feature | Description | Supported Languages | |||
|---|---|---|---|---|---|
| SendGrid (Email) | Use SendGrid's library to send emails from your app and you can see statistics on opens, clicks, unsubscribes, spam reports and more. | PHP | Python | Java | --- |
| Twilio (SMS/Voice) | Enables your application to make and receive phone calls, send and receive text messages, and make VoIP calls from any phone, tablet, or browser. | PHP | Python | Java | --- |
