際際滷

際際滷Share a Scribd company logo
Component-based ontwikkelen met OSGi 
1 
van embedded tot enterprise 
Marcel Offermans
2 
Even voorstellen 
Marcel Offermans 
 Software architect bij 
luminis速 
 Committer bij 
Apache Felix 
e-mail: marcel.offermans@luminis.nl
3 
Agenda 
 OSGi 
 Geschiedenis 
 Het framework in vogelvlucht 
 Standaardisatie efforts rond OSGi 
 JSR 277 en JSR 294 
 JSR 291 
 Van embedded naar enterprise 
 Apache Harmony 
 Apache Directory Server 
 Cocoon, Spring, Eclipse, James
4 
Agenda 
 OSGi 
 Geschiedenis 
 Het framework in vogelvlucht 
 Standaardisatie efforts rond OSGi 
 JSR 277 en JSR 294 
 JSR 291 
 Van embedded naar enterprise 
 Apache Harmony 
 Apache Directory Server 
 Cocoon, Spring, Eclipse, James
5 
OSGi geschiedenis 
 Ontstaan als standaard embedded platform voor 
de home gateway 
 Aanvankelijk onder JCP als JSR-8 (1999) 
 OSGi alliance, bestaande uit een groot aantal 
vooraanstaande bedrijven, met als missie: 
 Beheren en publiceren de OSGi specificatie. 
 Certificeren van implementaties. 
 Organiseren van events. 
 Huidige versie: OSGi Release 4 (augustus 2005)
6 
OSGi Framework 
 Component gebaseerd framework 
 Componenten heten bundles 
 Framework: 
 security layer 
 module layer 
 life-cycle layer 
 service registry 
Service 
Life-cycle 
Module 
Security 
Bundle Bundle Bundle
7 
OSGi Security layer 
 Gebaseerd op Java 2 security model 
 Mogelijkheid om bundles te signen 
 Permission Admin service verzorgt dynamische 
configuratie 
Service 
Life-cycle 
Module 
Security 
Bundle Bundle Bundle
8 
OSGi Module layer 
 Eenheid van modularisatie is de bundle (JAR) 
 Bundle bevat Java packages (en resources) 
 Bundle bepaalt welke packages publiek 
toegankelijk zijn (geexporteerd 
worden) en welke niet: 
Service 
naam + versienummer 
 Bundle geeft ook aan 
Life-cycle 
welke externe packages 
Module 
nodig zijn (imports): 
naam + versie range Security 
Bundle Bundle Bundle
9 
OSGi Life-cycle layer 
 Beheert de life-cycle van bundles 
 BundleActivator start() en stop() hooks 
Service 
Life-cycle 
Module 
Security 
Bundle Bundle Bundle
10 
OSGi Service registry 
 Bundles kunnen services registreren: 
 op naam: net.luminis.DataStore 
 aangevuld met properties: { type=file, atomic=no } 
 Bundles kunnen services 
gebruiken: 
 via registratie van listener 
 met dependency injection 
 via declarative services 
Service 
Life-cycle 
Module 
Security 
Bundle Bundle Bundle
11 
OSGi frameworks & tools 
 Verschillende open source implementaties: 
 Apache Felix 
 Eclipse Equinox 
 Gatespace Telematics' Knopflerfish 
 Eclipse IDE project support 
 IDE/RCP is gebaseerd op OSGi 
 Bundles heten plug-ins 
 Maven 2 support 
 Nog volop in ontwikkeling, maar bruikbaar
12 
Agenda 
 OSGi 
 Geschiedenis 
 Het framework in vogelvlucht 
 Standaardisatie efforts rond OSGi 
 JSR 277 en JSR 294 
 JSR 291 
 Van embedded naar enterprise 
 Apache Harmony 
 Apache Directory Server 
 Cocoon, Spring, Eclipse, James
13 
JSR-277 Java Module System 
 Versioning 
 Hoe nummer je versies? 
 Hoe draai je meerdere versies parallel? 
 Distributie en packaging 
 JAR files? 
 Dynamische connectiviteit 
 Hoe resolve je modules? 
 Repositories 
 Lokale opslag 
 Beheer en security
14 
JSR-277 Java Module System (2) 
 Pluspunten 
 Goed om dit in standaard Java te regelen 
 Minpunten 
 Richt zich aanvankelijk alleen op J2SE 
 Onderdeel van Java 7 (pas in 2008)
15 
JSR-294 Improved Modularity Support 
 Richt zich op development (JSR-277 op 
deployment) 
 Information Hiding 
 Introductie van superpackages die beschrijven wat 
publiek is en wat private. 
 Module files 
 Meerdere versies kunnen tegelijk aanwezig zijn 
 Afzonderlijk compileren 
 Simpel gezegd, compileren met alleen de publieke 
