SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Maximize the power of OSGi
Carsten Ziegeler | David Bosschaert | Adobe R&D
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
About
David Bosschaert davidb@apache.org @davidbosschaert
•  R&D Adobe Ireland
•  Co-chair OSGi Enterprise Expert Group
•  ISO/IEC JTC1 SC38 Cloud Computing committee member for Ireland
•  Apache Felix, Aries PMC member and committer
•  … other opensource projects
•  Cloud and embedded computing enthusiast
2
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
About
Carsten Ziegeler cziegeler@apache.org @cziegeler
•  RnD Adobe Research Switzerland
•  Member of the Apache Software Foundation
•  VP of Apache Felix and Apache Sling
•  OSGi Core Platform, OSGi Enterprise, OSGi IoT Expert Groups
•  Member on the board of the OSGi Alliance
•  Book / article author, technical reviewer, conference speaker
3
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Today’s contents
§  Declarative Services
§  with Configuration Admin
§  HTTP Whiteboard
§  Coordinator
§  Subsystems
4
Image by Joadl: Lyme_Regis_harbour_02b on wikipedia
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Declarative Services
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Component Container Interaction
6
OSGi Service Registry
Declarative Services Blueprint
iPojo,
Dependency
Manager,
….
Framework API
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 7
No POJOs
Too slow
Dynamics not manageable
No dependency injection
Not suitable forthe enterprise
Notooling
OSGi Preconceptions
✔?!
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
The Next Big Thing
8
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Building Blocks
§  Components
§  Services
§  Module aka Bundle
9
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Game Design
10
Game Servlet
GET
POST
HTML
Game Controller
Game Bundle
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Game Design - API
11
public enum Level {
EASY,
MEDIUM,
HARD
}
public interface GameController {
Game startGame(final String name,
final Level level);
int nextGuess(final Game status,
final int guess);
int getMax(final Level level);
}
public class Game {
// game status
}
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Implementation
12
@Component
public class GameControllerImpl implements GameController {
...
import org.osgi.service.component.annotations.Component;
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Configuration
13
public @interface Config {
int easy_max() default 10;
int medium_max() default 50;
int hard_max() default 100;
}
Range from 1 to a configurable max value per level
Configuration (Dictionary)
easy.max = "8"
medium.max = 40L
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 14
private Config configuration;
@Activate
protected void activate(final Config config) {
this.configuration = config;
}
public @interface Config {
int easy_max() default 10;
int medium_max() default 50;
int hard_max() default 100;
}
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 15
public int getMax(final Level level) {
int max = 0;
switch (level) {
case EASY : max = configuration.easy_max(); break;
case MEDIUM : max = configuration.medium_max(); break;
case HARD : max = configuration.hard_max(); break;
}
return max;
}
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Game Design
16
Game Servlet
GET
POST
HTML
Game Controller
Game Bundle
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Web?
17
@Component( service = Servlet.class ,
property="osgi.http.whiteboard.servlet.pattern=/game")
public class GameServlet extends HttpServlet {
@Reference
private GameController controller;
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Unary References
18
@Reference
private GameController controller;
@Reference(cardinality=ReferenceCardinality.OPTIONAL
policy=ReferencePolicy.DYNAMIC)
private volatile GameStatistics stats;
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Multiple References
19
@Reference(cardinality=ReferenceCardinality.MULTIPLE)
private volatile List<Highscore> highscores;
@Reference
private final Set<Highscore> highscores =
new ConcurrentSkipListSet<Highscore>();
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Game Design
20
Game Servlet
GET
POST
HTML
Game Controller
Game Bundle
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Management
21
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Component Management
22
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Metatype I
23
@ObjectClassDefinition(
name = "Game Configuration",
description = "The configuration for the guessing game.")
public @interface Config {
@AttributeDefinition(name="Easy",
description="Maximum value for easy")
int easy_max() default 10;
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Metatype II
24
@Component
@Designate( ocd = Config.class )
public class GameControllerImpl
implements GameController {
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Declarative Services
§  Easy too use
§  Pojos
§  DI with handling dynamics
§  Integrates with Configuration Admin and Metatype
25
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Try it out TODAY
§  Tooling *is* available
§  Official open source implementations available
26
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
OSGi Coordinator
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
OSGi Coordinator
§  Sometimes you want to group things together
§  set multiple configuration values
-> afterwards apply
§  multiple database access calls
-> then close the connection
§  perform related operations
-> then flush the cache
§  Combining these is better
§  Use the OSGi Coordinator Service
(Chapter 130 of OSGi Enterprise specs)
28
“Red arrows in apollo formation cotswoldairshow 2010 arp” by Arpingstone
from wikipedia.org
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Coordinator Service
§  Coordination Initiator
§  Start a coordination implicit/explicit
§  Knows the ‘higher level’ task
§  Normally ends the coordination too
§  Participants
§  don’t have the bigger picture
§  but can add themselves as ‘interested’
§  and get notified on completion or failure
§  Both the initiator and participants can fail the
coordination
§  Similar to transactions
§  but then light
29
For implementations see: https://en.wikipedia.org/wiki/OSGi_Specification_Implementations
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Optimization using Coordinator Service – without API change
30
public void setConfigurations() {
for (int i=0; i<10; i++) {
setConfig(i);
}
}
private void setConfig(int i) {
System.out.println("Setting config data " + i);
System.out.println("Flush configuration");
}
setConfigurationsWithCoordinator()
Setting config data 0
Setting config data 1
Setting config data 2
Setting config data 3
Setting config data 4
Setting config data 5
Setting config data 6
Setting config data 7
Setting config data 8
Setting config data 9
Flush configuration
setConfigurations()
Setting config data 0
Flush configuration
Setting config data 1
Flush configuration
Setting config data 2
Flush configuration
Setting config data 3
Flush configuration
Setting config data 4
Flush configuration
Setting config data 5
Flush configuration
Setting config data 6
Flush configuration
Setting config data 7
Flush configuration
Setting config data 8
Flush configuration
Setting config data 9
Flush configuration
private Coordinator coordinator = ... // From Service Registry

public void setConfigurationsWithCoordinator() {
Coordination c = coordinator.begin("coord.name", 0);
try {
setConfigurations();
} catch (Exception ex) {
c.fail(ex);
} finally {
c.end();
}
}


public void setConfigurations() {
for (int i=0; i<10; i++) {
setConfig(i);
}
}
private void setConfig(int i) {
System.out.println("Setting config data " + i);
if (!coordinator.addParticipant(this))
System.out.println("Flush configuration");
}
@Override
public void ended(Coordination c) throws Exception {
System.out.println("Flush configuration");
}
@Override public void failed(Coordination c) throws Exception {}
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
OSGi Subsystems
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Package your app for deployment
§  Most applications are composed of
multiple bundles
§  Need a neat deployment package
§  Previously: proprietary solutions
32
"Airdrop pallets" by Senior Airman Ricky J. Best - defenselink.mil (search for "airdrop").
Licensed under Public Domain via Wikimedia Commons
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
OSGi Subsystems
§  Chapter 134 of Enterprise spec
§  Packaging of multi-bundle deployments
§  in .esa file (a zip file)
§  Optional isolation models
§  Bundles either in:
§  .esa file
§  OSGi Repository
33
Jack Kennard TSA 3-1-1 rule
https://www.flickr.com/photos/javajoba/4013349543
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Subsystem types
§  Features – everything shared
§  Applications – isolated
§  for ‘friendly’ multi-tenancy – keeps bundles from interfering with each other
§  Composites – configurable isolation
§  generally useful for larger infrastructure components
34
Chiot's Run
A Few Evenings of Work
flickr.com
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Feature Subsystems
Deployment artifacts
35
Feature
api bundle
svc bundle use bundle
feature
bundle
Feature 2
api bundle
svc bundle use bundle
feature
bundle2
Runtime Framework
feature
bundle
svc bundle
feature
bundle2
use bundle
api bundle
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Application Subsystems
Deployment artifacts
36
Top-level Application
Application
api bundle
svc bundle use bundle
Application 2
api bundle
svc bundle use bundle
Runtime Framework
svc bundle
svc
bundle2
api bundle
use bundle
api bundle
use bundle
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Build a subsystem
§  Use maven:
<project>
<artifactId>mysubsystem</artifactId>
<packaging>esa</packaging>
<dependencies>
<!– the bundles you want in your subsystem -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.aries</groupId>
<artifactId>esa-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<generateManifest>true</generateManifest>
<instructions>
<Subsystem-Type>osgi.subsystem.feature
</Subsystem-Type>
</instructions>
</configuration>
</plugin>
to produce mysubsystem.esa
37
"Sausage making-H-1" by László Szalai (Beyond silence) - Own work.
Licensed under Public Domain via Wikimedia Commons
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Deploy
38
https://svn.apache.org/repos/asf/felix/trunk/webconsole-plugins/subsystems
https://svn.apache.org/repos/asf/aries/trunk/subsystem/subsystem-gogo-command
…or use the Subsystem Gogo Command
g! subsystem:list
0 ACTIVE org.osgi.service.subsystem.root
1.0.0
g! subsystem:install …/feature1.esa
...
Subsystem successfully installed: feature1;
id: 1
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
More info on creating a subsystem
§  OSGi Enterprise R6 spec: http://www.osgi.org/Download/Release6
§  Apache Aries website http://aries.apache.org/modules/subsystems.html
§  esa-maven-plugin
http://aries.apache.org/modules/esamavenpluginproject.html
§  For examples see:
https://github.com/coderthoughts/subsystem-examples
39
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Recipe – OSGi R6 Compendium
40
§  OSGi Declarative Services (Chapter 112)
§  OSGi Http Whiteboard Service (Chapter 140)
§  OSGi Configuration Admin (Chapter 104)
§  OSGi Metatype Service (Chapter 105)
§  OSGi Coordinator (Chapter 130)
§  OSGi Subsystems (Chapter 134)
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 41
Q&(A)

Mais conteúdo relacionado

Mais procurados

Java Modularity with OSGi
Java Modularity with OSGiJava Modularity with OSGi
Java Modularity with OSGiIlya Rybak
 
Spring - CDI Interop
Spring - CDI InteropSpring - CDI Interop
Spring - CDI InteropRay Ploski
 
OSGi 4.3 Technical Update: What's New?
OSGi 4.3 Technical Update: What's New?OSGi 4.3 Technical Update: What's New?
OSGi 4.3 Technical Update: What's New?bjhargrave
 
Travelling Light for the Long Haul - Ian Robinson
Travelling Light for the Long Haul -  Ian RobinsonTravelling Light for the Long Haul -  Ian Robinson
Travelling Light for the Long Haul - Ian Robinsonmfrancis
 
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDIMigrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDIMario-Leander Reimer
 
OSGi & Java EE in GlassFish - Best of both worlds
OSGi & Java EE in GlassFish - Best of both worldsOSGi & Java EE in GlassFish - Best of both worlds
OSGi & Java EE in GlassFish - Best of both worldsArun Gupta
 
OSGi-enabled Java EE applications in GlassFish
OSGi-enabled Java EE applications in GlassFishOSGi-enabled Java EE applications in GlassFish
OSGi-enabled Java EE applications in GlassFishArun Gupta
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJSYoann Gotthilf
 
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
 
REST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherREST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherPavan Kumar
 
OSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 IndiaOSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 IndiaArun Gupta
 
Android MvRx Framework 介紹
Android MvRx Framework 介紹Android MvRx Framework 介紹
Android MvRx Framework 介紹Kros Huang
 
DEVNET-2002 Coding 201: Coding Skills 201: Going Further with REST and Python...
DEVNET-2002	Coding 201: Coding Skills 201: Going Further with REST and Python...DEVNET-2002	Coding 201: Coding Skills 201: Going Further with REST and Python...
DEVNET-2002 Coding 201: Coding Skills 201: Going Further with REST and Python...Cisco DevNet
 
Dynamic and modular Web Applications with Equinox and Vaadin
Dynamic and modular Web Applications with Equinox and VaadinDynamic and modular Web Applications with Equinox and Vaadin
Dynamic and modular Web Applications with Equinox and VaadinKai Tödter
 
Dependency Injections in Kotlin
Dependency Injections in KotlinDependency Injections in Kotlin
Dependency Injections in KotlinEatDog
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalNAVER D2
 
AEM and Sling
AEM and SlingAEM and Sling
AEM and SlingLo Ki
 
Testing OSGi the "groovy" way - Lars Pfannenschmidt, Dennis Nobel
Testing OSGi the "groovy" way - Lars Pfannenschmidt, Dennis NobelTesting OSGi the "groovy" way - Lars Pfannenschmidt, Dennis Nobel
Testing OSGi the "groovy" way - Lars Pfannenschmidt, Dennis Nobelmfrancis
 

Mais procurados (20)

Java Modularity with OSGi
Java Modularity with OSGiJava Modularity with OSGi
Java Modularity with OSGi
 
Spring - CDI Interop
Spring - CDI InteropSpring - CDI Interop
Spring - CDI Interop
 
OSGi 4.3 Technical Update: What's New?
OSGi 4.3 Technical Update: What's New?OSGi 4.3 Technical Update: What's New?
OSGi 4.3 Technical Update: What's New?
 
Travelling Light for the Long Haul - Ian Robinson
Travelling Light for the Long Haul -  Ian RobinsonTravelling Light for the Long Haul -  Ian Robinson
Travelling Light for the Long Haul - Ian Robinson
 
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDIMigrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
 
OSGi & Java EE in GlassFish - Best of both worlds
OSGi & Java EE in GlassFish - Best of both worldsOSGi & Java EE in GlassFish - Best of both worlds
OSGi & Java EE in GlassFish - Best of both worlds
 
OSGi-enabled Java EE applications in GlassFish
OSGi-enabled Java EE applications in GlassFishOSGi-enabled Java EE applications in GlassFish
OSGi-enabled Java EE applications in GlassFish
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
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)
 
REST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherREST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion Aether
 
OSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 IndiaOSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 India
 
Android MvRx Framework 介紹
Android MvRx Framework 介紹Android MvRx Framework 介紹
Android MvRx Framework 介紹
 
DEVNET-2002 Coding 201: Coding Skills 201: Going Further with REST and Python...
DEVNET-2002	Coding 201: Coding Skills 201: Going Further with REST and Python...DEVNET-2002	Coding 201: Coding Skills 201: Going Further with REST and Python...
DEVNET-2002 Coding 201: Coding Skills 201: Going Further with REST and Python...
 
Dynamic and modular Web Applications with Equinox and Vaadin
Dynamic and modular Web Applications with Equinox and VaadinDynamic and modular Web Applications with Equinox and Vaadin
Dynamic and modular Web Applications with Equinox and Vaadin
 
Dependency Injections in Kotlin
Dependency Injections in KotlinDependency Injections in Kotlin
Dependency Injections in Kotlin
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_final
 
AEM and Sling
AEM and SlingAEM and Sling
AEM and Sling
 
Angular 2.0
Angular  2.0Angular  2.0
Angular 2.0
 
Testing OSGi the "groovy" way - Lars Pfannenschmidt, Dennis Nobel
Testing OSGi the "groovy" way - Lars Pfannenschmidt, Dennis NobelTesting OSGi the "groovy" way - Lars Pfannenschmidt, Dennis Nobel
Testing OSGi the "groovy" way - Lars Pfannenschmidt, Dennis Nobel
 
Modules or microservices?
Modules or microservices?Modules or microservices?
Modules or microservices?
 

Destaque

EDF Project M@jordom - P Kopff & C Odinot
EDF Project M@jordom - P Kopff & C OdinotEDF Project M@jordom - P Kopff & C Odinot
EDF Project M@jordom - P Kopff & C Odinotmfrancis
 
Using OSGi enRoute for the OSGi Community Event IoT Cotest - Peter Kriens
Using OSGi enRoute for the OSGi Community Event IoT Cotest - Peter KriensUsing OSGi enRoute for the OSGi Community Event IoT Cotest - Peter Kriens
Using OSGi enRoute for the OSGi Community Event IoT Cotest - Peter Kriensmfrancis
 
OSGi -Simplifying the IoT Gateway - Walt Bowers
OSGi -Simplifying the IoT Gateway - Walt BowersOSGi -Simplifying the IoT Gateway - Walt Bowers
OSGi -Simplifying the IoT Gateway - Walt Bowersmfrancis
 
OSGi for IoT: the good, the bad and the ugly - Tim Verbelen
OSGi for IoT: the good, the bad and the ugly - Tim VerbelenOSGi for IoT: the good, the bad and the ugly - Tim Verbelen
OSGi for IoT: the good, the bad and the ugly - Tim Verbelenmfrancis
 
Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM ICF CIRCUIT
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegelermfrancis
 
Service oriented web development with OSGi
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGiCarsten Ziegeler
 

Destaque (7)

EDF Project M@jordom - P Kopff & C Odinot
EDF Project M@jordom - P Kopff & C OdinotEDF Project M@jordom - P Kopff & C Odinot
EDF Project M@jordom - P Kopff & C Odinot
 
Using OSGi enRoute for the OSGi Community Event IoT Cotest - Peter Kriens
Using OSGi enRoute for the OSGi Community Event IoT Cotest - Peter KriensUsing OSGi enRoute for the OSGi Community Event IoT Cotest - Peter Kriens
Using OSGi enRoute for the OSGi Community Event IoT Cotest - Peter Kriens
 
OSGi -Simplifying the IoT Gateway - Walt Bowers
OSGi -Simplifying the IoT Gateway - Walt BowersOSGi -Simplifying the IoT Gateway - Walt Bowers
OSGi -Simplifying the IoT Gateway - Walt Bowers
 
OSGi for IoT: the good, the bad and the ugly - Tim Verbelen
OSGi for IoT: the good, the bad and the ugly - Tim VerbelenOSGi for IoT: the good, the bad and the ugly - Tim Verbelen
OSGi for IoT: the good, the bad and the ugly - Tim Verbelen
 
Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
 
Service oriented web development with OSGi
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGi
 

Semelhante a Maximise the Power of OSGi - Carsten Ziegeler & David Bosschaert

BeJUG Meetup - What's coming in the OSGi R7 Specification
BeJUG Meetup - What's coming in the OSGi R7 SpecificationBeJUG Meetup - What's coming in the OSGi R7 Specification
BeJUG Meetup - What's coming in the OSGi R7 SpecificationStijn Van Den Enden
 
Service Oriented Web Development with OSGi - C Ziegeler
Service Oriented Web Development with OSGi - C ZiegelerService Oriented Web Development with OSGi - C Ziegeler
Service Oriented Web Development with OSGi - C Ziegelermfrancis
 
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...Nagios
 
Better Code: Concurrency
Better Code: ConcurrencyBetter Code: Concurrency
Better Code: ConcurrencyPlatonov Sergey
 
Revisiting Silent: Installs Are they still useful?
Revisiting Silent: Installs Are they still useful?Revisiting Silent: Installs Are they still useful?
Revisiting Silent: Installs Are they still useful?Revelation Technologies
 
MySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMiguel Araújo
 
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedJetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedToru Wonyoung Choi
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerJustin Edelson
 
Spark on Dataproc - Israel Spark Meetup at taboola
Spark on Dataproc - Israel Spark Meetup at taboolaSpark on Dataproc - Israel Spark Meetup at taboola
Spark on Dataproc - Israel Spark Meetup at taboolatsliwowicz
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience Managerconnectwebex
 
Networking and Data Access with Eqela
Networking and Data Access with EqelaNetworking and Data Access with Eqela
Networking and Data Access with Eqelajobandesther
 
ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013Rupesh Kumar
 
A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)Nati Shalom
 
Mastering the Sling Rewriter by Justin Edelson
Mastering the Sling Rewriter by Justin EdelsonMastering the Sling Rewriter by Justin Edelson
Mastering the Sling Rewriter by Justin EdelsonAEM HUB
 
Mastering the Sling Rewriter
Mastering the Sling RewriterMastering the Sling Rewriter
Mastering the Sling RewriterJustin Edelson
 
Puppet for Developers
Puppet for DevelopersPuppet for Developers
Puppet for Developerssagarhere4u
 

Semelhante a Maximise the Power of OSGi - Carsten Ziegeler & David Bosschaert (20)

BeJUG Meetup - What's coming in the OSGi R7 Specification
BeJUG Meetup - What's coming in the OSGi R7 SpecificationBeJUG Meetup - What's coming in the OSGi R7 Specification
BeJUG Meetup - What's coming in the OSGi R7 Specification
 
Service Oriented Web Development with OSGi - C Ziegeler
Service Oriented Web Development with OSGi - C ZiegelerService Oriented Web Development with OSGi - C Ziegeler
Service Oriented Web Development with OSGi - C Ziegeler
 
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...
 
Better Code: Concurrency
Better Code: ConcurrencyBetter Code: Concurrency
Better Code: Concurrency
 
Revisiting Silent: Installs Are they still useful?
Revisiting Silent: Installs Are they still useful?Revisiting Silent: Installs Are they still useful?
Revisiting Silent: Installs Are they still useful?
 
MySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA Tool
 
Sightly_techInsight
Sightly_techInsightSightly_techInsight
Sightly_techInsight
 
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedJetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO Extended
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience Manager
 
Spark on Dataproc - Israel Spark Meetup at taboola
Spark on Dataproc - Israel Spark Meetup at taboolaSpark on Dataproc - Israel Spark Meetup at taboola
Spark on Dataproc - Israel Spark Meetup at taboola
 
MySQL JSON Functions
MySQL JSON FunctionsMySQL JSON Functions
MySQL JSON Functions
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience Manager
 
Networking and Data Access with Eqela
Networking and Data Access with EqelaNetworking and Data Access with Eqela
Networking and Data Access with Eqela
 
DevRock #01 What's new ASP.net 5
DevRock #01 What's new ASP.net 5DevRock #01 What's new ASP.net 5
DevRock #01 What's new ASP.net 5
 
ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013
 
OID Install and Config
OID Install and ConfigOID Install and Config
OID Install and Config
 
A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)
 
Mastering the Sling Rewriter by Justin Edelson
Mastering the Sling Rewriter by Justin EdelsonMastering the Sling Rewriter by Justin Edelson
Mastering the Sling Rewriter by Justin Edelson
 
Mastering the Sling Rewriter
Mastering the Sling RewriterMastering the Sling Rewriter
Mastering the Sling Rewriter
 
Puppet for Developers
Puppet for DevelopersPuppet for Developers
Puppet for Developers
 

Mais de 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
 
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
 
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...mfrancis
 

Mais de 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...
 
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)
 
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
 

