<!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

       http://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 - Apache Felix iPOJO Feature Overview</title>
    <link rel="icon" href="/res/favicon.ico">

    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="The most powerful component model for OSGi">


    <link href="/ipojo/web/bootstrap/css/bootstrap-cerulean.css" rel="stylesheet">
    <link href="/ipojo/web/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
    <link href="/ipojo/web/bootstrap/css/font-awesome.min.css" rel="stylesheet">
    <link href="/ipojo/web/style.css" rel="stylesheet">

    <!-- Overide alert's colors -->
    <link href="/ipojo/web/bootstrap/css/alert.css" rel="stylesheet">

    <link rel="stylesheet" href="/ipojo/web/github.css" type="text/css" media="all">


    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script src="/ipojo/web/bootstrap/js/bootstrap.min.js"></script>

</head>

<body data-spy="scroll" data-target=".subnav">
    <div class="navbar navbar-fixed-top navbar-inverse">
        <div class="navbar-inner">
            <div class="container">
               <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
                </a>
                <a class="brand" href="/documentation/subprojects/apache-felix-ipojo.html">Apache Felix iPOJO</a>

                 <div class="nav-collapse" id="main-menu">
                    <ul class="nav" id="main-menu-left">
                        <li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-news.html">News</a></li>
                        <li><a href="http://felix.apache.org/downloads.cgi">Downloads</a></li>

                        <li class="dropdown">
                            <a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials <b class="caret"></b></a>
                            <ul class="dropdown-menu" id="tutorials-menu">
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-why-choose-ipojo.html">Why choose iPOJO</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-successstories.html">Success stories</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-feature-overview.html">Features</a></li>
                                <li class="divider"></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-in-10-minutes.html">iPOJO in 10 minutes</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/how-to-use-ipojo-annotations.html">Using Annotations</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-hello-word-maven-based-tutorial.html">Maven tutorial</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-advanced-tutorial.html">Advanced tutorial</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/apache-felix-ipojo-dosgi.html">Using Distributed OSGi</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-composition-tutorial.html">Application Composition</a></li>
                            </ul>
                        </li>

                        <li class="dropdown">
                            <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation <b class="caret"></b></a>
                            <ul class="dropdown-menu" id="user-guide-menu">
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/service-requirement-handler.html">Requiring a service</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/providing-osgi-services.html">Providing a service</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/lifecycle-callback-handler.html">Lifecycle management</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/configuration-handler.html">Configuration</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/architecture-handler.html">Introspection</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/controller-lifecycle-handler.html">Impacting the lifecycle</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/injecting-bundle-context.html">Accessing the Bundle Context</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-instances.html">Creating instances</a></li>
                                <li class="divider"></li>
                                <li class="dropdown-submenu">
                                    <a tabindex="-1" href="#">External <em>handlers</em></a>
                                    <ul class="dropdown-menu">
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/event-admin-handlers.html">Asynchronous communication</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/ipojo-jmx-handler.html">JMX management</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/extender-pattern-handler.html">Extender pattern</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/white-board-pattern-handler.html">Whiteboard pattern</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/temporal-service-dependency.html">Temporal dependencies</a></li>
                                    </ul>
                                </li>
                                <li class="dropdown-submenu">
                                   <a tabindex="-1" href="#">Configuration Admin &amp; Factories</a>
                                    <ul class="dropdown-menu">
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/combining-ipojo-and-configuration-admin.html">iPOJO and config admin</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-factory-service.html">Using the iPOJO Factory service</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/how-to-use-ipojo-factories.html">Factories and Instances</a></li>
                                    </ul>
                                </li>
                                <li class="divider"></li>
                                <li class="dropdown-submenu">
                                    <a tabindex="-1" href="#">Advanced topics</a>
                                    <ul class="dropdown-menu">
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/instance-vs-service-controller.html">Instance vs. Service Controllers</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/service-binding-interceptors.html">Service Binding Interceptors</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/using-xml-schemas.html">XML Schemas</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-api.html">Using the iPOJO API</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/constructing-pojo-objects-with-factory-methods.html">Constructing service objects with factory methods</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-ipojo-introspection-api.html">Using the introspection API</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-testing-components.html">Testing components</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-stereotypes.html">Using @Stereotypes</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-eclipse-integration.html">Eclipse Integration</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-extender-configuration.html">Configuring iPOJO's Extender</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-faq.html">FAQ</a></li>
                                        <li class="divider"></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-write-your-own-handler.html">Handler development</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-use-ipojo-manipulation-metadata.html">Manipulation Metadata </a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/dive-into-the-ipojo-manipulation-depths.html">Dive into the iPOJO Manipulation depths</a></li>
                                        <li><a href="http://felix.apache.org/ipojo/api/1.12.1">Javadoc</a></li>
                                    </ul>
                                </li>
                            </ul>
                        </li>

                        <li class="dropdown" id="tools-menu">
                            <a class="dropdown-toggle" data-toggle="dropdown" href="#">Tools <b class="caret"></b></a>
                            <ul class="dropdown-menu" id="swatch-menu">
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-ant-task.html">Ant Task</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-maven-plug-in.html">Maven Plugin</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-arch-command.html">Architecture commands</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/apache-felix-ipojo-online-manipulator.html">Online Manipulator</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-webconsole-plugin.html">Webconsole plugin</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-karaf-feature.html">Apache Karaf Features</a></li>
                            </ul>
                        </li>

                        <li class="dropdown" id="community-menu">
                            <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community <b class="caret"></b></a>
                            <ul class="dropdown-menu" id="swatch-menu">
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-support.html">Support</a></li>
                                <li><a href="http://www.apache.org/">ASF</a></li>
                                <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                                <li><a href="http://www.apache.org/foundation/thanks.html">Sponsors</a></li>
                            </ul>
                        </li>

                        <li class="dropdown" id="misc-menu">
                            <a class="dropdown-toggle" data-toggle="dropdown" href="#">Misc <b class="caret"></b></a>
                            <ul class="dropdown-menu" id="swatch-menu">
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedvms.html">Supported JVMs</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedosgi.html">Supported OSGi Implementations</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/articles-and-presentations.html">Article & Presentations</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/developing-camel-mediators-with-ipojo.html">Developping Camel mediators with iPOJO</a></li>
                            </ul>
                        </li>
                    </ul>
                    <ul class="nav pull-right" id="main-menu-right">
                        <li><a rel="tooltip" target="_blank" href="http://felix.apache.org">Apache Felix <i class="icon-share-alt"></i></a></li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <div class="container">
        <div class="content">
            <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>