interfaces beschikbaar
JSR-294 Improved Modularity Support (2) 
super package com.sun.myModule { 
export com.sun.myModule.myStuff.*; 
export com.sun.myModule.yourStuff.Interface; 
com.sun.myModule.myStuff; 
com.sun.myModule.yourStuff; 
com.sun.SomeOtherModule.theirStuff; 
org.someOpenSource.someCoolStuff; 
} 
16
17 
JSR-294 Improved Modularity Support (3) 
 Pluspunten 
 Wederom, dit is goed om te standaardiseren 
 Minpunten 
 Ten tijde van de JavaOne 2006 nog veel 
onbeantwoorde vragen
18 
JSR-291 Dynamic Component Support 
 Richt zich op alle Java SE versies (oud en nieuw) 
 Complementair met JSR-232, die 't zelfde doet 
voor Java ME (CDC profiel) 
 Dynamic Component Model 
 Life-cycle Management 
 Bouwt op de ervaringen van Apache, Eclipse en 
OSGi 
 Subset van OSGi R4 (geen service registry)
19 
JSR-291 Dynamic Component Support (2) 
 Pluspunten 
 Bouwt voort op ervaring 
 Voor alle Java versies 
 Minpunten 
 Risico op politieke weerstand van Sun
20 
Agenda 
 OSGi 
 Geschiedenis 
 Het framework in vogelvlucht 
 Standaardisatie efforts rond OSGi 
 JSR 277 en JSR 294 
 JSR 291 
 Van embedded naar enterprise 
 Apache Harmony 
 Apache Directory Server 
 Cocoon, Spring, Eclipse, James
21 
Apache Harmony 
 Doelstellingen: 
 Implementatie van Java 5 SE 
 Modulaire architectuur (VM en class libraries) 
 Beschermen van intellectual property 
 Project is een jaar oud 
 Donaties van onder andere Intel en IBM
22 
Apache Harmony (2) 
Architectuur in vogelvlucht:
23 
Apache Harmony (3) 
Modulaire Java API implementatie: 
Donatie van Intel 
bekendgemaakt op JavaOne
24 
Apache Directory Server 
 Server software met OSGi als basis, omdat: 
 Het tijdens ontwikkeling zorgt voor: 
 scheiding van verantwoordelijkheden. 
 Het run-time ervoor zorgt dat: 
 de server niet gestopt hoeft te worden voor updates; 
 third-party vendors eenvoudig nieuwe functionaliteit 
kunnen toevoegen;
25 
Spring Framework 
 Support voor OSGi in de roadmap voor 2.1 RC1 
(issue SPR-1802): 
 Spring zelf deployen als een set bundles. 
 Spring application context in een bundle. 
 Integratie van OSGi services en Spring's 
dependency injection, met proxy support. 
 Natuurlijke aanvulling op Spring, het brengt meer 
dynamica.
26 
Cocoon 
 Een jaar geleden 
begonnen met 
experimenteren met 
OSGi
27 
Eclipse 
 Plug-in = bundle 
 Basis van Eclipse en 
RCP is Equinox, een 
OSGi R4 implementatie 
 Uitgebreide support voor: 
 ontwikkelen van bundles 
 uitvoeren en debuggen 
 hot code replace
28 
Eclipse
Apache James Enterprise Mail Server 
!From: apache@bago.org 
!Subject: Re: ApacheCon EU OSGi panel 
!Date: June 14, 2006 18:53:14 GMT+02:00 
!To: !felix-dev@incubator.apache.org 
!Cc: server-dev@james.apache.org 
! 
I just want to add that also we, at Apache James project, discussed about 
removing our Avalon Phoenix dependency in favor of OSGi/Felix. 
I crosspost this to james server-dev list, to let James developers know of 
this message and eventually raise questions, and felix may be interested 
to know that also James like Directory, Harmony and Cocoon is 
monitoring Felix. 
29
Conclusies 
 Waar OSGi jaren geleden primair voor de 
embedded home gateway ontworpen is, zie je 
dat de problemen die het oplost ook voor desktop 
en server applicaties relevant zijn. 
 Er zijn een aantal standaarden in ontwikkeling om 
delen van de door OSGi geboden functionaliteit 
vast te leggen in het Java Community Proces, met 
momenteel nog redelijk wat overlap tussen 
verschillende standaards. 
30
31 
Vragen? 
http://www.luminis.nl/ 
marcel.offermans@luminis.nl
Meer weten? Links... 
 OSGi sites 
 http://osgi.org/ en http://bundles.osgi.org/ 
 http://incubator.apache.org/felix/ 
 http://www.knopflerfish.org/ 
 http://www.eclipse.org/osgi/ 
 Boeken 
