SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Celix
Universal	
  OSGi?

     Alexander	
  Broekhuis	
  
    alexander.broekhuis@luminis.eu




                                     1
Introduc?on


• Alexander	
  Broekhuis
• At	
  Luminis	
  since	
  2008
 • Small	
  SoEware	
  House
 • Research	
  and	
  innova?on	
  oriented
 • Involved	
  in	
  Open	
  Source	
  (Apache)
• Apache	
  commiLer	
  since	
  2010


                                                  2
Agenda

       • Celix
       • Services	
  in	
  C
       • Dynamic	
  Assembly
       • Remote	
  Services
       • Deployment
       • Celix	
  Status
       • Universal	
  OSGi
       • Demo
                                                                                                      3

-   Introduction, what is OSGi and what has Celix to do with it
-   Services in C -> How does Celix solve this
-   Dynamic Assembly -> with services, how does Celix wire these together
-   Remote Services, why are they important, and how to solve
-   Deployment of bundles, how to bundle libraries
-   Current status of Celix
-   What is Universal OSGi, and what is the relation with Celix
-   Demonstration of a simple hello world bundle (and if time permits, an example of service usage)
OSGi	
  is:

     • component	
  based	
  framework
     • allows	
  dynamic	
  assembly	
  of	
  components
     • Java,	
  so	
  independent	
  of	
  opera?ng	
  system

      OSGi	
  technology	
  is	
  the	
  dynamic	
  module	
  system	
  for	
  Java™
      OSGi	
  technology	
  is	
  Universal	
  Middleware.
      OSGi	
  technology	
  provides	
  a	
  service-­‐oriented,	
  component-­‐based	
  
      environment	
  for	
  developers	
  and	
  offers	
  standardized	
  ways	
  to	
  
      manage	
  the	
  so@ware	
  lifecycle.	
  These	
  capabiliBes	
  greatly	
  increase	
  
      the	
  value	
  of	
  a	
  wide	
  range	
  of	
  computers	
  and	
  devices	
  that	
  use	
  the	
  
      Java™	
  plaForm.
                                                                                                                4

Assuming OSGi is know by most people, only a short overview.
OSGi




           "-)*+((                                               !"#$%&'&($
                          "-)*+(($.
   )*+,*                               )*+,*   )*+,/-0

                          ,$)1(3$.                                +&/3$

    $-.              4-"-)*+((                 )*122"-0   )*12

                         4-"-)*+(($.




                                                            !"#$%&'()*+,'-



                                                                                                    5

