SlideShare a Scribd company logo
1 of 23
Download to read offline
Many 
Bundles 
of 
Things 
How 
OSGi 
can 
help 
developing 
a 
distributed 
and 
cloud 
ready 
IoT 
pla>orm 
Ma@eo 
Rulli, 
PLAT.ONE 
Development 
ABO 
DATA
Overview 
• Internet 
of 
Things 
and 
OSGi 
• PLAT.ONE: 
a 
IoT 
OSGi 
pla>orm 
• Hands 
on 
OSGi 
from 
PLAT.ONE 
standpoint 
• Lesson 
learnt 
2 
/ 
23
IoT 
Reduc*onism 
Scien&fic 
reduc&onism 
is 
the 
idea 
of 
reducing 
complex 
interacOons 
and 
enOOes 
to 
the 
sum 
of 
their 
consOtuent 
parts, 
in 
order 
to 
make 
them 
easier 
to 
study 
and 
model 
3 
/ 
23
ReducOonism 
needs 
boundaries 
EffecOve 
development 
of 
IoT 
verOcals 
and 
applicaOons 
needs 
well 
defined 
boundaries 
A 
clear 
definiOon 
of 
boundaries 
enables 
the 
reducOonist 
approach 
and 
reduces 
the 
impact 
of 
complexity 
and 
technological 
heterogeneity 
4 
/ 
23
More 
intelligence 
at 
the 
edge 
Isolated 
and 
loosely 
coupled 
services 
are 
more 
easily 
distributable 
across 
different 
execuOon 
contexts: 
no 
just 
JARs 
but 
services 
This 
enables 
to 
re-­‐use 
and 
install 
sw 
modules 
at 
the 
edges 
of 
the 
IoT 
infrastructure 
when 
needed, 
pushing 
intelligence 
in 
proximity 
of 
data 
sources 
5 
/ 
23
6 
PLAT.ONE 
Service 
Enablement 
Data 
AcquisiOon 
Device 
Management 
Data 
Storage 
Service 
Systems 
IntegraOon 
Device 
IntegraOon 
PLAT.ONE 
Data 
Management 
Data 
Tagging 
Data 
AugmentaOon 
Data 
Security 
Structured 
Data 
Un-­‐structured 
Data 
Streaming 
Data 
… 
Plat 
Energy 
Plat 
City 
Domain 
Specific 
Pla@orm 
Smart 
City 
Smart 
Metering 
AutomoOve 
Healthcare 
Smart 
Food 
... 
Domain 
Specific 
Kits 
/ 
23
Boundaries 
define 
modularity 
that 
in 
turns 
lets 
services 
pla:orms 
to 
emerge 
The 
noOon 
of 
pla>orm 
fosters 
the 
growth 
of 
IoT 
communiOes 
7 
IoT 
solu-ons 
S1 
S2 
S3 
... 
OSGi 
PLAT.ONE 
IoT 
Pla>orm 
S1 
S2 
... 
S1 
S2 
... 
S1 
... 
devices 
integra-on 
services 
IoT 
applica-on 
services 
/ 
23
OSGi-­‐based 
IoT 
pla>orm 
Modularity 
lies 
at 
the 
foundaOonal 
levels 
of 
OSGi 
This 
is 
why 
we 
choose 
to 
adopt 
OSGi 
as 
the 
execuOon 
environment 
for 
PLAT.ONE 
IoT 
pla>orm 
8 
/ 
23
OSGi 
benefits 
Lightweight 
improvement 
of 
IoC 
principle 
through 
DeclaraOve 
Service 
and 
Dependency 
InjecOon 
mechanism 
9 
No 
more 
violaOon 
of 
the 
module 
boundaries: 
Service 
srv 
= 
new 
ServiceImpl(arg1,arg2,...); 
/ 
23
OSGi 
benefits 
(conOnued) 
• Easily 
embeddable 
in 
hw 
constrained 
environments 
• Solve 
JAR 
hell 
• Dynamic 
updates 
and 
lifecycle 
managment 
of 
bundles 
and 
services 
• DS 
fits 
the 
concept 
of 
management 
M2M 
protocol 
drivers 
10 
/ 
23
OSGi 
is 
mature 
11 
Technology 
Scope 
Maintained 
by 
AcOveMQ 
Message 
Queueing 
System 
ASF 
Camel 
Enterprise 
IntegraOon 
Pa@erns 
ASF 
Cayenne 
ORM 
ASF 
CXF 
WS-­‐Stack, 
REST 
and 
more 
ASF 
DBCP 
DB 
connecOon 
mngmt 
ASF 
Groovy 
Dynamic 
Language 
for 
the 
Java 
pla>orm 
Groovy 
community 
Hazelcast 
Distributed 
Caching 
Hazelcast 
community 
Ne@y 
TCP/UDP 
sockets 
Ne@y 
community 
Quartz 
Scheduling 
library 
Quartz 
community 
Swagger 
Framework 
for 
describing, 
producing, 
consuming, 
and 
visualizing 
RESTful 
web 
services 
Reverb 
and 
the 
Swagger 
Community 
... 
/ 
23
IDE 
Support 
12 
• We 
found 
Eclipse 
RCP 
a 
great 
IDE 
to 
develop 
OSGi 
bundles 
and 
services 
and 
to 
create 
bundles 
out 
of 
third 
party 
libraries 
• PDE 
comprehensive 
OSGi 
tooling 
is 
a 
great 
technology 
to 
undertake 
OSGi-­‐based 
SW 
development: 
real-­‐Ome 
compilaOon, 
cycles 
detecOon, 
bundle 
resoluOon 
validaOon, 
etc. 
/ 
23
OSGi 
Deployment 
Eclipse 
RCP 
makes 
the 
deployment 
of 
OSGi-­‐ 
based 
products 
easy 
thanks 
to 
feature 
and 
products 
configuraOon 
13 
You 
can 
use 
the 
launch 
config 
to 
automaOcally 
generate 
the 
products 
and 
feature 
definiOon 
/ 
23
OSGi 
Deployment 
Features 
projects 
define 
all 
the 
bundles 
required 
by 
the 
OSGi 
product 
Also 
feature 
projects 
can 
be 
built 
from 
launch 
configuraOons 
14 
/ 
23
15 
Products 
and 
features 
collect 
all 
pieces 
of 
informaOon 
needed 
by 
Eclipse 
to 
export 
a 
standalone 
OSGi-­‐based 
product
• Deltapack 
can 
be 
used 
to 
generate 
OSGi 
products 
for 
target 
pla>orms 
other 
than 
the 
one 
running 
your 
Eclipse 
instance 
– It 
is 
enough 
to 
download 
the 
deltapack 
from 
eclipse 
site 
and 
unpack 
within 
your 
local 
eclipse 
folder 
– Than 
you 
can 
configure 
the 
delta 
pack 
target 
pla>orm 
with 
Windows→Preferences→Plug-­‐in 
Development→Target 
Pla:orm 
16 
OSGi 
Deployment 
/ 
23
Headless 
Builds 
Features, 
products 
files 
and 
deltapack 
enable 
headless 
builds: 
OSGi 
products 
can 
be 
automaOcally 
built 
overnight 
ANT 
command 
to 
launch 
PDE 
build 
engine 
is 
quite 
simple: 
<exec 
dir="${buildDirectory}pluginscom.abodata.plat1.${serverid}.build" 
executable="cmd" 
failonerror="true"> 
<arg 
value="/c"/> 
<arg 
value="${buildDirectory}eclipse.exe"/> 
<arg 
value="-­‐nosplash"/> 
<arg 
value="-­‐application"/> 
<arg 
value="org.eclipse.ant.core.antRunner"/> 
<arg 
value="-­‐buildfile"/> 
<arg 
value="productBuild.xml"/> 
<arg 
value="-­‐DbuildDirectory=${buildDirectory}"/> 
<arg 
value="-­‐vm"/> 
<arg 
value="${java.path}"/> 
</exec> 
17 
/ 
23
Lesson 
Learnt 
• Interface-­‐based 
programming 
and 
Dependency 
InjecOon 
– Always 
declare 
interfaces 
in 
a 
separate 
bundle 
with 
respect 
interface 
providers 
and 
consumers 
– To 
keep 
under 
control 
bundles 
number, 
package 
similar 
providers 
together 
and 
declare 
more 
component.xml 
files 
in 
OSGI-­‐INF 
folder, 
one 
per 
provider 
– Reduce 
the 
exported 
packages 
through 
the 
Dependency 
InjecOon 
mechanism 
– Strive 
to 
avoid 
explicit 
wiring 
between 
bundles 
18 
/ 
23
Lesson 
Learnt 
• When 
on-­‐boarding 
third-­‐party 
projects 
through 
the 
Eclipse 
feature, 
avoid 
including 
unnecessary 
project 
dependencies 
• It 
is 
a 
good 
pracOce 
to 
turn 
projects 
dependencies 
into 
self-­‐standing 
bundles 
19 
/ 
23
Lesson 
Learnt 
• ImporOng 
the 
exported 
bundles 
and 
uses 
direcOve 
can 
help 
resolving 
obnoxious 
ClassCastExcep*on. 
See 
for 
instance 
– OSGi 
In 
AcOon, 
R.S. 
Hall 
and 
others, 
Manning 
2011 
– 
Chapter 
5 
20 
/ 
23
Lesson 
Learnt 
• Not 
everything 
can 
be 
dynamic: 
core 
components 
of 
the 
pla>orm 
cannot 
come 
and 
go 
without 
disrupOve 
effects. 
OSGi 
does 
not 
mean 
dynamicity 
for 
free 
21 
/ 
23
Lesson 
Learnt 
• DynamicImport-­‐Package 
is 
not 
as 
evil 
as 
everyone 
suggests: 
as 
an 
example, 
Hibernate, 
CXF, 
Hazelcast 
bundles 
need 
this 
in 
their 
manifest 
in 
order 
to 
resolve 
interfaces 
at 
run-­‐ 
Ome 
to 
publish 
WS, 
perform 
ORM 
mapping 
and 
to 
marshall 
objects 
• Yet, 
dynamic 
imports 
should 
only 
be 
used 
in 
«sealed» 
bundles: 
do 
not 
use 
this 
direcOve 
in 
development 
bundles 
22 
/ 
23
Thanks! 
ma@eo.rulli@abodata.com 
h@ps://twi@er.com/PlatOneIOT 
h@p://www.platone.io/ 
23 
/ 
23

