Java Content Repository
The Java Content Repository (JCR) standard, JSR 283 , specifies a vendor-independent and implementation-independent way to access content bi-directionally on a granular level within a content repository.
Specification lead is held by Adobe Research (Switzerland) AG.
The JCR API 2.0 package, javax.jcr.* is used for the direct access and manipulation of repository content.
Experience Server (CRX) and Jackrabbit
The Experience Server provides the Experience Services which AEM is built on, and which can be leveraged to build custom applications, and it embeds the Content Repository based on Jackrabbit.
Apache Jackrabbit is an open source, fully conforming, implementation of the JCR API 2.0.
Sling Request Processing
Introduction to Sling
AEM is built using Sling , a Web application framework based on REST principles that provides easy development of content-oriented applications. Sling uses a JCR repository, such as Apache Jackrabbit, or in the case of AEM, the CRX Content Repository, as its data store. Sling has been contributed to the Apache Software Foundation - further information can be found at Apache.
Using Sling, the type of content to be rendered is not the first processing consideration. Instead the main consideration is whether the URL resolves to a content object for which a script can then be found to perform the rendering. This provides excellent support for web content authors to build pages which are easily customized to their requirements.