One of your duties is to select the proper Content Management System (CMS) technology stack for your organization if you are an IT leader. The purpose of this article will be to walk you through the Adobe Experience Manager application stack so that you are better aware of the used technologies, frameworks, and APIs. We hope that after reading this, your decision-making process will be more painless.

We will dive deeper into each of the technologies used in later articles. You will get deeper insights on what those are, how they help the overall content system.

Why the AEM application stack matters for you?

If you are having an internal development team or even if you don’t, you would want to know what skill set will be required in order to get onboarded on AEM. Moreover what does it take to maintain the platform with minimum overhead, after the implementation is complete.

Here is the good news, the Adobe Experience Manager is powered by popular leading technologies, maintained by the the world largest open source foundation – Apache Software Foundation (ASF). That means that you should not be concerned in attracting developers, administrators, and users for your AEM system.

So, here are the core AEM technologies:

  1. The Java Content Repository (JCR). The 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. Current version is JCR API 2.0.
  2. Experience Server (CRX) and Apache Jackrabbit Oak. Adobe Experience Manager is a powerful content repository platform (CRX) based on Apache Jackrabbit Oak. As per AEM documentation – “Apache Jackrabbit Oak is an effort to implement a scalable and performant hierarchical content repository for use as the foundation of modern world-class web sites and other demanding content applications. is an open source, fully conforming, implementation of the JCR API 2.0.
  3. OSGI. It is a fundamental element in the technology stack of Adobe Experience Manager (AEM). It is used to control the composite bundles of AEM and their configuration. OSGi ” provides the standardized primitives that allow applications to be constructed from small, reusable and collaborative components. These components can be composed into an application and deployed “. This allows easy management of bundles as they can be stopped, installed, started individually. The interdependencies are handled automatically. Each OSGi Component (see the OSGi Specification) is contained in one of the various bundles.
  4. Apache Felix – Sling, and therefore AEM, uses the Apache Felix implementation of OSGI (Open Services Gateway initiative) and is based on the OSGi Service Platform Release 4 Version 4.2 Specifications. They are both collections of OSGi bundles running within an OSGi framework.
  5. Sling Web Application Platform. 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.

The Apache technologies, used in AEM are in the top 50 of the ASF list by the number of project committers (read: actively writing new code and bug fixes).

Stay tuned on another article of the series on AEM technologies!

In the meantime read on of our previous post on 3 proven ways to get the most out of Adobe Experience Manager (AEM).

An experienced AEM consultant can guide your business on the best upgrade path to move to the new AEM platform. KBWEB Consult offers extensive expertise in the Adobe Experience Manager (AEM) Platform, and can guide your business in the steps and the personnel required to migrate to AEM. Contact us for a free consultation.


[contact-field required="1" type="name" label="Name"/] [contact-field required="1" type="email" label="Email"/] [contact-field type="textarea" label="Message"/]