Monday, March 24, 2014

Some interesting points about JCR

While I was doing research about Java Content Repository (JCR, specified in JSR 283) for our current project I stumbled upon various interesting fact worth mentioning besides the actual specification details, which I like to share.
  • JCR was specified by Day Software, a company based in Bale, Switzerland which is especially interesting to me, as I live in Switzerland. Day Software has been bought by Adobe
  • In comparison with CMIS, JCR seems to be a functional superset of CMIS, as various sources indicate (see here, here,here or here), which means, JCR offers more functionality than CMIS does. Nevertheless, both standards are hardly directly comparable, as they focus on disjunct fields of use. While CMIS is service oriented and aims at repository interoperability, JCR is a standard and model for accessing hierarchical content. JCR seems to be easier to implement that CMIS.
  • JCR and CMIS are compatible to each other.
    • It's possible to access JCR repositories via CMIS. The JCR reference implementation (Jackrabbit) offers a service provider interface (SPI) implementation towards CMIS as well as there is a CMIS-JCR Bridge as part of the OpenCMIS implementation Apache Chemistry (for an overview, see here). The only restriction ist, that some of the JCR mixin types are not visible via CMIS.
    • An access via JCR to CMIS repositories should be a programmer's exercise as they are directly mappable.
  • JBoss ModeShape is an alternative open source implementation of the JCR that is not based on Jackrabbit. Although it does not implement the standard as complete as Jackrabbit does regarding optional elements (the mandatory elements are fully implemented), it offers various functionalities beyond Jackrabbit, such as Administration, configuration and enterprise readiness. The documentation is much more useful.
  • Both, Apache Jackrabbit and JBoss ModeShape are implementations of the JCR standard and form only the data management component of a content management system. Typically, CMS define their own data model and define workflows for dealing with the data.
  • Content Management Systems that are built upon a JCR Repository are
    • Magnolia CMS (support both ModeShape and Jackrabbit), it's a swiss product, by the way!
    • Jahia (Jackrabbit)
    • Hippo-CMS (Jackrabbit)
    • exo Platform (is more of a Social/Collaboration Portal product, but offers it's own JCR implementation)
    • Adobe Exprience Manager (former CQ5, uses ContentRepositoryExtreme (CRX) which is  a commercial, enterprise-ready JCR implementation, based on Jackrabbit),
  • Other implementations that supportJCR
  • Day Software (now part of Adobe) offers various JCR connectors for other commercial repositories:
  • Apache Sling is a framework allowing to access JCR repositories via REST and to create repository-oriented web applications.
  • Apache Stanbol is a framework combining the elements of semantic web with structured repository data of content management systems (JCR, CMIS) 
  • A good overview of available CM Repositories is shown here
  • Looking at the Jackrabbit team you might stumble upon the name 'Roy Fielding'. Doesn't ring a bell? Maybe have a look at his must-read thesis (tl;dr: its about defining REST architectural style)