Jackrabbit is a complete, and fully compliant implementation of the Content Repository API for Java Technology (JCR) and therefore its primary API is defined by JCR. For a developer this means that most operations required are defined by the JCR API. The classes and interfaces within Apache Jackrabbit are only needed when accessing functionality that is not specified in JCR.
Beyond the JCR API Jackrabbit features numerous extensions and administrational features that are needed to run a repository but are not (yet) specified by JCR. (see Jackrabbit Architecture)
See the javadoc documentation of the JCR API and Apache Jackrabbit releases:
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 unstructured 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 functionality 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.