"Castor JDO": Simply False Advertisingby David Jordan, coauthor of Java Data Objects
Editor's Note: the following is an expert perspective on the Java Data Objects (JDO) name and use issues currently pending in the court of opinion as well as, perhaps, more. This does not necessarily reflect the opinion of O'Reilly & Associates.
The Exolab Group is an informal organization that develops open source enterprise software. I ran across Exolab a few years ago while looking for a facility to provide a mapping between Java object models and XML data. I wanted to store the Java objects using an implementation of the Object Data Management Group (ODMG) standard. Sun had recently announced plans to establish a standard for the mapping between XML and Java objects; this effort evolved into the current JAXB standard. Exolab had a product now called Castor XML that provided such a mapping. The folks at Exolab told me that their implementation was very similar and they were closely tracking the Sun standard. It appeared I had found a free, early implementation of Sunís upcoming standard for the mapping between XML and Java objects.
Exolab also had a tool called Castor that provided an object-relational mapping between Java object models and relational databases. They claimed it supported the ODMG standard, including an implementation of the ODMG query language, called OQL. I had been serving as the C++ and Java editor for ODMG; I examined their implementation and determined that it was not compliant with the ODMG standard. Yet they were using the ODMG name.
I wanted to use their XML tool with a specific commercial product that was compliant with the ODMG standard. The Exolab team provided some assistance, guiding us in making changes to their XML tool so that it would work with the ODMG product. We were able to get their XML mapping tool partially working with the ODMG product, but we had several problems that we were never able to resolve and we decided not to use their technology.
The Java Data Objects (JDO) expert group was formed in 1999 to define a standard for transparent persistence of Java object models under JSR-12. The JDO specification was released as a standard from the Java Community Process in March 2002. There are about 10 companies now providing commercial implementations of the JDO standard. An open source JDO implementation is under development in the Jakarta Project within the Apache organization. JDOcentral is a Web site devoted to the promotion of the JDO standard.
Soon after the expert group was formed, Exolab started associating their product with JDO. They changed the name of their product from "Castor" to "Castor JDO." They started using the JDO name with their product before the JDO expert group released its first public draft -- but their product does not implement the JDO standard. They also make use of the phrase "Java Data Objects" throughout their Web site.
I have examined the latest version of Castor JDO; it is very different from the Java Data Objects (JDO) standard. It uses Exolab's OQL query language implementation, which uses ODMG's query language name, yet it is not compliant with ODMG's OQL. JDO has its own query facility, called the Java Data Objects Query Language (JDOQL). The JDOQL and OQL languages are very different, offering different capabilities. There are many fundamental differences between Castor JDO and the JDO standard.
I am one of the original members of the JDO expert group, and I can assure you that Exolab was not a member of the JDO expert group. The rules of the Java Community Process for expert group members would have prevented Exolab from having access to the specification when they started using the JDO name, and they could not legally have claimed their product implemented the JDO standard if they had been members of the expert group.
Some have questioned whether Exolab is violating a Sun trademark using the names JDO and Java Data Objects. According to Craig Russell, the JDO specification lead at Sun: "Sun does not claim any trademark rights in the acronym 'JDO.' Sun does, however, claim rights in the Java trademark. The name 'Java Data Objects' can, and does, mean only one thing: Sun's JSR-12 specification."
Castor JDO is an open source tool that has a proprietary application programming interface, but it is using the names Java Data Objects and JDO. It is a proprietary tool provided by a single vendor, Exolab. In contrast, the Java Data Objects standard has been specified in the Java Community Process and is supported by many vendors. It would seem that Exolab is using the names JDO, Java Data Objects, and OQL in order to capitalize on the recognition of the ODMG and JDO names.
Unfortunately, Exolab's use of the JDO name has caused a lot of confusion in the industry. Many falsely assume Castor JDO supports the JDO standard. I recently heard the lead architects of several leading application server vendors make derogatory public remarks about JDO, only to discover they were referring to Castor. They thought that Castor supported the JDO standard defined in the Java Community Process. Vendors who have implemented the JDO standard are constantly encountering this market confusion. Many of their potential clients falsely assume that Castor JDO supports JDO.
Castor JDO does not support the JDO standard!
The literature on Exolab's Web site does now state that Castor JDO is distinct and different from the JDO standard, but many seem unaware of this. Exolab has clearly gained clients by using the JDO name, even though Castor JDO does not support the JDO standard. Although several organizations have requested that they change the name of their product, they continue to use it. Just don't confuse it with the Java Data Objects standard defined by JSR-12 in the Java Community Process.
If you are considering the use of the Castor JDO product, you are now aware that it does not support the JDO standard. You would have access to a free object-relational mapping tool, but one with a proprietary API. However, if you would like to build your applications using the JDO standard, you should consider one of the many commercial implementations now available.
Return to ONJava.com.