SlideShare a Scribd company logo
Apache, OSGi,
Blueprint and Karaf

     Guillaume Nodet
      April 12, 2011
Your presenter:
  Guillaume Nodet
FuseSource http://fusesource.com

Apache   Software Foundation Member, VP
Apache   Karaf, PMC Member of ActiveMQ,
Aries,   Camel, CXF, Felix, Geronimo,
Karaf,   Mina, Ode, ServiceMix

Co-creator of ServiceMix, Karaf, Mina
SSHD

Member of the OSGi EEG
Overall agenda

The Apache Software Foundation

OSGi overview

OSGi at the ASF

Quick Blueprint intro

Apache Karaf
The Apache Software
    Foundation
 What it is and how it works...
Schedule
What is the
Apache Software   Project
Foundation        Management
A bit of          The Foundation
history           infrastructure
Meritocracy       Other
                  foundation
The Foundation    entities
structure
                  Conclusion
Roles
What is the Apache
Software Foundation?
   Non-profit organization

   Open, collaborative software
   development

   Independent legal entity for
   donations

   Means for individuals to be
   sheltered from legal suits

   Protect the ‘Apache’ brand
History

HTTPD web server from the NCSA

Community to support it

Developers called themselves the
“Apache Group”

ASF created in 1999
Meritocracy
Not initiated by a single person

More people attracted and started
contributing

When a person “earned” the merit,
access to the repository was granted

Scales well as newcomers are
volunteers and no power to steal
Foundation structure


 Projects are delegated authority and
 are self-governing

 Board of Directors

 Project Management Committees
Board of Directors

Manage and oversee the corporation,
its assets and resources

Technical authority assigned to PMC

Nine individuals (members), elected
every year
Project Management
    Committees
Established and terminated by
resolution of the Board

One officer (VP) appointed by the
Board (PMC chair). Establish rules,
report to the board, perform
administrative tasks

PMC oversee legal aspects and
community health
Officers



Oversee the day-to-day affairs

Elected by the Board
Roles
user

developer

committer

PMC member

PMC chair

ASF member
Project Management


Collaborative and consensus-based
pocess

No single set of rules between PMCs
Project Management
      (cont)

Communication     Operation
Documentation     Individuals
Decision making   Confidentiality
Philosophy        vs public
The Incubator

fitering (non technical) proposals of
new projects

help creation / infrastrucure

mentor the incubated community to
become open and meritocratic

evaluate the maturity for graduation
The Incubator
       (cont.)
working code base

copyright donation

sponsoring member

increase diversity (long term
stability, variety of technical
visions)
Other entities


Infrastructure team

Attic, Labs, Legal Affairs, Public
Relations, Conferences ...
Apache, osgi and karaf par Guillaume Nodet
OSGi
OSGi Alliance

Formerly known as the Open Services
Gateway Initiative

Industry consortium

Defines OSGi Service Platform

Serveral expert groups
OSGi Architecture
     Overview
OSGi Framework
Component oriented

Service oriented architecture

Run multiple applications

Single VM

Separate class loader per bundle

Dynamic
OSGi Framework
    layers
OSGi momentum

OSGi technology has moved beyond
original target domain

Initial success story was Eclipse RCP

More recent success stories in
enterprise scenarios
OSGi Specifications
OSGi R4.2 released in Sept/09

  Blueprint, Remote Services, Web
  Applications, JNDI, JTA, JDBC, JPA

Next Core release in Q1 2011

Next Enterprise release in Q1 2012

  Subsystems, OBR ...
Modularity Layer
Standard Java
Modularity Limitations
 Limited scoping mechanism

 Simplitic version handling

 Implicit dependencies

 Split packages by default

 Low-level support for dynamics

 Unsophisticated consitency model

 Missing module concept
OSGi Framework
modularity support
Resolves nearly all deficiencies

  OSGi bundles as a boundary for a
  module

  Bundle metadata explicitly declares
  versioned dependencies

  Framework automatically manages
  bundle code dependencies

  Framework enforces sophisticated
  consistency rules for class loading
Bundle Lifecycle
Apache, osgi and karaf par Guillaume Nodet
OSGi at the ASF
Overview of the various projects
88 Top Level Projects

More then 40 incubating projects
Classification

Non Java

Non OSGi aware

OSGi aware (provide OSGi bundles)

OSGi based
OSGi Based
Aries

Felix             Incubator

Karaf                 Ace

ServiceMix            Celix

Sling                 Clerezza

Geronimo (i.p.)
OSGi Aware
Abdera            Directory (i.p.)

ActiveMQ          Harmony

Axis              HttpComponents

Camel             Mina

Commons           OpenEJB

CXF               OpenJPA

DB                Synapse
Apache, osgi and karaf par Guillaume Nodet
Blueprint
DI brought to OSGi
Overview

Dependency injection / IOC

Handle legacy code

Handle OSGi dynamics

Hide the OSGi API
Configuration
Extender pattern

XML resources

Metadata


    Blueprint Bundle                    Metadata
                        XML




                       Blueprint Extender
Simple example


<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0”>
    <service interface=“org.poitoucharentesjug.User”>
        <bean class=“org.poitoucharentesjug.impl.UserImpl”>
             <argument value=“gnodet” />
        </bean>
    </service>
</blueprint>
Managers

                       manager




bean               service-reference                service




       reference                   reference-list
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume Nodet
Overview
Apache Karaf is a small OSGi based
     runtime which provides a
 lightweight container onto which
      various components and
  applications can be deployed.
Karaf Console
Poweful command line shell

Highly extensible

SSH access
Logging
Support multiple APIs

  OSGi, JCL, JUL, Log4j, Slf4j

Uses a single back-end

Dynamic reconfiguration through
ConfigAdmin

Shell integration
Deployer
Provisionning

Features concept

Maven integration (plugin, url handler)

Drives OSGi SubSystems specification
Other

OS integration

Instances management

JAAS based security
Apache, osgi and karaf par Guillaume Nodet
gnodet@gmail.com

More Related Content

Apache, osgi and karaf par Guillaume Nodet

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. The Foundation structure\nAs the Apache Web Server started to grow in market share and popularity, due to synergy of its technical merit and to the openness of the community behind the project, people started to create satellite projects. Influenced by the spirit of the community they were used to, they adopted the same traditions of community management.\nSo, by the time the ASF was created, there were several separate communities, each focused on a different side of the &quot;web serving&quot; problem, but all united by a common set of goals and a respected set of cultural traditions in both etiquette and process.\nThese separate communities were referred to as &quot;projects&quot; and while similar, each of them exhibited little differences that made them special.\nIn order to reduce friction and allow for diversity to emerge, rather than forcing a monoculture from the top, the projects are designated the central decision-making organizations of the Apache world. Each project is delegated authority over development of its software, and is given a great deal of latitude in designing its own technical charter and its own governing rules.\nAt the same time, the cultural influence of the original Apache group was strong and the similarities between the various communities are evident, as we&apos;ll see later.\nThe foundation is governed by the following entities:\nBoard of Directors (board) governs the foundation and is composed of members.\nProject Management Committees (PMC) govern the projects, and they are composed of committers. (Note that every member is, by definition, also a committer.)\n\n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n