Google App Engine and Google Cloud

Google App Engine is a Platform as a Service (PaaS) offering that lets you build and run applications on Google’s infrastructure

Google App Engine supports apps written in a variety of programming languages.

Java: Using App Engine’s Java runtime environment, you can build your application using standard Java technologies.
Python: App Engine features a fast Python interpreter and standard Python libraries.
PHP: App Engine uses Google's Cloud Platform services under the hood when you call standard PHP functions.
Go: App Engine features a Go runtime environment that runs natively compiled Go code.

Google App Engine makes it easy to build and deploy an application that runs reliably even under heavy load and with large amounts of data. It includes the following features:

Persistent storage with queries, sorting, and transactions.
Automatic scaling and load balancing.
Asynchronous task queues for performing work outside the scope of a request.
Scheduled tasks for triggering events at specified times or regular intervals.
Integration with other Google cloud services and APIs.


Compliance to the XMPP standard is an issue, apparently. Why not use the standard ?

Actually, this is a perfect example of why go to all the effort to set up you own XMPP server rather than rely on a 'corporate cloud' type of service. If you do it yourself, you are less exposed to the risk of corporate 'marketing creep' ...

In the long run, open-source, open-licence, collaborative applications are often more stable than the big corporate solution.

XMPP is an instant-messaging protocol, used by Google Talk, Jabber, and other IM networks.

In this article ... covers all the basic functionality of App Engine's XMPP API.

Latest Update ->

The XMPP API has seen a low adoption rate among developers, and Google and other companies have reduced support for applications built using the XMPP protocol. Accordingly, support for the XMPP API will be turned off on October 31, 2017.

Just goes to show ... OSOL projects that depend on volunteers may take years to get to where they are going, but the projects never entirely fade away either, unlike so many for-profit, 'corporate-owned' projects. Often, the big sell point of heavy-weight corporate solutions is the 'long term support' ... NOT !

Apparently, Google Talk is going away too.

-- XMPP Java API Overview --

An App Engine application can send and receive chat messages to and from any XMPP-compatible chat messaging service, such as Google Talk.

An app can send and receive chat messages, send chat invites, request a user's chat presence and status, and provide a chat status.

Incoming XMPP messages are handled by request handlers, similar to web requests.

Some possible uses of chat messages include automated chat participants ("chat bots"), chat notifications, and chat interfaces to services.

A rich client with a connection to an XMPP server (such as Google Talk) can use XMPP to interact with an App Engine application in real time, including receiving messages initiated by the app.

Note that such a client using Google Talk must use the user's password to make an XMPP connection, and cannot use a Google Accounts cookie.

XMPP and the Channel API solve problems at two different levels of the stack.

XMPP describes a generic way to get a message from one endpoint to another. There are existing XMPP clients for Windows, Linux, OSX, etc. and there are existing XMPP client libraries written C++, Python, javascript, etc. If you just want to deliver text to a user who you know already has an XMPP client, using the XMPP App Engine API is the obvious solution; if you want to have tons of control over the client experience and have time to spend on it, using an existing XMPP library and making a custom client could be a good choice.

The Channel API describes a server-side method for sending messages and client-side method for receiving messages. The App Engine implementation provides a javascript client, which is the tricky part for a web app because it requires a persistent HTTP connection. You could certainly re-implement the Channel API on another platform using whatever means you'd like (for App Engine we use the Google Talk stack; XMPP on the backend with JSON over a long-poll HTTP connection on the frontend).

The fundamental question is just how much abstraction you need for your implementation. The Channel API abstracts away much more than the XMPP API, and provides a client library to make connection over javascript easy.

Channel API uses something called XPC to communicate to Google's GTalk client via an IFrame. This client facilitates bi-directional communication between the browser and your App. The JavaScript library that's provided for you, is loosely mapped to the current WebSocket's API and should ease transitioning from Channel API to WebSockets?, once/if it's supported on AppEngine?.

I believe that XMPP is the backbone for the Channel API and is a superset of features. For example, the XMPP API has support for Invitations

you can use the Channel API(browser) and XMPP(everywhere) to build chat features.

See Messaging#XMPPMessaging

Interestingly, running AMQP involves firing up a VM with rabbitMQ at something cent per hour.

Are users better off with Amazon Elastic Cloud ? See AmazonWebServices


Also See


Search wiki for 'GoogleAppEngine'

Last modified 19 months ago Last modified on 05/06/2017 11:52:18 AM