<!DOCTYPE html><html lang="en">
<head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
        <title>Apache Sling :: Apache Sling 12 released</title>
        <link rel="icon" href="/favicon.ico"/>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css"/>
        <link rel="stylesheet" href="/res/css/site.css"/>
        <script src='https://www.apachecon.com/event-images/snippet.js'></script><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/>
        <script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js'></script><script>
            hljs.initHighlightingOnLoad();
        </script>
        
	<!-- Matomo Web Analytics -->
	<script>
	var _paq = window._paq = window._paq || [];
	/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
	/* We explicitly disable cookie tracking to avoid privacy issues */
	_paq.push(['disableCookies']); 
	_paq.push(['trackPageView']);
	_paq.push(['enableLinkTracking']);
	(function() {
	  var u="https://matomo.privacy.apache.org/";
	  _paq.push(['setTrackerUrl', u+'matomo.php']);
	  _paq.push(['setSiteId', '6']);
	  var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
	  g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
	})();
	</script>
	<!-- End Matomo Code -->
	<link href='/pagefind/pagefind-ui.css' rel='stylesheet'><script src='/pagefind/pagefind-ui.js' type='text/javascript'></script>
	<script>
    window.addEventListener('DOMContentLoaded', (event) => {
        new PagefindUI({ element: "#searchbox" });
    });
	</script>
	
    </head>    <body>
        <div class="section">
            <div class="level is-marginless">
<div class="logo">
                    <a href="https://sling.apache.org">
                        <img border="0" alt="Apache Sling" src="/res/logos/sling.svg"/>
                    </a>
                </div><div class="header">
                    <a href="https://www.apache.org">
                        <img border="0" alt="Apache" src="/res/logos/apache.png"/>
                    </a>
                </div>                
            </div><section class="searchbox level is-marginless">
                <div id="searchbox"></div>
            </section><div class="columns is-gapless">
                <div class="column is-narrow sidemenu">
<div class="container">
                        <nav class="menu">
                            <ul class="menu-list box is-shadowless is-marginless">
                                <li>
                                    <p class="menu-label">
                                        <strong>Documentation</strong>
                                    </p><ul>
                                        <li><a href="/documentation.html">Overview</a></li><li><a href="/documentation/getting-started.html">Getting Started</a></li><li><a href="/documentation/the-sling-engine.html">The Sling Engine</a></li><li><a href="/documentation/development.html">Development</a></li><li><a href="/documentation/bundles.html">Bundles</a></li><li><a href="/documentation/tutorials-how-tos.html">Tutorials &amp; How-Tos</a></li><li><a href="/components/">Maven Plugins</a></li><li><a href="/documentation/configuration.html">Configuration</a></li>
                                    </ul>
                                </li><li>
                                    <p class="menu-label">
                                        <strong>API Docs</strong>
                                    </p><ul>
                                        <li><a href="/apidocs/sling12/index.html">Sling 12</a></li><li><a href="/apidocs/sling11/index.html">Sling 11</a></li><li><a href="/apidocs/sling10/index.html">Sling 10</a></li><li><a href="/apidocs/sling9/index.html">Sling 9</a></li><li><a href="/documentation/apidocs.html">All versions</a></li>
                                    </ul>
                                </li><li>
                                    <p class="menu-label">
                                        <strong>Support</strong>
                                    </p><ul>
                                        <li><a href="https://s.apache.org/sling.wiki">Wiki</a></li><li><a href="https://s.apache.org/sling.faq">FAQ</a></li><li><a href="/sitemap.html">Sitemap</a></li>
                                    </ul>
                                </li><li>
                                    <p class="menu-label">
                                        <strong>Project Info</strong>
                                    </p><ul>
                                        <li><a href="/downloads.cgi">Downloads</a></li><li><a href="https://www.apache.org/licenses/">License</a></li><li><a href="/news.html">News</a></li><li><a href="/releases.html">Releases</a></li><li><a href="https://issues.apache.org/jira/browse/SLING">Issue Tracker</a></li><li><a href="/links.html">Links</a></li><li><a href="/contributing.html">Contributing</a></li><li><a href="/project-information.html">Project Information</a></li><li><a href="/project-information/security.html">Security</a></li>
                                    </ul>
                                </li><li>
                                    <p class="menu-label">
                                        <strong>Source</strong>
                                    </p><ul>
                                        <li><a href="/repolist.html">Repositories</a></li><li><a href="https://gitbox.apache.org/repos/asf?s=sling">Git at Apache</a></li>
                                    </ul>
                                </li><li>
                                    <p class="menu-label">
                                        <strong>Apache Software<br>Foundation</strong>
                                    </p><ul>
                                        <li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li><li><a href="https://www.apache.org/foundation/buy_stuff.html">Buy Stuff</a></li>
                                    </ul>
                                </li><li>
                                    <a class="acevent" data-format="square" data-event="random"></a>
                                </li><li>
                                    <a href="https://apache.org/foundation/contributing.html" class="column">
                                        <img border="0" alt="Support the Apache Software Foundation!" src="/res/images/SupportApache-small.png" width="125"/>
                                    </a>
                                </li>
                            </ul>
                        </nav>
                    </div>                    
                </div><div class="column main">
                    <div class="box is-shadowless is-marginless">
                        <div class="level">
                            <div class="pagenav">
