introduction into osgi

Post on 25-Jan-2015

4.118 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

The EclipseCon/OSGi DevCon 2011 Introduction by Peter Kriens

TRANSCRIPT

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

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

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

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

top related