Adobe Experience Manager (AEM) is built on a rich open-source software stack that exposes many Java APIs for use during development. This article explores the major APIs and when and why they should be used.
AEM is built on 4 primary Java API sets.
1. Adobe Experience Manager (AEM)
--->Product abstractions such as pages, assets, workflows, etc.
2. Apache Sling Web Framework
--->REST and resource-based abstractions such as resources, value maps, and HTTP requests.
3. JCR (Apache Jackrabbit Oak)
--->Data and content abstractions such as node, properties and sessions.
4. OSGi (Apache Felix)
--->OSGi application container abstractions such as services and (OSGi) components.
Java API preference "rule of thumb"
The general rule is to prefer the APIs/abstractions the following order:
AEM > Sling >JCR > OSGi
If an API is provided by AEM, prefer it over Sling, JCR, and OSGi. If AEM doesn't provide an API, then prefer Sling over JCR and OSGi.