Articles with titles like “Goodbye JCR, Hello CMIS” have been growing in numbers. The voices suggesting that the Java Content Repository standard is no longer relevant in a market dominated by non-Java content management systems are growing. Is JCR really dead?


The Java Content Repository, JCR, is a standardized API for accessing repositories. The standard was defined using the Java community process as JSR-170, finalized in 2005, and JSR-283, finalized in 2009. The goal of the JCR was to allow organizations avoid the costs and complexity associated with one-off vendor specific integrations by providing a common vocabulary and technique to access content repositories. Leveraging the JCR means that applications can use the API to bi-directionally access content stored in various repositories, separating application functionalities from those specific to repositories.

JCR overview

The most recent content management standard is Content Management Interoperability Services, CMIS. CMIS is a protocol standard published in 2008 and accepted as an Oasis standard in 2010. CMIS provides common web services and RESTful web 2.0 interfaces, making it both platform and language independent.

CMIS enables users to perform standard CRUD operations (create, read, update, delete) against any compliant repository, regardless of the underlying repository architecture. CMIS, although new, appears to be very popular. The New York Times even mentioned it.

Both standards promise to enable platform-agnostic content mashups, easier cross-silo federation, rapid application development made possible by a common API, cleaner abstraction of content and content services from application logic. It shouldn’t be too surprising that the technologies boast the same benefits. Many of the originators of CMIS, except Microsoft, were also on the JSR Expert Committees for the JCR.

JCR Adoption

JCR has achieved some adoption, but not to the extent its originators likely envisioned. This might be because the content management market has plenty of non-Java products. CMS vendors that have adopted the JCR usually support a subset of features. Not all upgrade to the latest JCR 2.0. Apache Jackrabbit, the reference implementation of JCR, is essentially the only product that have implemented virtually all of the JCR. Many Web CMS vendors have their versions of JCR support, including open source Magnolia, Jahia and Hippo.

The JCR has, however, transcended its Java-only origins. David Nuescheler, JCR spec lead and VP Products & Technology at Adobe, stresses this point:

JCR has been language-agnostic for a long time despite the "J" in its name and has
been ported to many languages and environments including PHP, Perl, JavaScript, .NET, etc.