introduction into osgi
DESCRIPTION
The EclipseCon/OSGi DevCon 2011 Introduction by Peter KriensTRANSCRIPT
OSGiIntroduction
By Peter KriensOSGi Technical Director & Evangelist
donderdag 24 maart 2011
donderdag 24 maart 2011
In the beginnings there were bits ...
donderdag 24 maart 2011
01001111001100100000000011110000001000010001110010100000010011100010001101111110001000111011111011010010000100111010000001111110000010100000110111000010000011011010000000110010001000111010000001110110
Bits
donderdag 24 maart 2011
01001111001100100000000011110000001000010001110010100000010011100010001101111110001000111011111011010010000100111010000001111110000010100000110111000010000011011010000000110010001000111010000001110110
Bits
donderdag 24 maart 2011
117062000360041034240116043176043276322023240176012015302015240062043240166
Oct
al
donderdag 24 maart 2011
4F32 00 F021 1C A04E237E23BED2 13 A07E0A0DC2 0D A032 23 A076
Hex
donderdag 24 maart 2011
Code
MOV C,A STA F000H LXI H,A01CH MOV C,M INX H MOV A,M INX H CMP M JNC A013H MOV A,M DCR C JNZ A00DH STA A023H HLT
donderdag 24 maart 2011
Code
MOV C,A STA F000H LXI H,A01CH MOV C,M INX H MOV A,M INX H CMP M JNC A013H MOV A,M DCR C JNZ A00DH STA A023H HLT
donderdag 24 maart 2011
Code global = shared;
for (local=0; local<10; local++) shared *= 10;
donderdag 24 maart 2011
Code global = shared;
for (local=0; local<10; local++) shared *= 10;
donderdag 24 maart 2011
int global;int shared;int local;
Code global = shared;
for (local=0; local<10; local++) shared *= 10;
donderdag 24 maart 2011
int global;int shared;int local;
Func
tions
void foo() { global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
int global;int shared;int local;
Func
tions
void foo() { global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
int global;int shared;int local;
Func
tions void foo() {
global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
int global;int shared;
Func
tions
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local; global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
A
int global;int shared;
Mod
ules
B
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
A
int global;int shared;
Mod
ules
B
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
A
int global;
Mod
ules
B
int shared;
int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
Class A
Obj
ects
Class B
int shared;
int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
Class A
Obj
ects
Class B
int shared;
int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
Class AClass A
Class AClass A
Class A
Obj
ects
Class B
int shared;
int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
instan
ces
donderdag 24 maart 2011
“Chapter 7 describes the structure of a program which is organized into packages
similar to the modules of Modula.”
Java Language Specification, 3rd edition
donderdag 24 maart 2011
“Chapter 7 describes the structure of a program which is organized into packages
similar to the modules of Modula.”
Java Language Specification, 3rd edition
donderdag 24 maart 2011
package com.acme.abc
Pack
ages
package com.acme.def
Class A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class C int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
The Face of Modularity
donderdag 24 maart 2011
The Face of Modularity
donderdag 24 maart 2011
A B
C D
• modules have a private space and share a public space
• modules limit their visibility and exposure
• From geometric to linear complexity
• And something extra ...
Modularity’s Secret
donderdag 24 maart 2011
A B
C D
• modules have a private space and share a public space
• modules limit their visibility and exposure
• From geometric to linear complexity
• And something extra ...
Modularity’s Secret
Pub
donderdag 24 maart 2011
A B
C D
• modules have a private space and share a public space
• modules limit their visibility and exposure
• From geometric to linear complexity
• And something extra ...
Modularity’s Secret
Pub
donderdag 24 maart 2011
JAR abc-1.2.3-SNAPSHOT.jar
JARs
com.acme.abcClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
com.acme.defClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
JAR def-4.5.6.jar
com.acme.abcClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
com.acme.ghiClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
JAR abc-1.2.3-SNAPSHOT.jar
JARs
com.acme.abcClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
com.acme.defClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
JAR def-4.5.6.jar
com.acme.abcClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
com.acme.ghiClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
Java VM
log4j
barcode4j
axis
batik
commons
derby
fop
ezmorph
freemarker
httpunit
jakarta
jcl
json
jdbm
jdom
jenks
jpos18
jython
looks
lucene
mx4j
naming
jetty
poi
resolver
rome
serializer
servlets
tomcat
velocity
ws-commons
xalan
wsdl4j
xerces
xmlgraphics
xmlrpc
xmlapis
..
geronimo
bsh
bsf
guiapp
hhfacility
manufact.
marketing
minerva
accounting
assetmaint
base
bi
catalina
common
oagis
order
ebay
content
datafile
ecommerce
entity
googlebase
ofbiz
widget
minilang
party
pos.
product
workeffort
workflow
…
sunjce_prov.
plugin
jsse
jce
rt
dnsns
..
…
BeginHere
donderdag 24 maart 2011
Java VM
log4j
barcode4j
axis
batik
commons
derby
fop
ezmorph
freemarker
httpunit
jakarta
jcl
json
jdbm
jdom
jenks
jpos18
jython
looks
lucene
mx4j
naming
jetty
poi
resolver
rome
serializer
servlets
tomcat
velocity
ws-commons
xalan
wsdl4j
xerces
xmlgraphics
xmlrpc
xmlapis
..
geronimo
bsh
bsf
guiapp
hhfacility
manufact.
marketing
minerva
accounting
assetmaint
base
bi
catalina
common
oagis
order
ebay
content
datafile
ecommerce
entity
googlebase
ofbiz
widget
minilang
party
pos.
product
workeffort
workflow
…
sunjce_prov.
plugin
jsse
jce
rt
dnsns
..
…
ClassNot
FoundException
BeginHere
donderdag 24 maart 2011
bundle com.acme.abc-1.2.3
Bund
les package com.acme.abc
Class A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
bundle com.acme.def-9.9.1
package com.acme.abcClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.defClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.ghiClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
bundle com.acme.abc-1.2.3
Bund
les package com.acme.abc
Class A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
bundle com.acme.def-9.9.1
package com.acme.abcClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.defClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.ghiClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Private Exported
Private Exported
donderdag 24 maart 2011
bundle com.acme.abc-1.2.3
Bund
les package com.acme.abc
Class A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
bundle com.acme.def-9.9.1
package com.acme.abcClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.defClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.ghiClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Private Exported
Private Exported
donderdag 24 maart 2011
bundle com.acme.abc-1.2.3
Bund
les package com.acme.abc
Class A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
bundle com.acme.def-9.9.1
package com.acme.abcClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.defClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.ghiClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Private Exported
Private Exported
donderdag 24 maart 2011
bundle com.acme.abc-1.2.3
Bund
les package com.acme.abc
Class A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
bundle com.acme.def-9.9.1
package com.acme.abcClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.defClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.ghiClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Private Exported
Private Exported
X
donderdag 24 maart 2011
ManifestManifest-Version: 1Bundle-ManifestVersion: 2Bundle-SymbolicName: com.acme.bundleBundle-Version: 1.2.3.v201103221001Import-Package: javax.activation, javax.persistence, org.osgi.framework;version=”[1.3,2)”Export-Package: com.acme.bundle.service;version=2.3, com.acme.api; version=45.2Bundle-License: http://www.apache.org/license/ASL2.0.txtTool: bnd-1.43.0
donderdag 24 maart 2011
ManifestManifest-Version: 1Bundle-ManifestVersion: 2Bundle-SymbolicName: com.acme.bundleBundle-Version: 1.2.3.v201103221001Import-Package: javax.activation, javax.persistence, org.osgi.framework;version=”[1.3,2)”Export-Package: com.acme.bundle.service;version=2.3, com.acme.api; version=45.2Bundle-License: http://www.apache.org/license/ASL2.0.txtTool: bnd-1.43.0 bn
d
donderdag 24 maart 2011
bundle com.acme.abc-1.2.3
Bund
les package com.acme.abc
Class A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
bundle com.acme.def-9.9.1
package com.acme.abcClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.defClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
package com.acme.ghiClass A int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void bar() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
Class B int shared;
void foo() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
void xyz() { int local global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
bundle com.acme.abc-1.2.3
Bund
les
bundle com.acme.def-9.9.1
donderdag 24 maart 2011
bundle com.acme.abc-1.2.3
Bund
les
bundle com.acme.def-9.9.1
reified
donderdag 24 maart 2011
POJO Programming is Best Practice
donderdag 24 maart 2011
Interfaces/API
ConsumerClass
ProviderClassInterface
donderdag 24 maart 2011
package com.api package com.provider.implpackage com.consumer.impl
Interfaces/API
ConsumerClass
ProviderClassInterface
donderdag 24 maart 2011
package com.api package com.provider.implpackage com.consumer.impl
Interfaces/API
ConsumerClass
ProviderClassInterface
Your App
donderdag 24 maart 2011
package com.api package com.provider.implpackage com.consumer.impl
Interfaces/API
ConsumerClass
ProviderClassInterface
DocumentBuilderYour App
donderdag 24 maart 2011
package com.api package com.provider.implpackage com.consumer.impl
Interfaces/API
ConsumerClass
ProviderClassInterface
DocumentBuilderYour App Xerces
donderdag 24 maart 2011
Access to Implementations
package com.api package com.provider.implpackage com.consumer.impl
ConsumerClass
ProviderClassInterface
donderdag 24 maart 2011
Access to Implementations
package com.api package com.provider.implpackage com.consumer.impl
ConsumerClass
ProviderClassInterface
donderdag 24 maart 2011
Access to Implementations
package com.api package com.provider.implpackage com.consumer.impl
ConsumerClass
ProviderClassInterface
priva
te
donderdag 24 maart 2011
Access to Implementations
com.api com.provider.implcom.consumer.impl
Con-sumer ProviderInterface
package com.api package com.provider.implpackage com.consumer.impl
ConsumerClass
ProviderClassInterface
donderdag 24 maart 2011
µServices
donderdag 24 maart 2011
package com.api
µServices
specifies
donderdag 24 maart 2011
package com.api
µServices
bundlecom.provider.impl
specifies
donderdag 24 maart 2011
package com.api
µServices
bundlecom.provider.impl
providesspecifies
donderdag 24 maart 2011
package com.api
µServices
bundlecom.provider.impl
bundle com.consumer.impl
providesspecifies
donderdag 24 maart 2011
package com.api
µServices
bundlecom.provider.impl
bundle com.consumer.impl
providesrefers specifies
donderdag 24 maart 2011
Trivial To Use With DSpackage com.consumer.impl;@Componentpublic class Consumer { Interface service;
@Activate void begin();
@Reference void setLog( Interface service) { this.service = service; }}
package com.provider.impl;@Componentpublic class Provider implements Interface { public void method() { … // do something }}
donderdag 24 maart 2011
µServices
bundlecom.provider.impl
bundlecom.consumer.impl
factory
donderdag 24 maart 2011
µServices
bundlecom.provider.impl
bundlecom.consumer.impl
listeners
donderdag 24 maart 2011
µServices
bundlecom.provider.impl
bundlecom.consumer.impl
listeners
“Whiteboard”
donderdag 24 maart 2011
µServices
bundlecom.provider.impl
bundlecom.consumer.impl
listeners
“Whiteboard”
donderdag 24 maart 2011
µServices
bundlecom.
provider.impl
bundlecom.consumer.impl
bundlecom.other.
impl
donderdag 24 maart 2011
µServices
bundlecom.
provider.impl
bundlecom.
consumer.impl
bundlecom.other.
provider.impl
bundlecom.other.consumer.
impl
donderdag 24 maart 2011
µServices
bundlecom.
provider.impl
bundlecom.
consumer.impl
bundlecom.other.
provider.impl
bundlecom.other.consumer.
impl reified
donderdag 24 maart 2011
Service Specificationscondpermadmin permission admin measurement
url service hooks position
bundle hooks info.dmtree xml
application blueprint jpa persistence
cm component web applications
deployment admin device JDBC
event http sca configuration
io log Blueprint
metatype monitor mobile
prefs provisioning tracker
remote service admin UPNP coordinator
user admin wire admin jndi
cdma gsm transactions
JMX autoconf
donderdag 24 maart 2011
OSGi• Next generation of strong modularity in Bundles
• Imports and Exports Packages
• Extensive support for legacy use cases
• Communicates via µServices
• Dynamic Binding
• Unifies Factories, Listeners, Brokers, DI
• Bundles and Services are all reified with small but powerful API
• Security
• Provides growing library of standard services
donderdag 24 maart 2011
JAX Londonjaxlondon.com
London11-13 April 2011
donderdag 24 maart 2011
JAX Londonjaxlondon.com
London11-13 April 2011
Join us!donderdag 24 maart 2011