Learn
AEM, Sling, JCR, Oak, OSGi, HTL, Dispatcher and Edge Delivery Services fundamentals.
Querying Content in AEM: JCR-SQL2, QueryBuilder, and Why You Need an Oak Index
How to choose between QueryBuilder and JCR-SQL2 when querying content in AEM, why a query without a matching Oak index becomes a traversal, and why that can fail in AEM as a Cloud Service even when it works locally.
The Sling Delegation Pattern: Extending Core Component Java Logic Without Copy-Pasting It
How to change a Core Component's Sling Model logic in AEM — such as how the Teaser picks its image — without forking the class, using Sling's @Via(type = ResourceSuperType.class) and Lombok's @Delegate.
How Sling Resolves a Request to an AEM Component
How Sling turns a URL into a Resource and then into an AEM component through sling:resourceType, the /apps and /libs search paths, and why sling:resourceSuperType is the correct pattern for extending Core Components.
How the ui.frontend Module Turns a Webpack Build into an AEM ClientLib
How the ui.frontend module builds JS/CSS with webpack through frontend-maven-plugin, and how aem-clientlib-generator turns that dist/ output into a cq:ClientLibraryFolder that ui.apps ships to AEM.
What Is a Sling ResourceResolver?
How Sling's ResourceResolver maps JCR content to Resources, why it must be closed, and how leaks happen in AEM.