AEM Tutorials for Beginners

AEM4BEGINNER blog is for Beginners who are interested in learning Adobe Experience Manager (AEM) aka Adobe CQ5 from basics. The Information provided in this blog is for learning and testing purposes only. Here, I have posted the information which I know or gathered from different sources.

  • Home
  • Architecture
  • AEM Architecture

May 10, 2020
Estimated Post Reading Time ~

AEM Architecture



AEM technology stack can be divide into the following,
  1. Java Runtime Environment (commonly known as JRE)
  2. Granite Platform
  3. AEM modules(Adobe Experience Manager)
  4. Custom Application Module (your website)
Java Runtime Environment [JRE]:
AEM is more or less a combination of or collection of jars, jsps [Java Server Pages], servlets, Java classes along with static resources such as HTML, pictures, assets, etc. To drive this architecture, it needs JRE.
This makes AEM compatible with any OS that supports required JRE.

Granite Platform:
Granite platform is a key role player in the AEM stack. Granite is Adobe’s open web stack.

As you can observe from the image above, the Granite platform consists of the below-listed modules:
  1. CQSE Servlet Engine
  2. CRX Content Repository
  3. Sling Content Delivery
  4. OSGi Framework
CQSE Servlet Engine: AEM requires an application server that supports Java Servlets API 2.4 or later. The AEM software package is available in two forms:
  1. cq-quickstart.jar: it includes everything needed to get up and running (also called a “standalone executable jar”). The Quickstart Standalone jar file contains a built-in servlet engine. As the name “Standalone” suggests user can simply double-click the jar file to install an AEM instance with a built-in servlet-engine. You do not require any dedicated external application server for servlet handling. In this case, you only need a JRE and a standalone quickstart JAR file.
  2. cq-quickstart.war: for deployment in a third-party application server. WAR files do not contain built-in servlet engines. In this case, you need a JRE, a WAR file, and a third-party application server for servlet handling.
CRX Content Repository: Everything in AEM is stored in nodes and properties in the built-in CRX content repository. CRX is a content repository of JCR type. JCR specifications combine features of the relational database and file systems, allowing fine-grained access to the content repository in File-system Fashion and also in Database fashion.
Let’s understand some terms here itself:
  1. CRX (Content repository Xtreme): CRX is a repository built into AEM.
  2. JSR (Java Specification Request): JSR’s are the formal documents that describe proposed specifications and technologies for adding to the Java platform. There are hundreds of JSR. CRX is Adobe’s implementation of the JSR-283.
  3. JCR (Content Repository API for Java): It can be defined as the specifications for accessing content repository using JAVA API in a uniform manner. So, JCR is a “type of repository”. CRX is an implementation of JCR. Similarly, Apache Jackrabbit is an example of JCR.
To summarize, CRX is content repositories of type JCR and CRX is an implementation of JSR (JSR-283).

The Java Content Repository (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.

Sling Content Delivery: Sling is a Web application framework based on REST principles. The sling allows easy development of content-oriented applications. AEM is based on the sling. Sling uses a repository of type JCR, such as CRX and Apache Jackrabbit.

“Using Sling, the type of content to be rendered is not the first processing consideration. Instead, the main consideration is whether the URL resolves to a content object for which a script can then be found to perform the rendering. This provides excellent support for web content authors to build pages that are easily customized to their requirements.”

The advantages of the content first approach are significant when we have a wide range of different content elements, or when you need easily customizable pages.

OSGi Framework (Open Service Gateway Initiative): OSGi (Open Service Gateway Initiative) is a Java framework for developing and deploying modular software programs and libraries. OSGI is a modular system that implements dynamic components/applications in form of bundles. AEM is based on OSGi. AEM can be thought of as a conglomeration of bundles(components). All the bundles in AEM can be operated from a web console. 

A bundle is a jar file holding Java classes and a special metadata file (META-INF subfolder). Applications or components coming in form of bundles installed, started, stopped, updated, and uninstalled without requiring a reboot. Each bundle(component/application) is a tightly coupled, dynamically loadable collection of classes, jars, and configuration files that explicitly declare their external dependencies.

OSGi framework, elements of AEM as well as any additional custom applications on top AEM platform are implemented in OSGI bundles.

AEM Modules:
AEM runs on the Granite platform. AEM is a complete package of the below-mentioned modules built on the Granite platform in the OSGI framework.
  • Websites
  • Mobile Applications
  • Digital Publications
  • Forms
  • Digital Assets
  • Communities
  • Online Commerce
Customers can leverage these application-level building blocks to create customized solutions by building applications of their own.

Custom Application Module (your website):
Customers can build their own customized application module o top of AEM. The underlying technology stack empowers the customer to take advantage of AEM features such as flexibility, simplicity in the management and delivery of websites, content, and assets, and reduced complexity of delivering online experiences to the right customers.


By aem4beginner
Posted by aem4beginner at May 10, 2020
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels: AEM Project, Architecture

No comments:

Post a Comment

If you have any doubts or questions, please let us know.

Newer Post Older Post Home

Pages

  • About Us
  • Site Map
  • Home Page
  • AEM Assets
  • AEM/CQ5
  • AEM Integration
  • AEM Migration
  • AEM Projects
  • AEM Templates
  • AEM Tools
  • Apache Sling
  • Bookmarks
  • Components
  • Contact Us
  • Development
  • Dispatcher
  • FAQs
  • i18N & MSM
  • OSGi
  • References
  • Users & Groups
  • Troubleshooting
  • Workflows
  • Web Services
  • Web Development Resources
  • Forum
  • Disclaimer
  • COVID Stats

Search This Blog

Total Pageviews

Labels

  • ACS Commons (22)
  • Admin Password (12)
  • Adobe Analytics (19)
  • Adobe Campaign (8)
  • Adobe Summit (3)
  • Adobe Target (20)
  • AEM 6.1 (21)
  • AEM 6.2 (29)
  • AEM 6.3 (56)
  • AEM 6.4 (78)
  • AEM 6.5 (45)
  • AEM Author (18)
  • AEM Certification (11)
  • AEM Deployment (27)
  • AEM Development (36)
  • AEM Forms (18)
  • AEM Integration (166)
  • AEM Java API (18)
  • AEM Migration (21)
  • AEM Project (169)
  • AEM Repository (23)
  • AEM Upgrade (56)
  • AEM/ Adobe CQ5 (456)
  • Ajax (14)
  • Akamai (12)
  • AngularJS (22)
  • Annotations (30)
  • Apache (22)
  • Apache Sling (86)
  • Apache Solr (26)
  • API (21)
  • Architecture (18)
  • Assets/DAM (86)
  • Authentication (18)
  • Best Practices (25)
  • Blog (1)
  • Bookmark (288)
  • Bundles (52)
  • Cache (32)
  • Cheat Sheet (35)
  • CICD (46)
  • Classic UI (23)
  • Clientlibs (58)
  • Cloud Services (17)
  • Components (301)
  • Content (21)
  • Context Hub (14)
  • Cookies (7)
  • CPU Usage (6)
  • CQ Dialog (179)
  • crx-quickstart (18)
  • CRXDE (52)
  • CSS (93)
  • CURL Commands (28)
  • Customizing (103)
  • Data Science (1)
  • Data Store (10)
  • DataSource (7)
  • Debugging (48)
  • Dispatcher (107)
  • DTM (12)
  • eBook (2)
  • Eclipse (45)
  • Editable Templates (23)
  • Email Notification (24)
  • Encrypting - Decrypting (8)
  • Error Handling (17)
  • FAQs (40)
  • Fragments (48)
  • Garbage Collection (15)
  • GitHub (10)
  • Google Analytics (6)
  • Granite UI/CoralUI (29)
  • Groovy Scripts (14)
  • Headless CMS (6)
  • HTML (68)
  • Hybrid CMS (3)
  • Image Rendition (10)
  • Indexing (29)
  • Internalization or i18N (35)
  • Interview Questions (35)
  • Java (110)
  • JavaScript (180)
  • JCR (33)
  • JMX (8)
  • jQuery (16)
  • JSON (39)
  • JSP (20)
  • JVM (12)
  • LDAP and SSO (29)
  • link checker (14)
  • Link Rewriter (4)
  • Linux (58)
  • LiveCopy (9)
  • Locale (4)
  • Logs (59)
  • Machine Learning (3)
  • Maven (112)
  • Meta Information (6)
  • Micro Services (9)
  • Mobile App (15)
  • Mongo DB (6)
  • MongoMK (5)
  • MSM (26)
  • Multifield Component (31)
  • Nested Multifield (9)
  • Node (28)
  • Node JS (7)
  • Oak (16)
  • OAuth (6)
  • OSGi (315)
  • Overlay (12)
  • Override (8)
  • Packages (73)
  • Page (78)
  • PDF (9)
  • Performance (100)
  • Personalization (21)
  • POST (9)
  • Postman (16)
  • Purge Version (5)
  • Python (2)
  • Query Builder (44)
  • Querying (13)
  • ReactJs (16)
  • reCaptcha (3)
  • Redirection (11)
  • Regex (3)
  • Relational Database (3)
  • Remote Assets (5)
  • Replication (59)
  • Resource Resolver (14)
  • RTE (39)
  • Runmode (29)
  • Salesforce (15)
  • Script (24)
  • Search (13)
  • Search & Promote (13)
  • Security (24)
  • SEO (22)
  • Service (22)
  • Session (10)
  • Shortcuts (63)
  • Sidekick (15)
  • Sightly HTL (117)
  • Sitemap (16)
  • Sling Models (59)
  • Sling Servlet (77)
  • SonarQube (8)
  • SPA (19)
  • SQL2 (13)
  • SSL (12)
  • Start/Stop (25)
  • System User (10)
  • Tags (21)
  • Tar Compaction (15)
  • TarMK (22)
  • Templates (47)
  • Tool (220)
  • Touch UI (115)
  • Troubleshooting (162)
  • Tutorial (6)
  • UNIT Testing (48)
  • URLs Mapping (12)
  • Use-API (14)
  • Users and groups (83)
  • Vanity URLs (14)
  • Vault Tool (20)
  • WCMUse (12)
  • Web Developer (14)
  • Web Services (35)
  • WebDAV client (5)
  • WebDev (266)
  • Website (43)
  • Workflow (107)
  • XLIFF (3)
  • XML (12)
  • YouTube Component (11)

Get Posts In Your Inbox