More Related Content

Viewers also liked

Brands as Services: How the IoT Is Creating New Ecosystems
Brands as Services: How the IoT Is Creating New EcosystemsBrands as Services: How the IoT Is Creating New Ecosystems
Brands as Services: How the IoT Is Creating New EcosystemsIPG Media Lab
 
Ifttt for smart home and home automation (energy management)
Ifttt for smart home and home automation (energy management)Ifttt for smart home and home automation (energy management)
Ifttt for smart home and home automation (energy management)Alexandre Rieupeyrout
 
Cm ppt master (arial)
Cm ppt master (arial)Cm ppt master (arial)
Cm ppt master (arial)so_funny
 
The Data Dilemma: How Can Consumers Trust Brands with Personal Information
The Data Dilemma: How Can Consumers Trust Brands with Personal InformationThe Data Dilemma: How Can Consumers Trust Brands with Personal Information
The Data Dilemma: How Can Consumers Trust Brands with Personal InformationIPG Media Lab
 
Meaningful Innovation with Philips Hue
Meaningful Innovation with Philips HueMeaningful Innovation with Philips Hue
Meaningful Innovation with Philips HueGunter Blanckaert
 
Phillips Hue Strategic Marketing Plan
Phillips Hue Strategic Marketing Plan Phillips Hue Strategic Marketing Plan
Phillips Hue Strategic Marketing Plan Taylor Clayton
 