<div class="breadcrumb">
                                    <ul>
                                        <li>
                                            <a href="/">
                                                Home
                                            </a>
                                        </li><li>
                                            <a href="/news.html">
                                                News
                                            </a>
                                        </li>
                                    </ul>
                                </div>                                
                            </div><div class="tags">
                                <span class="tag">
                                    <a href="/tags/launchpad.html">
                                        launchpad
                                    </a>
                                </span>
                            </div>
                        </div><h1 class="title">
                            Apache Sling 12 released
                        </h1><nav class="menu">
                            <ul class="menu-list box is-shadowless is-paddingless">
                                <li id="generatedToC">
                                    <p class="menu-label">
                                        <strong>Table of Contents</strong>
                                    </p>
                                </li>
                            </ul>
                        </nav><script src='/res/jquery-3.2.1.min.js' type='text/javascript'></script><script src='/res/tocjs-1-1-2.js' type='text/javascript'></script><script type='text/javascript'>$(document).ready(function() { $('#generatedToC').toc({'selector':'h1[class!=title],h2,h3','ulClass':'menu-list'}); } );</script><div class="content is-marginless">
<div class="row" data-pagefind-body="true"><div><section><p>The Sling 12 release contains numerous improvements, such as official Java 17 support, complete migration to the [OSGi Feature Model](/documentation/development/feature-model.html], and various performance improvements and updates.</p>
<p>Read on to see more details about the individual improvements. To find out more about running Sling, see our <a href="/documentation/getting-started.html">getting started page</a>.</p>
<h2><a href="#official-support-for-java-17" id="official-support-for-java-17">Official support for Java 17</a></h2>
<p>The Sling Starter and included modules are validated to work on Java 8, 11, and 17. Note that for Java 17 the <code>org.apache.sling.commons.threads</code> will not clean up leftover <code>ThreadLocal</code> instances unless the  <code>--add-opens java.base/java.lang=ALL-UNNAMED</code> is passed to the JVM.</p>
<p>This fix is already applied to the <a href="https://hub.docker.com/r/apache/sling">official Sling Starter Docker image</a> and we anticipate further fixes in this area.</p>
<h2><a href="#update-to-oak-1420" id="update-to-oak-1420">Update to Oak 1.42.0</a></h2>
<p><a href="jackrabbit.apache.org/oak/">Apache Jackrabbit Oak</a> 1.42.0 brings numerous performance improvements and new features that are now available in the Sling Starter.</p>
<h3><a href="#pre-authenticated-login-for-system-users" id="pre-authenticated-login-for-system-users">Pre-authenticated login for system users</a></h3>
<p><a href="https://jackrabbit.apache.org/oak/docs/security/authentication/preauthentication.html">Oak pre-authenticated login</a> without repository involvement presents a number of advantages:</p>
<ul>
<li>it is faster since the repository is not involved</li>
<li>allows mapping a single principal to the repositories of multiple service users, making ACLs easier to define in a fine-grained manner</li>
</ul>
<h3><a href="#principal-based-authentication" id="principal-based-authentication">Principal-based authentication</a></h3>
<p><a href="https://jackrabbit.apache.org/oak/docs/security/authorization/principalbased.html">Oak principal-based authentication</a> is an alternate way of supporting access control entries, with the main difference being that the policy entries are stored together with the user itself, rather than with the content they target.</p>
<p>The support has been implemented both in the Sling Starter and in repoinit.</p>
<h2><a href="#migration-to-the-feature-model" id="migration-to-the-feature-model">Migration to the feature model</a></h2>
<p>The Sling Starter is now built and launched with the [OSGi Feature Model](/documentation/development/feature-model.html]. This aligns our tooling with the upstream OSGi specification work from <a href="https://github.com/osgi/design/blob/master/rfps/rfp-0188-Features.pdf">RFP 188</a> and <a href="https://github.com/osgi/design/tree/master/rfcs/rfc0241">RFC 241</a> and provides significant additional tooling around composing, analysing, and launching Sling applications.</p>
<p>Applications based on Apache Sling are encouraged to evaluate migrating to the OSGi feature model.</p>
<h3><a href="#new-mechanism-for-launching-the-sling-starter" id="new-mechanism-for-launching-the-sling-starter">New mechanism for launching the Sling Starter</a></h3>
<p>The OSGi feature model does not support creating WAR files. The Sling Starter therefore no longer produces WAR files. The currently produced artifacts are:</p>
<ul>
<li>the <a href="https://hub.docker.com/r/apache/sling"><code>apache/sling:12</code> docker image</a></li>
<li>individual feature model files which define the bundles and configurations of the Sling Starter in JSON format</li>
<li>aggregate feature model files which contain include all the artifacts needed to launch Sling</li>
</ul>
<h2><a href="#support-for-content-package-development" id="support-for-content-package-development">Support for content-package development</a></h2>
<p>The Sling Starter fully supports development based on content packages. Content packages may be defined in the feature model, deployed via an HTTP API or using the Composum UI.</p>
<p>See <a href="/documentation/development/content-packages.html">Content-package based development</a> for more details.</p>
<h2><a href="#java-api-for-ordering-resources" id="java-api-for-ordering-resources">Java API for ordering resources</a></h2>
<p>The Sling <code>ResourceResolver</code> had gained a new <code>orderBefore</code> method that can be used to order child resources. Support needs to be added by various <code>ResourceProvider</code> implementations. Notably, the JCR ResourceProvider has support for this method.</p>
<h2><a href="#scripting-enhancements" id="scripting-enhancements">Scripting enhancements</a></h2>
<h3><a href="#new-scripting-engines" id="new-scripting-engines">New scripting engines</a></h3>
<p>The Sling Starter includes the Freemarker and Thymeleaf engines out-of-the-box.</p>
<h3><a href="#added-support-for-precompiled-scripts" id="added-support-for-precompiled-scripts">Added support for precompiled scripts</a></h3>
<p>Java and HTL scripts may now be precompiled for better runtime performance and build-time checks.</p>
<h2><a href="#improvements-in-run-mode-support" id="improvements-in-run-mode-support">Improvements in run mode support</a></h2>
<p>The Apache Sling Settings bundle now supports the OR (<code>,</code>) and AND (<code>.</code>) combinations of run modes and negations with <code>-</code> .</p>
<h2><a href="#running-multiple-versions-of-the-same-bundle-in-parallel" id="running-multiple-versions-of-the-same-bundle-in-parallel">Running multiple versions of the same bundle in parallel</a></h2>
<p>The Sling OSGi installer now supports running multiple versions of the same bundle in parallel. See <a href="/documentation/bundles/osgi-installer.html#multi-version-support-1">multi-version support in the OSGi installer</a> for details and limitations.</p>
<h2><a href="#performance-improvements-in-resource-resolution" id="performance-improvements-in-resource-resolution">Performance improvements in resource resolution</a></h2>
<ol>
<li>The result of <code>ResourceResolver.isResourceType</code> is cached</li>
<li>Optimised SQL queries are used when optimised alias resolution is enabled, ensuring especially to not touch areas like <code>/jcr:system</code> and <code>/jcr:versionStorage</code>. This applies to both aliases and vanity paths.</li>
<li>Spurious change events are no longer fired during content changes</li>
</ol>
<h2><a href="#repository-maintenance" id="repository-maintenance">Repository maintenance</a></h2>
<p>The repository maintenance bundle has been added to the Sling Starter. This allows configuring jobs running maintenance tasks, such as version purge, revision cleanup, and datastore cleanup.</p>
<h2><a href="#version-updates" id="version-updates">Version updates</a></h2>
<p>Multiple bundles have been updated to the latest versions. On top of other improvements listed in this page we have added the Sling <code>resource.filter</code> bundle and no longer include commons-lang 2 in the Sling Starter.</p>
<h3><a href="#osgi-core-r8-compliance" id="osgi-core-r8-compliance">OSGi Core R8 compliance</a></h3>
<p>Sling Starter ships with <a href="https://felix.apache.org/documentation/index.html">Apache Felix 7</a> which implements <a href="https://docs.osgi.org/specification/osgi.core/8.0.0/">OSGi Core R8</a> fully. In addition it comes with Felix SCR 2.2.0 which implements <a href="https://docs.osgi.org/specification/osgi.cmpn/8.0.0/service.component.html">Declarative Services 1.5</a> (part of OSGi Compendium R8).</p>
</section></div></div><div data-pagefind-body="true" data-pagefind-weight="7.0" style="display:none;"> - ( Apache Sling 12 released )</div>                            
                        </div>
                    </div>
                </div>
            </div><footer class="footer">
                <div class="content has-text-centered is-small">
<div class="editpagelink">
                        This page can be edited on GitHub at <a href="https://github.com/apache/sling-site/edit/master/src/main/jbake/content/news/sling-12-released.md">
                            content/news/sling-12-released.md
                        </a>
                    </div>                    <div class="revisionInfo">
                        Last modified by <span class="author">Robert Munteanu</span> on <span class="comment">2022-03-18</span>
                    </div><p>
                        Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project
    logo are trademarks of The Apache Software Foundation. All other marks mentioned 
    may be trademarks or registered trademarks of their respective owners.
                    </p><p>
                        Copyright © 2007-2024<a href="https://www.apache.org/">
                            The Apache Software Foundation
                        </a>|<a href="https://privacy.apache.org/policies/privacy-policy-public.html">
                            Privacy Policy
                        </a>
                    </p>
                </div>
            </footer>
        </div>
    </body>
</html>