And a simple example of a bundle with a service and the service registry.
The bundle contains a Store service, which is implemented by StoreImpl, and finally there is some code
to interact with the OSGi framework (the Activator).
OSGi

                                                             !"#$%&"'(")%*+#,

                                                                   !+-#"



                                       !"#$%&                      !"#$%&
                                                                                !"#$%
                                                                                  &"#$%'()*!!
           "-)*+((                                                !"#$%&'&($      +%,'()*!!
                          "-)*+(($.
   )*+,*                               )*+,*    )*+,/-0                         !"#$%&'!
                                                                                  ("#$%)*+,&-,.!!
                          ,$)1(3$.                                 +&/3$
                                                                                  /0,%(1!"%*&-,.!!
    $-.              4-"-)*+((                  )*122"-0   )*12
                                                                                  ("$%.*23,&-,.!!
                         4-"-)*+(($.
                                                                                !"#$%&'!&#!()
                                                                                  *+,-."#$&+/.!!



                                                             !"#$%&'()*+,'-



                                                                                                     5

And a simple example of a bundle with a service and the service registry.
The bundle contains a Store service, which is implemented by StoreImpl, and finally there is some code
to interact with the OSGi framework (the Activator).
Celix

     • OSGi	
  specifica?on	
  implemented	
  in	
  C
        • Adapted	
  where	
  needed
     • Focussed	
  on	
  Embedded	
  Dynamic	
  Systems
     • Based	
  on	
  Apache	
  Felix
     • Remote	
  Services
        • Distributed	
  Systems
        • Interoperability	
  with	
  Java

                                                                         6

Celix is an implementation of the OSGi specification in C.
- Without any relation with Java-OSGi, purely focussed on C
- Fundamental differences between C and Java, so there are differences
-- Most important ones:
--- Services -> Later more on this
--- Imported/Exported services instead of packages
- Focus on embedded systems
-- No relation with Java OSGi, can be used in C only environments
- Based on Apache Felix (hence the name Celix)
-- Ported were possible (resolver for example)
-- But not related too!
- Additionally, remote services are important
-- For use in distributed systems
-- But also provides a means to interact with Java OSGi
-- Later more on this.
Services	
  in	
  C


     • Follows	
  the	
  OSGi	
  Specifica?on
        • A	
  Service	
  Registry	
  for	
  tracking	
  services
        • Bundle	
  Ac?vators	
  for	
  registering	
  services
        • Bundle	
  Lifecycle	
  for	
  tracking	
  Bundle	
  state
     • Structs	
  instead	
  of	
  Interfaces
        • Using	
  func?on	
  pointers	
  to	
  forward	
  calls



                                                                                            7

Services in C
- Follow the OSGi spec where possible
-- Service Registry
-- Bundle Activators
-- Bundle lifecycle, state and cache
- C has no compilable/runtime interfaces, so services can’t be exposed using an interface
-- Use a struct with function pointers to solve this, more details on next slide
Services	
  in	
  C
     • Service
        • Struct	
  with	
  func?on	
  pointers
     • Ac?vator
        • start	
  /	
  stop
                                                                   Activator                    <struct>
     • Celix
                                                                                 create
                                                               + start                          Service
                                             registerService   + stop

        • bundleContext                                                 create

                                                                                          pointer
        • registry                   Celix                       Component


        • etc..                                   getService                     depends




                                                                                                           8

A service is a struct
- Uses function pointers to point to the actual implementation of a function
- An activator creates and initializes the struct
- The struct is registered at the registry as the service
- A component can retrieve this struct, and use the function pointers to use the actual implementation.
-- The component only requires the Struct to be able to compile/link
-- There is no direct link with the implementing component -> See next slide
Dynamic	
  Assembly
     • Dynamic	
  Loading
        • Library
                                                                   Depends
        • Using	
  dlfcn.h
           • dlopen	
  /	
  dlclose	
  
                                             <shared object>                     <shared object>
                                                  Celix           Initializes       Provider       Realizes


           • dlsym
                                                                                                       <struct>
                                                                                          Uses
                                                                                                       Provider
                                                                                                       Service



                                                                Initializes     <shared object>
                                                                                  Consumer


                                                               Depends




                                                                                                                  9

To be able to dynamically add/remove components from the system, dynamic loading is used.
- Components require the framework for compilation (bundle activator, registry etc) -> Depicted using
“depends”
- The framework needs to “initialize” a component via its activator, this cannot be a direct relation
since components can be added/removed during the runtime.

Dynamic Loading in C:
- libdl
- dlfcn.h
-- dlopen / dlclose for loading/unloading libraries
-- dlsym for library methods
Remote	
  Services


     • Remote	
  Service	
  Admin
        • Enterprise	
  Specifica?on
     • Interoperability
     • Protocol
        • Tuscany?
        • ZeroMQ?
        • Google	
  Protobufs?


                                                                                 10

Remote services
- Follows the Enterprise Specification
-- Hide remote aspects from the user
- Important for distributed environments
- But also important for interoperability -> More about this at Universal OSGi
The idea is clear, the implementation not
- What protocol should be used?
-- Has to be available in Java and C
-- Has to be able to serialize to something usable at both ends
-- Some examples...
Remote	
  Services

                                                           «service»
              Server                                        Server                   Client
                                                        imported = "true"



            «service»
             Server                 ServerStub            ServerProxy               Registry
          remote = "true"


                  «track»


                         Remote                                          Proxy
                        Publisher                                       Publisher




                                                           «service»
                                    «service»
                                                           Discovery
                                    Discovery
                                                            Service
                                     Service




                                                                                                       11

How are remote services used:
- In java, reflection is used to create endpoints (stub and proxy) at runtime. Marking a service as
remote is enough to expose it. Discovery is used to publish remote services on the network.
- In C, there is no such thing as reflection, so it is not possible to simple mark a service as remote.
-- Possible solution is to use a bundle with the service stub for a service, and publish this bundle when
remote access is required/requested.
-- The same applies to the server proxy on the client host.
Remote	
  Services

                                                           «service»
              Server                                        Server                   Client
                                                        imported = "true"



            «service»
             Server                 ServerStub            ServerProxy               Registry
          remote = "true"


                  «track»


                         Remote                                          Proxy
                        Publisher                                       Publisher




                                                           «service»
                                    «service»
          Stubs                                            Discovery                  Proxies
                                    Discovery
                                                            Service
                                     Service




                                                                                                       11

How are remote services used:
- In java, reflection is used to create endpoints (stub and proxy) at runtime. Marking a service as
remote is enough to expose it. Discovery is used to publish remote services on the network.
- In C, there is no such thing as reflection, so it is not possible to simple mark a service as remote.
-- Possible solution is to use a bundle with the service stub for a service, and publish this bundle when
remote access is required/requested.
-- The same applies to the server proxy on the client host.
Deployment
     • Bundling
        • Zip	
  file	
  with	
  Shared	
  Object
                                                                       Depends
           • (.so,	
  .dll,	
  .dylib,	
  ...)
        • Manifest                               <shared object>
                                                      Celix           Initializes
                                                                                     <shared object>
                                                                                        Provider       Realizes


           • Import	
  /	
  Export
                                                                                                           <struct>
                                                                                              Uses
                                                                                                           Provider

     • Run?me                                                                                              Service



        • Extracted	
  to	
  cache                                  Initializes     <shared object>
                                                                                      Consumer


                                                                   Depends




                                                                                                                      12

Deployment:
- Java uses JAR (zip) files, which can contain classes, but also additional resources.
- In C libraries cannot contain additional resources.
-- Solution is to use zip files to store the library and resources
-- Like Java, a Manifest is used to import/export services, but also to identify the library to use
-- At runtime this zip file is extracted to the cache, and the library is loaded/unloaded by the
framework.
Pla`orm	
  Support


• Apache	
  Portable	
  Run?me
 • Linux,	
  Unix,	
  Windows,	
  etc
 • Memory	
  pool
 • File	
  handling
 • Threads
• No	
  RealTime/Embedded
 • Reuse	
  APR	
  API


                                        13
Building


• CMake
 • Cross	
  pla`orm	
  /	
  Mul?	
  IDE
• Framework
 • Standard	
  library
• Bundle	
  macros
 • Create	
  bundle	
  zip
 • Add	
  library	
  and	
  resources


                                          14
Status	
  -­‐	
  Framework


     • Dynamic	
  Loading	
  of	
  Libraries
     • Service	
  Registry	
  for	
  Querying	
  and	
  Registering
     • Bundles	
  with	
  Manifest	
  for	
  Deployment
     • Service	
  Tracker	
  for	
  tracking	
  Services
     • Bundle	
  State	
  and	
  Life	
  Cycle
     • Bundle	
  Cache	
  for	
  Storing	
  State

                                                                      15

Status of Celix
Status	
  -­‐	
  Extras


     • Shell	
  Implementa?on	
  for	
  Inspec?ng	
  Bundles
        • ps/start/stop	
  command
     • Dependency	
  Manager	
  for	
  Dependencies
        • Simple	
  Implementa?on
        • Sta?c	
  Linked
     • Open	
  Source	
  at	
  Apache
        • Currently	
  in	
  the	
  Incubator


                                                                                                   16

Besides the framework, there are some additional items to make it easier to use/debug the framework.
These are all ported from Java (Felix) to C.
Finally, Celix is open sources at Apache, and currently in the Incubator.
We are always looking for more community members to support/use/implement Celix.
Universal	
  OSGi
     • RFP-­‐89
        • Proposed	
  to	
  the	
  mailing	
  list	
  in	
  2007
        • Since	
  then	
  remained	
  silent
        • Ongoing	
  effort	
  to	
  pick	
  up	
  again


     • Supported	
  Languages
        • C++	
  /	
  .NET	
  language	
  (C#)	
  /	
  ECMAScript
        • What	
  about	
  C?
     • Interest	
  from	
  Community?
                                                                    17

What is Universal OSGi:
- A RFP proposed in 2007
- After that, silence, but now being picked up again.
The RFP mentions:
- C++/C#/ECMAScript
- But not C
Looking for a community.
- Mailing list can be created.

What has this to do with Celix?
Universal	
  OSGi	
  -­‐	
  Celix
     • Na?ve	
  port	
  in	
  C
     • Status
        • Based	
  on	
  the	
  R4	
  Specifica?on
           • Deployable	
  bundles
           • Bundle	
  lifecycle
           • Service	
  registry
           • Framework	
  API
           • Remote	
  Services
        • Standards	
  for	
  IPC	
  and	
  communica?ons

                                                                                                   18

Celix is a native port of the OSGi spec in C.
The RFP requires that an OSGi implementation is based on the R4 Spec
Celix implements:
- Deployable bundles
- Bundle lifecycle
- Service registry
- Most of the Framework API
- Remote Services (planned)
-- Remote services are imported to be able to interact with different implementations of OSGi
-- At the time of the RFP there where no remote service, but they do provide a common/well specced
method to solve this.
-- Remote service should use standards for IPC and com to be able to interact with non-osgi systems.

Can Celix be an implementation of the Universal OSGi RFP? I do think so..
Finally, some examples:
Links

• Original	
  Proposal:
 • hLp://wiki.apache.org/incubator/CelixProposal
• Incubator	
  Mailing	
  List	
  Archive:
 • hLp://incubator.markmail.org/search/?q=Celix
• Incuba?on	
  Status:
 • hLp://incubator.apache.org/projects/celix.html
• Project	
  Page:
 • hLp://incubator.apache.org/celix/

                                                    19

Mais conteúdo relacionado

Mais procurados

Yearning jQuery
Yearning jQueryYearning jQuery
Yearning jQueryRemy Sharp
 
Mojolicious. Веб в коробке!
Mojolicious. Веб в коробке!Mojolicious. Веб в коробке!
Mojolicious. Веб в коробке!Anatoly Sharifulin
 
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)Javier Eguiluz
 
Advanced symfony Techniques
Advanced symfony TechniquesAdvanced symfony Techniques
Advanced symfony TechniquesKris Wallsmith
 
Yii, frameworks and where PHP is heading to
Yii, frameworks and where PHP is heading toYii, frameworks and where PHP is heading to
Yii, frameworks and where PHP is heading toAlexander Makarov
 
Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)Kris Wallsmith
 
Getting up & running with zend framework
Getting up & running with zend frameworkGetting up & running with zend framework
Getting up & running with zend frameworkSaidur Rahman
 
And now you have two problems. Ruby regular expressions for fun and profit by...
And now you have two problems. Ruby regular expressions for fun and profit by...And now you have two problems. Ruby regular expressions for fun and profit by...
And now you have two problems. Ruby regular expressions for fun and profit by...Codemotion
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说Ting Lv
 
A Little Backbone For Your App
A Little Backbone For Your AppA Little Backbone For Your App
A Little Backbone For Your AppLuca Mearelli
 
Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3makoto tsuyuki
 
Mojolicious - A new hope
Mojolicious - A new hopeMojolicious - A new hope
Mojolicious - A new hopeMarcus Ramberg
 
Mojolicious: what works and what doesn't
Mojolicious: what works and what doesn'tMojolicious: what works and what doesn't
Mojolicious: what works and what doesn'tCosimo Streppone
 
OSCON Google App Engine Codelab - July 2010
OSCON Google App Engine Codelab - July 2010OSCON Google App Engine Codelab - July 2010
OSCON Google App Engine Codelab - July 2010ikailan
 

Mais procurados (20)

Yearning jQuery
Yearning jQueryYearning jQuery
Yearning jQuery
 
Mojolicious. Веб в коробке!
Mojolicious. Веб в коробке!Mojolicious. Веб в коробке!
Mojolicious. Веб в коробке!
 
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
 
Symfony2 and AngularJS
Symfony2 and AngularJSSymfony2 and AngularJS
Symfony2 and AngularJS
 
Advanced symfony Techniques
Advanced symfony TechniquesAdvanced symfony Techniques
Advanced symfony Techniques
 
Yii, frameworks and where PHP is heading to
Yii, frameworks and where PHP is heading toYii, frameworks and where PHP is heading to
Yii, frameworks and where PHP is heading to
 
Play!ng with scala
Play!ng with scalaPlay!ng with scala
Play!ng with scala
 
Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)
 
