Granite is Adobe’s open web stack. It forms the technical foundation on which AEM is built.
The Granite engineering platform also provides a foundation UI framework. The major goals of this are to:
- provide granular UI widgets
- implement the UI concepts and illustrate best practices (long lists rendering, lists filtering, object CRUD, CUD wizards…)
- provide an extensible and plug-in based administration UI
These adhere to the requirements:
- respect “mobile first”
- be extensible
- be easy to override
The Granite UI:
- Uses the RESTful architecture of Sling
- Implements component libraries intended for building content-centric web applications
- Provides granular UI widgets
- Provides a default, standardized UI
- Is extensible
- Is designed for both mobile and desktop devices (respects mobile first)
- Can be used in any Granite-based platform/product/project; eg AEM
AEM includes an OSGi component framework based on Apache Felix, which implements OSGi Service Platform Release 4.
OSGi is a dynamic software component system for Java. In an OSGi-based system, an application is composed of an assemblage of components, called bundles in OSGi terminology, which can be dynamically installed, started, stopped and uninstalled at runtime, without shutting down and restarting the entire application.
A bundle is a jar file holding Java classes that adhere to the OSGi specification (allowing the classes to connect to and interact with the framework) and a special metadata file (in the jar file’s META-INF subfolder).
Apart from the OSGi framework itself, all other elements of AEM as well as any additional custom applications written on top of the AEM platform are implemented as OSGi bundles.
In a running AEM instance, bundle management is provided through the AEM Web Console at
In a quickstart installation, the built-in CQSE servlet engineruns as a bundle within the OSGi framework. In a war file installation servlet handling is delegated to a third-party application server.
AEM includes a built-in servlet engine (CQSE) which runs as a bundle within the OSGi framework when AEM is deployed via the standalone quickstart jar file.
In order to deploy AEM within a third-party application server, the war file package shoud be downloaded and deployed as directed by the application server documentation.
In general, AEM requires an application server that supports Java Servlets API 2.4 or later. For details on which application servers are supported see Servlet Engine and Application Servers. For details on performing the war file deployment see Installing AEM on an Application Server.