I recently started working with Adobe AEM and I would like to share my experience.
Adobe AEM has become very popular the last few years due to its user experience and integration with other Adobe products. It’s a CMS based in Java and OSGi framework, JCR compliant and as you can guess proprietary.
Getting started with it as a developer is not easy since it’s not available to download anywhere and the documentation in the web is overwhelming. I would recommend attending one of the AEM courses (which are not cheap and classes are not really that great, but you get some good material at the end, including a deployable AEM JAR file). I attended the AEM: Sites Developer course, which is more for components and dialogs developer (not much on Java coding in it), but the course itself gave me a good foundation on how AEM works and how to dig in its code. After a week of finishing the course and studying hard I got certified by Adobe as Expert Developer! In theory you need a year of experience to achieve that!
The important bit is getting a running instance of AEM. Once you get hold of the deployable AEM all you need is an IDE to develop on. I personally use Eclipse, or some variant of it such as STS, to build the OSGi bundles and Brackets for the content in the repository (templates, JS, CSS, configurations, etc). There’s a AEM extension available for Brackets which synchronises your content in Brackets with the one in the repository.
There are already Maven archetypes to start developing your customisations. The multimode-content-package-archetype creates a project containing both a sub-project for OSGi bundles and another one for the JCR content.
You will be asked project specific questions such as groupId, artifactId and so on, once you answer all the questions you’ll have your project structure. You’ll notice the sub-projects I talked about earlier named bundle and content respectively.
You can import your content project into brackets and from there sync it with AEM. For the bundle project, you can install it directly in AEM by Maven command line instead of doing it manually. For this there is a “autoInstallBundle” profile available. Can be executed with following command:
mvn -PautoInstallPackage install
We can now start playing with it! I'll talk about developing components, Sling Models, JUnit tests, run modes and more stuff