Jsp
JspJsp
Jsp
 
Getting up & running with zend framework
Getting up & running with zend frameworkGetting up & running with zend framework
Getting up & running with zend framework
 
Getting up and running with Zend Framework
Getting up and running with Zend FrameworkGetting up and running with Zend Framework
Getting up and running with Zend Framework
 
CodeIgniter 3.0
CodeIgniter 3.0CodeIgniter 3.0
CodeIgniter 3.0
 
And now you have two problems. Ruby regular expressions for fun and profit by...
And now you have two problems. Ruby regular expressions for fun and profit by...And now you have two problems. Ruby regular expressions for fun and profit by...
And now you have two problems. Ruby regular expressions for fun and profit by...
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说
 
A Little Backbone For Your App
A Little Backbone For Your AppA Little Backbone For Your App
A Little Backbone For Your App
 
Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3
 
Presentation
PresentationPresentation
Presentation
 
Mojolicious - A new hope
Mojolicious - A new hopeMojolicious - A new hope
Mojolicious - A new hope
 
Mojolicious: what works and what doesn't
Mojolicious: what works and what doesn'tMojolicious: what works and what doesn't
Mojolicious: what works and what doesn't
 
OSCON Google App Engine Codelab - July 2010
OSCON Google App Engine Codelab - July 2010OSCON Google App Engine Codelab - July 2010
OSCON Google App Engine Codelab - July 2010
 

