Xander Uiterlinden Sander Mak
- Luminis Technologies
The Ultimate Dependency Manager Shootout Xander Uiterlinden - - PowerPoint PPT Presentation
The Ultimate Dependency Manager Shootout Xander Uiterlinden @uiterlix Sander Mak @sander_mak Luminis Technologies Who we are S ander Mak http://branchandbound.net @sander_mak X ander Uiterlinden http://blog.uiterlinden.nl @uiterlix
@uiterlix @sander_mak
@uiterlix @sander_mak
@uiterlix @sander_mak
Provider Bundle
api.MyService impl.MyServiceImpl
Consumer Bundle new MyServiceImpl()
api + impl package dependency
@uiterlix @sander_mak
register OSGi Service Registry Provider Bundle
api.MyService impl.MyServiceImpl
Consumer Bundle lookup
@uiterlix @sander_mak
@uiterlix @sander_mak
Components…?
aQute.bnd.annotation.component.Component
….
@uiterlix @sander_mak
Felix Dependency Manager Felix iPojo
Implementations Compendium Specifications
Declarative Services
Felix Service Component Runtime Eclipse Gemini Blueprint Blueprint
@uiterlix @sander_mak
@uiterlix @sander_mak
Bundle 1
Component Instance Component Description
Bundle 2
Component Instance Component Description
Service
reference provide
@uiterlix @sander_mak
@uiterlix @sander_mak
DM Server Gemini Blueprint
2009
Bundle 1
Application Context
Bundle 2
Service
reference export Bean Bean Bean Application Context Bean Bean
@uiterlix @sander_mak
@uiterlix @sander_mak
Bundle 1
Component Instance
Bundle 2
Component Instance Component Instance
Service
reference adapt
Service’
publish
Service
aspect
@uiterlix @sander_mak
@uiterlix @sander_mak
Bundle 1 Bundle 2
Component Component instance
Service
provide Component require Component instance
@uiterlix @sander_mak
@uiterlix @sander_mak
@uiterlix @sander_mak
Application bundle 1 Application bundle 2 Application bundle 3 SCR/iPojo/Blueprint/(DM runtime) bundle Service Registry
@uiterlix @sander_mak
META-INF/MANIFEST.MF OSGI-INF/temp.xml
Temperate Sensor Bundle
@uiterlix @sander_mak
Dashboard Bundle
@uiterlix @sander_mak
Dynamic Reluctant Do nothing Rebind optionals Greedy Reactivate Rebind
@uiterlix @sander_mak
META-INF/MANIFEST.MF OSGI-INF/blueprint/temp.xml
Temperate Sensor Bundle Bundle-Blueprint header optional
@uiterlix @sander_mak
Dashboard Bundle snipped 10+ lines of namespaces :(
@uiterlix @sander_mak
@uiterlix @sander_mak
META-INF/MANIFEST.MF
TemperatureSensor.class Temperate Sensor Bundle
@uiterlix @sander_mak
Dashboard Bundle
@uiterlix @sander_mak
@uiterlix @sander_mak
https://bitbucket.org/uiterlix/ravioli
@uiterlix @sander_mak
metadata.xml
Temperate Sensor Bundle
@uiterlix @sander_mak
@uiterlix @sander_mak
@uiterlix @sander_mak
(Knoplerfish tutorial)
@uiterlix @sander_mak
@uiterlix @sander_mak
(&(province=Noord-Holland)(municipality=Amsterdam))
@uiterlix @sander_mak
@uiterlix @sander_mak
ipojo DM OSGi
Duration in ms.
175000 350000 525000 700000 10000 30000 50000 70000 90000 110000 130000 150000 170000 190000 210000 230000 250000 270000 290000 310000 330000 350000 370000 390000 410000 430000 450000
OSGi DM iPojo
@uiterlix @sander_mak
50000 100000 150000 200000 250000 10000 30000 50000 70000 90000 110000 130000 150000 170000 190000 210000 230000 250000 270000 290000 310000 330000 350000 370000 390000 410000 430000 450000
OSGi DM iPojo
iPojo DM OSGi
@uiterlix @sander_mak
50000 100000 150000 200000 250000 10000 30000 50000 70000 90000 110000 130000 150000 170000 190000 210000 230000 250000 270000 290000 310000 330000 350000 370000 390000 410000 430000 450000
OSGi DM iPojo
iPojo DM OSGi
@uiterlix @sander_mak
100000 200000 300000 400000 500000 600000 700000 10000 30000 50000 70000 90000 110000 130000 150000 170000 190000 210000 230000 250000 270000 290000 310000 330000 350000 370000 390000 410000 430000 450000
OSGi equinox DM equinox iPojo equinox OSGi felix DM felix iPojo felix OSGi knoplerfish DM knoplerfish iPojo knoplerfish
iPojo Equinox OSGi & DM Felix iPojo Felix & Knoplerfish OSGi & DM Equinox & Knoplerfish
@uiterlix @sander_mak
@uiterlix @sander_mak
Time in millis
400 800 1200 1600 blueprint dm ds ipojo
Injecting 19021 services into a single consumer on Equinox
@uiterlix @sander_mak
Time in millis
400 800 1200 1600 blueprint dm ds ipojo
injection injection and method invocation
Injecting 19021 services into a single consumer on Equinox, and invoking a method on the injected services
@uiterlix @sander_mak
Time in millis
15000 30000 45000 60000
# services in service registry
50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 1300 1350 1400 1450 1500 1550 1600
iPojo
Injecting a single service into a single consumer on Equinox
@uiterlix @sander_mak
75000 150000 225000 300000 197 2878 Default With index
@uiterlix @sander_mak
@uiterlix @sander_mak