
<!DOCTYPE html>
<html lang="en">
<head>
	<meta name="generator" content="Hugo 0.111.3">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Welcome to Apache Celix</title>

    
    <link rel="icon" href="/assets/img/favicon.ico">

    
    <link href="/assets/css/bootstrap.min.css" rel="stylesheet">

    
    <link href="/assets/css/style.css" rel="stylesheet">

    
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">

    
<script>
  var _paq = window._paq = window._paq || [];
   
  _paq.push(['disableCookies']);
   
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytics.apache.org/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '9']);
    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>


</head>
<body>

<a href="https://github.com/apache/celix" class="github-ribbon">
    <img src="/assets/img/forkme_right_red_aa0000.png" alt="Fork me on GitHub">
</a>


<nav class="navbar navbar-expand-lg navbar-dark bg-primary fixed-top">
    <div class="container">
        <a class="navbar-brand" href="/">
            <img src="/assets/img/celix-white.svg" height="40" class="d-inline-block align-top" alt="Celix Logo">
        </a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarResponsive">
            <ul class="navbar-nav ml-auto">
                <li class="nav-item active">
                    <a class="nav-link" href="/">Home</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="/download.cgi">Download</a>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="ddDocs" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Docs
                    </a>
                    <div class="dropdown-menu" aria-labelledby="ddDocs">
                        <a class="dropdown-item" href="/docs/2.4.0/docs.html">2.4.0 (latest)</a>
                        <a class="dropdown-item" href="/docs/2.3.0/docs.html">2.3.0</a>
                        <a class="dropdown-item" href="/docs/2.2.1/docs.html">2.2.1</a>
                        <a class="dropdown-item" href="/docs/2.1.0/docs.html">2.1.0</a>
                    </div>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="ddContributing" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Contributing
                    </a>
                    <div class="dropdown-menu" aria-labelledby="ddContributing">
                        <a class="dropdown-item" href="/contributing/youatcelix.html">You at Celix</a>
                        <a class="dropdown-item" href="/contributing/submitting-patches.html">Submitting patches</a>
                        <a class="dropdown-item" href="/contributing/source-and-builds.html">Source code and builds</a>
                        <hr>
                        <a class="dropdown-item" href="/contributing/releasing.html">Releasing</a>
                        <a class="dropdown-item" href="/contributing/volunteers.html">Volunteers</a>
                        <a class="dropdown-item" href="https://whimsy.apache.org/board/minutes/Celix.html">Board Reports</a>
                    </div>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="ddSupport" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Support
                    </a>
                    <div class="dropdown-menu" aria-labelledby="ddSupport">
                        <a class="dropdown-item" href="/support/mailing-list.html">Mailing Lists</a>
                        <a class="dropdown-item" href="/support/issue-tracking.html">Issue Tracking</a>
                    </div>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="ddFoundation" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        ASF
                    </a>
                    <div class="dropdown-menu" aria-labelledby="ddFoundation">
                        <a class="dropdown-item" href="https://www.apache.org/">ASF Home</a>
                        <a class="dropdown-item" href="https://www.apache.org/foundation/how-it-works.html">How it works</a>
                        <a class="dropdown-item" href="https://www.apache.org/licenses/">License</a>
                        <a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
                        <a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
                        <a class="dropdown-item" href="https://www.apache.org/security/">Security</a>
                        <a class="dropdown-item" href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a>
                    </div>
                </li>
            </ul>
        </div>
    </div>
</nav>



<div class="section">
    <div class="container my-5">
        <div class="section no-pad-bot" id="index-banner">
            <div class="col-sm-12">
                <h1 class="text-center">Welcome to Apache Celix</h1>
            </div>

            <div class="row my-4">
                <img class="text-center mx-auto img-home" src="/assets/img/celix.svg" alt="Celix Logo">
            </div>

            <div class="col-sm-12 mb-4">
                <h2 class="text-center">An implementation of the OSGi specification adapted to C and C++</h2>
            </div>

            <div class="col-sm-12 text-center mx-auto">
                <a href="/download.cgi" class="btn btn-primary btn-lg mb-1">
                    <i class="fas fa-download"></i> DOWNLOAD
                </a>
                &nbsp;
                <a href="/docs/2.4.0/docs.html" class="btn btn-primary btn-lg mb-1">
                    <i class="fas fa-book-open"></i> GETTING STARTED
                </a>
            </div>
        </div>
    </div>
</div>

<div class="section light-grey">
    <div class="container py-3">

        <div class="row my-4">
            <div class="col-sm-12 card">
                <div class="card-body">
                    <h4 class="card-title">Welcome to Apache Celix</h4>
                    <p class="card-text">
                        Apache Celix is an implementation of the OSGi specification adapted to C and C++. It is a framework to
                        develop (dynamic) modular software applications using component and/or service-oriented programming.
                    </p>

                    <p class="card-text">
                        Apache Celix is primarily developed in C and adds an additional abstraction, in the form of a library, to
                        support for C++.
                    </p>

                    <p class="card-text">
                        Modularity in Apache Celix is achieved by supporting - run-time installed - bundles. <code>Bundles</code>
                        are zip files and can contain software modules in the form of shared libraries. <code>Modules</code> can
                        provide and request dynamic services, for and from other modules, by interacting with a provided bundle
                        context. <code>Services</code> in Apache Celix are "plain old" structs with function pointers or "plain
                        old C++ Objects" (POCO).
                    </p>
                </div>
            </div>
        </div>

        <div class="row my-4">
            <div class="col-sm-12 card">
                <div class="card-body">
                    <h4 class="card-title">News</h4>
                    <p class="card-text">
                        <strong>29-September-2023</strong> - After a successful vote Celix 2.4.0 is released.<br>
                        <strong>14-July-2022</strong> - After a successful vote Celix 2.3.0 is released.<br>
                        <strong>17-May-2020</strong> - After a successful vote Celix 2.2.1 is released.<br>
                        <strong>09-Jan-2020</strong> - After a successful vote Celix 2.2.0 is released.<br>
                        <strong>30-Jan-2018</strong> - After a successful vote Celix 2.1.0 is released.<br>
                        <strong>26-Oct-2016</strong> - After a successful vote Celix 2.0.0 is released.<br>
                        <strong>16-Jul-2014</strong> - After a successful graduation vote Apache Celix has graduated to a top-level project.<br>
                        <strong>25-Feb-2014</strong> - After a successful vote Celix 1.0.0.incubating is released. The release is now available via the <a href="/download.cgi">download</a> section.<br>
                        <strong>16-Dec-2012</strong> - After a successful vote Celix 0.0.1-incubating is released.<br>
                    </p>
                </div>
            </div>
        </div>

    </div>
</div>


<footer class="py-3 bg-secondary">
    <div class="container">
        <div class="row">
            <div class="col-md-8 text-center">
                <p class="m-0 text-white">
                    Copyright &copy; 2024 The Apache Software Foundation, Licensed under
                    the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
                    <br>
                    Apache Celix, Celix, Apache, the Apache feather logo and the Apache Celix logo are trademarks of The Apache Software Foundation.
                </p>
            </div>
            <div class="col-md-4 text-center">
                <a href="https://www.apache.org/events/current-event.html" target="_blank">
                    <img src="https://www.apache.org/events/current-event-234x60.png" title="Apache Event" width="234" height="60" border="0">
                </a>
            </div>
        </div>
    </div>
</footer>


<script src="/assets/js/jquery.min.js"></script>
<script src="/assets/js/bootstrap.bundle.min.js"></script>


</body>
</html>
