AppengineJS is an open source JavaScript port of the Google App Engine Python SDK helpful to create web applications that can be deployed on GAE infrastructure accessing Google’s persistent storage and services.
While AppengineJS is a JavaScript port of the App Engine Python API, it actually runs on Rhino, the Mozilla JavaScript engine which is written in Java. So, JavaScript code using AppengineJS is actually deployed on JVM. The authors have chosen this solution because they think “the design of the Python API is closer to the JavaScript world.”
The Python to JavaScript porting has been done using the JS naming conventions, namely the Python this_is_a_name
identifier became thisIsAName
, and all delete() functions have been renamed to remove() to avoid collision with the delete
keyword.
The following APIs have been ported so far:
- Datastore (coverage: 90%, usable, expect minor API changes)
- Memcache (coverage: 90%, usable)
- URL Fetch (coverage: 90%, usable)
- Mail (coverage: 90%, usable)
- XMPP (coverage: 90%, usable)
- Images (coverage: 60%, usable)
- Users (coverage: 80%, usable)
- OAuth (coverage: 20%, in progress)
- Task Queue (coverage: 80%, usable)
- Blobstore (coverage: 50%, usable)
- Quota (coverage: 90%, usable)
- Local Unit Testing (coverage: 80%, usable, expect API changes)
The GitHub project contains the source code, a link to documentation, and links to two demo examples using AppengineJS: a JSGI application using the Datastore API (tar.gz), and a blog powered by AppengineJS and Nitro (tar.gz).