Standards-based Persistence For Java™ Apps On Google App Engine
When I sat down to write this post I decided to glance back at
my last post on this blog. One sentence in particular
jumped out at me: "...I would never again feel compelled to build an [Object-Relational]
Mapping framework in Java." Well, friends, never say never. Now that we've
unveiled an early look at Java support for Google App Engine, I'm
thrilled to announce the availability of a
JDO and
JPA implementation for the App Engine datastore under the Apache
2 open source license.
The App Engine datastore is an incredible piece of
technology. Based on Google's own
Bigtable, it's one of the key reasons App Engine
enables developers to write web applications that scale without infrastructure headaches. But,
it isn't necessarily what most of us are accustomed to using for persistence. Wouldn't it be
lovely if we could use an existing programming model on top of the datastore API? And wouldn't
it be even lovelier if that existing programming model simplified the process of porting web
applications on and off App Engine?
Fortunately for us Java developers we
have not one, but two persistence standards at our disposal, JDO and JPA. And, to make
adopting these persistence standards easier, we have the
DataNucleus
project (formerly JPOX), which provides plugins that connect these standards to various types
of datasources. Andy Jefferson, founder of the DataNucleus project, was not only enthusiastic
about our effort to add an App Engine plugin to his project, he was also incredibly helpful
(thanks Andy!). I hope you're as excited about the results as I am: Standards-based
persistence for the App Engine datastore!
Since App Engine for Python
launched almost a year ago I've admired not just the applications that have been built by the
developer community but the infrastructure as well. Even though the DataNucleus App Engine
plugin was developed by Googlers, it uses the public App Engine APIs that are available to
everyone. It uses no backdoors or special privileges. Rather, it is merely the first instance
of what I hope will be a torrent of Java infrastructure developed for App Engine for Java.
Feel free to peruse the code at
http://code.google.com/p/datanucleus-appengine.
If you find a bug, send us a patch. And if you think you can do better, do better! There's
absolutely nothing stopping you.
By Max Ross, Software Engineer