Google AppEngine for java, first impressions

Bottomline, it’s impressive. A lot of obvious things work in obvious ways. The google team also picked a lot of the right open source libraries to reuse, so I’m sure a lot of things will work well 🙂

Not allowing the creation of threads is not unexpected, but a bummer. At the same time I’m a bit surprised there’s no (documented!) restrictions on memory consumption. API coverage is pretty complete and includes java.net and JavaMail. Missing bits include AWT, ImageIO, Swing, RMI, CORBA.

The most interesting question is “how to do bigtable from java”, and the answer is interesting too. Besides a low-level API, BigTable access is provided through DataNucleus which is the successor to JPOX. I was always fond of JPOX, shame it is gone. But DataNucleus does look reasonable enough.

Google’s written a DataNucleus adapter for BigTable, which has led to the claim that they support JDO and JPA. However, the JPA support today really seems too limited to be of any practical use. The JDO support does seem reasonable, though they don’t exactly fully implement the standard (yet).

I’m sure a lot of people were hoping for Hibernate support. I will guess that the google engineers tried and failed on that one. I will also guess the community will go and succeed, but that the result will often be horrible performance (since no matter what you do, joins will remain expensive).