SlideShare a Scribd company logo
1 of 39
Download to read offline
The Bundle Dilemma
Richard S. Hall
Laboratoire d'Informatique de Grenoble,
Grenoble University, France
2
• The Bundle Dilemma
• History
• OSGi Bundle Repository (RFC 112)
• Apache Felix OBR Implementation
• OBR Bundle Repositories
• Issues
• Conclusion
Agenda
3
The Bundle Dilemma
4
• The OSGi framework provides a sophisticated,
general modularity mechanism for Java
• Focus is on keeping the core small
• Push additional functionality out of the framework
• Huge success at promoting and simplifying the
creation of modular Java systems
• Used in embedded to enterprise domains
• The number of available bundles is growing
quickly
Introduction
5
• Its success at being modular results in the
bundle dilemma
• Core is intentionally kept small with developers
encouraged to create useful, re-usable bundles, but...
• Inability of developers to discover and re-use existing
bundles
• Difficulty in deploying existing bundles
The Bundle Dilemma (1/3)
6
The Bundle Dilemma (2/3)
?
You want a bundle that provides some functionality...
7
The Bundle Dilemma (2/3)
You find the bundle and install it, but then...
8
The Bundle Dilemma (2/3)
You find the bundle and install it, but then...
-> start 4
org.osgi.framework.BundleException:
Unresolved package in bundle 4: package;
(&(package=org.apache.felix.foo)
(version>=1.0.0))
->
9
The Bundle Dilemma (2/3)
You really need to install these too...
10
• The OSGi specification is mute on how installed
bundles are discovered in the first place
• Dependency resolution only applies to installed
bundles
• This issue can only become more important as
the number of bundles increases
• What can be done?
The Bundle Dilemma (3/3)
11
• Attempting to define a common (standard?)
bundle repository
• Share
• Discover
• Deploy
OSGi Bundle Repository (OBR)
12
History
13
Oscar Bundle Repository (OBR1)
• Initial bundle repository effort started as part of
Oscar circa 2003/2004
• Minimize Oscar download size
• Provide a repository of bundles for easy deployment
into OSGi frameworks
• Promote a community effort around bundle creation
• Multiple means of access
• Web page, service interface, shell command
• Low barrier for participation
• Turned out to be more popular than I imagined
14
OBR1 Issues
• Too simplistic
• Only truly supported resolving package dependencies
• Could not handle multiple versions of packages in the
framework and only awkwardly handled multiple
versions of bundles in the repository
• No easy way to diagnose deployment errors
• Started to think about how to deal with these
issues in April 2005
• Wanted to improve version handling
• Wanted a generic capability/requirement model
15
OSGi Bundle Repository
RFC 112
16
OSGi Bundle Repository (OBR2)
• The goals of OBR2 are essentially the same as
OBR1, but just doing it better
• Improved (and much debated) generic
capability/requirement model
• XML representation
• Models package, bundle, fragment, native, and service
dependencies (plus arbitrary ones)
• Stronger focus on bundle discovery
17
OBR2 Entities (1/2)
Repository
file
Requirement CapabilityResource
Repository
Repository
Admin
Resolver
1
0..n
1
0..n
10..n 1 0..n
references creates
contains
contains
requires provides
18
OBR2 Entities (2/2)
• Repository Admin – a service to access a federation of
repositories
• Repository – provides access to a set of resources
• Resource – a description of an artifact to be installed on
a device
• Capability – a named set of properties
• Requirement – an assertion on a capability
• Resolver – an object to resolve resource dependencies
and to deploy them
• Repository file – XML file containing resource meta-data
19
OBR2 High-Level View
Client
Repository1
Repository
Admin
Repository3 Repository4
Repository5
Repository2
20
OBR2 Web Site
21
OBR2 Repository File
[Peter Kriens created a tool, called bindex, to generate repository files.]
<repository presentationname=“...” symbolicname=“...” ... >
<resource>
<description>...</description>
<size>...</size>
<documentation>...</documentation>
<source>...</source>
<category id=“...”/>
<capability>...</capability>
...
<requirement>...</requirement>
...
</resource>
...
</repository>
22
OBR2 Generic Capability Concept
• Resources can provide any number of
capabilities
• Simply a “typed” set of properties
<capability name='package'>
<p n='package' v='org.foo.bar'/>
<p n='version' t='version' v='1.0.0'/>
</capability>
23
OBR2 Generic Requirement Concept
• Resources can provide any number of
requirements
• Simply a “typed” LDAP query
<require name='package' extend='false'
multiple='false' optional='false'
filter='(&amp;(package=org.foo.bar)(version&gt;=1.0.0))'>
Import package org.foo.bar
</require>
24
OBR2 Capability/Requirement Mappings
• Mappings provided for
• Import/export package
• Provide/require bundle
• Host/fragment
• Import/export service
• Execution environment
• Native code
• Custom mappings to arbitrary capabilities/
requirements
25
OBR2 Repository Admin Service
public interface RepositoryAdmin
{
public Resource[] discoverResources(String filterExpr);
public Resolver resolver();
public Repository addRepository(URL repository)
throws Exception;
public boolean removeRepository(URL repository);
public Repository[] listRepositories();
public Resource getResource(String respositoryId);
}
26
OBR2 Resolver Object
public interface Resolver
{
public void add(Resource resource);
public Requirement[] getUnsatisfiedRequirements();
public Resource[] getOptionalResources();
public Requirement[] getReason(Resource resource);
public Resource[] getResources(Requirement requirement);
public Resource[] getRequiredResources();
public Resource[] getAddedResources();
public boolean resolve();
public void deploy(boolean start);
}
27
OBR2 Usage Scenario
RepositoryAdmin repoAdmin = ... // Get repo admin service
Resolver resolver = repoAdmin.resolver();
Resource resource = repoAdmin.discoverResources(filterStr);
resolver.add(resource);
if (resolver.resolve()) {
resolver.deploy();
} else {
Requirement[] reqs = resolver.getUnsatisfiedRequirements();
for (int i = 0; i < reqs.length; i++) {
System.out.println(“Unable to resolve: “ + reqs[i]);
}
}
28
Apache Felix OBR Implementation
29
• Bundle Repository sub-project
• Not 100% complete with respect to the RFC
• Resolves bundle requirements taking into
account locally installed bundles
• Resolver and deployment algorithms try to
minimize number of installed bundles
Apache Felix OBR Implementation
30
Apache Felix OBR Shell Command
31
Apache Felix OBR GUI
32
• Main purpose is to simplify bundle development
• Uses BND
• Bundle packaging
• Automates bundle meta-data generation
• Prototyping OBR support
• Specify that resulting bundle JAR files are
added/updated in a repository XML file
• Uses bindex
Apache Felix Maven Bundle Plugin
33
• Deployment vs. runtime resolver
• Each resolver does the same work, but the result of the
former is deployment and the latter is a set of wires
• Felix framework adopted the generic OBR model
• Goal is to make one resolver that is used in both the
framework and the OBR implementation
• Could lead to exposing genericdependencies in
bundles
Apache Felix Framework
34
OBR Bundle Repositories
35
• Apache Felix Project
• In the works, will include Felix sub-project bundles
• Apache Felix Commons
• In the works, currently available from Maven
• Bundled versions of common open source libraries
• Equinox Orbit (http://www.eclipse.org/orbit)
• Knopflerfish (http://www.knopflerfish.org/repo/)
• ProSyst
(http://dz.prosyst.com/pdoc/repository.xml)
OBR Bundle Repositories
36
Issues
37
• Deployment vs. runtime requirements
• Potentially need some tweaks to use as a framework
resolver
• Uses constraints
• Related to above point, are not currently addressed
• Local resources
• Not cleanly integrated
• Bundle “applications”
• There is a need for a higher level view, but probably on
top of OBR
Issues
38
Conclusion
39
• OSGi technology is a success...
• ...now we have to deal with it
• To keep momentum going we must make it
easier for developers
• To find existing bundles
• To use existing bundles
• To share their own bundles
• OBR is addressing these needs
Conclusion

More Related Content

What's hot

JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content RepositoriesCarsten Ziegeler
 
Docking postgres
Docking postgresDocking postgres
Docking postgresrycamor
 
MariaDB Server & MySQL Security Essentials 2016
MariaDB Server & MySQL Security Essentials 2016MariaDB Server & MySQL Security Essentials 2016
MariaDB Server & MySQL Security Essentials 2016Colin Charles
 
Lessons from database failures
Lessons from database failures Lessons from database failures
Lessons from database failures Colin Charles
 
CAv6TF Meeting - 2014-05-27 - IPv6@ VMware Integration Engineering
CAv6TF Meeting - 2014-05-27 - IPv6@ VMware Integration EngineeringCAv6TF Meeting - 2014-05-27 - IPv6@ VMware Integration Engineering
CAv6TF Meeting - 2014-05-27 - IPv6@ VMware Integration EngineeringChristian Elsen
 
The MySQL Server ecosystem in 2016
The MySQL Server ecosystem in 2016The MySQL Server ecosystem in 2016
The MySQL Server ecosystem in 2016Colin Charles
 
Meet MariaDB 10.1 at the Bulgaria Web Summit
Meet MariaDB 10.1 at the Bulgaria Web SummitMeet MariaDB 10.1 at the Bulgaria Web Summit
Meet MariaDB 10.1 at the Bulgaria Web SummitColin Charles
 
Walkthrough Neo4j 1.9 & 2.0
Walkthrough Neo4j 1.9 & 2.0Walkthrough Neo4j 1.9 & 2.0
Walkthrough Neo4j 1.9 & 2.0Neo4j
 
Lessons from database failures
Lessons from database failuresLessons from database failures
Lessons from database failuresColin Charles
 
Deployment and Configuration 3.7
Deployment and Configuration 3.7Deployment and Configuration 3.7
Deployment and Configuration 3.7StephenKardian
 
Meet MariaDB Server 10.1 London MySQL meetup December 2015
Meet MariaDB Server 10.1 London MySQL meetup December 2015Meet MariaDB Server 10.1 London MySQL meetup December 2015
Meet MariaDB Server 10.1 London MySQL meetup December 2015Colin Charles
 
Securing your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server dataSecuring your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server dataColin Charles
 
Lessons from database failures
Lessons from database failuresLessons from database failures
Lessons from database failuresColin Charles
 
Design and architecture of Jackrabbit
Design and architecture of JackrabbitDesign and architecture of Jackrabbit
Design and architecture of JackrabbitJukka Zitting
 
Learn how to build decentralized and serverless html5 applications with embar...
Learn how to build decentralized and serverless html5 applications with embar...Learn how to build decentralized and serverless html5 applications with embar...
Learn how to build decentralized and serverless html5 applications with embar...Alessandro Confetti
 
Integrate ManifoldCF with Solr
Integrate ManifoldCF with SolrIntegrate ManifoldCF with Solr
Integrate ManifoldCF with Solrfrancelabs
 
Java10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 SprJava10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 Sprなおき きしだ
 
OSGifying the repository
OSGifying the repositoryOSGifying the repository
OSGifying the repositoryJukka Zitting
 

What's hot (20)

JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content Repositories
 
Docking postgres
Docking postgresDocking postgres
Docking postgres
 
Status of Embedded Linux
Status of Embedded LinuxStatus of Embedded Linux
Status of Embedded Linux
 
MariaDB Server & MySQL Security Essentials 2016
MariaDB Server & MySQL Security Essentials 2016MariaDB Server & MySQL Security Essentials 2016
MariaDB Server & MySQL Security Essentials 2016
 
Fedora4
Fedora4Fedora4
Fedora4
 
Lessons from database failures
Lessons from database failures Lessons from database failures
Lessons from database failures
 
CAv6TF Meeting - 2014-05-27 - IPv6@ VMware Integration Engineering
CAv6TF Meeting - 2014-05-27 - IPv6@ VMware Integration EngineeringCAv6TF Meeting - 2014-05-27 - IPv6@ VMware Integration Engineering
CAv6TF Meeting - 2014-05-27 - IPv6@ VMware Integration Engineering
 
The MySQL Server ecosystem in 2016
The MySQL Server ecosystem in 2016The MySQL Server ecosystem in 2016
The MySQL Server ecosystem in 2016
 
Meet MariaDB 10.1 at the Bulgaria Web Summit
Meet MariaDB 10.1 at the Bulgaria Web SummitMeet MariaDB 10.1 at the Bulgaria Web Summit
Meet MariaDB 10.1 at the Bulgaria Web Summit
 
Walkthrough Neo4j 1.9 & 2.0
Walkthrough Neo4j 1.9 & 2.0Walkthrough Neo4j 1.9 & 2.0
Walkthrough Neo4j 1.9 & 2.0
 
Lessons from database failures
Lessons from database failuresLessons from database failures
Lessons from database failures
 
Deployment and Configuration 3.7
Deployment and Configuration 3.7Deployment and Configuration 3.7
Deployment and Configuration 3.7
 
Meet MariaDB Server 10.1 London MySQL meetup December 2015
Meet MariaDB Server 10.1 London MySQL meetup December 2015Meet MariaDB Server 10.1 London MySQL meetup December 2015
Meet MariaDB Server 10.1 London MySQL meetup December 2015
 
Securing your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server dataSecuring your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server data
 
Lessons from database failures
Lessons from database failuresLessons from database failures
Lessons from database failures
 
Design and architecture of Jackrabbit
Design and architecture of JackrabbitDesign and architecture of Jackrabbit
Design and architecture of Jackrabbit
 
Learn how to build decentralized and serverless html5 applications with embar...
Learn how to build decentralized and serverless html5 applications with embar...Learn how to build decentralized and serverless html5 applications with embar...
Learn how to build decentralized and serverless html5 applications with embar...
 
Integrate ManifoldCF with Solr
Integrate ManifoldCF with SolrIntegrate ManifoldCF with Solr
Integrate ManifoldCF with Solr
 
Java10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 SprJava10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 Spr
 
OSGifying the repository
OSGifying the repositoryOSGifying the repository
OSGifying the repository
 

Similar to The Bundle Dilemma - Richard S. Hall, Researcher, Laboratoire d’Informatique de Grenoble, Grenoble University, France

Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anynines
Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anyninesCloud Infrastructures Slide Set 7 - Docker - Neo4j | anynines
Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anyninesanynines GmbH
 
Online Meetup: Intro to LinuxKit
Online Meetup: Intro to LinuxKitOnline Meetup: Intro to LinuxKit
Online Meetup: Intro to LinuxKitDocker, Inc.
 
Vijfhart thema-avond-oracle-12c-new-features
Vijfhart thema-avond-oracle-12c-new-featuresVijfhart thema-avond-oracle-12c-new-features
Vijfhart thema-avond-oracle-12c-new-featuresmkorremans
 
Docker for the Rubyist
Docker for the RubyistDocker for the Rubyist
Docker for the RubyistBrian DeHamer
 
Oracle Database on Docker - Best Practices
Oracle Database on Docker - Best PracticesOracle Database on Docker - Best Practices
Oracle Database on Docker - Best Practicesgvenzl
 
How maven makes your development group look like a bunch of professionals.
How maven makes your development group look like a bunch of professionals.How maven makes your development group look like a bunch of professionals.
How maven makes your development group look like a bunch of professionals.Fazreil Amreen Abdul Jalil
 
Running Oracle Database on Docker
Running Oracle Database on DockerRunning Oracle Database on Docker
Running Oracle Database on Dockergvenzl
 
Lightweight Virtualization Docker in Practice
Lightweight Virtualization Docker in PracticeLightweight Virtualization Docker in Practice
Lightweight Virtualization Docker in PracticeDocker, Inc.
 
yocto_scale_handout-with-notes
yocto_scale_handout-with-notesyocto_scale_handout-with-notes
yocto_scale_handout-with-notesSteve Arnold
 
An Updated Performance Comparison of Virtual Machines and Linux Containers
An Updated Performance Comparison of Virtual Machines and Linux ContainersAn Updated Performance Comparison of Virtual Machines and Linux Containers
An Updated Performance Comparison of Virtual Machines and Linux ContainersKento Aoyama
 
Docker in pratice -chenyifei
Docker in pratice -chenyifeiDocker in pratice -chenyifei
Docker in pratice -chenyifeidotCloud
 
Apache Maven - eXo TN presentation
Apache Maven - eXo TN presentationApache Maven - eXo TN presentation
Apache Maven - eXo TN presentationArnaud Héritier
 
Docker from A to Z, including Swarm and OCCS
Docker from A to Z, including Swarm and OCCSDocker from A to Z, including Swarm and OCCS
Docker from A to Z, including Swarm and OCCSFrank Munz
 
Java in a world of containers
Java in a world of containersJava in a world of containers
Java in a world of containersDocker, Inc.
 

Similar to The Bundle Dilemma - Richard S. Hall, Researcher, Laboratoire d’Informatique de Grenoble, Grenoble University, France (20)

Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anynines
Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anyninesCloud Infrastructures Slide Set 7 - Docker - Neo4j | anynines
Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anynines
 
Online Meetup: Intro to LinuxKit
Online Meetup: Intro to LinuxKitOnline Meetup: Intro to LinuxKit
Online Meetup: Intro to LinuxKit
 
Docker Dojo
Docker DojoDocker Dojo
Docker Dojo
 
OSGi introduction
OSGi introductionOSGi introduction
OSGi introduction
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
Oracle and Docker
Oracle and DockerOracle and Docker
Oracle and Docker
 
Vijfhart thema-avond-oracle-12c-new-features
Vijfhart thema-avond-oracle-12c-new-featuresVijfhart thema-avond-oracle-12c-new-features
Vijfhart thema-avond-oracle-12c-new-features
 
Docker for the Rubyist
Docker for the RubyistDocker for the Rubyist
Docker for the Rubyist
 
Oracle Database on Docker - Best Practices
Oracle Database on Docker - Best PracticesOracle Database on Docker - Best Practices
Oracle Database on Docker - Best Practices
 
10. ROS (1).pptx
10. ROS (1).pptx10. ROS (1).pptx
10. ROS (1).pptx
 
How maven makes your development group look like a bunch of professionals.
How maven makes your development group look like a bunch of professionals.How maven makes your development group look like a bunch of professionals.
How maven makes your development group look like a bunch of professionals.
 
Running Oracle Database on Docker
Running Oracle Database on DockerRunning Oracle Database on Docker
Running Oracle Database on Docker
 
Lightweight Virtualization Docker in Practice
Lightweight Virtualization Docker in PracticeLightweight Virtualization Docker in Practice
Lightweight Virtualization Docker in Practice
 
yocto_scale_handout-with-notes
yocto_scale_handout-with-notesyocto_scale_handout-with-notes
yocto_scale_handout-with-notes
 
An Updated Performance Comparison of Virtual Machines and Linux Containers
An Updated Performance Comparison of Virtual Machines and Linux ContainersAn Updated Performance Comparison of Virtual Machines and Linux Containers
An Updated Performance Comparison of Virtual Machines and Linux Containers
 
Docker in pratice -chenyifei
Docker in pratice -chenyifeiDocker in pratice -chenyifei
Docker in pratice -chenyifei
 
Apache Maven - eXo TN presentation
Apache Maven - eXo TN presentationApache Maven - eXo TN presentation
Apache Maven - eXo TN presentation
 
Publishing Linked Data from RDB
Publishing Linked Data from RDBPublishing Linked Data from RDB
Publishing Linked Data from RDB
 
Docker from A to Z, including Swarm and OCCS
Docker from A to Z, including Swarm and OCCSDocker from A to Z, including Swarm and OCCS
Docker from A to Z, including Swarm and OCCS
 
Java in a world of containers
Java in a world of containersJava in a world of containers
Java in a world of containers
 

More from mfrancis

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

More from mfrancis (20)

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

Recently uploaded

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 

Recently uploaded (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 

The Bundle Dilemma - Richard S. Hall, Researcher, Laboratoire d’Informatique de Grenoble, Grenoble University, France

  • 1. The Bundle Dilemma Richard S. Hall Laboratoire d'Informatique de Grenoble, Grenoble University, France
  • 2. 2 • The Bundle Dilemma • History • OSGi Bundle Repository (RFC 112) • Apache Felix OBR Implementation • OBR Bundle Repositories • Issues • Conclusion Agenda
  • 4. 4 • The OSGi framework provides a sophisticated, general modularity mechanism for Java • Focus is on keeping the core small • Push additional functionality out of the framework • Huge success at promoting and simplifying the creation of modular Java systems • Used in embedded to enterprise domains • The number of available bundles is growing quickly Introduction
  • 5. 5 • Its success at being modular results in the bundle dilemma • Core is intentionally kept small with developers encouraged to create useful, re-usable bundles, but... • Inability of developers to discover and re-use existing bundles • Difficulty in deploying existing bundles The Bundle Dilemma (1/3)
  • 6. 6 The Bundle Dilemma (2/3) ? You want a bundle that provides some functionality...
  • 7. 7 The Bundle Dilemma (2/3) You find the bundle and install it, but then...
  • 8. 8 The Bundle Dilemma (2/3) You find the bundle and install it, but then... -> start 4 org.osgi.framework.BundleException: Unresolved package in bundle 4: package; (&(package=org.apache.felix.foo) (version>=1.0.0)) ->
  • 9. 9 The Bundle Dilemma (2/3) You really need to install these too...
  • 10. 10 • The OSGi specification is mute on how installed bundles are discovered in the first place • Dependency resolution only applies to installed bundles • This issue can only become more important as the number of bundles increases • What can be done? The Bundle Dilemma (3/3)
  • 11. 11 • Attempting to define a common (standard?) bundle repository • Share • Discover • Deploy OSGi Bundle Repository (OBR)
  • 13. 13 Oscar Bundle Repository (OBR1) • Initial bundle repository effort started as part of Oscar circa 2003/2004 • Minimize Oscar download size • Provide a repository of bundles for easy deployment into OSGi frameworks • Promote a community effort around bundle creation • Multiple means of access • Web page, service interface, shell command • Low barrier for participation • Turned out to be more popular than I imagined
  • 14. 14 OBR1 Issues • Too simplistic • Only truly supported resolving package dependencies • Could not handle multiple versions of packages in the framework and only awkwardly handled multiple versions of bundles in the repository • No easy way to diagnose deployment errors • Started to think about how to deal with these issues in April 2005 • Wanted to improve version handling • Wanted a generic capability/requirement model
  • 16. 16 OSGi Bundle Repository (OBR2) • The goals of OBR2 are essentially the same as OBR1, but just doing it better • Improved (and much debated) generic capability/requirement model • XML representation • Models package, bundle, fragment, native, and service dependencies (plus arbitrary ones) • Stronger focus on bundle discovery
  • 17. 17 OBR2 Entities (1/2) Repository file Requirement CapabilityResource Repository Repository Admin Resolver 1 0..n 1 0..n 10..n 1 0..n references creates contains contains requires provides
  • 18. 18 OBR2 Entities (2/2) • Repository Admin – a service to access a federation of repositories • Repository – provides access to a set of resources • Resource – a description of an artifact to be installed on a device • Capability – a named set of properties • Requirement – an assertion on a capability • Resolver – an object to resolve resource dependencies and to deploy them • Repository file – XML file containing resource meta-data
  • 21. 21 OBR2 Repository File [Peter Kriens created a tool, called bindex, to generate repository files.] <repository presentationname=“...” symbolicname=“...” ... > <resource> <description>...</description> <size>...</size> <documentation>...</documentation> <source>...</source> <category id=“...”/> <capability>...</capability> ... <requirement>...</requirement> ... </resource> ... </repository>
  • 22. 22 OBR2 Generic Capability Concept • Resources can provide any number of capabilities • Simply a “typed” set of properties <capability name='package'> <p n='package' v='org.foo.bar'/> <p n='version' t='version' v='1.0.0'/> </capability>
  • 23. 23 OBR2 Generic Requirement Concept • Resources can provide any number of requirements • Simply a “typed” LDAP query <require name='package' extend='false' multiple='false' optional='false' filter='(&amp;(package=org.foo.bar)(version&gt;=1.0.0))'> Import package org.foo.bar </require>
  • 24. 24 OBR2 Capability/Requirement Mappings • Mappings provided for • Import/export package • Provide/require bundle • Host/fragment • Import/export service • Execution environment • Native code • Custom mappings to arbitrary capabilities/ requirements
  • 25. 25 OBR2 Repository Admin Service public interface RepositoryAdmin { public Resource[] discoverResources(String filterExpr); public Resolver resolver(); public Repository addRepository(URL repository) throws Exception; public boolean removeRepository(URL repository); public Repository[] listRepositories(); public Resource getResource(String respositoryId); }
  • 26. 26 OBR2 Resolver Object public interface Resolver { public void add(Resource resource); public Requirement[] getUnsatisfiedRequirements(); public Resource[] getOptionalResources(); public Requirement[] getReason(Resource resource); public Resource[] getResources(Requirement requirement); public Resource[] getRequiredResources(); public Resource[] getAddedResources(); public boolean resolve(); public void deploy(boolean start); }
  • 27. 27 OBR2 Usage Scenario RepositoryAdmin repoAdmin = ... // Get repo admin service Resolver resolver = repoAdmin.resolver(); Resource resource = repoAdmin.discoverResources(filterStr); resolver.add(resource); if (resolver.resolve()) { resolver.deploy(); } else { Requirement[] reqs = resolver.getUnsatisfiedRequirements(); for (int i = 0; i < reqs.length; i++) { System.out.println(“Unable to resolve: “ + reqs[i]); } }
  • 28. 28 Apache Felix OBR Implementation
  • 29. 29 • Bundle Repository sub-project • Not 100% complete with respect to the RFC • Resolves bundle requirements taking into account locally installed bundles • Resolver and deployment algorithms try to minimize number of installed bundles Apache Felix OBR Implementation
  • 30. 30 Apache Felix OBR Shell Command
  • 32. 32 • Main purpose is to simplify bundle development • Uses BND • Bundle packaging • Automates bundle meta-data generation • Prototyping OBR support • Specify that resulting bundle JAR files are added/updated in a repository XML file • Uses bindex Apache Felix Maven Bundle Plugin
  • 33. 33 • Deployment vs. runtime resolver • Each resolver does the same work, but the result of the former is deployment and the latter is a set of wires • Felix framework adopted the generic OBR model • Goal is to make one resolver that is used in both the framework and the OBR implementation • Could lead to exposing genericdependencies in bundles Apache Felix Framework
  • 35. 35 • Apache Felix Project • In the works, will include Felix sub-project bundles • Apache Felix Commons • In the works, currently available from Maven • Bundled versions of common open source libraries • Equinox Orbit (http://www.eclipse.org/orbit) • Knopflerfish (http://www.knopflerfish.org/repo/) • ProSyst (http://dz.prosyst.com/pdoc/repository.xml) OBR Bundle Repositories
  • 37. 37 • Deployment vs. runtime requirements • Potentially need some tweaks to use as a framework resolver • Uses constraints • Related to above point, are not currently addressed • Local resources • Not cleanly integrated • Bundle “applications” • There is a need for a higher level view, but probably on top of OBR Issues
  • 39. 39 • OSGi technology is a success... • ...now we have to deal with it • To keep momentum going we must make it easier for developers • To find existing bundles • To use existing bundles • To share their own bundles • OBR is addressing these needs Conclusion