The Content Repository API for Java Technology (JSR-170) is split into different Levels of compliancy, to allow Repository Vendors to gradually adopt JSR-170 and to avoid that the overhead is unnecessarily high for repository vendors that only want to expose portions of their repository functionality through a JSR-170 compliant Interface.
JSR-170 specifies a Level 1, a Level 2 and a set of advanced repository feature blocks. Jackrabbit is fully JSR-170 compliant and therefore supports Level 1, Level 2 and all the optional blocks.
The Scope of Level 1 of JSR-170 to cover a large number of simple Applications, that need to search repositories and need to read from repositories. Level 1 specifies a read-only API that allows to introspect Node and Property-types and offers hierarchical read access to content stored in a repository.
Level 1 of JSR-170 is geared to allow people to write applications such as search and display Portlets, CMS-Templates, Reports, Exports or other applications that harvest, search, present or display information from one or multiple repositories.
Level 2 of JSR-170 specifies all the writing capabilities need to bi-directionally interact with a content repository in a fine and coarse grained fashion.
Applications written against Level 2 of JSR-170 include management applications or generally speaking any application that generates data, information or content for both structured and unstrcutured information.
On top of Level 1 or Level 2 a number of functional block serve for more advanced repository functionality. This includes functions like: Versioning, (JTA) Transactions, Query using SQL, Explicit Locking and Content Observation.
A fully JSR-170 compliant repository like Jackrabbit encompasses all the functionalities and therefore lends itself as general purpose, off-the-shelf infrastructure for Content-, Document- and Source Code Management or for just about any other application that persists content.