Último

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 

Último (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 

Maximise the Power of OSGi - Carsten Ziegeler & David Bosschaert

  • 1. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Maximize the power of OSGi Carsten Ziegeler | David Bosschaert | Adobe R&D
  • 2. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. About David Bosschaert davidb@apache.org @davidbosschaert •  R&D Adobe Ireland •  Co-chair OSGi Enterprise Expert Group •  ISO/IEC JTC1 SC38 Cloud Computing committee member for Ireland •  Apache Felix, Aries PMC member and committer •  … other opensource projects •  Cloud and embedded computing enthusiast 2
  • 3. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. About Carsten Ziegeler cziegeler@apache.org @cziegeler •  RnD Adobe Research Switzerland •  Member of the Apache Software Foundation •  VP of Apache Felix and Apache Sling •  OSGi Core Platform, OSGi Enterprise, OSGi IoT Expert Groups •  Member on the board of the OSGi Alliance •  Book / article author, technical reviewer, conference speaker 3
  • 4. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Today’s contents §  Declarative Services §  with Configuration Admin §  HTTP Whiteboard §  Coordinator §  Subsystems 4 Image by Joadl: Lyme_Regis_harbour_02b on wikipedia
  • 5. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Declarative Services
  • 6. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Component Container Interaction 6 OSGi Service Registry Declarative Services Blueprint iPojo, Dependency Manager, …. Framework API
  • 7. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 7 No POJOs Too slow Dynamics not manageable No dependency injection Not suitable forthe enterprise Notooling OSGi Preconceptions ✔?!
  • 8. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. The Next Big Thing 8
  • 9. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Building Blocks §  Components §  Services §  Module aka Bundle 9
  • 10. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Game Design 10 Game Servlet GET POST HTML Game Controller Game Bundle
  • 11. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Game Design - API 11 public enum Level { EASY, MEDIUM, HARD } public interface GameController { Game startGame(final String name, final Level level); int nextGuess(final Game status, final int guess); int getMax(final Level level); } public class Game { // game status }
  • 12. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Implementation 12 @Component public class GameControllerImpl implements GameController { ... import org.osgi.service.component.annotations.Component;
  • 13. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Configuration 13 public @interface Config { int easy_max() default 10; int medium_max() default 50; int hard_max() default 100; } Range from 1 to a configurable max value per level Configuration (Dictionary) easy.max = "8" medium.max = 40L
  • 14. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 14 private Config configuration; @Activate protected void activate(final Config config) { this.configuration = config; } public @interface Config { int easy_max() default 10; int medium_max() default 50; int hard_max() default 100; }
  • 15. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 15 public int getMax(final Level level) { int max = 0; switch (level) { case EASY : max = configuration.easy_max(); break; case MEDIUM : max = configuration.medium_max(); break; case HARD : max = configuration.hard_max(); break; } return max; }
  • 16. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Game Design 16 Game Servlet GET POST HTML Game Controller Game Bundle
  • 17. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Web? 17 @Component( service = Servlet.class , property="osgi.http.whiteboard.servlet.pattern=/game") public class GameServlet extends HttpServlet { @Reference private GameController controller;
  • 18. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Unary References 18 @Reference private GameController controller; @Reference(cardinality=ReferenceCardinality.OPTIONAL policy=ReferencePolicy.DYNAMIC) private volatile GameStatistics stats;
  • 19. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Multiple References 19 @Reference(cardinality=ReferenceCardinality.MULTIPLE) private volatile List<Highscore> highscores; @Reference private final Set<Highscore> highscores = new ConcurrentSkipListSet<Highscore>();
  • 20. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Game Design 20 Game Servlet GET POST HTML Game Controller Game Bundle
  • 21. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Management 21
  • 22. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Component Management 22
  • 23. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Metatype I 23 @ObjectClassDefinition( name = "Game Configuration", description = "The configuration for the guessing game.") public @interface Config { @AttributeDefinition(name="Easy", description="Maximum value for easy") int easy_max() default 10;
  • 24. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Metatype II 24 @Component @Designate( ocd = Config.class ) public class GameControllerImpl implements GameController {
  • 25. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Declarative Services §  Easy too use §  Pojos §  DI with handling dynamics §  Integrates with Configuration Admin and Metatype 25
  • 26. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Try it out TODAY §  Tooling *is* available §  Official open source implementations available 26
  • 27. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. OSGi Coordinator
  • 28. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. OSGi Coordinator §  Sometimes you want to group things together §  set multiple configuration values -> afterwards apply §  multiple database access calls -> then close the connection §  perform related operations -> then flush the cache §  Combining these is better §  Use the OSGi Coordinator Service (Chapter 130 of OSGi Enterprise specs) 28 “Red arrows in apollo formation cotswoldairshow 2010 arp” by Arpingstone from wikipedia.org
  • 29. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Coordinator Service §  Coordination Initiator §  Start a coordination implicit/explicit §  Knows the ‘higher level’ task §  Normally ends the coordination too §  Participants §  don’t have the bigger picture §  but can add themselves as ‘interested’ §  and get notified on completion or failure §  Both the initiator and participants can fail the coordination §  Similar to transactions §  but then light 29 For implementations see: https://en.wikipedia.org/wiki/OSGi_Specification_Implementations
  • 30. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Optimization using Coordinator Service – without API change 30 public void setConfigurations() { for (int i=0; i<10; i++) { setConfig(i); } } private void setConfig(int i) { System.out.println("Setting config data " + i); System.out.println("Flush configuration"); } setConfigurationsWithCoordinator() Setting config data 0 Setting config data 1 Setting config data 2 Setting config data 3 Setting config data 4 Setting config data 5 Setting config data 6 Setting config data 7 Setting config data 8 Setting config data 9 Flush configuration setConfigurations() Setting config data 0 Flush configuration Setting config data 1 Flush configuration Setting config data 2 Flush configuration Setting config data 3 Flush configuration Setting config data 4 Flush configuration Setting config data 5 Flush configuration Setting config data 6 Flush configuration Setting config data 7 Flush configuration Setting config data 8 Flush configuration Setting config data 9 Flush configuration private Coordinator coordinator = ... // From Service Registry
 public void setConfigurationsWithCoordinator() { Coordination c = coordinator.begin("coord.name", 0); try { setConfigurations(); } catch (Exception ex) { c.fail(ex); } finally { c.end(); } } 
 public void setConfigurations() { for (int i=0; i<10; i++) { setConfig(i); } } private void setConfig(int i) { System.out.println("Setting config data " + i); if (!coordinator.addParticipant(this)) System.out.println("Flush configuration"); } @Override public void ended(Coordination c) throws Exception { System.out.println("Flush configuration"); } @Override public void failed(Coordination c) throws Exception {}
  • 31. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. OSGi Subsystems
  • 32. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Package your app for deployment §  Most applications are composed of multiple bundles §  Need a neat deployment package §  Previously: proprietary solutions 32 "Airdrop pallets" by Senior Airman Ricky J. Best - defenselink.mil (search for "airdrop"). Licensed under Public Domain via Wikimedia Commons
  • 33. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. OSGi Subsystems §  Chapter 134 of Enterprise spec §  Packaging of multi-bundle deployments §  in .esa file (a zip file) §  Optional isolation models §  Bundles either in: §  .esa file §  OSGi Repository 33 Jack Kennard TSA 3-1-1 rule https://www.flickr.com/photos/javajoba/4013349543
  • 34. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Subsystem types §  Features – everything shared §  Applications – isolated §  for ‘friendly’ multi-tenancy – keeps bundles from interfering with each other §  Composites – configurable isolation §  generally useful for larger infrastructure components 34 Chiot's Run A Few Evenings of Work flickr.com
  • 35. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Feature Subsystems Deployment artifacts 35 Feature api bundle svc bundle use bundle feature bundle Feature 2 api bundle svc bundle use bundle feature bundle2 Runtime Framework feature bundle svc bundle feature bundle2 use bundle api bundle
  • 36. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Application Subsystems Deployment artifacts 36 Top-level Application Application api bundle svc bundle use bundle Application 2 api bundle svc bundle use bundle Runtime Framework svc bundle svc bundle2 api bundle use bundle api bundle use bundle
  • 37. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Build a subsystem §  Use maven: <project> <artifactId>mysubsystem</artifactId> <packaging>esa</packaging> <dependencies> <!– the bundles you want in your subsystem --> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.aries</groupId> <artifactId>esa-maven-plugin</artifactId> <extensions>true</extensions> <configuration> <generateManifest>true</generateManifest> <instructions> <Subsystem-Type>osgi.subsystem.feature </Subsystem-Type> </instructions> </configuration> </plugin> to produce mysubsystem.esa 37 "Sausage making-H-1" by László Szalai (Beyond silence) - Own work. Licensed under Public Domain via Wikimedia Commons
  • 38. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Deploy 38 https://svn.apache.org/repos/asf/felix/trunk/webconsole-plugins/subsystems https://svn.apache.org/repos/asf/aries/trunk/subsystem/subsystem-gogo-command …or use the Subsystem Gogo Command g! subsystem:list 0 ACTIVE org.osgi.service.subsystem.root 1.0.0 g! subsystem:install …/feature1.esa ... Subsystem successfully installed: feature1; id: 1
  • 39. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. More info on creating a subsystem §  OSGi Enterprise R6 spec: http://www.osgi.org/Download/Release6 §  Apache Aries website http://aries.apache.org/modules/subsystems.html §  esa-maven-plugin http://aries.apache.org/modules/esamavenpluginproject.html §  For examples see: https://github.com/coderthoughts/subsystem-examples 39
  • 40. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Recipe – OSGi R6 Compendium 40 §  OSGi Declarative Services (Chapter 112) §  OSGi Http Whiteboard Service (Chapter 140) §  OSGi Configuration Admin (Chapter 104) §  OSGi Metatype Service (Chapter 105) §  OSGi Coordinator (Chapter 130) §  OSGi Subsystems (Chapter 134)
  • 41. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 41 Q&(A)