InfoQ

News

Java Content Repository 2.0: Public Review

Posted by Geoffrey Wiseman on Jul 18, 2007 06:45 AM

Community
Java
Topics
Portal/CMS
Tags
Java Content Repository

It's a good time for Java Content Repositories. The second version of the JCR API has been released for public review as JSR-283 and, at the same time, the first version (JSR-170) has been doing well: Jackrabbit is now a top-level Apache project, is gaining object-content mapping tools and has started to move beyond content management systems to fill roles in other development efforts, such as the persistent store for business rules in JBoss Rules' BRMS and artifactory, a Maven 2 repository.

JSR-283 aimed to improve on JCR 1.0 in the following ways:

  • Management of access control and nodetypes
  • Improved interoperability through new standardized node types including meta-information and internationalization
  • Extensions to content-modeling capabilities
  • Federation, cross-repository and cross-workspace functionality
  • Active development of existing query-languages, versioning and observation
  • Remoting and client/server protocol mappings

InfoQ took the opportunity to speak with David Nuescheler, CTO of Day Software and the spec lead for JSRs 283 and 170 about Java Content Repositories and the public review of the second version of the API. On the subject of adoption of JCRs by implementors:

The adoption on both sides of the API has exceeded my expectations. On the content repository implementation side of things we have probably a couple of dozens of implementations.

What I find particularly noteworthy is that we have already four independant opensource implementations of JCR, which is a fantastic achievement for a v1.0 standard in such a short timeframe, and I can't remember any other JSR which was adopted that quickly.

And on the subject of adoption by developers:

More importantly on the other side of the API, on the application side, we have seen a tremendous pick-up of projects and products that are using JCR. We try to keep a list of the tip of the ice-berg on the (jackrabbit wiki)[http://wiki.apache.org/jackrabbit/JcrLinks], but it is hard to keep track.

JCR has certainly grown beyond any other content repository technology in that respect. I think the number of independent application developers already today has outgrown any proprietary content repository API.

When asked what applications are well-suited for using a Java content repository, particularly in contrast to a use of a relational database:

I would call it a common misconception that the use of content repositories is limited to to "content management systems" of any form or shape (DM, DAM, WCM, SCM). I think it is important to understand that JCR is an ideal storage layer for for webbased CMS but is also an ideal storage for most other applications.

In my mind a content repository is the ideal storage for just about any modern application that would like to make use versioning, fine grained access control, full-text search, large binaries and all the other services that the content repository exposes.

Personally, I would always prefer the richer JCR interface over a JDBC interface in any of my applications, but this is largely due to fact that I am very comfortable using JCR.

For people that have no previous experience with JCR i would recommend to pick a (what i would call) obvious application. This would be an application that leverages the additional services of a content repository like versioning, access control or a hierarchy.

Talking about the overall theme for JCR 2.0:

We certainly put a lot of effort together with the large ECM vendors in JSR-283 to come closer to commonly used ECM practices and therefore make it much easier for vendors to become compliant the specification.

David also lists his personal 'top ten' features from JCR 2.0:

  1. Query extensions mainly around extended support for SQL, specifically JOINs; We also introduced Java Bindings for the Query Object model that allow for easier "query wizards" and last but not least "Prepared" queries.
  2. Access Control Management to go beyond the introspection that is already specified in JCR v1.0.
  3. Retention Policy & Hold Support to enable records management applications sitting on top of JCR repositories in a standardized fashion.
  4. Simple versioning to provide for repositories that only support linear versioning. Versioning extensions around "Baselines" and "Activities" to cover the full configuration management spectrum.
  5. Lifecycle Management to allow to easily hook content into a process engine.
  6. Standardized Nodetype Registration that allow application to register and manage their nodetypes with repository.
  7. New property types and new nodetypes to enhance application interoperability around common meta data.
  8. Workspace Management to allow for creation and deletion of workspaces in a repository.
  9. Shareable nodes that allow the tree in a content repository workspace to become a more implicit network.
  10. Journalling Observation that allows offline/polling applications to find out what happend in a content repository since they last checked.

For more information, you can read the public review of JSR-283, David's Simple Rules for Blissful Content Modeling and stay tuned to InfoQ's coverage of Java Content Repositories.

3 comments

Reply

It is not the quantity but the quality that matters by Yuri Khomich Posted Aug 20, 2007 11:38 AM
Re: It is not the quantity but the quality that matters by David Nuescheler Posted Sep 21, 2007 2:42 AM
Re: It is not the quantity but the quality that matters by Yuri Khomich Posted Dec 1, 2007 9:23 AM
  1. The adoption on both sides of the API has exceeded my expectations. On the content repository implementation side of things we have probably a couple of dozens of implementations.
    Please show me at least one JSR-170 implementation that can be used in a mission-critical application. All these rants regarding JSR-170 implementations boil down to one thing: claw me, and I will claw thee.

  2. Back to top

    Re: It is not the quantity but the quality that matters

    Sep 21, 2007 2:42 AM by David Nuescheler

    Hi Yuri, Day Software's content repository CRX is used as the backing store of our WCMS in production of a large number of very visible high profile customers on their main public websites. For a customer list check here: http://www.day.com/site/en/index/customers/customers0.html I know that many other repositories are used in mission critical environments aswell. regards, david

  3. Day Software's content repository CRX is used as the backing store of our WCMS in production of a large number of very visible high profile customers on their main public websites. For a customer list check here: www.day.com/site/en/index/customers/customers0....
    Excuse me, but web site for "high profile" customer is not a mission-critical application, unless the company conducts business online using this site. I did not find any notion of what kind of systems are built around CRX.
    I know that many other repositories are used in mission critical environments aswell.
    Examples, my dear, examples! Workload reports, benchmarks..

Exclusive Content

Rationalizing the Presentation Tier

Thin client paradigm characterized by web applications is a kludge that needs to be repudiated. Old compromises are no longer needed and it's time to move the presentation tier to where it belongs.

Agile Project Management: Lessons Learned at Google

In this presentation filmed during QCon 2007, Jeff Sutherland, the creator of Scrum, talks about his visit at Google to do an analysis of Google's first implementation of Scrum.

AtomServer – The Power of Publishing for Data Distribution

In this article, Bryon Jacob and Chris Berry introduce AtomServer, their implementation of a full-fledged Atom Store based on Apache Abdera, which is now available as open source.

An Introduction to Virtualization

It is easy to think that virtualization applies only to servers. In reality the recent resurgence of the concept is also being applied to networking, storage, and application infrastructure.

REST Anti-Patterns

In this article, Stefan Tilkov explains some of the most common anti-patterns found in applications that claim to follow a "RESTful" design and suggests ways to avoid them.

Choosing between Routing and Orchestration in an ESB

In this article, Adrien Louis and Marc Dutoo discuss the differences and relative merits of using orchestration vs. routing in a typical ESB setup, and discuss various implementation options.

Enterprise Batch Processing with Spring

Wayne Lund discusses batch processing, Spring Batch objectives and features, scenarios for usage, Spring Batch architecture, scaling, example code, failures and retrying, and the future roadmap.

User Story Estimation Techniques

Developer Jay Fields draws on his experiences as a ThoughtWorks consultant to describe effective user story estimation techniques.