Thursday, July 10, 2008

My Thoughts on EclipseLink 1.0

We released EclipseLink 1.0. You can read about it on the EclipseLink Team Blog. Please do download it and try it out.

Its been an interesting year since we first announced the contribution of Oracle TopLink to open source and the creation of the EclipseLink project. Taking a large product and all of its testing and moving it to a new repository with new build and test servers was technically challenging. Probably the more interesting changes however have been in how we developed 1.0 and the future releases of the project. Learning the Eclipse 'way' (project reviews, code contributions and the IP process, detailed road maps and public updates, web site, portal, wiki, bugzilla, ...) has been fun and interesting while only occasionally painful. Transitioning a large development team to this new open process was well worth the effort. We are now a community of committers that expands beyond just Oracle.

This 1.0 release is really based on several years of development. This past year within the EclipseLink project plus all of the functionality developed in Oracle TopLink since our 10.1.3 release (February 2006) is included. While we tend to focus on the efforts of the past year many Oracle TopLink customers will find a significant amount of new features in the classic ORM/OXM support in addition to all the great new JPA/JAXB/SDO support. Over the next few weeks I will try to post blogs highlighting many of these features and how they can be used.

There are a few high level items about this release I would like to point out:

Minimal Dependencies: We ship with an eclipselink.jar library for JavaSE/EE users that can be used easily with minimal additional libraries. JPA users in JavaSE will just need to include the JPA 1.0 library (included as /jlib/jpa/persistence_1.0.0.jar) and their favourite JDBC driver. Within a JavaEE5 container you will just need the EclipseLink library as JPA should already be available as well as your JDBC drivers within the container's Data Source. Minimal dependencies is very important as it simplifies usage and avoids conflicts with other frameworks and your container's use of common libraries.

Full Functionality: No matter how many times I say this I still get questions after my talks and webinars. All of the persistence functionality of Oracle TopLink is included in EclipseLink. All of the TopLink development team now exclusively develops new functionality in EclipseLink.

We have also done a fair bit of work to enable the usage of our many advanced features through JPA. This includes custom annotations as well as XML configuration. Our goal is to keep developers as close to standard JPA as possible and simplify usage when you do need EclipseLink JPA's advanced features.

OSGi Support: While I still personally feel like a newbie in the OSGi space I am very proud of how our developers have managed to address class-loader flexibility so that we can bundle our EclipseLink components for use in OSGi. The optional Equinox functionality to enable Dynamic/Load-Time weaving allows developers using Equinox (typically RCP) to build full featured JPA applications without fighting the persistence implementation. We have an example available if you want to try it out.

Flexible Object Binding: The MOXy component does support JAXB2's annotations and XML schema compiler but what I think is most interesting is the ability to externalize the XML binding information. EclipseLink MOXy has its own XML mapping file as well as supporting mappings defined in code (statically or dynamically). Using this externalized mapping support with the standard JAXB marshal/unmarshal API is very powerful and allows a domain model to be easily persisted to multiple data sources/formats.

Performance and Scalability: One aspect of Oracle TopLink development is that while we continued to evolve the product over the past 12 years we have always focussed on ensuring we had a well tuned core engine and many tuneable options available so our customers can address their performance and scalability goals. The Oracle TopLink product has been a key contributor to Oracle's world record SpecJ benchmarks and all of the optimizations introduced to address high levels of concurrent processing are now available in EclipseLink. We believe we have the fastest persistence solution available and will work hard to continue proving that through public benchmarking activities.

I would like to thank everyone involved in making the EclipseLink 1.0 release happen. From the developers/QA/writers/managers who helped produce it (and put up with me) to the Oracle management who supported us through this process and all of our user community for the feedback and encouragement.




Wayne said...

Congratulations on 1.0 to the entire EclipseLink team!

Chris Aniszczyk (zx) said...

Congrats Doug and co.

Tell Shaun I have a counter on my wall on the beers he owes me ;)

Scott Lewis said...

You mention that there are EclipseLink committers other than from Oracle, but dash indicated one Sun and one 'unknown' committer (%1 in both cases). Is dash not reflective of reality?

Doug said...


We have one committer from Sun and one of our committers was accidentally created as an independent. We are working on increasing the diversity by encouraging organizations to increase their contributions and become committers.


Andre Prasetya said...

Hi Doug, congratulations on successfully graduating eclipselink. I m testing it as a JPA implementation using Spring Web Flow 2 and found out that the integration failed because EntityManagerImpl is not Serialiable, can eclipselink do something about it ? I believe its a good opportunity for eclipselink.

I tried openJPA and failed on its integration too, the only working one is hibernate bt it failed on persisting a web of new objects.

Hope my info can be off use to eclipselink.

TeaTimeJ said...

I have the same problem when using both TopLink and EclipseLink in Spring Web Flow 2 with Spring 2.5.5. It may be a bug in Web Flow.

Anonymous said...

Thanks to the EclipseLink - Team for their work.
Maybe you can help me figuring out whether it is possible to have more than one persistence unit in EclipseLink.
Most of the time the application I write have to manage data out of several databases (sometimes oracle, sometimes mysql). Is it possible to use several databases with EclipseLink (and Dali)?

Doug said...

Thanks for your comments and feedback. If you do have questions about using EclipseLink such as in Spring WebFlow and multiple persistence units the best way to have a discussion of these topics is to start a thread on our newsgroup.