Viewers also liked (6)

Brands as Services: How the IoT Is Creating New Ecosystems
Brands as Services: How the IoT Is Creating New EcosystemsBrands as Services: How the IoT Is Creating New Ecosystems
Brands as Services: How the IoT Is Creating New Ecosystems
 
Ifttt for smart home and home automation (energy management)
Ifttt for smart home and home automation (energy management)Ifttt for smart home and home automation (energy management)
Ifttt for smart home and home automation (energy management)
 
Cm ppt master (arial)
Cm ppt master (arial)Cm ppt master (arial)
Cm ppt master (arial)
 
The Data Dilemma: How Can Consumers Trust Brands with Personal Information
The Data Dilemma: How Can Consumers Trust Brands with Personal InformationThe Data Dilemma: How Can Consumers Trust Brands with Personal Information
The Data Dilemma: How Can Consumers Trust Brands with Personal Information
 
Meaningful Innovation with Philips Hue
Meaningful Innovation with Philips HueMeaningful Innovation with Philips Hue
Meaningful Innovation with Philips Hue
 
Phillips Hue Strategic Marketing Plan
Phillips Hue Strategic Marketing Plan Phillips Hue Strategic Marketing Plan
Phillips Hue Strategic Marketing Plan
 

Similar to Many Bundles of Things - M Rulli

