Currently, the supported programming languages are Python, Java, and Go (and, by extension, other JVM languages such as Groovy, JRuby, Scala, Clojure, Jython and PHP via a special version of Quercus) . Python web frameworks that run on Google App Engine include GAE framework, Django, CherryPy, Pylons, Flask, web2py and webapp2, as well as a custom Google-written webapp framework and several others designed specifically for the platform that emerged since the release. Google has said that it plans to support more languages in the future, and that the Google App Engine has been written to be language independent. Any Python framework that supports the WSGI using the CGI adapter can be used to create an application; the framework can be uploaded with the developed application. Third-party libraries written in pure Python may also be uploaded. Bulk downloading
SDK version 1.2.2 adds support for bulk downloads of data using Python. The open source Python projects gaebar, approcket, and gawsh also allow users to download and backup App Engine data. No method for bulk downloading data from GAE using Java currently exists. Restrictions
* Developers have read-only access to the filesystem on App Engine. Applications can use only virtual filesystems, like gae-filestore. * App Engine can only execute code called from an HTTP request (scheduled background tasks allow for self calling HTTP requests). * Users may upload arbitrary Python modules, but only if they are pure-Python; C and Pyrex modules are not supported. * Java applications may only use a subset (The JRE Class White List) of the classes from the JRE standard edition. * Java applications cannot create new threads.
* Does not support 'naked' domains (without www) like http://example.com. The required alias to ghs.google.com is implemented with a DNS CNAME record in order for changes in Google server IP addresses not to impact the service. This record cannot be used with other DNS records (RFC 1034 section 3.6.2, RFC 1912 section 2.4), including the required Start of Authority for the example.com DNS zone. Suggested workaround is to use the domain registrar HTTP redirection to a subdomain, e.g. "www.example.com". * SSL/HTTPS is only available via *.appspot.com domains and not via Google Apps Domains. * Datastore cannot use inequality filters on more than one entity property per query. * A process started on the server to answer a request can't last more than 30 seconds. (with the 1.4.0 release, this restriction does not apply to background jobs anymore) * Does not support sticky sessions (a.k.a. session affinity), only replicated sessions are supported including limitation of the amount of data being serialized and time for session serialization. Major differences
Differences from other application hosting
Compared to other scalable hosting services such as Amazon EC2, App Engine provides more infrastructure to make it easy to write scalable applications, but can only run a limited range of applications designed for that infrastructure. App Engine's infrastructure removes many of the...