<h1 id="apache-felix-ipojo-feature-overview">Apache Felix iPOJO Feature Overview<a class="headerlink" href="#apache-felix-ipojo-feature-overview" title="Permanent link">&para;</a></h1>
<p><em>This page is an attempt to put all of the features and benefits of iPOJO into a single high-level list so that it is easy to see why you will want to use iPOJO for your applications. This list is not exhaustive, but represents the set of features that are potentially most likely to be needed or are unique.</em></p>
<h2 id="core-features">Core Features<a class="headerlink" href="#core-features" title="Permanent link">&para;</a></h2>
<ul>
<li><em>POJO-based approach</em> - Most components can simply be POJOs and need not have iPOJO- or OSGi-specific API in them.</li>
<li><em>Simple service provisioning</em> - iPOJO manages all aspects of providing an OSGi service.</li>
<li><em>Service property management</em><ul>
<li>Can be controlled by configuration properties.</li>
<li>Can be mapped to member fields and automatically updated by the component instance at run time by just changing the member field value.</li>
</ul>
</li>
<li>Service life cycle participation<ul>
<li>The component instance can participate in the service life cycle by declaring a boolean member field that indicates when the service is actually valid (normally a service is assumed to be       valid if the component instance's dependencies are satisfied).</li>
</ul>
</li>
<li><em>Rich service dependency model</em> - Automatically manages a full spectrum of      service dependencies.<ul>
<li><em>Optional/mandatory</em> service dependencies.</li>
<li><em>Singular/aggregate</em> service dependencies.</li>
<li><em>Default service implementations</em> - The component can provide default       implementations of dependent services if no providers are available.</li>
<li><em>Member field or method injection</em> - Also supported in combination.<ul>
<li>Member field injection does not require cluttering component code with bind/unbind methods.</li>
<li>Member method injection supports various method signatures<ul>
<li>method() - Acts as a simple event-callback mechanism.</li>
<li>method(<service-interface> svc) - Receives the service object cast to the         appropriate interface.</li>
<li>method(ServiceReference ref) - Receives the OSGi ServiceReference for the service object.</li>
<li>method(ServiceReference ref, <service-interface> svc) - Receives the OSGi ServiceReference and the service object cast to the         appropriate interface.</li>
</ul>
</li>
</ul>
</li>
<li><em>Binding policies</em> -       Allow components to control how/when their dependencies are bound.<ul>
<li><em>Static</em> - Static dependencies <em>cannot</em> change        without invalidating the component instance, so injected services        typically do not change at run time and service departures typically        result in the component instance being destroyed and potentially        recreated.</li>
<li><em>Dynamic</em> - Dynamic dependencies <em>can</em> change        without invalidating the component instance, so injected services can        change at run time, but <em>do not</em> change with respect to service        priority changes (i.e., they do not automatically switch if a higher        priority service appears).</li>
<li><em>Dynamic priority</em> - Dynamic priority dependencies <em>can</em> change without invalidating the component instance and <em>do</em> dynamically update based on service priority rankings at run time.</li>
</ul>
</li>
</ul>
</li>
<li><em>Configuration property management</em> - Integrated with OSGi Configuration Admin      service.</li>
<li><em>Member field/member method injection</em> - Also supported in combination.<ul>
<li><em>Service property propagation</em> - Configuration properties can be configured to       update service properties if the component instance is providing a       service.</li>
</ul>
</li>
<li><em>Sophisticated concurrency handling</em> - Externalizes concurrency issues so that      component code does not need to worry about services changing while they      are in use (i.e., no locking protocol in component code).</li>
<li><em>Deferred instance creation</em> - POJO instances are not created until they      are actually needed, thus reducing start-up overhead.</li>
<li><em>Introspection support</em> -      Supports introspecting a component instance and the state of its      dependencies.<ul>
<li>Interactive introspection is supported by an arch command for Felix' shell.</li>
</ul>
</li>
<li><em>Extensible</em> - All      iPOJO features are implemented via a set of <code>handlers</code>, which is an      extensibility mechanism open to developers by which they can support      custom functionality (e.g., exporting a provided service remotely, etc.).</li>
</ul>
<h2 id="advancedexperimental-features">Advanced/Experimental Features<a class="headerlink" href="#advancedexperimental-features" title="Permanent link">&para;</a></h2>
<ul>
<li><em>Composite model</em> -      iPOJO supports a flexible architectural-like model for composing services.<ul>
<li><em>Flexible composites</em> - A       composite is an abstract component implementation.</li>
<li><em>Sub-services and sub-components</em> - Unlike traditional component composition, an        iPOJO composite can be described in terms of services in addition to        sub-components; thus sub-service implementation selection is deferred        until run time.</li>
<li><em>Optional/mandatory</em> sub-services and/or sub-components.</li>
<li><em>Singular/aggregate</em> sub-services and/or sub-components.</li>
<li><em>Hierarchical</em> - A       composite component may contain other composite components.</li>
<li><em>Composite scoping</em> - A composite acts as a scoping mechanism        where sub-services/sub-components are not visible externally and        external services are not visible internally.</li>
<li><em>Service dependencies</em> - A       composite has the full expressive capabilities of primitive components       when it comes to service dependencies (see above description of service       dependencies in core features).</li>
<li>For a composite, a service dependency        effectively imports an external service into the composite scope from        its parent composite (which may be the OSGi service registry in the root        case).</li>
<li><em>Composite is just a component</em> - Composites can be instantiated and       automatically managed just like a primitive component.</li>
</ul>
</li>
</ul>
        </div>
    </div>

    <hr/>

    <div class="container">
        <footer id="footer">
            <div class="row">
                <div class="trademarkFooter span7">
                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 class="timestamp span3 offset2">
                Rev. 1700393 by cziegeler on Tue, 1 Sep 2015 06:04:06 +0000
                </div>
            </div>
        </footer>
    </div>
</body>

<script type="text/javascript">
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>

<script type="text/javascript">
    try{
        var pageTracker = _gat._getTracker("UA-1518442-4");
        pageTracker._trackPageview();
    } catch(err) {}
</script>

</html>