Platform without vendor lock-in
Platform without vendor lock-inPlatform without vendor lock-in
Platform without vendor lock-inSakari Hoisko
 
platform without vendor lock-in
platform without vendor lock-inplatform without vendor lock-in
platform without vendor lock-inKai Jokiniemi
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolithJudy Breedlove
 
CPaaS.io Y1 Review Meeting - Cloud & Edge Programming
CPaaS.io Y1 Review Meeting - Cloud & Edge ProgrammingCPaaS.io Y1 Review Meeting - Cloud & Edge Programming
CPaaS.io Y1 Review Meeting - Cloud & Edge ProgrammingStephan Haller
 
RTI/Cisco response to the Software Defined Networks (SDN) OMG RFI
RTI/Cisco response to the Software Defined Networks (SDN) OMG RFIRTI/Cisco response to the Software Defined Networks (SDN) OMG RFI
RTI/Cisco response to the Software Defined Networks (SDN) OMG RFIGerardo Pardo-Castellote
 
Open source sdn controllers comparison
Open source sdn controllers comparisonOpen source sdn controllers comparison
Open source sdn controllers comparisonYashaswi Jain
 
TDD on OSGi, in practice.
TDD on OSGi, in practice.TDD on OSGi, in practice.
TDD on OSGi, in practice.Elian, I.
 
ISC Cloud13 Sill - Crossing organizational boundaries in cloud computing
ISC Cloud13 Sill - Crossing organizational boundaries in cloud computingISC Cloud13 Sill - Crossing organizational boundaries in cloud computing
ISC Cloud13 Sill - Crossing organizational boundaries in cloud computingAlan Sill
 
Foog computing and iFogSim for sustainable smart city.
Foog computing and iFogSim for sustainable smart city.Foog computing and iFogSim for sustainable smart city.
Foog computing and iFogSim for sustainable smart city.sindhuRashmi1
 
44CON London 2015 - Software Defined Networking (SDN) Security
44CON London 2015 - Software Defined Networking (SDN) Security44CON London 2015 - Software Defined Networking (SDN) Security
44CON London 2015 - Software Defined Networking (SDN) Security44CON
 
44CON & Ruxcon: SDN security
44CON & Ruxcon: SDN security44CON & Ruxcon: SDN security
44CON & Ruxcon: SDN securityDavid Jorm
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialSamsung Open Source Group
 
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...OCCIware
 
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...Marc Dutoo
 
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack NeutronGroup Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutronmestery
 
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...Paris Open Source Summit
 
Node.js Service - Best practices in 2019
Node.js Service - Best practices in 2019Node.js Service - Best practices in 2019
Node.js Service - Best practices in 2019Olivier Loverde
 

Similar to Many Bundles of Things - M Rulli (20)

Platform without vendor lock-in
Platform without vendor lock-inPlatform without vendor lock-in
Platform without vendor lock-in
 
platform without vendor lock-in
platform without vendor lock-inplatform without vendor lock-in
platform without vendor lock-in
 
Code One 2018 maven
Code One 2018   mavenCode One 2018   maven
Code One 2018 maven
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolith
 
CPaaS.io Y1 Review Meeting - Cloud & Edge Programming
CPaaS.io Y1 Review Meeting - Cloud & Edge ProgrammingCPaaS.io Y1 Review Meeting - Cloud & Edge Programming
CPaaS.io Y1 Review Meeting - Cloud & Edge Programming
 
RTI/Cisco response to the Software Defined Networks (SDN) OMG RFI
RTI/Cisco response to the Software Defined Networks (SDN) OMG RFIRTI/Cisco response to the Software Defined Networks (SDN) OMG RFI
RTI/Cisco response to the Software Defined Networks (SDN) OMG RFI
 
Open source sdn controllers comparison
Open source sdn controllers comparisonOpen source sdn controllers comparison
Open source sdn controllers comparison
 
