What is the Technology Stack of Adobe Experience Manager?


I posted an article about a mangled list of AEM interview questions. This blog post has been very popular. Folks are looking for this sort of information.

One question in that list is, “Technology Stack CQ5 and describe each?” I reinterpreted that as, “What is the Technology Stack of Adobe Experience Manager?”

A short blog article can’t completely covered this question, but I can give a quick overview. To speak knowingly about this, a developer will need to do some additional research on their own.

What is the Technology Stack of Adobe Experience Manager?

Adobe Experience Manager is based on Apache Sling. Apache Sling is a Java application that is OSGi-based that uses the Apache Felix engine. Apache Felix is to Apache Sling what Equinox is to Eclipse. Apache Sling uses a JCR (Java Content Repository) object database to store its information. That JCR implementation is built with Apache Jackrabbit. AEM 6 supports the use of Apache Jackrabbit Oak. AEM 5.6.1/CQ 5 used the Apache Jackrabbit 2 JCR.

A good book to read to understand the Apache Felix platform is OSGi and Apache Felix 3.0 Beginners Guide by Walid Joseph Gedeon (Amazon). It shows how to create OSGi bundles and manage the bundle’s life cycle in Apache Felix without using the frameworks that make this easier in AEM. It shows how to do things the hard way. But when things go wrong, it is good to know how the cogs of the machinery are working.

Apache Sling contains its own HTTP server or it can be used as a web application with an application server. Within AEM 6, the web server is based on the Jetty HTTP server. It provides support for the basic server functionality and servlet framework. Although the OSGi environment Sling is built on is inherently Java-centric, other scripting languages can be used for servlets. Many scripting examples in the version Apache Sling that can be built from the Apache site are done in server-side JavaScript.

The Apache site has a downloadable Apache Sling jar that can be run as an executable. Unfortunately, the executable is woefully out of date. To get an executable of Apache Sling that contains the most recent features, it has to be built from the source code from Apache. That can be problematic. The emphasis of the project is not to produce a functioning version of Apache Sling. It can be hard to piece together a working Apache Sling server from recent code.

Adobe expands the functionality of Apache Sling and produces their own, enhanced, version of Sling called CRX. To make things a little more confusing, since CQ 5.4 the underlying functionality has been transferred to a framework called Granite. CRX used to be a standalone product. After it started to morph into Granite the standalone version no longer exists. CRX/Granite takes care of much of the lower-level functionality such as user management, data persistence and event management.

On top of the Granite/CRX core, the WCM formerly called CQ was added. This provided the web content management and digital asset management functionality. The Adobe Experience Manager incarnation of the product is not a one-to-one correlation with CQ. AEM is the overall platform name and much more functionality is being added to AEM than when it was in its CQ form. CQ is the rough equivalent of the AEM Sites. The product that adds Scene7 functionality to AEM is called AEM Assets. The product that adds LiveCycle functionality is AEM Forms.

See Architecture of the AEM 5.6 Platform, Technical Deep Dive into the AEM 6 Platform

About The Author

Deke departed Southern Alabama as a young man, leaving the humidity and fire ants behind. The fire ants are catching up with him. He works for Adobe. Despite that, his opinions expressed on this site are his own and should never, ever, be attributed or blamed on Adobe. Ask him what he thinks of chiggars sometime. Home Page | GitHub | Adobe Blog | Twitter | LinkedIn