Monday, October 31, 2011

Content Repository API for Java a.k.a. JCR

Acknowledgement and disclaimer
I used Wikipedia to do my research. And then, I added my own interpretation.

What is a Content Repository and why is it needed?
While Content Management Systems (CMS) stores users' content and allow people to access (read) it, there are few functions/features a CMS should provide for maintenance, query, version management, import, export, etc. Now that there are so many CMS around, people (involved in managing CMS) started asking whether a CMS provides these features. So, it has become more of a compliance issue.

These "Content Repository" features made into separate product (Example: Apache Jackrabbit). Some CMS(s) now delegate this "Content Repository" function to separate components (Example: Hippo CMS and Magnolia).

Java's implementation of Content Repository
"Content Repository API for Java", or JCR is Java's implementation of Content Repository. It has been developed via JSR-170 and JSR-283. The main Java packages are javax.jcr.

JCR has certain features:

  • Export and import via XML
  • Query by SQL and DOM
  • Associate types, attributes and values to each document


Implementation of JCR

  • Apache Jackrabbit is reference and open-source implementation of JCR.
  • Content Repository Extreme (CRX) is commercial JCR implementation.
  • Alfresco has CMS that offers JSR-170 API.
  • etc.



CMS using JCR

  • Hippo CMS and Magnolia use Apache Jackrabbit, and can switch to other JSR-170 implementation.
  • Oracle Beehive supports JSR-170.
  • etc.


Reference:


No comments: