A brief overview of AEM
Welcome to my blog series on AEM. I am Aditi and I am a full-stack software developer. I am going to share with you why must someone use Adobe Experience Manager (AEM) for web application development and what to expect.
Let us first understand what is AEM -
Adobe Experience Manager (AEM) is a content management system used to build and manage content on the website dynamically. It was built to enable companies with lesser development capabilities, to be able to manage their websites even after the core development team has rolled off. It is easier to manage content as well as assets using AEM. It does require one-time development to develop custom components and integrate them with backend services or third-party tools. Once that is done, non-technical authors can simply create templates and pages reusing the custom components.
What are some of the AEM capabilities -
- AEM comes with two instances — Author and Publish. Complete website development and content changes happen on the author instance. An Author can drag and drop components onto a template or a page. There is a menu bar to configure the components and an asset library on the side panel to simply drag and drop images onto the components. The latest and stable content is published by the author and is visible on the Publish instance.
2. AEM comes with an out-of-the-box core component library. These components are reusable and production-ready. The core components can be extended and altered to create custom components. For example, a Tab component can be extended and redesigned as a custom component. Now it looks like the tabs in your design. Some of the AEM Core Components are — Form, Image, List, Text, Title, Teaser, etc
3. Components can be authored, configured, copied, cut, deleted, nested, pasted, grouped, located, made into experience fragments, or laid out. What we ask for in the configuration dialog box (shows up on clicking the wrench icon) can be customized too.
4. AEM Assets is a Digital Asset Management (DAM) solution that enables easy asset management of images, videos, documents, etc. Assets can be grouped, tagged, and searched for. There is a lot more to it.
5. CRXDE:
CRXDE is embedded in AEM and exposes the repository structure in form of nodes and allows for creating or editing pages, templates, policies, components, dialogs, properties, etc.
To enable local development, CRXDE interface can be synced to IDEs such as VSCode or IntelliJ. Any change made in CRXDE can be pulled in by VSCode/ IntelliJ and any change made on VSCode/IntelliJ can be exported to CRXDE
6. AEM comes with inbuilt workflows. Workflows allow for the automation of certain steps on pages. For example, an author makes changes on one of the product pages; the page has to be approved before it is published. In any other frontend framework, it would take weeks of development to enable roles and setup contributor-approver flow, but in AEM workflows come out of the box. The author can simply trigger the “Publish workflow” and the approver will get notification about it. The approver can then review the page. Once the page is marked approved, it automatically gets published. Custom workflows can also be created.
7. Package manager to share content — import/export repository content. It is used to backup content or to share content across instances. A package is an easy-to-use representation of files and folders in the repository. We can create, upload, build, install or delete packages.
8. One can define user groups and permissions in AEM. Groups are collections of users and permissions can be easily defined for these groups. It is easier to update permissions for a whole group at once than for individual users. AEM uses Access Control Lists (ACLs) to organize the permissions being applied to the various pages.
9. AEM is built using many open source technologies — Apache Felix (OSGi), Apache Sling, Apache Oak (JCR), and Adobe’s technologies like Granite, HTL, etc. AEM exposes many Java APIs for development purposes. AEM is built on the following Java API sets-
AEM — pages, templates, etc
Apache Sling — is a RESTful web framework. Common uses of Sling APIs include building servlets, filters, event handlers, jobs, schedulers, and models.
JCR (Java Content Repository) — is a hierarchical content repository that AEM uses. Everything in AEM can be represented as a node with properties.
OSGI — allows for OSGI service creation and usage
10. For component development developers would only need to know Sightly, CSS, and JS. It doesn’t need developers to know any complex frontend framework. HTL (Sightly) is the HTML templating system for AEM.
AEM is a current market leader in CMS and is in high demand these days. If you are a developer with Java skills or basic HTML and CSS skills, learning AEM can open new gates for you. Even if you don’t intend on exploring it, knowing about it doesn’t hurt, does it? I will soon be back with my next AEM blog. Until then, goodbye. 👋
— Aditi Verma