Adobe Experience Manager (AEM) is built on a rich open-source software stack that exposes many Java APIs for use during development.
AEM is built on the following four primary Java API sets in descending order of preference.
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.
For details of these guidelines, see the document Understand Java API Best Practices.