Oracle’s Doug Clarke tells us about the EclipseLink project and Oracle’s donation of the TopLink codebase to the Eclipse Foundation
Doug Clarke is the Director of Product Management for Oracle Application Server’s TopLink product and co-lead of the Eclipse Java Persistence Platform (EclipseLink) Project. Doug has extensive enterprise development, consulting, and educational field experience in the areas of object-relational persistence, data access, and systems integration. He brings together concrete experiences from projects across a wide range of industries with a practical approach to design, development, testing, and performance tuning.
JAXenter: What’s your role in the EclipseLink project?
Doug Clarke: I am the co-lead of the EclipsePersistence Services project, more commonly known as EclipseLink. I share theproject leadership with Peter Krogh, also from Oracle. Peter focuses on the development side ofthings while I focus on the outbound interaction with other projects, and thecommunity at large.
I also represent the EclipseLinkproject within the Eclipse RT ProjectManagement Council (RT-PMC). This top-level project was created to foster andpromote related runtime technologies at Eclipse.
What was the motivation for Oracle to donate the TopLink codebase to the Eclipse Foundation?
Oracle is committed to offering choice, flexibility,and a lower cost of computing for end users. By investing significant resourcesin developing, testing, optimizing, and supporting open source technologiessuch as Linux, PHP, Apache, Eclipse, Berkeley DB, and InnoDB, Oracle isembracing and offering open source solutions as a viable choice for developmentand deployment.
Regarding the Oracle® TopLink®donation, Oracle had a positive experience and received great feedback fromopen sourcing the base TopLink ORM functionality in TopLink Essentials (JPA 1.0Reference Implementation in GlassFish). Oracle has been a long-time participantwith the Eclipse Foundation and found its vibrant, active community andoperational excellence a good match to our goals. There was also a strongdemand for a comprehensive persistence solution to address the needs of nextgeneration Java EE, SE, OSGi and service-based application development andTopLink provides a unique, powerful solution. This led Oracle to decide to opensource the entire TopLink functionality into Eclipse, making all of its richfunctionality available to the entire Java community.
EclipseLink is unique, as inaddition to delivering industry leading object-relational features, it alsoprovides additional persistence services including MOXy (Object-XML with JAXBsupport), Service Data Objects (SDO), and Database Web Services (DBWS). Makingthese capabilities available to the entire Java community through theEclipseLink project enables faster and broader adoption. It also allows usersto combine technologies from different standards bodies such as SDO and JPA,through a single persistence solution.
Additional details are available in this FAQ which was published when the project was proposed.
What are the consequences of being an open source project for your daily work and the work of the team?
The main impact of developing our persistence solution as an open source project at Eclipse is transparency.Users and contributors can easily track our ongoing development efforts andprovide immediate feedback. The result of this is that we do have an increased volume of questions, enhancement requests, and bugs to address during ongoing development work.
This increased interaction with the community does represent additional overhead but it also delivers incredible benefit as it increases our ability to deliver the functionality that users need in shorter release cycles.The benefit of this additional interaction with the community far outweighs thecosts and we are appreciative of those in the community that take the time togive us this valuable feedback.
Could you describe the EclipseLink development process?Which development tools do you use apart from Eclipse? Which build tools? Whichproducts or solutions for continuous integration?
The EclipseLink committers leveragethe Eclipse bug database, wiki and mailing lists to discuss feature developmentand bug fixes in an open fashion so all interested parties can participate. Allenhancements to the code base require peer reviews. A weekly committer meetingis held where schedule, bug closure rates, and design issues can be discussed.All interested parties are welcome to attend and contribute. The EclipseLinkroad map and release timelines are made available in a standard format so thatusers and committers can easily track all upcoming milestones at eclipse.org.
Builds and automated regressiontests are ANT based and run on a server hosted at the Eclipse Foundation.Automated build and tests run every half hour generating error reportsimmediately so that fixes can be made in short order. Nightly builds are madeavailable for download with milestone builds being made available on a monthlybasis. The nightly builds, milestones, and releases are made available fordirect download and also hosted in a Maven repository.
Most EclipseLink developers are working for Oracle. How do you respond to fears that EclipseLink is mainly tailored to support the Oracle Database and the Oracle Application Server?
While many of the developers workfor Oracle, I would point out that there are a number of participants fromoutside Oracle, including from other companies and individuals. EclipseLink hasa long history of providing broad support for all major application servers anddatabases. This is expected by users.
However, users also expect supportfor proprietary features offered by the leading databases. Given itsbackground, EclipseLink supports Oracle Database features better than any otherORM product. Having said that, it also supports specific features on otherdatabases including DB2, SQL Server, MySQL and Derby.
As a point of interest, EclipseLinkis part of Oracle’s internal tool kit. Users of EclipseLink within Oracle, like many other users, require thatit is “hot pluggable” with different application server and database platforms.These consumers such as Oracle’s SOA Suite and Oracle WebCenter Suite productsrequire deployment support on Oracle and non-Oracle Java EE containers withstorage using Oracle or non-Oracle databases.
Why should a developer choose EclipseLink instead of another persistence framework likeHibernate?
Through the direct experience ofOracle Developers and the feedback we have received from external users,developers choose EclipseLink over competitors for the following reasons:
- Performance and scalability features.EclipseLink’s entity caching and query optimization capabilities allowdevelopers to efficiently load the data they need and cache reusable results tooptimize subsequent query executions. The transaction framework optimizeschange tracking and ensures minimal changes are written while also taking intoconsideration referential integrity, concurrency protection and cachecoordination requirements for clustered deployments.
- Multiple persistence services. Mostalternatives only handle relational mapping persistence. EclipseLink enablesnon-relational persistence with XML binding (JAXB), Service Data Objects (SDO)and mapping to JCA resource adapters. This flexibility allows developers toleverage a single persistence solution for all of their needs.
- Open and collaborative community.EclipseLink has a large and growing group of committers and contributors. We work hard to address the needs of our community and actively encourage participation, which has helped us ensure thatwe represent a broad range of user types across the java community.
- EclipseLink was selected as the referenceimplementation for JPA 2.0. How does the collaboration with the JSR expertgroup look like?
At present we are activelyimplementing the JPA 2.0 public draft specification. We have two EclipseLinkcommitters who sit on the JSR 317 expert group and provide feedback based onour previous experiences and current efforts implementing the draftspecification. We also work closely with the Sun developers writing theTechnology Compatibility Kit (TCK) to ensure coordinated development efforts asthe specification is finalized.
EclipseLink is providing early access for users to try out these new features. The EclipseLink 1.1 releasewill be the first release to deliver preview JPA 2.0 functionality. The nextmajor release of EclipseLink targets delivering the complete functionality.Interested developers can download milestone builds of these releases for even earlier access and provide feedback to the expert group and the EclipseLink committers.
As being the reference implementation for JPA 2.0EclipseLink mainly implements this spec. On the other hand, we always notice impacts of the implementation on the spec. Which interactions are there betweenEclipseLink and JPA 2.0? For instance: Which features of EclipseLink will wesee in JPA 2.0?
There are several key features ofJPA 2.0 that are already available to EclipseLink users as extensions to ourJPA 1.0 support.
- Pessimistic Locking
- Flexible Access Type
- Element Collection -collections of primitives
- API for programmaticallydefining queries
- Cache access, eviction supportand usage hints
- Nested Embeddables andrelationships from Embeddables,
- Derived Ids – using foreign keymappings as part of an entity’s identity
- Private owned – orphan removal
- Nested Fetch Joins
- Collection parameter for INexpressions.
We continue to deliver innovativefunctionality for those requiring capabilities beyond the standards and endeavorto make these features compatible with the standard while minimizing usercoupling to native API.
The codebase ofEclipseLink is proven in many years of productive use. What are the futuredevelopments for EclipseLink aside from implementing JPA 2.0? What can weexpect in 2009?
We have a very busy year ahead ofus delivering on JPA 2.0 as well as many new features requested by thecommunity.
- Upgrading the extended XML to support all of EclipseLink’s advanced features
- Migration utilities to simplifyusers adopting EclipseLink from other persistence solutions
- Data Access Service using JPA
- 2.1.1 compliance
- Enhanced use of advanced mappings with native annotations and support for combining annotation and XML configuration.
Benchmarking activities to demonstrate EclipseLink’s superior performance
More examples and improved documentation
Continued contribution and participation in the Eclipse Ecosystem
- Inclusion in the Eclipse Galileo release
- Continued and improved support for OSGi/Equinox usage
- Enhanced EclipseLink tooling support in the Eclipse Dali project
- Continue working closely withother Eclipse projects such as Teneo and Swordfish to assist in their ongoinguse of EclipseLink