Apache Sling is an innovative web framework that is intended to bring back the fun to web development.
Java Web Framework Software
REST based web framework
Content-driven, using a JCR content repository
Powered by OSGi
Apache Open Source project
Small (<50 employees), Medium (50 to 1000 Enterprise (>1001 employees)
Apache Sling is a top-level project of the Apache Foundation dedicated to delivering the content very fast, in the simplest way. It is an innovative web framework that is intended to bring back the fun to web development.
This web framework uses a Java Content Repository, such as Apache Jackrabbit (provided by default), to store and manage content. Also, Sling applications use either scripts or Java servlets, selected based on simple name conventions, to process HTTP requests in a RESTful way.
Moreover, the embedded Apache Felix OSGi framework and console provide a dynamic runtime environment, where code and content bundles can be loaded, unloaded and reconfigured at runtime. As the first web framework dedicated to JSR-170 Java Content Repositories, Sling makes it very simple to implement simple applications, while providing an enterprise-level framework for more complex applications.
There are three main opportunities where Sling can be used. The first is to built a Wiki system, where each wiki page is a node in the repository that can be easily accessed by using the URL and the attachments, or spooled through different commands, as the system does not care for what actual node is addressed as long as there is a Content mapping and a Component capable of handling the Content.
The second is to implement a Digital Asset Management (DAM) based on Sling. Thanks to the flexibility of the Content/Component combo as well as the service registration/access functionality offered by OSGi, extending DAM for new content type is merely a matter of implementing one or two interfaces and registering the respective service(s). Finally, Sling offers itself very well to implementing a Web Content Management system due to the flexibility of rendering the output.