Destaque

50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)Heinz Marketing Inc
 
Prototyping is an attitude
Prototyping is an attitudePrototyping is an attitude
Prototyping is an attitudeWith Company
 
10 Insightful Quotes On Designing A Better Customer Experience
10 Insightful Quotes On Designing A Better Customer Experience10 Insightful Quotes On Designing A Better Customer Experience
10 Insightful Quotes On Designing A Better Customer ExperienceYuan Wang
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionIn a Rocket
 
How to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media PlanHow to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media PlanPost Planner
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting PersonalKirsty Hulse
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldabaux singapore
 

Destaque (8)

50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)
 
Prototyping is an attitude
Prototyping is an attitudePrototyping is an attitude
Prototyping is an attitude
 
10 Insightful Quotes On Designing A Better Customer Experience
10 Insightful Quotes On Designing A Better Customer Experience10 Insightful Quotes On Designing A Better Customer Experience
10 Insightful Quotes On Designing A Better Customer Experience
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming Convention
 
How to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media PlanHow to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media Plan
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting Personal
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
 
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
 

Semelhante a Celix universal OSGi

ApacheCon NA11 - Apache Celix, Universal OSGi?
ApacheCon NA11 - Apache Celix, Universal OSGi?ApacheCon NA11 - Apache Celix, Universal OSGi?
ApacheCon NA11 - Apache Celix, Universal OSGi?abroekhuis
 
