blob: 29a621a28a2548b1f27bc10e4682ce35ab48e330 [file] [log] [blame]
<!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>