Er zijn niet veel boeken over OSGi, dus ik raad een ieder aan om in elk geval op internet te 
zoeken naar informatie en de OSGi specificatie te lezen. 
 Eclipse Rich Client Platform : Designing, Coding, and Packaging Java(TM) Applications 
Goed boek waar ook een hoop instaat over OSGi ontwikkeling in het algemeen. 
 Programming Open Service Gateways with Java Embedded Server Technology 
Een oud boek, dus qua specificatie wel gedateerd, maar wel geschikt om de basisprincipes te leren. 
32

More Related Content

Component-based ontwikkelen met OSGi: van embedded tot enterprise

  • 1. Component-based ontwikkelen met OSGi 1 van embedded tot enterprise Marcel Offermans
  • 2. 2 Even voorstellen Marcel Offermans Software architect bij luminis速 Committer bij Apache Felix e-mail: marcel.offermans@luminis.nl
  • 3. 3 Agenda OSGi Geschiedenis Het framework in vogelvlucht Standaardisatie efforts rond OSGi JSR 277 en JSR 294 JSR 291 Van embedded naar enterprise Apache Harmony Apache Directory Server Cocoon, Spring, Eclipse, James
  • 4. 4 Agenda OSGi Geschiedenis Het framework in vogelvlucht Standaardisatie efforts rond OSGi JSR 277 en JSR 294 JSR 291 Van embedded naar enterprise Apache Harmony Apache Directory Server Cocoon, Spring, Eclipse, James
  • 5. 5 OSGi geschiedenis Ontstaan als standaard embedded platform voor de home gateway Aanvankelijk onder JCP als JSR-8 (1999) OSGi alliance, bestaande uit een groot aantal vooraanstaande bedrijven, met als missie: Beheren en publiceren de OSGi specificatie. Certificeren van implementaties. Organiseren van events. Huidige versie: OSGi Release 4 (augustus 2005)
  • 6. 6 OSGi Framework Component gebaseerd framework Componenten heten bundles Framework: security layer module layer life-cycle layer service registry Service Life-cycle Module Security Bundle Bundle Bundle
  • 7. 7 OSGi Security layer Gebaseerd op Java 2 security model Mogelijkheid om bundles te signen Permission Admin service verzorgt dynamische configuratie Service Life-cycle Module Security Bundle Bundle Bundle
  • 8. 8 OSGi Module layer Eenheid van modularisatie is de bundle (JAR) Bundle bevat Java packages (en resources) Bundle bepaalt welke packages publiek toegankelijk zijn (geexporteerd worden) en welke niet: Service naam + versienummer Bundle geeft ook aan Life-cycle welke externe packages Module nodig zijn (imports): naam + versie range Security Bundle Bundle Bundle
  • 9. 9 OSGi Life-cycle layer Beheert de life-cycle van bundles BundleActivator start() en stop() hooks Service Life-cycle Module Security Bundle Bundle Bundle
  • 10. 10 OSGi Service registry Bundles kunnen services registreren: op naam: net.luminis.DataStore aangevuld met properties: { type=file, atomic=no } Bundles kunnen services gebruiken: via registratie van listener met dependency injection via declarative services Service Life-cycle Module Security Bundle Bundle Bundle
  • 11. 11 OSGi frameworks & tools Verschillende open source implementaties: Apache Felix Eclipse Equinox Gatespace Telematics' Knopflerfish Eclipse IDE project support IDE/RCP is gebaseerd op OSGi Bundles heten plug-ins Maven 2 support Nog volop in ontwikkeling, maar bruikbaar
  • 12. 12 Agenda OSGi Geschiedenis Het framework in vogelvlucht Standaardisatie efforts rond OSGi JSR 277 en JSR 294 JSR 291 Van embedded naar enterprise Apache Harmony Apache Directory Server Cocoon, Spring, Eclipse, James
  • 13. 13 JSR-277 Java Module System Versioning Hoe nummer je versies? Hoe draai je meerdere versies parallel? Distributie en packaging JAR files? Dynamische connectiviteit Hoe resolve je modules? Repositories Lokale opslag Beheer en security
  • 14. 14 JSR-277 Java Module System (2) Pluspunten Goed om dit in standaard Java te regelen Minpunten Richt zich aanvankelijk alleen op J2SE Onderdeel van Java 7 (pas in 2008)
  • 15. 15 JSR-294 Improved Modularity Support Richt zich op development (JSR-277 op deployment) Information Hiding Introductie van superpackages die beschrijven wat publiek is en wat private. Module files Meerdere versies kunnen tegelijk aanwezig zijn Afzonderlijk compileren Simpel gezegd, compileren met alleen de publieke interfaces beschikbaar
  • 16. JSR-294 Improved Modularity Support (2) super package com.sun.myModule { export com.sun.myModule.myStuff.*; export com.sun.myModule.yourStuff.Interface; com.sun.myModule.myStuff; com.sun.myModule.yourStuff; com.sun.SomeOtherModule.theirStuff; org.someOpenSource.someCoolStuff; } 16
  • 17. 17 JSR-294 Improved Modularity Support (3) Pluspunten Wederom, dit is goed om te standaardiseren Minpunten Ten tijde van de JavaOne 2006 nog veel onbeantwoorde vragen
  • 18. 18 JSR-291 Dynamic Component Support Richt zich op alle Java SE versies (oud en nieuw) Complementair met JSR-232, die 't zelfde doet voor Java ME (CDC profiel) Dynamic Component Model Life-cycle Management Bouwt op de ervaringen van Apache, Eclipse en OSGi Subset van OSGi R4 (geen service registry)
  • 19. 19 JSR-291 Dynamic Component Support (2) Pluspunten Bouwt voort op ervaring Voor alle Java versies Minpunten Risico op politieke weerstand van Sun
  • 20. 20 Agenda OSGi Geschiedenis Het framework in vogelvlucht Standaardisatie efforts rond OSGi JSR 277 en JSR 294 JSR 291 Van embedded naar enterprise Apache Harmony Apache Directory Server Cocoon, Spring, Eclipse, James
  • 21. 21 Apache Harmony Doelstellingen: Implementatie van Java 5 SE Modulaire architectuur (VM en class libraries) Beschermen van intellectual property Project is een jaar oud Donaties van onder andere Intel en IBM
  • 22. 22 Apache Harmony (2) Architectuur in vogelvlucht:
  • 23. 23 Apache Harmony (3) Modulaire Java API implementatie: Donatie van Intel bekendgemaakt op JavaOne
  • 24. 24 Apache Directory Server Server software met OSGi als basis, omdat: Het tijdens ontwikkeling zorgt voor: scheiding van verantwoordelijkheden. Het run-time ervoor zorgt dat: de server niet gestopt hoeft te worden voor updates; third-party vendors eenvoudig nieuwe functionaliteit kunnen toevoegen;
  • 25. 25 Spring Framework Support voor OSGi in de roadmap voor 2.1 RC1 (issue SPR-1802): Spring zelf deployen als een set bundles. Spring application context in een bundle. Integratie van OSGi services en Spring's dependency injection, met proxy support. Natuurlijke aanvulling op Spring, het brengt meer dynamica.
  • 26. 26 Cocoon Een jaar geleden begonnen met experimenteren met OSGi
  • 27. 27 Eclipse Plug-in = bundle Basis van Eclipse en RCP is Equinox, een OSGi R4 implementatie Uitgebreide support voor: ontwikkelen van bundles uitvoeren en debuggen hot code replace
  • 29. Apache James Enterprise Mail Server !From: apache@bago.org !Subject: Re: ApacheCon EU OSGi panel !Date: June 14, 2006 18:53:14 GMT+02:00 !To: !felix-dev@incubator.apache.org !Cc: server-dev@james.apache.org ! I just want to add that also we, at Apache James project, discussed about removing our Avalon Phoenix dependency in favor of OSGi/Felix. I crosspost this to james server-dev list, to let James developers know of this message and eventually raise questions, and felix may be interested to know that also James like Directory, Harmony and Cocoon is monitoring Felix. 29
  • 30. Conclusies Waar OSGi jaren geleden primair voor de embedded home gateway ontworpen is, zie je dat de problemen die het oplost ook voor desktop en server applicaties relevant zijn. Er zijn een aantal standaarden in ontwikkeling om delen van de door OSGi geboden functionaliteit vast te leggen in het Java Community Proces, met momenteel nog redelijk wat overlap tussen verschillende standaards. 30
  • 31. 31 Vragen? http://www.luminis.nl/ marcel.offermans@luminis.nl
  • 32. Meer weten? Links... OSGi sites http://osgi.org/ en http://bundles.osgi.org/ http://incubator.apache.org/felix/ http://www.knopflerfish.org/ http://www.eclipse.org/osgi/ Boeken Er zijn niet veel boeken over OSGi, dus ik raad een ieder aan om in elk geval op internet te zoeken naar informatie en de OSGi specificatie te lezen. Eclipse Rich Client Platform : Designing, Coding, and Packaging Java(TM) Applications Goed boek waar ook een hoop instaat over OSGi ontwikkeling in het algemeen. Programming Open Service Gateways with Java Embedded Server Technology Een oud boek, dus qua specificatie wel gedateerd, maar wel geschikt om de basisprincipes te leren. 32