introduction into osgi

72
OSGi Introduction By Peter Kriens OSGi Technical Director & Evangelist donderdag 24 maart 2011

Upload: peter-kriens

Post on 25-Jan-2015

4.114 views

Category:

Documents


5 download

DESCRIPTION

The EclipseCon/OSGi DevCon 2011 Introduction by Peter Kriens

TRANSCRIPT

Page 1: Introduction into OSGi

OSGiIntroduction

By Peter KriensOSGi Technical Director & Evangelist

donderdag 24 maart 2011

Page 2: Introduction into OSGi

donderdag 24 maart 2011

Page 3: Introduction into OSGi

In the beginnings there were bits ...

donderdag 24 maart 2011

Page 4: Introduction into OSGi

01001111001100100000000011110000001000010001110010100000010011100010001101111110001000111011111011010010000100111010000001111110000010100000110111000010000011011010000000110010001000111010000001110110

Bits

donderdag 24 maart 2011

Page 5: Introduction into OSGi

01001111001100100000000011110000001000010001110010100000010011100010001101111110001000111011111011010010000100111010000001111110000010100000110111000010000011011010000000110010001000111010000001110110

Bits

donderdag 24 maart 2011

Page 6: Introduction into OSGi

117062000360041034240116043176043276322023240176012015302015240062043240166

Oct

al

donderdag 24 maart 2011

Page 7: Introduction into OSGi

4F32 00 F021 1C A04E237E23BED2 13 A07E0A0DC2 0D A032 23 A076

Hex

donderdag 24 maart 2011

Page 8: Introduction into OSGi

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

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

Code global = shared;

for (local=0; local<10; local++) shared *= 10;

donderdag 24 maart 2011

Page 11: Introduction into OSGi

Code global = shared;

for (local=0; local<10; local++) shared *= 10;

donderdag 24 maart 2011

Page 12: Introduction into OSGi

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

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

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

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

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

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

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

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

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

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

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

“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

“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

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

The Face of Modularity

donderdag 24 maart 2011

Page 27: Introduction into OSGi

The Face of Modularity

donderdag 24 maart 2011

Page 28: Introduction into OSGi

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

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

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

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

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

Java VM

log4j

barcode4j

axis

batik

commons

derby

fop

ezmorph

freemarker

httpunit

jakarta

jcl

json

jdbm

jdom

jenks

jpos18

jython

looks

lucene

mail

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

Java VM

log4j

barcode4j

axis

batik

commons

derby

fop

ezmorph

freemarker

httpunit

jakarta

jcl

json

jdbm

jdom

jenks

jpos18

jython

looks

lucene

mail

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

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

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

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

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

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

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

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

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

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

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

POJO Programming is Best Practice

donderdag 24 maart 2011

Page 46: Introduction into OSGi

Interfaces/API

ConsumerClass

ProviderClassInterface

donderdag 24 maart 2011

Page 47: Introduction into OSGi

package com.api package com.provider.implpackage com.consumer.impl

Interfaces/API

ConsumerClass

ProviderClassInterface

donderdag 24 maart 2011

Page 48: Introduction into OSGi

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

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

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

Access to Implementations

package com.api package com.provider.implpackage com.consumer.impl

ConsumerClass

ProviderClassInterface

donderdag 24 maart 2011

Page 52: Introduction into OSGi

Access to Implementations

package com.api package com.provider.implpackage com.consumer.impl

ConsumerClass

ProviderClassInterface

donderdag 24 maart 2011

Page 53: Introduction into OSGi

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

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

µServices

donderdag 24 maart 2011

Page 56: Introduction into OSGi

package com.api

µServices

specifies

donderdag 24 maart 2011

Page 57: Introduction into OSGi

package com.api

µServices

bundlecom.provider.impl

specifies

donderdag 24 maart 2011

Page 58: Introduction into OSGi

package com.api

µServices

bundlecom.provider.impl

providesspecifies

donderdag 24 maart 2011

Page 59: Introduction into OSGi

package com.api

µServices

bundlecom.provider.impl

bundle com.consumer.impl

providesspecifies

donderdag 24 maart 2011

Page 60: Introduction into OSGi

package com.api

µServices

bundlecom.provider.impl

bundle com.consumer.impl

providesrefers specifies

donderdag 24 maart 2011

Page 61: Introduction into OSGi

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

µServices

bundlecom.provider.impl

bundlecom.consumer.impl

factory

donderdag 24 maart 2011

Page 63: Introduction into OSGi

µServices

bundlecom.provider.impl

bundlecom.consumer.impl

listeners

donderdag 24 maart 2011

Page 64: Introduction into OSGi

µServices

bundlecom.provider.impl

bundlecom.consumer.impl

listeners

“Whiteboard”

donderdag 24 maart 2011

Page 65: Introduction into OSGi

µServices

bundlecom.provider.impl

bundlecom.consumer.impl

listeners

“Whiteboard”

donderdag 24 maart 2011

Page 66: Introduction into OSGi

µServices

bundlecom.

provider.impl

bundlecom.consumer.impl

bundlecom.other.

impl

donderdag 24 maart 2011

Page 67: Introduction into OSGi

µServices

bundlecom.

provider.impl

bundlecom.

consumer.impl

bundlecom.other.

provider.impl

bundlecom.other.consumer.

impl

donderdag 24 maart 2011

Page 68: Introduction into OSGi

µ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

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

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

JAX Londonjaxlondon.com

London11-13 April 2011

donderdag 24 maart 2011

Page 72: Introduction into OSGi

JAX Londonjaxlondon.com

London11-13 April 2011

Join us!donderdag 24 maart 2011