TDD on OSGi, in practice.
TDD on OSGi, in practice.TDD on OSGi, in practice.
TDD on OSGi, in practice.
 
ISC Cloud13 Sill - Crossing organizational boundaries in cloud computing
ISC Cloud13 Sill - Crossing organizational boundaries in cloud computingISC Cloud13 Sill - Crossing organizational boundaries in cloud computing
ISC Cloud13 Sill - Crossing organizational boundaries in cloud computing
 
Foog computing and iFogSim for sustainable smart city.
Foog computing and iFogSim for sustainable smart city.Foog computing and iFogSim for sustainable smart city.
Foog computing and iFogSim for sustainable smart city.
 
44CON London 2015 - Software Defined Networking (SDN) Security
44CON London 2015 - Software Defined Networking (SDN) Security44CON London 2015 - Software Defined Networking (SDN) Security
44CON London 2015 - Software Defined Networking (SDN) Security
 
44CON & Ruxcon: SDN security
44CON & Ruxcon: SDN security44CON & Ruxcon: SDN security
44CON & Ruxcon: SDN security
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
 
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...
 
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...
 
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack NeutronGroup Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
 
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...
 
Connected TIZEN
Connected TIZENConnected TIZEN
Connected TIZEN
 
Tizen Connected with IoTivity
Tizen Connected with IoTivityTizen Connected with IoTivity
Tizen Connected with IoTivity
 
Node.js Service - Best practices in 2019
Node.js Service - Best practices in 2019Node.js Service - Best practices in 2019
Node.js Service - Best practices in 2019
 

More from mfrancis

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...mfrancis
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)mfrancis
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)mfrancis
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruumfrancis
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...mfrancis
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...mfrancis
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...mfrancis
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)mfrancis
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...mfrancis
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)mfrancis
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...mfrancis
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...mfrancis
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...mfrancis
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)mfrancis
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)mfrancis
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)mfrancis
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...mfrancis
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)mfrancis
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...mfrancis
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)mfrancis
 

More from mfrancis (20)

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)
 

Recently uploaded

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Recently uploaded (20)

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