cdac@parag.gajbhiye@test123
cdac@parag.gajbhiye@test123cdac@parag.gajbhiye@test123
cdac@parag.gajbhiye@test123Parag Gajbhiye
 
Windows Server 2008 (PowerShell Scripting Uygulamaları)
Windows Server 2008 (PowerShell Scripting Uygulamaları)Windows Server 2008 (PowerShell Scripting Uygulamaları)
Windows Server 2008 (PowerShell Scripting Uygulamaları)ÇözümPARK
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenerytoddbr
 
Web automation with #d8rules (European Drupal Days 2015)
Web automation with #d8rules (European Drupal Days 2015)Web automation with #d8rules (European Drupal Days 2015)
Web automation with #d8rules (European Drupal Days 2015)Eugenio Minardi
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVCAlive Kuo
 
RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009Roland Tritsch
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
The Web on OSGi: Here's How
The Web on OSGi: Here's HowThe Web on OSGi: Here's How
The Web on OSGi: Here's Howmrdon
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesAlfresco Software
 
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)Doris Chen
 
Refresh Austin - Intro to Dexy
Refresh Austin - Intro to DexyRefresh Austin - Intro to Dexy
Refresh Austin - Intro to Dexyananelson
 
Lecture 03 - JQuery.pdf
Lecture 03 - JQuery.pdfLecture 03 - JQuery.pdf
Lecture 03 - JQuery.pdfLê Thưởng
 
Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD Combination
Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD CombinationLotusphere 2012 Speedgeeking - jQuery & Domino, a RAD Combination
Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD CombinationSean Burgess
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...J V
 
SharePoint and jQuery Essentials
SharePoint and jQuery EssentialsSharePoint and jQuery Essentials
SharePoint and jQuery EssentialsMark Rackley
 

Semelhante a Celix universal OSGi (20)

