SlideShare a Scribd company logo
1 of 41
Download to read 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)

More Related Content

What's hot

Developing your own OpenStack Swift middleware
Developing your own OpenStack Swift middlewareDeveloping your own OpenStack Swift middleware
Developing your own OpenStack Swift middlewareChristian Schwede
 
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - C Ziegel...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - C Ziegel...What’s cool in the new and updated OSGi specs (DS, Cloud and more) - C Ziegel...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - C Ziegel...mfrancis
 
What's cool in the new and updated OSGi Specs (2013)
What's cool in the new and updated OSGi Specs (2013)What's cool in the new and updated OSGi Specs (2013)
What's cool in the new and updated OSGi Specs (2013)David Bosschaert
 
ARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CIARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CICosmin Poieana
 
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
 
Declarative Services Dependency Injection OSGi style
Declarative Services Dependency Injection OSGi styleDeclarative Services Dependency Injection OSGi style
Declarative Services Dependency Injection OSGi styleFelix Meschberger
 
Second Step to the NoSQL Side: MySQL JSON Functions
Second Step to the NoSQL Side: MySQL JSON FunctionsSecond Step to the NoSQL Side: MySQL JSON Functions
Second Step to the NoSQL Side: MySQL JSON FunctionsSveta Smirnova
 
Spring & Hibernate
Spring & HibernateSpring & Hibernate
Spring & HibernateJiayun Zhou
 
Writing Plugged-in Java EE Apps: Jason Lee
Writing Plugged-in Java EE Apps: Jason LeeWriting Plugged-in Java EE Apps: Jason Lee
Writing Plugged-in Java EE Apps: Jason Leejaxconf
 
Greach 2019 - Creating Micronaut Configurations
Greach 2019 - Creating Micronaut ConfigurationsGreach 2019 - Creating Micronaut Configurations
Greach 2019 - Creating Micronaut ConfigurationsIván López Martín
 
Puppet and the Model-Driven Infrastructure
Puppet and the Model-Driven InfrastructurePuppet and the Model-Driven Infrastructure
Puppet and the Model-Driven Infrastructurelkanies
 
WWHF 2018 - Using PowerUpSQL and goddi for Active Directory Information Gathe...
WWHF 2018 - Using PowerUpSQL and goddi for Active Directory Information Gathe...WWHF 2018 - Using PowerUpSQL and goddi for Active Directory Information Gathe...
WWHF 2018 - Using PowerUpSQL and goddi for Active Directory Information Gathe...ThomasElling1
 
Java Play Restful JPA
Java Play Restful JPAJava Play Restful JPA
Java Play Restful JPAFaren faren
 
Networking and Data Access with Eqela
Networking and Data Access with EqelaNetworking and Data Access with Eqela
Networking and Data Access with Eqelajobandesther
 
Java Play RESTful ebean
Java Play RESTful ebeanJava Play RESTful ebean
Java Play RESTful ebeanFaren faren
 
Automatically Managing Service Dependencies in an OSGi Environment - Marcel O...
Automatically Managing Service Dependencies in an OSGi Environment - Marcel O...Automatically Managing Service Dependencies in an OSGi Environment - Marcel O...
Automatically Managing Service Dependencies in an OSGi Environment - Marcel O...mfrancis
 
Spring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentationSpring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentationsourabh aggarwal
 
Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5IndicThreads
 
Deploy Mediawiki Using FIWARE Lab Facilities
Deploy Mediawiki Using FIWARE Lab FacilitiesDeploy Mediawiki Using FIWARE Lab Facilities
Deploy Mediawiki Using FIWARE Lab FacilitiesFIWARE
 

What's hot (20)

Developing your own OpenStack Swift middleware
Developing your own OpenStack Swift middlewareDeveloping your own OpenStack Swift middleware
Developing your own OpenStack Swift middleware
 
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - C Ziegel...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - C Ziegel...What’s cool in the new and updated OSGi specs (DS, Cloud and more) - C Ziegel...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - C Ziegel...
 
What's cool in the new and updated OSGi Specs (2013)
What's cool in the new and updated OSGi Specs (2013)What's cool in the new and updated OSGi Specs (2013)
What's cool in the new and updated OSGi Specs (2013)
 
ARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CIARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CI
 
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
 
Declarative Services Dependency Injection OSGi style
Declarative Services Dependency Injection OSGi styleDeclarative Services Dependency Injection OSGi style
Declarative Services Dependency Injection OSGi style
 
Second Step to the NoSQL Side: MySQL JSON Functions
Second Step to the NoSQL Side: MySQL JSON FunctionsSecond Step to the NoSQL Side: MySQL JSON Functions
Second Step to the NoSQL Side: MySQL JSON Functions
 
Spring & Hibernate
Spring & HibernateSpring & Hibernate
Spring & Hibernate
 
Writing Plugged-in Java EE Apps: Jason Lee
Writing Plugged-in Java EE Apps: Jason LeeWriting Plugged-in Java EE Apps: Jason Lee
Writing Plugged-in Java EE Apps: Jason Lee
 
Greach 2019 - Creating Micronaut Configurations
Greach 2019 - Creating Micronaut ConfigurationsGreach 2019 - Creating Micronaut Configurations
Greach 2019 - Creating Micronaut Configurations
 
Puppet and the Model-Driven Infrastructure
Puppet and the Model-Driven InfrastructurePuppet and the Model-Driven Infrastructure
Puppet and the Model-Driven Infrastructure
 
WWHF 2018 - Using PowerUpSQL and goddi for Active Directory Information Gathe...
WWHF 2018 - Using PowerUpSQL and goddi for Active Directory Information Gathe...WWHF 2018 - Using PowerUpSQL and goddi for Active Directory Information Gathe...
WWHF 2018 - Using PowerUpSQL and goddi for Active Directory Information Gathe...
 
Java Play Restful JPA
Java Play Restful JPAJava Play Restful JPA
Java Play Restful JPA
 
MySQL JSON Functions
MySQL JSON FunctionsMySQL JSON Functions
MySQL JSON Functions
 
Networking and Data Access with Eqela
Networking and Data Access with EqelaNetworking and Data Access with Eqela
Networking and Data Access with Eqela
 
Java Play RESTful ebean
Java Play RESTful ebeanJava Play RESTful ebean
Java Play RESTful ebean
 
Automatically Managing Service Dependencies in an OSGi Environment - Marcel O...
Automatically Managing Service Dependencies in an OSGi Environment - Marcel O...Automatically Managing Service Dependencies in an OSGi Environment - Marcel O...
Automatically Managing Service Dependencies in an OSGi Environment - Marcel O...
 
Spring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentationSpring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentation
 
Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5
 
Deploy Mediawiki Using FIWARE Lab Facilities
Deploy Mediawiki Using FIWARE Lab FacilitiesDeploy Mediawiki Using FIWARE Lab Facilities
Deploy Mediawiki Using FIWARE Lab Facilities
 

Viewers also liked

OSGi Enterprise Expert Group (OSGi Users Forum Germany)
OSGi Enterprise Expert Group (OSGi Users Forum Germany)OSGi Enterprise Expert Group (OSGi Users Forum Germany)
OSGi Enterprise Expert Group (OSGi Users Forum Germany)David Bosschaert
 
Operating Systems
Operating SystemsOperating Systems
Operating SystemsPickaweb
 
Politiche familiari: la conciliazione tra famiglia e lavoro
Politiche familiari: la conciliazione tra famiglia e lavoroPolitiche familiari: la conciliazione tra famiglia e lavoro
Politiche familiari: la conciliazione tra famiglia e lavoroPaola Liberace
 
Eight bangla class-16
Eight bangla class-16Eight bangla class-16
Eight bangla class-16Cambriannews
 
Kartu tes (15211200838)
Kartu tes (15211200838)Kartu tes (15211200838)
Kartu tes (15211200838)suslinasanjaya
 
Introduction to WordPress Class 4
Introduction to WordPress Class 4Introduction to WordPress Class 4
Introduction to WordPress Class 4Adrian Mikeliunas
 
SNZ_Magazine_February_2016
SNZ_Magazine_February_2016SNZ_Magazine_February_2016
SNZ_Magazine_February_2016Sai Raje
 
Certificado VMWare VCP510 - Rumos
Certificado VMWare VCP510 - RumosCertificado VMWare VCP510 - Rumos
Certificado VMWare VCP510 - RumosMarco Silva
 
PENGGUNAAN MODEL PEMBELAJARAN GROUP INVESTIGATION UNTUK MENINGKATKAN HASIL BE...
PENGGUNAAN MODEL PEMBELAJARAN GROUP INVESTIGATION UNTUK MENINGKATKAN HASIL BE...PENGGUNAAN MODEL PEMBELAJARAN GROUP INVESTIGATION UNTUK MENINGKATKAN HASIL BE...
PENGGUNAAN MODEL PEMBELAJARAN GROUP INVESTIGATION UNTUK MENINGKATKAN HASIL BE...sinupid
 
Concierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesConcierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesJan S. Rellermeyer
 
Introduction into OSGi
Introduction into OSGiIntroduction into OSGi
Introduction into OSGiPeter Kriens
 
Prologue 2012 SDF
Prologue   2012 SDFPrologue   2012 SDF
Prologue 2012 SDFSoko Guree
 
Компонентная среда разработки инструментария нагрузочного тестирования
Компонентная среда разработки инструментария нагрузочного тестированияКомпонентная среда разработки инструментария нагрузочного тестирования
Компонентная среда разработки инструментария нагрузочного тестированияSQALab
 
Modularity with OSGi
Modularity with OSGiModularity with OSGi
Modularity with OSGiPeter Kriens
 
Modularity with OSGi
Modularity with OSGiModularity with OSGi
Modularity with OSGiPeter Kriens
 
Application Developer Days 2011 - Teamlead - Писать плагины проще простого!
Application Developer Days 2011 - Teamlead - Писать плагины проще простого!Application Developer Days 2011 - Teamlead - Писать плагины проще простого!
Application Developer Days 2011 - Teamlead - Писать плагины проще простого!Teamlead
 
Системы работы с информацией . Инструменты? Протезы? Тренажеры? Компьютерные ...
Системы работы с информацией. Инструменты? Протезы? Тренажеры? Компьютерные ...Системы работы с информацией. Инструменты? Протезы? Тренажеры? Компьютерные ...
Системы работы с информацией . Инструменты? Протезы? Тренажеры? Компьютерные ...aivanoff
 

Viewers also liked (20)

OSGi Enterprise Expert Group (OSGi Users Forum Germany)
OSGi Enterprise Expert Group (OSGi Users Forum Germany)OSGi Enterprise Expert Group (OSGi Users Forum Germany)
OSGi Enterprise Expert Group (OSGi Users Forum Germany)
 
Operating Systems
Operating SystemsOperating Systems
Operating Systems
 
Draught beer basics
Draught beer basicsDraught beer basics
Draught beer basics
 
Politiche familiari: la conciliazione tra famiglia e lavoro
Politiche familiari: la conciliazione tra famiglia e lavoroPolitiche familiari: la conciliazione tra famiglia e lavoro
Politiche familiari: la conciliazione tra famiglia e lavoro
 
Eight bangla class-16
Eight bangla class-16Eight bangla class-16
Eight bangla class-16
 
Kartu tes (15211200838)
Kartu tes (15211200838)Kartu tes (15211200838)
Kartu tes (15211200838)
 
Introduction to WordPress Class 4
Introduction to WordPress Class 4Introduction to WordPress Class 4
Introduction to WordPress Class 4
 
SNZ_Magazine_February_2016
SNZ_Magazine_February_2016SNZ_Magazine_February_2016
SNZ_Magazine_February_2016
 
Certificado VMWare VCP510 - Rumos
Certificado VMWare VCP510 - RumosCertificado VMWare VCP510 - Rumos
Certificado VMWare VCP510 - Rumos
 
Resume
ResumeResume
Resume
 
Green
GreenGreen
Green
 
PENGGUNAAN MODEL PEMBELAJARAN GROUP INVESTIGATION UNTUK MENINGKATKAN HASIL BE...
PENGGUNAAN MODEL PEMBELAJARAN GROUP INVESTIGATION UNTUK MENINGKATKAN HASIL BE...PENGGUNAAN MODEL PEMBELAJARAN GROUP INVESTIGATION UNTUK MENINGKATKAN HASIL BE...
PENGGUNAAN MODEL PEMBELAJARAN GROUP INVESTIGATION UNTUK MENINGKATKAN HASIL BE...
 
Concierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesConcierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded Devices
 
Introduction into OSGi
Introduction into OSGiIntroduction into OSGi
Introduction into OSGi
 
Prologue 2012 SDF
Prologue   2012 SDFPrologue   2012 SDF
Prologue 2012 SDF
 
Компонентная среда разработки инструментария нагрузочного тестирования
Компонентная среда разработки инструментария нагрузочного тестированияКомпонентная среда разработки инструментария нагрузочного тестирования
Компонентная среда разработки инструментария нагрузочного тестирования
 
Modularity with OSGi
Modularity with OSGiModularity with OSGi
Modularity with OSGi
 
Modularity with OSGi
Modularity with OSGiModularity with OSGi
Modularity with OSGi
 
Application Developer Days 2011 - Teamlead - Писать плагины проще простого!
Application Developer Days 2011 - Teamlead - Писать плагины проще простого!Application Developer Days 2011 - Teamlead - Писать плагины проще простого!
Application Developer Days 2011 - Teamlead - Писать плагины проще простого!
 
Системы работы с информацией . Инструменты? Протезы? Тренажеры? Компьютерные ...
Системы работы с информацией. Инструменты? Протезы? Тренажеры? Компьютерные ...Системы работы с информацией. Инструменты? Протезы? Тренажеры? Компьютерные ...
Системы работы с информацией . Инструменты? Протезы? Тренажеры? Компьютерные ...
 

Similar to Maximize the power of OSGi

OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten ZiegelerOSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegelermfrancis
 
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
 
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
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGiCarsten Ziegeler
 
Leveraging the Latest OSGi R7 Specifications - C Ziegeler & D Bosschaert
Leveraging the Latest OSGi R7 Specifications - C Ziegeler & D BosschaertLeveraging the Latest OSGi R7 Specifications - C Ziegeler & D Bosschaert
Leveraging the Latest OSGi R7 Specifications - C Ziegeler & D Bosschaertmfrancis
 
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
 
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
 
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
 
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
 

Similar to Maximize the power of OSGi (20)

OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten ZiegelerOSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
 
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
 
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
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGi
 
Leveraging the Latest OSGi R7 Specifications - C Ziegeler & D Bosschaert
Leveraging the Latest OSGi R7 Specifications - C Ziegeler & D BosschaertLeveraging the Latest OSGi R7 Specifications - C Ziegeler & D Bosschaert
Leveraging the Latest OSGi R7 Specifications - C Ziegeler & D Bosschaert
 
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
 
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)
 
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
 
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
 
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)
 

More from David Bosschaert

Benefits of OSGi in Practise
Benefits of OSGi in PractiseBenefits of OSGi in Practise
Benefits of OSGi in PractiseDavid Bosschaert
 
OSGi Cloud Ecosystems (OSGi Users Forum Germany)
OSGi Cloud Ecosystems (OSGi Users Forum Germany)OSGi Cloud Ecosystems (OSGi Users Forum Germany)
OSGi Cloud Ecosystems (OSGi Users Forum Germany)David Bosschaert
 
OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)David Bosschaert
 
What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0David Bosschaert
 
Update on the OSGi Enterprise Expert Group
Update on the OSGi Enterprise Expert GroupUpdate on the OSGi Enterprise Expert Group
Update on the OSGi Enterprise Expert GroupDavid Bosschaert
 
What's new in the OSGi 4.2 Enterprise Release
What's new in the OSGi 4.2 Enterprise ReleaseWhat's new in the OSGi 4.2 Enterprise Release
What's new in the OSGi 4.2 Enterprise ReleaseDavid Bosschaert
 
Distributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancementsDistributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancementsDavid Bosschaert
 
Distributed OSGi Demo Eclipsecon 2009
Distributed OSGi Demo Eclipsecon 2009Distributed OSGi Demo Eclipsecon 2009
Distributed OSGi Demo Eclipsecon 2009David Bosschaert
 

More from David Bosschaert (10)

Node MCU Fun
Node MCU FunNode MCU Fun
Node MCU Fun
 
Benefits of OSGi in Practise
Benefits of OSGi in PractiseBenefits of OSGi in Practise
Benefits of OSGi in Practise
 
OSGi Cloud Ecosystems (OSGi Users Forum Germany)
OSGi Cloud Ecosystems (OSGi Users Forum Germany)OSGi Cloud Ecosystems (OSGi Users Forum Germany)
OSGi Cloud Ecosystems (OSGi Users Forum Germany)
 
OSGi Cloud Ecosystems
OSGi Cloud EcosystemsOSGi Cloud Ecosystems
OSGi Cloud Ecosystems
 
OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)
 
What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0
 
Update on the OSGi Enterprise Expert Group
Update on the OSGi Enterprise Expert GroupUpdate on the OSGi Enterprise Expert Group
Update on the OSGi Enterprise Expert Group
 
What's new in the OSGi 4.2 Enterprise Release
What's new in the OSGi 4.2 Enterprise ReleaseWhat's new in the OSGi 4.2 Enterprise Release
What's new in the OSGi 4.2 Enterprise Release
 
Distributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancementsDistributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancements
 
Distributed OSGi Demo Eclipsecon 2009
Distributed OSGi Demo Eclipsecon 2009Distributed OSGi Demo Eclipsecon 2009
Distributed OSGi Demo Eclipsecon 2009
 

Recently uploaded

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
 
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
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
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
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
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
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 

Recently uploaded (20)

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
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
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
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
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
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)
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 

Maximize the power of OSGi

  • 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)