Download - Introduction into OSGi
![Page 1: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/1.jpg)
OSGiIntroduction
By Peter KriensOSGi Technical Director & Evangelist
donderdag 24 maart 2011
![Page 2: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/2.jpg)
donderdag 24 maart 2011
![Page 3: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/3.jpg)
In the beginnings there were bits ...
donderdag 24 maart 2011
![Page 4: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/4.jpg)
01001111001100100000000011110000001000010001110010100000010011100010001101111110001000111011111011010010000100111010000001111110000010100000110111000010000011011010000000110010001000111010000001110110
Bits
donderdag 24 maart 2011
![Page 5: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/5.jpg)
01001111001100100000000011110000001000010001110010100000010011100010001101111110001000111011111011010010000100111010000001111110000010100000110111000010000011011010000000110010001000111010000001110110
Bits
donderdag 24 maart 2011
![Page 6: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/6.jpg)
117062000360041034240116043176043276322023240176012015302015240062043240166
Oct
al
donderdag 24 maart 2011
![Page 7: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/7.jpg)
4F32 00 F021 1C A04E237E23BED2 13 A07E0A0DC2 0D A032 23 A076
Hex
donderdag 24 maart 2011
![Page 8: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/8.jpg)
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
![Page 9: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/9.jpg)
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
![Page 10: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/10.jpg)
Code global = shared;
for (local=0; local<10; local++) shared *= 10;
donderdag 24 maart 2011
![Page 11: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/11.jpg)
Code global = shared;
for (local=0; local<10; local++) shared *= 10;
donderdag 24 maart 2011
![Page 12: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/12.jpg)
int global;int shared;int local;
Code global = shared;
for (local=0; local<10; local++) shared *= 10;
donderdag 24 maart 2011
![Page 13: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/13.jpg)
int global;int shared;int local;
Func
tions
void foo() { global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
![Page 14: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/14.jpg)
int global;int shared;int local;
Func
tions
void foo() { global = shared; for (local=0; local<10; local++) shared *= 10;}
donderdag 24 maart 2011
![Page 15: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/15.jpg)
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
![Page 16: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/16.jpg)
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
![Page 17: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/17.jpg)
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
![Page 18: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/18.jpg)
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
![Page 19: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/19.jpg)
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
![Page 20: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/20.jpg)
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
![Page 21: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/21.jpg)
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
![Page 22: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/22.jpg)
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
![Page 23: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/23.jpg)
“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
![Page 24: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/24.jpg)
“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
![Page 25: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/25.jpg)
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
![Page 26: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/26.jpg)
The Face of Modularity
donderdag 24 maart 2011
![Page 27: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/27.jpg)
The Face of Modularity
donderdag 24 maart 2011
![Page 28: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/28.jpg)
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
![Page 29: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/29.jpg)
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
![Page 30: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/30.jpg)
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
![Page 31: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/31.jpg)
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
![Page 32: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/32.jpg)
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
![Page 33: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/33.jpg)
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
![Page 34: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/34.jpg)
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
![Page 35: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/35.jpg)
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
![Page 36: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/36.jpg)
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
![Page 37: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/37.jpg)
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
![Page 38: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/38.jpg)
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
![Page 39: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/39.jpg)
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
![Page 40: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/40.jpg)
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
![Page 41: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/41.jpg)
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
![Page 42: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/42.jpg)
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
![Page 43: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/43.jpg)
bundle com.acme.abc-1.2.3
Bund
les
bundle com.acme.def-9.9.1
donderdag 24 maart 2011
![Page 44: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/44.jpg)
bundle com.acme.abc-1.2.3
Bund
les
bundle com.acme.def-9.9.1
reified
donderdag 24 maart 2011
![Page 45: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/45.jpg)
POJO Programming is Best Practice
donderdag 24 maart 2011
![Page 46: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/46.jpg)
Interfaces/API
ConsumerClass
ProviderClassInterface
donderdag 24 maart 2011
![Page 47: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/47.jpg)
package com.api package com.provider.implpackage com.consumer.impl
Interfaces/API
ConsumerClass
ProviderClassInterface
donderdag 24 maart 2011
![Page 48: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/48.jpg)
package com.api package com.provider.implpackage com.consumer.impl
Interfaces/API
ConsumerClass
ProviderClassInterface
Your App
donderdag 24 maart 2011
![Page 49: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/49.jpg)
package com.api package com.provider.implpackage com.consumer.impl
Interfaces/API
ConsumerClass
ProviderClassInterface
DocumentBuilderYour App
donderdag 24 maart 2011
![Page 50: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/50.jpg)
package com.api package com.provider.implpackage com.consumer.impl
Interfaces/API
ConsumerClass
ProviderClassInterface
DocumentBuilderYour App Xerces
donderdag 24 maart 2011
![Page 51: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/51.jpg)
Access to Implementations
package com.api package com.provider.implpackage com.consumer.impl
ConsumerClass
ProviderClassInterface
donderdag 24 maart 2011
![Page 52: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/52.jpg)
Access to Implementations
package com.api package com.provider.implpackage com.consumer.impl
ConsumerClass
ProviderClassInterface
donderdag 24 maart 2011
![Page 53: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/53.jpg)
Access to Implementations
package com.api package com.provider.implpackage com.consumer.impl
ConsumerClass
ProviderClassInterface
priva
te
donderdag 24 maart 2011
![Page 54: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/54.jpg)
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
![Page 55: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/55.jpg)
µServices
donderdag 24 maart 2011
![Page 56: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/56.jpg)
package com.api
µServices
specifies
donderdag 24 maart 2011
![Page 57: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/57.jpg)
package com.api
µServices
bundlecom.provider.impl
specifies
donderdag 24 maart 2011
![Page 58: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/58.jpg)
package com.api
µServices
bundlecom.provider.impl
providesspecifies
donderdag 24 maart 2011
![Page 59: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/59.jpg)
package com.api
µServices
bundlecom.provider.impl
bundle com.consumer.impl
providesspecifies
donderdag 24 maart 2011
![Page 60: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/60.jpg)
package com.api
µServices
bundlecom.provider.impl
bundle com.consumer.impl
providesrefers specifies
donderdag 24 maart 2011
![Page 61: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/61.jpg)
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
![Page 62: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/62.jpg)
µServices
bundlecom.provider.impl
bundlecom.consumer.impl
factory
donderdag 24 maart 2011
![Page 63: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/63.jpg)
µServices
bundlecom.provider.impl
bundlecom.consumer.impl
listeners
donderdag 24 maart 2011
![Page 64: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/64.jpg)
µServices
bundlecom.provider.impl
bundlecom.consumer.impl
listeners
“Whiteboard”
donderdag 24 maart 2011
![Page 65: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/65.jpg)
µServices
bundlecom.provider.impl
bundlecom.consumer.impl
listeners
“Whiteboard”
donderdag 24 maart 2011
![Page 66: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/66.jpg)
µServices
bundlecom.
provider.impl
bundlecom.consumer.impl
bundlecom.other.
impl
donderdag 24 maart 2011
![Page 67: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/67.jpg)
µServices
bundlecom.
provider.impl
bundlecom.
consumer.impl
bundlecom.other.
provider.impl
bundlecom.other.consumer.
impl
donderdag 24 maart 2011
![Page 68: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/68.jpg)
µServices
bundlecom.
provider.impl
bundlecom.
consumer.impl
bundlecom.other.
provider.impl
bundlecom.other.consumer.
impl reified
donderdag 24 maart 2011
![Page 69: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/69.jpg)
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
![Page 70: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/70.jpg)
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
![Page 71: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/71.jpg)
JAX Londonjaxlondon.com
London11-13 April 2011
donderdag 24 maart 2011
![Page 72: Introduction into OSGi](https://reader034.vdocuments.mx/reader034/viewer/2022051412/54c41f644a79593e5e8b45a1/html5/thumbnails/72.jpg)
JAX Londonjaxlondon.com
London11-13 April 2011
Join us!donderdag 24 maart 2011