ApacheCon NA11 - Apache Celix, Universal OSGi?
ApacheCon NA11 - Apache Celix, Universal OSGi?ApacheCon NA11 - Apache Celix, Universal OSGi?
ApacheCon NA11 - Apache Celix, Universal OSGi?
 
cdac@parag.gajbhiye@test123
cdac@parag.gajbhiye@test123cdac@parag.gajbhiye@test123
cdac@parag.gajbhiye@test123
 
Windows Server 2008 (PowerShell Scripting Uygulamaları)
Windows Server 2008 (PowerShell Scripting Uygulamaları)Windows Server 2008 (PowerShell Scripting Uygulamaları)
Windows Server 2008 (PowerShell Scripting Uygulamaları)
 
Cocoon OSGi CocoonGT2007
Cocoon OSGi CocoonGT2007Cocoon OSGi CocoonGT2007
Cocoon OSGi CocoonGT2007
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
Web automation with #d8rules (European Drupal Days 2015)
Web automation with #d8rules (European Drupal Days 2015)Web automation with #d8rules (European Drupal Days 2015)
Web automation with #d8rules (European Drupal Days 2015)
 
Node azure
Node azureNode azure
Node azure
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
 
RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
The Web on OSGi: Here's How
The Web on OSGi: Here's HowThe Web on OSGi: Here's How
The Web on OSGi: Here's How
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best Practices
 
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
 
Refresh Austin - Intro to Dexy
Refresh Austin - Intro to DexyRefresh Austin - Intro to Dexy
Refresh Austin - Intro to Dexy
 
Lecture 03 - JQuery.pdf
Lecture 03 - JQuery.pdfLecture 03 - JQuery.pdf
Lecture 03 - JQuery.pdf
 
Device deployment
Device deploymentDevice deployment
Device deployment
 
Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD Combination
Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD CombinationLotusphere 2012 Speedgeeking - jQuery & Domino, a RAD Combination
Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD Combination
 
JQuery UI
JQuery UIJQuery UI
JQuery UI
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
 
SharePoint and jQuery Essentials
SharePoint and jQuery EssentialsSharePoint and jQuery Essentials
SharePoint and jQuery Essentials
 

Último

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 

