I was a little disappointed with Google App Engine. While I concede that it allows you to get some VERY quick results, what started out as niggling doubts at the start of the project soon became genuine concerns:
1) The whole thing seems to be a bit muddled. They're kind of half-supporting an old version of Django, meaning that some Django features are available but some are not. For example, if you try to do a server-side password field as suggested in the Django docs, it doesn't work.
2) No guidance on project structure, unit testing, etc. The approach adopted by most people seems to be 'lump everything in one folder' which leads to a very disorganised project. By contrast, Groovy + Grails has
clearly defined areas for domain models, controllers, views and tests.
3) You're tied to Google's technology. Running a GAE app outside the App Engine environment is not simply a case of flicking a switch. Similarly, you would need to do a significant amount of work to get a Django app to run on app engine.
4) Out of the box, you don't even have access to the session! Everything has to be done with the datastore, which feels very restrictive.
5) Your request handlers implement get, post, etc which map directly to HTTP methods. For me, this level of abstraction is too low - in the last few years the Java community have progressed onto
controllers + actions which seems to be a better fit for implementing complex behaviour.
6) Persistent entities must extend a database
Model class. Worse still, if you intend to create multiple sub-classes of that class, you should extend
PolyModel. Again, this kind of thing has been frowned upon by the Java community for some time. By contrast,
a model in Groovy + Grails looks like this:
class User {
String email
String password
static hasMany = [networks: Network]
static constraints = {
...
}
}Note that it does not need to extend anything (ie. the domain model is decoupled from the persistence strategy) and is given the ability to get, save and delete itself at runtime.
That said, I don't suppose that I'm the target market for GAE. Just the fact that hosting is provided will be a massive draw for a lot of people and I doubt there's anything better if you're wanting to create a quick and dirty mashup of some 3rd party services.