There’s an interesting interview with the creators of Twig, Objectify-Appengine, and SimpleDS, which are all ORM-like frameworks built for the GAE that facilitate working with the underlying datastore (an abstraction of Bigtable). If you haven’t worked with GAE, you need to know that the exposed hip datastore isn’t relational — it’s schema-less and more like a key/value store; consequently, the JDO features exposed by default tend to leave people a bit distressed (especially when it comes to relationships).
The questions asked and the answers these developers provide are quite helpful in understanding both the pains and the beauties of the Bigtable abstraction. And while these developers are obviously biased towards their respective framework and the details of the interview are focused on the datastore itself, this conversation is a worthwhile read for anyone new or considering using the GAE.
What’s more, the interview provides a link to a GAE forum where both the creators of Twig and Objectify-Appengine square off regarding their respective frameworks implementations. Both frameworks have a distinctly different mechanism for dealing with relationships and while I tend to prefer Twig’s relaxed syntax, Jeff Schnitzer, the creator of Objectify-Appengine makes a cogent case for why dealing directly with GAE keys is safer.
Interestingly enough, a full-stack framework targeting the GAE has yet (to my knowledge) fully emerge — indeed, Grails works on the GAE but this is basically an afterthought (i.e. Grails wasn’t built for the GAE). Moreover, Gaelyk is specifically built for the GAE, but lacks a fully fleshed out ORM implementation, preferring to expose an enhanced version the low-level Entity API. The Play framework, which is somewhat like Grails but without a lot of Groovy, has a GAE module (aka plugin) along with an Objectify-Appengine one. It should be interesting to see how things play out (no pun intended).
