I would like to see an agitated discussion on:
1. Has the industry adopted JDO?
2. Performance implications of JDO?
3. How does JDO compare to other JDO-like frameworks such as Castor JDO, Hibernate?
4. Leading Open Sourse/Commercial JDO implementations available.
5. Advantages and Disadvantages(if any) of JDO.
JDO is not very pretty right now.
Kodo JDO seems to be the most feature complete, easy to use implementation I've seen. However it costs the big $$$.
JDO Genie is pretty feature complete, but they have this horrible JDO Genie program that they want you to use to create all your metadata. And it costs the big $$$.
OJB is open source, but JDO support is added through a plugin. As a result you have to have your JDO Mapping, and an OJB mapping. They say they will have a native JDO implementation by version 2.0. However, it is hard to see progress from there website.
TJDO is open source, and works kinda well. However, they do not allow you to map to existing database schema and they have not released a new binary since March.
XORM is open source, but does use bytecode enhancement. Instead "XORM allows you to specify persistence-capable classes using abstract classes or interfaces; bean-style get()/set() methods are enhanced at runtime to be managed for persistence." I'm not wild about that.
ObjectWeb has an opensource JDO implementation embedded in JOnAS. I have never used it. It could be great. But you can't use it unless you are using JOnAS.
JBoss announced an opensource JDO implementation in JBoss. Same thing, can use within JBoss but nowhere else. Right now, I don't think it is very feature rich. About two weeks, maybe a month, after announcing there JDO, they bought Gavin King. This is purely speculation, but I don't think they care too much about JDO now that they have hibernate.
I have not used Castor JDO or Hibernate. But this is what I've heard.
Castor JDO: sucks.
Hibernate JDO: Really Really Good. Lot's of statements such as JDO sucks in comparison to Hibernate. I have never heard that about CastorJDO. Hibernate does not require bytecode manipulation, which is very good. Byte code manipulation is a pain. You have to alter your build scripts. You have to be aware of which JDK you use. It's ugly. Hibernate uses reflection to work, and I am pretty sure Hibernate requires that you have getter/setter methods for every property. Somebody else might know better. There are several times when it is nice not to have getter/setter methods for properties. You definitely don't need getter/setter methods with JDO.
I forgot to add JCredo.
JCredo is a for $$$ implementation, that you can get for free until Jan 1st of next year. They just released version 1.0. It seems to have a fair number of features. Although requires JDK 1.4. I looked at it in an earlier beta, and they did not support multiple methods of inheritance. But they were planning to implement them in 1.0.