SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Downloaden Sie, um offline zu lesen
© 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)

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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?
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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 ...
 

Kürzlich hochgeladen

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
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
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
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
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
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
 
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
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Kürzlich hochgeladen (20)

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
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!
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
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
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
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
 
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
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

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)