26

I've been slowly and a bit painfully working my way up the datastore/JDO learning curve in GAE. Recently I've found a framework called Objectify that is supposed to be somewhere between the very-simple Datastore native API and the complex JDO. I've been reading up on it and it does seem attractive.

What I want to know is, if anyone has much experience with Objectify... How mature is it? Is there much of a user community? Is it ready for heavy-lifting primetime? Could it be abandoned?

There doesn't seem to be much discussion of Objectify here or on the web in general, which makes me nervous about entrusting my project to it.

Dan McGrath
  • 41,220
  • 11
  • 99
  • 130
tempy
  • 1,567
  • 2
  • 18
  • 28
  • 2
    Have not used it, but from their docs, it seems to integrate with memcache using the GAE internal binary format (a protocol buffer), rather than requiring your class to be serializable (which JDO/DataNucleus does). I like that. Thanks for pointing out this project, I have not heard about it, even though I was searching for JDO alternatives about a month ago. – Thilo Mar 07 '10 at 03:35
  • Yeah, I like the memcache handling quite a lot also. The reduced cold-start time is also significant. But, since there's not much of a community around it (yet) and I'm not sure how well it'll keep up with google's updates, I'm taking a wait-and-see approach. – tempy Mar 07 '10 at 18:51
  • 1
    oh that looks nice! I feel your pain regarding the jdo learning curve. It has taken a good amount of willpower to stick with it and not try to write a whole new framework. Only more time will tell if that was the right choice :) – Peter Recore Mar 08 '10 at 21:15
  • For anyone still reading this question, I've eventually shifted from JDO to the low level API, lost some convenient tid-bits, and gained immensely in code clarity and performance. I wish I'd gone with the low-level API from the get-go. Google is now stressing the low-level API in the docs, so I think this is what they recommend as well. – tempy Jun 08 '11 at 14:02
  • 1
    @tempy What made you choose low-level API vs. Objectify? – topchef Oct 07 '11 at 06:21
  • @topchef I started looking at the low-level API just to gain an understanding of what's going on under the covers, with plans to later switch to objectify. But, I discovered that doing what I need to do with the low-level API is really easy, and I have no need for Objectify's more sophisticated capabilities, such as the caching stuff - as I had already rolled my own. Also, I don't love having persistence-specific annotations all over my model. – tempy Oct 08 '11 at 14:32

6 Answers6

19

I've looked into objectify a bit and wrote an initial post about it at http://borglin.net/gwt-project/ . There are actually at least 5 different low-level wrapper frameworks at this point (objectify, Twig, SimpleDS, siena, slim3).

I'm currently working on a interview-style comparison between objectify, Twig and SimpleDS together with the authors for each framework. They will answer a bunch of technical questions and I will do some code scenarios with each framework.

In the mean time, you might want to check out these threads: http://groups.google.com/group/google-appengine-java/tree/browse_frm/thread/4467986eaf01788b/c6d007863a616a1b

http://groups.google.com/group/google-appengine-java/browse_thread/thread/f20d922ffecb310c

http://groups.google.com/group/google-appengine-java/browse_thread/thread/79078132130a3dfe#

Andreas
  • 539
  • 1
  • 6
  • 13
  • 1
    This is really interesting and useful, thanks for making the effort. The proliferation of all these alternate frameworks may be saying a thing or two about the current datastore-JDO offering. =) – tempy Mar 12 '10 at 12:26
  • 2
    Yes. The JDO/JPA solution is too complex on AppEngine. I guess Google has chosen to only provide support for standardized frameworks to avoid a critics storm over "vendor lock in". I know that there are people who use objectify and Twig for their projects already, and the authors of the frameworks are quite dedicated, so I doubt they will be abandoned in any near future. Even if they were, it would probably be easier to modify the code base for your needs rather than struggle with JDO anyways... – Andreas Mar 12 '10 at 15:02
  • Andreas - your interview rocks!!! I noticed you only investigated Objectify yourself... did you ever try out Twig? On paper, it looks like a superb replacement to JDO. – Mark Aug 30 '10 at 14:31
  • 2
    FYI guys, Twig's author joined Objectify project today. – expert Nov 18 '11 at 07:05
5

For all who are looking for the interview-style comparison between objectify, Twig and SimpleDS as mentioned by Andreas Borglin, it is available here: http://borglin.net/gwt-project/?page_id=604

Drupad Panchal
  • 383
  • 3
  • 10
4

I've just ported from JDO and the low-level API to Objectify, and I'm sold. Automatic use of Memcache, much easier (and shorter) queries, fewer surprises. I like that it doesn't hide the nature of the datastore - it just makes it easier to use.

Richard Watson
  • 2,584
  • 1
  • 23
  • 30
3

You might also want to check out the recent announcement of the Twig final release 1.0:

http://groups.google.com/group/google-appengine-java/browse_thread/thread/aafbeb679a6e6790

It gives a good overview of what Twig is capable of. A point of interest is the ability to do non-blocking async queries which is only possible with Twig at this time.

John Patterson
  • 497
  • 3
  • 11
1

Objectify is Ok but there is nothing better yet. Twig is relatively new, As of 09/21/10, took a look at documentation, examples, discussion groups of both and looks like it has some ways to go before getting mainstream. Not many claimed features have out-of-box working examples. I love the succinct documentation from Twig as opposed to the Verbose yet somewhat clear documentation from objectify. Objectify seems to want me to do lot of work, e.g. no managed owned relationship support etc. But given everything that it gives on top of plain JDO/JPA and also given JDO/JPA does not give much, I will say Objectify is the best choice for now.

Gmu
  • 368
  • 2
  • 12
0

You can read this article. It provides a very good comparison between Objectify and JDO

http://borglin.net/gwt-project/?page_id=491

It is a late reply but i diged into this issue as you. As i wanted to use lucene and compass at that time for full text searching and then i found you can use objectify in full text searching in this project

http://code.google.com/p/fulltext-search-in-objectify/

Shady Hussein
  • 513
  • 8
  • 24