<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--

    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
  <head>
    <title>Apache Felix - Dependency Manager - What&#39;s new in version 4?</title>
    <link rel="icon" href="/res/favicon.ico">
    <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
    <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  </head>
  <body>
    <div class="title">
      <div class="logo">
        <a href="https://felix.apache.org/">
          <img border="0" alt="Apache Felix" src="/res/logo.png">
        </a>
      </div>
      <div class="header">
        <a href="https://www.apache.org/">
          <img border="0" alt="Apache" src="/res/apache.png">
        </a>
      </div>
    </div>
    
    <div class="menu"> 
      <style type="text/css">
/* The following code is added by mdx_elementid.py
   It was originally lifted from http://subversion.apache.org/style/site.css */
/*
 * Hide class="elementid-permalink", except when an enclosing heading
 * has the :hover property.
 */
.headerlink, .elementid-permalink {
  visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<p><a href="/news.html">News</a>  <br />
<a href="/license.html">License</a>  <br />
<a href="/downloads.cgi">Downloads</a>  <br />
<a href="/documentation.html">Documentation</a>  <br />
<a href="/documentation/community/project-info.html">Project Info</a>  <br />
<a href="/documentation/community/contributing.html">Contributing</a>  <br />
<a href="/sitemap.html">Site Map</a>  <br />
<a href="https://www.apache.org/">ASF</a>  <br />
<a href="https://www.apache.org/security/">Security</a>  <br />
<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>  <br />
<a href="https://www.apache.org/foundation/thanks.html">Sponsors</a>    </p>
<iframe
    src="https://www.apache.org/ads/button.html"
    style="border-width:0; float: left"
    frameborder="0"
    scrolling="no"
    width="135"
    height="135">
</iframe>
    </div>
    
    <div class="main">
      <div class="breadcrump" style="font-size: 80%;">
        <a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="/documentation.html">Documentation</a>&nbsp;&raquo&nbsp;<a href="/documentation/subprojects/apache-felix-dependency-manager.html">Apache Felix Dependency Manager</a>
      </div>

      <h1>Dependency Manager - What&#39;s new in version 4?</h1>
      <style type="text/css">
/* The following code is added by mdx_elementid.py
   It was originally lifted from http://subversion.apache.org/style/site.css */
/*
 * Hide class="elementid-permalink", except when an enclosing heading
 * has the :hover property.
 */
.headerlink, .elementid-permalink {
  visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<p>Even though the focus for this version is to completely redo the internals, we also added a few new features to the code. The most important one is the new thread model, described directly below. Apart from that we also added a few smaller features, enumerated below that.</p>
<h2 id="new-thread-model">New thread model<a class="headerlink" href="#new-thread-model" title="Permanent link">&para;</a></h2>
<p>DependencyManager 4 has been significantly reworked to improve support for concurrency. The following principles form the basis of the new concurrency model in DM4.</p>
<ul>
<li>All external events that influence the state of dependencies are recorded and given to the serial executor of the component. We record whatever data comes in, so when the actual job is run by the serial executor, we still have access to the original data without having to access other sources whose state might have changed since.</li>
<li>The serial executor of a component will execute a job immediately if it is being called by the thread that is already executing jobs.</li>
<li>If the serial executor of a component had not yet started a job, it will queue and start it on the current thread.</li>
<li>If the serial executor gets invoked from a different thread than the one currently executing jobs, the job will be put at the end of the queue. As mentioned before, any data associated with the event will also be recorded so it is available when the job executes.</li>
<li>State in the component and dependency can only be modified via the serial executor thread. This means we don't need explicit synchronization anywhere.</li>
</ul>
<p>DependencyManager 4 now also supports parallel execution of component wiring.</p>
<p>Added support for parallelism: To allow components to be started and handled in parallel, you can now register in the OSGi service registry a ComponentExecutorFactory service that is used to get an Executor for the management of all components dependencies/lifecycle callbacks. See javadoc from the org.apache.felix.dm.ComponentExecutorFactory interface for more information.</p>
<p>You can also take a look at the the org.apache.felix.dependencymanager.samples project, which is registering a ComponentExecutorFactory from org.apache.felix.dependencymanager.samples.tpool bundle.</p>
<p>See also the following property in the org.apache.felix.dependencymanager.samples/bnd.bnd </p>
<div class="codehilite"><pre><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">felix</span><span class="p">.</span><span class="n">dependencymanager</span><span class="p">.</span><span class="n">parallel</span><span class="p">=</span><span class="o">\</span>
    <span class="s">&#39;!org.apache.felix.dependencymanager.samples.tpool, *&#39;</span><span class="p">,</span><span class="o">\</span>
</pre></div>


<p>Here, all components will be handled by Executors provided by the ComponentExecutorFactory, except those having a package starting with "org.apache.felix.dependencymanager.samples.tpool" (because the threadpool is itself defined using the Dependency Manager API).</p>
<p>You will find a full description of the new thread model in the <a href="../reference/thread-model.html">Reference</a> section.</p>
<h2 id="new-features">New features<a class="headerlink" href="#new-features" title="Permanent link">&para;</a></h2>
<p>In addition, some new features have been implemented in dependency manager:</p>
<ul>
<li>
<p>Auto Config Iterable fields: AutoConfig dependencies can be applied on Iterable<Service> fields in order to be able to traverse currently injected services safely. The Iterable must be parameterized with the Service type. 
<a href="https://svn.apache.org/repos/asf/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/SpellChecker.java">see this sample code</a> from the source distribution samples.</p>
</li>
<li>
<p>AutoConfig Map field: AutoConfig dependencies can be applied on a field with a Map<Service, Dictionary> type, allowing to traverse currently injected services safely, including service properties. The Map must be traversed using the Map.Entry iterator. 
See the <em>ServiceDependency.setAutConfig(boolean autoConfig)</em> <a href="http://felix.apache.org/apidocs/dependencymanager/4.0.0/org/apache/felix/dm/ServiceDependency.html">javadoc</a> for more more informations.</p>
</li>
<li>
<p>Inject Configuration on separate callback instance (FELIX-2707): Configuration can be injected on a separate callback instance, like a CompositionManager for example. 
See the <a href="https://svn.apache.org/repos/asf/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/">composite factory example</a> example available from the source distribution.</p>
</li>
<li>
<p>Added <em>propagate</em> flag in service Adapters (FELIX-4600): you can now choose to propagate or not adaptee service properties.</p>
</li>
<li>
<p>"Top" command in the shell: a "top" command is now available from the shell and can be used to display all top components sorted by their init/start elapsed time.</p>
</li>
<li>
<p>The Annotations plugin can now automatically generate a Require-Capability header on the Dependency Manager Runtime bundle. 
Use "add-require-capability=true" option in the plugin declaration property to enable this new feature (see FELIX-4676):</p>
<p>-plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin; add-require-capability=true</p>
</li>
<li>
<p>The Configuration Dependency annotation now supports a "name" attribute (FELIX-4777): allow to dynamically configure configuration pids from the @Init method.</p>
</li>
<li>
<p>Added a benchmark tool for dependency manager (not released, only available from the <a href="https://svn.apache.org/repos/asf/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.benchmark/">trunk</a>.</p>
</li>
<li>
<p>The Annotations "Factory Sets" are deprecated (FELIX-4684): You can now use a DS-like ComponentFactory API by a nice api which is exported by the runtime bundle.
See this <a href="https://svn.apache.org/repos/asf/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAndParameterFactory.java">example</a> from the samples in the source distribution.</p>
</li>
<li>
<p>Since the R8 version, a new "<code>dm-lambda</code>" library has been introduced in the distribution. This new library allows to programmatically declare OSGi components using a new style based on java8 lambda expressions and other goodies like method references.</p>
</li>
<li>
<p>Since the R8 version, you can now provide "configuration types". Configuration types are a new feature that allows you to specify an interface that is implemented by DM and such interface is then injected to your configuration callback instead of an actual configuration dictionary. </p>
</li>
</ul>
<h1 id="sample-code">Sample code<a class="headerlink" href="#sample-code" title="Permanent link">&para;</a></h1>
<p>The source distribution includes many sample codes which can be run directly under Eclipse and BndTools. The samples are available in the 
org.apache.felix.dependencymanager.samples/ module.
Some of the samples require that you configure some pids or factory pids from Web Console, which can be accessed using <em>http://localhost:8080/system/console/configMgr</em> URL.
Please consult org.apache.felix.dependencymanager.samples/README.samples for up to date instructions on how to execute the various examples.</p>
      <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
        Rev. 1733188 by pderop on Tue, 1 Mar 2016 23:23:14 +0000
      </div>
      <div class="trademarkFooter"> 
        Apache Felix, Felix, Apache, the Apache feather logo, and the Apache Felix project
        logo are trademarks of The Apache Software Foundation. All other marks mentioned
        may be trademarks or registered trademarks of their respective owners.
      </div>
    </div>
  </body>
</html>
