Adobe Experience Manager is the most popular, secure, java based content management system so far. It has two environment for authoring and publish. for development and publish purpose, that is the another story. we will cover later.
Adobe Experience Manager is the robust Content Management System that is support REST base Web-applications. To learn more about what is aem.
AEM Architecture let us to understand, how Adobe Experience Manager works. What technology stack AEM uses, How AEM Support OSGI(Open Service Gateway Initiative). AEM is made up of using many technology stack like java, Java Content Repository (JCR) , OSGI, Sling content, Servlet engine etc. AEM architecture define all these things. how they linked to each other ,how they work. So lets learn all about AEM architecture.
1.java (JRE) – Adobe Experience Manager is totally based on java it is obvious if java come JRE will come into action. Java Run-time Environment execute the code as normally java code is executed. AEM works on java 1.8 version. AEM projects can be build using lazy-bone (project building tool like maven) and Maven, but mostly maven base is used due to maven features.
2. Servlet Engine – When we install the AEM quick start, It comes with build in Servlet Engine, In quick Start Installation the AEM Servlet engine run as a bundle in OSGI framework when AEM deploy as standalone application. we can deployed AEM to third party application server for this war file package should be downloaded and deploy directly.for working with application server, AEM uses java Servlet API 2.4 or later one.Servlet is used to intercept the user request to give response back to user.
3.JCR(JAVA CONTENT REPOSITORY) – Adobe Experience Manager uses the jcr to store the data in unstructured form. JCR is the Specification of java to store and content in uniform way. Everything is stored as node form in JCR. The tree like structure is used to manage the node. JCR-170 (version 1) was the Initially java specification and JCR-283 version 2 is the latest java specification. javax.jcr API provides various interface and classes to access contetn present in jcr.
Apache jackrabbit is the open source implementation of JCR-2 specification,which provides wrapper classes and interfaces and many more functionality on top of jcr. The jackrabbit uses the org.apache.jackrabbit package to access jackrabbit.
4.Sling content– The sling content distribution module allow to distribute sling resource between sling instances.
Sling API are used to do this work. In Adobe Experience Manager sling model concept is used to map the property to JCR Node properties. Sling model is simple POJO class with getter and setter methods like normal java POJO class.The difference is that we inject properties in sling model that directly map to the Node properties available in jcr and can directly get those properties using HTL/Sightly instead of calling the Service. It is like MVC pattern that map the properties to Node properties.
5. OSGI(Open service Gateway Initiative) – OSGI is the framework that provide the mudularity to web application. everything is work as bundle. so we can make our web application as bundles.bundle is basically is a Jar file which is the collection of classes. Every bundle has its life cycle i.e resolved, start, stop, install ,uninstall with some extra information like name,manifest version etc.
6.Custom application is the web-application that is build using AEM and running on AEM server. Adobe Experience manager is most suitable for content oriented websites, whose content is update time to time like eCommerce type website.
7. In many Aem tutorial that defines Aem Architecture you see the app-server(optional) is the default server of Aem that comes by default. we can configure it as we want means we can make it custom.