Many Bundles of Things - M Rulli

  • 1. Many Bundles of Things How OSGi can help developing a distributed and cloud ready IoT pla>orm Ma@eo Rulli, PLAT.ONE Development ABO DATA
  • 2. Overview • Internet of Things and OSGi • PLAT.ONE: a IoT OSGi pla>orm • Hands on OSGi from PLAT.ONE standpoint • Lesson learnt 2 / 23
  • 3. IoT Reduc*onism Scien&fic reduc&onism is the idea of reducing complex interacOons and enOOes to the sum of their consOtuent parts, in order to make them easier to study and model 3 / 23
  • 4. ReducOonism needs boundaries EffecOve development of IoT verOcals and applicaOons needs well defined boundaries A clear definiOon of boundaries enables the reducOonist approach and reduces the impact of complexity and technological heterogeneity 4 / 23
  • 5. More intelligence at the edge Isolated and loosely coupled services are more easily distributable across different execuOon contexts: no just JARs but services This enables to re-­‐use and install sw modules at the edges of the IoT infrastructure when needed, pushing intelligence in proximity of data sources 5 / 23
  • 6. 6 PLAT.ONE Service Enablement Data AcquisiOon Device Management Data Storage Service Systems IntegraOon Device IntegraOon PLAT.ONE Data Management Data Tagging Data AugmentaOon Data Security Structured Data Un-­‐structured Data Streaming Data … Plat Energy Plat City Domain Specific Pla@orm Smart City Smart Metering AutomoOve Healthcare Smart Food ... Domain Specific Kits / 23
  • 7. Boundaries define modularity that in turns lets services pla:orms to emerge The noOon of pla>orm fosters the growth of IoT communiOes 7 IoT solu-ons S1 S2 S3 ... OSGi PLAT.ONE IoT Pla>orm S1 S2 ... S1 S2 ... S1 ... devices integra-on services IoT applica-on services / 23
  • 8. OSGi-­‐based IoT pla>orm Modularity lies at the foundaOonal levels of OSGi This is why we choose to adopt OSGi as the execuOon environment for PLAT.ONE IoT pla>orm 8 / 23
  • 9. OSGi benefits Lightweight improvement of IoC principle through DeclaraOve Service and Dependency InjecOon mechanism 9 No more violaOon of the module boundaries: Service srv = new ServiceImpl(arg1,arg2,...); / 23
  • 10. OSGi benefits (conOnued) • Easily embeddable in hw constrained environments • Solve JAR hell • Dynamic updates and lifecycle managment of bundles and services • DS fits the concept of management M2M protocol drivers 10 / 23
  • 11. OSGi is mature 11 Technology Scope Maintained by AcOveMQ Message Queueing System ASF Camel Enterprise IntegraOon Pa@erns ASF Cayenne ORM ASF CXF WS-­‐Stack, REST and more ASF DBCP DB connecOon mngmt ASF Groovy Dynamic Language for the Java pla>orm Groovy community Hazelcast Distributed Caching Hazelcast community Ne@y TCP/UDP sockets Ne@y community Quartz Scheduling library Quartz community Swagger Framework for describing, producing, consuming, and visualizing RESTful web services Reverb and the Swagger Community ... / 23
  • 12. IDE Support 12 • We found Eclipse RCP a great IDE to develop OSGi bundles and services and to create bundles out of third party libraries • PDE comprehensive OSGi tooling is a great technology to undertake OSGi-­‐based SW development: real-­‐Ome compilaOon, cycles detecOon, bundle resoluOon validaOon, etc. / 23
  • 13. OSGi Deployment Eclipse RCP makes the deployment of OSGi-­‐ based products easy thanks to feature and products configuraOon 13 You can use the launch config to automaOcally generate the products and feature definiOon / 23
  • 14. OSGi Deployment Features projects define all the bundles required by the OSGi product Also feature projects can be built from launch configuraOons 14 / 23
  • 15. 15 Products and features collect all pieces of informaOon needed by Eclipse to export a standalone OSGi-­‐based product
  • 16. • Deltapack can be used to generate OSGi products for target pla>orms other than the one running your Eclipse instance – It is enough to download the deltapack from eclipse site and unpack within your local eclipse folder – Than you can configure the delta pack target pla>orm with Windows→Preferences→Plug-­‐in Development→Target Pla:orm 16 OSGi Deployment / 23
  • 17. Headless Builds Features, products files and deltapack enable headless builds: OSGi products can be automaOcally built overnight ANT command to launch PDE build engine is quite simple: <exec dir="${buildDirectory}pluginscom.abodata.plat1.${serverid}.build" executable="cmd" failonerror="true"> <arg value="/c"/> <arg value="${buildDirectory}eclipse.exe"/> <arg value="-­‐nosplash"/> <arg value="-­‐application"/> <arg value="org.eclipse.ant.core.antRunner"/> <arg value="-­‐buildfile"/> <arg value="productBuild.xml"/> <arg value="-­‐DbuildDirectory=${buildDirectory}"/> <arg value="-­‐vm"/> <arg value="${java.path}"/> </exec> 17 / 23
  • 18. Lesson Learnt • Interface-­‐based programming and Dependency InjecOon – Always declare interfaces in a separate bundle with respect interface providers and consumers – To keep under control bundles number, package similar providers together and declare more component.xml files in OSGI-­‐INF folder, one per provider – Reduce the exported packages through the Dependency InjecOon mechanism – Strive to avoid explicit wiring between bundles 18 / 23
  • 19. Lesson Learnt • When on-­‐boarding third-­‐party projects through the Eclipse feature, avoid including unnecessary project dependencies • It is a good pracOce to turn projects dependencies into self-­‐standing bundles 19 / 23
  • 20. Lesson Learnt • ImporOng the exported bundles and uses direcOve can help resolving obnoxious ClassCastExcep*on. See for instance – OSGi In AcOon, R.S. Hall and others, Manning 2011 – Chapter 5 20 / 23
  • 21. Lesson Learnt • Not everything can be dynamic: core components of the pla>orm cannot come and go without disrupOve effects. OSGi does not mean dynamicity for free 21 / 23
  • 22. Lesson Learnt • DynamicImport-­‐Package is not as evil as everyone suggests: as an example, Hibernate, CXF, Hazelcast bundles need this in their manifest in order to resolve interfaces at run-­‐ Ome to publish WS, perform ORM mapping and to marshall objects • Yet, dynamic imports should only be used in «sealed» bundles: do not use this direcOve in development bundles 22 / 23