After a short introduction about the origins of OSGi and the principles behind it, this presentation will focus on the current developments around component-based development. Although OSGi was created as a service-based platform for home gateways, it has grown into a universally applicable framework.
The talk will review JSR-277 and JSR-291, both of which are very close to OSGi and are targetted to standardize certain aspects of this technology as part of the JVM. Furthermore, several applications will be reviewed to illustrate that this architecture can be used in a broad range of environments, from mobile phones to enterprise applications.
Examples include: Eclipse, based on OSGi since 3.0, Apache Felix, an open source implementation that is the basis for several other projects such as the Apache Directory Server.
1 of 32
Download to read offline
More Related Content
Component-based ontwikkelen met OSGi: van embedded tot enterprise
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)
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
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
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