Monday, March 17, 2008

TopLink Lives

It was my hope that the union of BEA and Oracle would lead to the enventual demise of TopLink in favor of KODO(Apache OpenJPA). Obviously, Oracle being and enterprise player, any phase out plan would be over many, many years. For example, I think Oracle will move their customers to the vastly superior WebLogic over their own Java EE offering but will still probably continue to offer and develop OC4J for many years to come. However, when it comes to a Java EE server, they are many parts. Each part could conceivably be marketed and sold individually.

Of course, things were never that simple. The core of TopLink, TopLink Essentials, is the JPA version 1 reference implementation, is open source and ships with Sun's Glassfish server which also happens to be the Java EE 5 reference implementation.

Futhermore, Oracle donated not just Essentials but the full TopLink product a while back to the Eclipse foundation under, curiously enough, under a different, Eclipse compatible, license.

Today comes the announcement that TopLink Essentials is indeed being phased out but TopLink is moving up in the world. The full TopLink, the one donated to Eclipse, is now EclipseLink. EclipseLink has been chosen as the JPA version 2 reference implementation and will ship with the next version of Glassfish, also know as the Java EE 6 reference implementation.

All in all, this is good news nonetheless. The double donations, under different licenses no less, being consolidated in one code base is certainly less confusing. The Eclipse license, from EclipseLink, is also more permissive than the CDDL/GPL from TopLink Essentials. In fact, so permissive that the Apache Software Foundation considers it just fine too. For example, the Java compiler from Apache Harmony is actually the Eclipse Java compiler.

Now, if we can just get comprehensible error messsages from future releases, all should be good. That being said, I've been using TopLink Essentials more and more, and after a while, you get into this weird Zen state and actually start to recognize and understand the error messages. When you do, it actually works pretty well. That being said, I still think those error messages are nuts.

5 comments:

Doug said...

Patrick,

Consolidating our community development efforts around one code base is definitely a good thing for everyone involved. The decision to upgrade the persistence implementation in GlassFish from TopLink Essentials to the full capabilities of EclipseLink will also deliver on the many requests we have received.

We are working hard on simplifying the usage of our many advanced features within EclipseLink. Improving the diagnostic side of the project with better exceptions is also very important to us. I invite you to file specific issues you encounter with the exceptions as bugs against EclipseLink in Eclipse's bugzilla

Cheers,

Doug
My Blog
EclipseLink Team Blog
EclipseLink Home

pjulien said...

Hi Doug,

I would suggest a complete audit of all error messages is necessary, not just a single bug fix.

Even the most basic error messages seem archaic to me. For example, if TopLink can't find a class, it says: "Unknown abstract schema type [X]".

To me, that's insane. If the TopLink developers see this message day in and day out and don't come to the same conclusion already, I have to wonder how far a bug report on this message would go.

CYL said...

Hi, please help...
oracle.toplink.essentials.exceptions.EJBQLException
Exception Description: Error compiling the query [SELECT p FROM Persona p WHERE p.id = :id]. Unknown abstract schema type [Persona].

I check :
<persistence-unit name="WebTesisPU" transaction-type="JTA">
<jta-data-source>jdbc/webwapdb</jta-data-source>
<class>entidad.Persona</class> <class>entidad.Software</class>
<class>entidad.Softwareaula</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties/>
</persistence-unit>

pjulien said...

You really think this is a good place for TopLink support?

Unknown abstract schema type means that TopLink doesn't what class this is. So in this case, it doesn't know what 'Persona' means.

Now for why that is, I cannot tell from what you posted since it looks good. Perhaps a missing annotation?

Doug said...

For TopLink Essentials support you can use the persistence@glassfish.dev.java.net mailing list. Both the Sun and Oracle committers to TopLink Essentials and EclipseLink monitor that list.

Doug