Último (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Celix universal OSGi

  • 1. Celix Universal  OSGi? Alexander  Broekhuis   alexander.broekhuis@luminis.eu 1
  • 2. Introduc?on • Alexander  Broekhuis • At  Luminis  since  2008 • Small  SoEware  House • Research  and  innova?on  oriented • Involved  in  Open  Source  (Apache) • Apache  commiLer  since  2010 2
  • 3. Agenda • Celix • Services  in  C • Dynamic  Assembly • Remote  Services • Deployment • Celix  Status • Universal  OSGi • Demo 3 - Introduction, what is OSGi and what has Celix to do with it - Services in C -> How does Celix solve this - Dynamic Assembly -> with services, how does Celix wire these together - Remote Services, why are they important, and how to solve - Deployment of bundles, how to bundle libraries - Current status of Celix - What is Universal OSGi, and what is the relation with Celix - Demonstration of a simple hello world bundle (and if time permits, an example of service usage)
  • 4. OSGi  is: • component  based  framework • allows  dynamic  assembly  of  components • Java,  so  independent  of  opera?ng  system OSGi  technology  is  the  dynamic  module  system  for  Java™ OSGi  technology  is  Universal  Middleware. OSGi  technology  provides  a  service-­‐oriented,  component-­‐based   environment  for  developers  and  offers  standardized  ways  to   manage  the  so@ware  lifecycle.  These  capabiliBes  greatly  increase   the  value  of  a  wide  range  of  computers  and  devices  that  use  the   Java™  plaForm. 4 Assuming OSGi is know by most people, only a short overview.
  • 5. OSGi "-)*+(( !"#$%&'&($ "-)*+(($. )*+,* )*+,* )*+,/-0 ,$)1(3$. +&/3$ $-. 4-"-)*+(( )*122"-0 )*12 4-"-)*+(($. !"#$%&'()*+,'- 5 And a simple example of a bundle with a service and the service registry. The bundle contains a Store service, which is implemented by StoreImpl, and finally there is some code to interact with the OSGi framework (the Activator).
  • 6. OSGi !"#$%&"'(")%*+#, !+-#" !"#$%& !"#$%& !"#$% &"#$%'()*!! "-)*+(( !"#$%&'&($ +%,'()*!! "-)*+(($. )*+,* )*+,* )*+,/-0 !"#$%&'! ("#$%)*+,&-,.!! ,$)1(3$. +&/3$ /0,%(1!"%*&-,.!! $-. 4-"-)*+(( )*122"-0 )*12 ("$%.*23,&-,.!! 4-"-)*+(($. !"#$%&'!&#!() *+,-."#$&+/.!! !"#$%&'()*+,'- 5 And a simple example of a bundle with a service and the service registry. The bundle contains a Store service, which is implemented by StoreImpl, and finally there is some code to interact with the OSGi framework (the Activator).
  • 7. Celix • OSGi  specifica?on  implemented  in  C • Adapted  where  needed • Focussed  on  Embedded  Dynamic  Systems • Based  on  Apache  Felix • Remote  Services • Distributed  Systems • Interoperability  with  Java 6 Celix is an implementation of the OSGi specification in C. - Without any relation with Java-OSGi, purely focussed on C - Fundamental differences between C and Java, so there are differences -- Most important ones: --- Services -> Later more on this --- Imported/Exported services instead of packages - Focus on embedded systems -- No relation with Java OSGi, can be used in C only environments - Based on Apache Felix (hence the name Celix) -- Ported were possible (resolver for example) -- But not related too! - Additionally, remote services are important -- For use in distributed systems -- But also provides a means to interact with Java OSGi -- Later more on this.
  • 8. Services  in  C • Follows  the  OSGi  Specifica?on • A  Service  Registry  for  tracking  services • Bundle  Ac?vators  for  registering  services • Bundle  Lifecycle  for  tracking  Bundle  state • Structs  instead  of  Interfaces • Using  func?on  pointers  to  forward  calls 7 Services in C - Follow the OSGi spec where possible -- Service Registry -- Bundle Activators -- Bundle lifecycle, state and cache - C has no compilable/runtime interfaces, so services can’t be exposed using an interface -- Use a struct with function pointers to solve this, more details on next slide
  • 9. Services  in  C • Service • Struct  with  func?on  pointers • Ac?vator • start  /  stop Activator <struct> • Celix create + start Service registerService + stop • bundleContext create pointer • registry Celix Component • etc.. getService depends 8 A service is a struct - Uses function pointers to point to the actual implementation of a function - An activator creates and initializes the struct - The struct is registered at the registry as the service - A component can retrieve this struct, and use the function pointers to use the actual implementation. -- The component only requires the Struct to be able to compile/link -- There is no direct link with the implementing component -> See next slide
  • 10. Dynamic  Assembly • Dynamic  Loading • Library Depends • Using  dlfcn.h • dlopen  /  dlclose   <shared object> <shared object> Celix Initializes Provider Realizes • dlsym <struct> Uses Provider Service Initializes <shared object> Consumer Depends 9 To be able to dynamically add/remove components from the system, dynamic loading is used. - Components require the framework for compilation (bundle activator, registry etc) -> Depicted using “depends” - The framework needs to “initialize” a component via its activator, this cannot be a direct relation since components can be added/removed during the runtime. Dynamic Loading in C: - libdl - dlfcn.h -- dlopen / dlclose for loading/unloading libraries -- dlsym for library methods
  • 11. Remote  Services • Remote  Service  Admin • Enterprise  Specifica?on • Interoperability • Protocol • Tuscany? • ZeroMQ? • Google  Protobufs? 10 Remote services - Follows the Enterprise Specification -- Hide remote aspects from the user - Important for distributed environments - But also important for interoperability -> More about this at Universal OSGi The idea is clear, the implementation not - What protocol should be used? -- Has to be available in Java and C -- Has to be able to serialize to something usable at both ends -- Some examples...
  • 12. Remote  Services «service» Server Server Client imported = "true" «service» Server ServerStub ServerProxy Registry remote = "true" «track» Remote Proxy Publisher Publisher «service» «service» Discovery Discovery Service Service 11 How are remote services used: - In java, reflection is used to create endpoints (stub and proxy) at runtime. Marking a service as remote is enough to expose it. Discovery is used to publish remote services on the network. - In C, there is no such thing as reflection, so it is not possible to simple mark a service as remote. -- Possible solution is to use a bundle with the service stub for a service, and publish this bundle when remote access is required/requested. -- The same applies to the server proxy on the client host.
  • 13. Remote  Services «service» Server Server Client imported = "true" «service» Server ServerStub ServerProxy Registry remote = "true" «track» Remote Proxy Publisher Publisher «service» «service» Stubs Discovery Proxies Discovery Service Service 11 How are remote services used: - In java, reflection is used to create endpoints (stub and proxy) at runtime. Marking a service as remote is enough to expose it. Discovery is used to publish remote services on the network. - In C, there is no such thing as reflection, so it is not possible to simple mark a service as remote. -- Possible solution is to use a bundle with the service stub for a service, and publish this bundle when remote access is required/requested. -- The same applies to the server proxy on the client host.
  • 14. Deployment • Bundling • Zip  file  with  Shared  Object Depends • (.so,  .dll,  .dylib,  ...) • Manifest <shared object> Celix Initializes <shared object> Provider Realizes • Import  /  Export <struct> Uses Provider • Run?me Service • Extracted  to  cache Initializes <shared object> Consumer Depends 12 Deployment: - Java uses JAR (zip) files, which can contain classes, but also additional resources. - In C libraries cannot contain additional resources. -- Solution is to use zip files to store the library and resources -- Like Java, a Manifest is used to import/export services, but also to identify the library to use -- At runtime this zip file is extracted to the cache, and the library is loaded/unloaded by the framework.
  • 15. Pla`orm  Support • Apache  Portable  Run?me • Linux,  Unix,  Windows,  etc • Memory  pool • File  handling • Threads • No  RealTime/Embedded • Reuse  APR  API 13
  • 16. Building • CMake • Cross  pla`orm  /  Mul?  IDE • Framework • Standard  library • Bundle  macros • Create  bundle  zip • Add  library  and  resources 14
  • 17. Status  -­‐  Framework • Dynamic  Loading  of  Libraries • Service  Registry  for  Querying  and  Registering • Bundles  with  Manifest  for  Deployment • Service  Tracker  for  tracking  Services • Bundle  State  and  Life  Cycle • Bundle  Cache  for  Storing  State 15 Status of Celix
  • 18. Status  -­‐  Extras • Shell  Implementa?on  for  Inspec?ng  Bundles • ps/start/stop  command • Dependency  Manager  for  Dependencies • Simple  Implementa?on • Sta?c  Linked • Open  Source  at  Apache • Currently  in  the  Incubator 16 Besides the framework, there are some additional items to make it easier to use/debug the framework. These are all ported from Java (Felix) to C. Finally, Celix is open sources at Apache, and currently in the Incubator. We are always looking for more community members to support/use/implement Celix.
  • 19. Universal  OSGi • RFP-­‐89 • Proposed  to  the  mailing  list  in  2007 • Since  then  remained  silent • Ongoing  effort  to  pick  up  again • Supported  Languages • C++  /  .NET  language  (C#)  /  ECMAScript • What  about  C? • Interest  from  Community? 17 What is Universal OSGi: - A RFP proposed in 2007 - After that, silence, but now being picked up again. The RFP mentions: - C++/C#/ECMAScript - But not C Looking for a community. - Mailing list can be created. What has this to do with Celix?
  • 20. Universal  OSGi  -­‐  Celix • Na?ve  port  in  C • Status • Based  on  the  R4  Specifica?on • Deployable  bundles • Bundle  lifecycle • Service  registry • Framework  API • Remote  Services • Standards  for  IPC  and  communica?ons 18 Celix is a native port of the OSGi spec in C. The RFP requires that an OSGi implementation is based on the R4 Spec Celix implements: - Deployable bundles - Bundle lifecycle - Service registry - Most of the Framework API - Remote Services (planned) -- Remote services are imported to be able to interact with different implementations of OSGi -- At the time of the RFP there where no remote service, but they do provide a common/well specced method to solve this. -- Remote service should use standards for IPC and com to be able to interact with non-osgi systems. Can Celix be an implementation of the Universal OSGi RFP? I do think so.. Finally, some examples:
  • 21. Links • Original  Proposal: • hLp://wiki.apache.org/incubator/CelixProposal • Incubator  Mailing  List  Archive: • hLp://incubator.markmail.org/search/?q=Celix • Incuba?on  Status: • hLp://incubator.apache.org/projects/celix.html • Project  Page: • hLp://incubator.apache.org/celix/ 19