SlideShare a Scribd company logo
Eclipse Concierge 
- an OSGi R5 Framework 
for IoT applications 
Eclipse DemoCamps 
Fall 2014 
Jochen Hiller, Deutsche Telekom AG
What is Eclipse Concierge? 
• Full OSGi R5 compatible core framework 
• Keep a small footprint to work well 
on embedded devices 
• Remain “readable” 
• Remain backwards-compatible 
(Java 1.5, Java 1.4 under discussion) 
• Being a sandbox for innovation around OSGi 
• See JavaOne 2014 presentation: 
Building Small and Efficient Internet of Things Applications with Concierge
Status of Eclipse Concierge 
• Part of Eclipse IoT projects 
• Developed by Jan Rellermeyer, 
2 additional committers 
• First release planned end 2014 
Jan Rellermeyer Tim Verbelen Jochen Hiller 
• Achieve full OSGi R5 compliance (1 test missing) 
• Eclipse Kura is running on Concierge 
• Eclipse projects are close linked to Equinox, Eclipse Runtime, difficult to 
move over to Concierge 
• Eclipse SmartHome (minimal runtime) is close to run on Concierge
Eclipse Concierge 
Demo
Run Concierge from Commandline 
$ java -jar org.eclipse.concierge-1.0.0.alpha2.jar -help 
$ java -jar org.eclipse.concierge-1.0.0.alpha2.jar 
$ java -jar org.eclipse.concierge-1.0.0.alpha2.jar  
-istart repo/org.eclipse.concierge.shell-1.0.0.alpha2.jar 
$ cd repo ; java -jar ../org.eclipse.concierge-1.0.0.alpha2.jar -all
How to use your own storage? 
Embedded: 
• Load bundles from Flash memory 
• Place all temporary files into memory, not flash 
$ cd /mnt/flash/app/repo 
$ java -Dorg.osgi.framework.storage=/tmp/mystorage  
-jar org.eclipse.concierge-1.0.0.alpha2.jar -all
How to Embed Concierge 
Map<String, String> launchArgs = new HashMap<String, String>(); 
Framework framework = new Factory().newFramework(launchArgs); 
framework.init(); 
framework.start(); 
BundleContext bundleContext = framework.getBundleContext(); 
Bundle shellBundle = bundleContext 
.installBundle("org.eclipse.concierge.shell-1.0.0.alpha2.jar"); 
shellBundle.start(); 
bundleContext.installBundle("hello_1.0.0.jar"); 
// ... 
// wait until framework will be terminated 
framework.waitForStop(0);
Additional bundles 
Separate extensions, to keep core framework as small as possible 
o.e.c.extension.permission framework extension which adds PermissionAdmin, CondPermAdmin 
required e.g. for Equinox Console 
o.e.c.service.packageadmin provides OSGi R4.2 package admin 1.2 
required e.g. for Apache Felix WebConsole 
o.e.c.service.startlevel provides OSGi R4.2 start level service 1.1 
required e.g. for Apache Felix WebConsole 
o.e.c.service.xmlparser provides OSGi R5.0 XML Parser Specification 1.0 
required e.g. for Equinox Extension Registry 
o.e.c.shell provides simple shell without further dependencies
Size of Eclipse Concierge 
• Framework about 250 kB (stripped debug info) 
• All extensions as separate fragments/bundles to keep core as small as possible 
$ ls -lR 
./framework: 
-rw-r--r-- 1 jhiller wheel 249354 Dec 1 10:07 org.eclipse.concierge-1.0.0.alpha2-nodebug.jar 
-rw-r--r-- 1 jhiller wheel 333189 Nov 28 11:35 org.eclipse.concierge-1.0.0.alpha2.jar 
./bundles: 
-rw-r--r-- 1 jhiller wheel 13476 Nov 28 11:35 org.eclipse.concierge.extension.permission-1.0.0.alpha2.jar 
-rw-r--r-- 1 jhiller wheel 13116 Nov 28 11:35 org.eclipse.concierge.service.packageadmin-1.0.0.alpha2.jar 
-rw-r--r-- 1 jhiller wheel 3781 Nov 28 11:35 org.eclipse.concierge.service.startlevel-1.0.0.alpha2.jar 
-rw-r--r-- 1 jhiller wheel 11974 Nov 28 11:35 org.eclipse.concierge.service.xmlparser-1.0.0.alpha2.jar 
-rw-r--r-- 1 jhiller wheel 13059 Nov 28 11:35 org.eclipse.concierge.shell-1.0.0.alpha2.jar 
$
XargsFileLauncher 
• Concierge supports Knopflerfish styled xargs file for startup 
• Enhanced property (variable replacement) and install notation (wildcard support) 
$ java -jar org.eclipse.concierge-1.0.0.alpha2.jar myapp.xargs 
# myapp.xargs 
-Dorg.osgi.framework.system.packages.extra+=javax.xml.parsers 
-DrepoDir=./repo 
-istart ${repoDir}/org.apache.felix.gogo.runtime-0.12.*.jar 
-istart ${repoDir}/org.apache.felix.gogo.shell-0.10.*.jar 
-istart ${repoDir}/org.apache.felix.gogo.command-0.14.*.jar
System Packages Extra 
• Concierge only includes java.* and org.osgi.* packages in export packages of System bundle 
• Typical problem during bundle resolve: 
[Mon Dec 01 13:39:22 CET 2014] [DEBUG] Solution: MultiMap {} 
Exception in thread "main" org.osgi.framework.BundleException: Resolution failed 
[BundleRequirement{Import-Package javax.management}, BundleRequirement{Import-Package javax.naming}, 
BundleRequirement{Import-Package javax.xml.parsers}, BundleRequirement{Import-Package org.w3c.dom}, 
BundleRequirement{Import-Package org.xml.sax}, BundleRequirement{Import-Package 
org.xml.sax.helpers}] 
at org.eclipse.concierge.Concierge.resolve(Concierge.java:2518) 
• Other packages need to be added to “org.osgi.framework.system.packages.extra” 
# required for Apache log4j 
-Dorg.osgi.framework.system.packages.extra+=javax.management, 
-Dorg.osgi.framework.system.packages.extra+=javax.naming, 
-Dorg.osgi.framework.system.packages.extra+=javax.xml.parsers, 
-Dorg.osgi.framework.system.packages.extra+=org.w3c.dom, 
-Dorg.osgi.framework.system.packages.extra+=org.xml.sax, 
-Dorg.osgi.framework.system.packages.extra+=org.xml.sax.helpers, 
-istart ${repo}/log4j_*.jar
Bootdelegation 
• Concierge only loads java.* packages from System ClassLoader 
• All further packages from Java Runtime (sun.*, javax.*, com.sun.*, …) have 
to be added to Bootdelegation 
• Typically indicated by NoClassDefFound exceptions 
• Enable org.eclipse.concierge.debug=true, 
org.eclipse.concierge.debug.classloading=true for better analysis 
-Dorg.osgi.framework.bootdelegation+=javax.*, 
-Dorg.osgi.framework.bootdelegation+=sun.*,com.sun.*,
SyntheticBundleBuilder 
• Plain Concierge Framework testing using OSGi TCK (not public) 
• Additional regression tests for Concierge implementation 
• Additional integration tests with “real” bundles from Equinox, Apache Felix, … 
• Helper class “SyntheticBundleBuilder” to create bundles on the fly 
SyntheticBundleBuilder builder = new SyntheticBundleBuilder(); 
builder.bundleSymbolicName("myBundle").bundleVersion("1.0.0") 
.addManifestHeader("Import-Package", "org.osgi.framework") 
.addFile("plugin.properties", "# a props file"); 
Bundle bundleUnderTest = framework.getBundleContext().installBundle( 
"myBundle", builder.asInputStream()); 
bundleUnderTest.start(); 
URL resource = bundleUnderTest.getEntry("/plugin.properties"); 
// ... do more testing
Jochen Hiller 
@jochenhiller 
Concierge 
Project http://eclipse.org/concierge 
Mailinglist https://dev.eclipse.org/mailman/listinfo/concierge-dev 
Product names, logos, brands and other trademarks referred to within this presentation are the property of their respective trademark holders.

More Related Content

What's hot

Amazon EC2 Container Service in Action
Amazon EC2 Container Service in ActionAmazon EC2 Container Service in Action
Amazon EC2 Container Service in Action
Remotty
 
Controlling multiple VMs with the power of Python
Controlling multiple VMs with the power of PythonControlling multiple VMs with the power of Python
Controlling multiple VMs with the power of Python
Yurii Vasylenko
 
Pax – Tools für den OSGi Alltag
Pax – Tools für den OSGi AlltagPax – Tools für den OSGi Alltag
Pax – Tools für den OSGi Alltag
Patrick Baumgartner
 
JBoss Fuse Workshop 101 part 5
JBoss Fuse Workshop 101 part 5JBoss Fuse Workshop 101 part 5
JBoss Fuse Workshop 101 part 5
Christina Lin
 
Ksplice - Keep your Database systems up to date with no downtime
Ksplice - Keep your Database systems up to date with no downtime Ksplice - Keep your Database systems up to date with no downtime
Ksplice - Keep your Database systems up to date with no downtime
Luis Marques
 
Ansible container
Ansible containerAnsible container
Ansible container
Scott van Kalken
 
Introduction to tempest
Introduction to tempest Introduction to tempest
Introduction to tempest openstackindia
 
Server-side OSGi with Apache Sling (Jazoon 2010)
Server-side OSGi with Apache Sling (Jazoon 2010)Server-side OSGi with Apache Sling (Jazoon 2010)
Server-side OSGi with Apache Sling (Jazoon 2010)
Felix Meschberger
 
Server-side OSGi with Apache Sling
Server-side OSGi with Apache SlingServer-side OSGi with Apache Sling
Server-side OSGi with Apache SlingFelix Meschberger
 
docker build with Ansible
docker build with Ansibledocker build with Ansible
docker build with Ansible
Bas Meijer
 
Node.js primer for ITE students
Node.js primer for ITE studentsNode.js primer for ITE students
Node.js primer for ITE students
Quhan Arunasalam
 
Ansible 2.2
Ansible 2.2Ansible 2.2
Ansible 2.2
Scott van Kalken
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
Michael Bahr
 
Use bonding driver with ethernet
Use bonding driver with ethernetUse bonding driver with ethernet
Use bonding driver with ethernet
SUSE Labs Taipei
 
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
mfrancis
 
Delivering SaaS to the Enterprise with illumos
Delivering SaaS to the Enterprise with illumosDelivering SaaS to the Enterprise with illumos
Delivering SaaS to the Enterprise with illumos
Eric Sproul
 
London open stack meet up - nov 2015
London open stack meet up - nov 2015London open stack meet up - nov 2015
London open stack meet up - nov 2015
Darryl Weaver
 
openQA hands on with openSUSE Leap 42.1 - openSUSE.Asia Summit ID 2016
openQA hands on with openSUSE Leap 42.1 - openSUSE.Asia Summit ID 2016openQA hands on with openSUSE Leap 42.1 - openSUSE.Asia Summit ID 2016
openQA hands on with openSUSE Leap 42.1 - openSUSE.Asia Summit ID 2016
Ben Chou
 
Introduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomiIntroduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomi
Michael Rice
 

What's hot (20)

Owin
OwinOwin
Owin
 
Amazon EC2 Container Service in Action
Amazon EC2 Container Service in ActionAmazon EC2 Container Service in Action
Amazon EC2 Container Service in Action
 
Controlling multiple VMs with the power of Python
Controlling multiple VMs with the power of PythonControlling multiple VMs with the power of Python
Controlling multiple VMs with the power of Python
 
Pax – Tools für den OSGi Alltag
Pax – Tools für den OSGi AlltagPax – Tools für den OSGi Alltag
Pax – Tools für den OSGi Alltag
 
JBoss Fuse Workshop 101 part 5
JBoss Fuse Workshop 101 part 5JBoss Fuse Workshop 101 part 5
JBoss Fuse Workshop 101 part 5
 
Ksplice - Keep your Database systems up to date with no downtime
Ksplice - Keep your Database systems up to date with no downtime Ksplice - Keep your Database systems up to date with no downtime
Ksplice - Keep your Database systems up to date with no downtime
 
Ansible container
Ansible containerAnsible container
Ansible container
 
Introduction to tempest
Introduction to tempest Introduction to tempest
Introduction to tempest
 
Server-side OSGi with Apache Sling (Jazoon 2010)
Server-side OSGi with Apache Sling (Jazoon 2010)Server-side OSGi with Apache Sling (Jazoon 2010)
Server-side OSGi with Apache Sling (Jazoon 2010)
 
Server-side OSGi with Apache Sling
Server-side OSGi with Apache SlingServer-side OSGi with Apache Sling
Server-side OSGi with Apache Sling
 
docker build with Ansible
docker build with Ansibledocker build with Ansible
docker build with Ansible
 
Node.js primer for ITE students
Node.js primer for ITE studentsNode.js primer for ITE students
Node.js primer for ITE students
 
Ansible 2.2
Ansible 2.2Ansible 2.2
Ansible 2.2
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
Use bonding driver with ethernet
Use bonding driver with ethernetUse bonding driver with ethernet
Use bonding driver with ethernet
 
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
 
Delivering SaaS to the Enterprise with illumos
Delivering SaaS to the Enterprise with illumosDelivering SaaS to the Enterprise with illumos
Delivering SaaS to the Enterprise with illumos
 
London open stack meet up - nov 2015
London open stack meet up - nov 2015London open stack meet up - nov 2015
London open stack meet up - nov 2015
 
openQA hands on with openSUSE Leap 42.1 - openSUSE.Asia Summit ID 2016
openQA hands on with openSUSE Leap 42.1 - openSUSE.Asia Summit ID 2016openQA hands on with openSUSE Leap 42.1 - openSUSE.Asia Summit ID 2016
openQA hands on with openSUSE Leap 42.1 - openSUSE.Asia Summit ID 2016
 
Introduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomiIntroduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomi
 

Similar to Eclipse Concierge - an OSGi R5 framework for IoT applications

OSGi in 5 minutes
OSGi in 5 minutesOSGi in 5 minutes
OSGi in 5 minutes
Serge Huber
 
Introduction to-osgi
Introduction to-osgiIntroduction to-osgi
Introduction to-osgi
Ioannis Canellos
 
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
jaxconf
 
Introduction to OSGGi
Introduction to OSGGiIntroduction to OSGGi
Introduction to OSGGi
Marek Koniew
 
Osgi
OsgiOsgi
OSGi introduction
OSGi introductionOSGi introduction
OSGi introduction
Dario Bonino
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous Integration
Giacomo Vacca
 
Painless ruby deployment on shelly cloud
Painless ruby deployment on shelly cloudPainless ruby deployment on shelly cloud
Painless ruby deployment on shelly cloudGiedrius Rimkus
 
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Symphony Software Foundation
 
Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725
miguel dominguez
 
Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725
MortazaJohari
 
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Yevgeniy Brikman
 
Extend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsExtend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation steps
Dragos_Mihailescu
 
Java in a world of containers
Java in a world of containersJava in a world of containers
Java in a world of containers
Docker, Inc.
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018
Arun Gupta
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
Roman Rodomansky
 
Osgi Webinar
Osgi WebinarOsgi Webinar
Osgi WebinarWSO2
 
Preparation study of_docker - (MOSG)
Preparation study of_docker  - (MOSG)Preparation study of_docker  - (MOSG)
Preparation study of_docker - (MOSG)
Soshi Nemoto
 
CoreOS, or How I Learned to Stop Worrying and Love Systemd
CoreOS, or How I Learned to Stop Worrying and Love SystemdCoreOS, or How I Learned to Stop Worrying and Love Systemd
CoreOS, or How I Learned to Stop Worrying and Love Systemd
Richard Lister
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardway
Dave Pitts
 

Similar to Eclipse Concierge - an OSGi R5 framework for IoT applications (20)

OSGi in 5 minutes
OSGi in 5 minutesOSGi in 5 minutes
OSGi in 5 minutes
 
Introduction to-osgi
Introduction to-osgiIntroduction to-osgi
Introduction to-osgi
 
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
 
Introduction to OSGGi
Introduction to OSGGiIntroduction to OSGGi
Introduction to OSGGi
 
Osgi
OsgiOsgi
Osgi
 
OSGi introduction
OSGi introductionOSGi introduction
OSGi introduction
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous Integration
 
Painless ruby deployment on shelly cloud
Painless ruby deployment on shelly cloudPainless ruby deployment on shelly cloud
Painless ruby deployment on shelly cloud
 
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
 
Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725
 
Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725
 
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
 
Extend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsExtend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation steps
 
Java in a world of containers
Java in a world of containersJava in a world of containers
Java in a world of containers
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
Osgi Webinar
Osgi WebinarOsgi Webinar
Osgi Webinar
 
Preparation study of_docker - (MOSG)
Preparation study of_docker  - (MOSG)Preparation study of_docker  - (MOSG)
Preparation study of_docker - (MOSG)
 
CoreOS, or How I Learned to Stop Worrying and Love Systemd
CoreOS, or How I Learned to Stop Worrying and Love SystemdCoreOS, or How I Learned to Stop Worrying and Love Systemd
CoreOS, or How I Learned to Stop Worrying and Love Systemd
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardway
 

Recently uploaded

The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
Globus
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 

Recently uploaded (20)

The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 

Eclipse Concierge - an OSGi R5 framework for IoT applications

  • 1. Eclipse Concierge - an OSGi R5 Framework for IoT applications Eclipse DemoCamps Fall 2014 Jochen Hiller, Deutsche Telekom AG
  • 2. What is Eclipse Concierge? • Full OSGi R5 compatible core framework • Keep a small footprint to work well on embedded devices • Remain “readable” • Remain backwards-compatible (Java 1.5, Java 1.4 under discussion) • Being a sandbox for innovation around OSGi • See JavaOne 2014 presentation: Building Small and Efficient Internet of Things Applications with Concierge
  • 3. Status of Eclipse Concierge • Part of Eclipse IoT projects • Developed by Jan Rellermeyer, 2 additional committers • First release planned end 2014 Jan Rellermeyer Tim Verbelen Jochen Hiller • Achieve full OSGi R5 compliance (1 test missing) • Eclipse Kura is running on Concierge • Eclipse projects are close linked to Equinox, Eclipse Runtime, difficult to move over to Concierge • Eclipse SmartHome (minimal runtime) is close to run on Concierge
  • 5. Run Concierge from Commandline $ java -jar org.eclipse.concierge-1.0.0.alpha2.jar -help $ java -jar org.eclipse.concierge-1.0.0.alpha2.jar $ java -jar org.eclipse.concierge-1.0.0.alpha2.jar -istart repo/org.eclipse.concierge.shell-1.0.0.alpha2.jar $ cd repo ; java -jar ../org.eclipse.concierge-1.0.0.alpha2.jar -all
  • 6. How to use your own storage? Embedded: • Load bundles from Flash memory • Place all temporary files into memory, not flash $ cd /mnt/flash/app/repo $ java -Dorg.osgi.framework.storage=/tmp/mystorage -jar org.eclipse.concierge-1.0.0.alpha2.jar -all
  • 7. How to Embed Concierge Map<String, String> launchArgs = new HashMap<String, String>(); Framework framework = new Factory().newFramework(launchArgs); framework.init(); framework.start(); BundleContext bundleContext = framework.getBundleContext(); Bundle shellBundle = bundleContext .installBundle("org.eclipse.concierge.shell-1.0.0.alpha2.jar"); shellBundle.start(); bundleContext.installBundle("hello_1.0.0.jar"); // ... // wait until framework will be terminated framework.waitForStop(0);
  • 8. Additional bundles Separate extensions, to keep core framework as small as possible o.e.c.extension.permission framework extension which adds PermissionAdmin, CondPermAdmin required e.g. for Equinox Console o.e.c.service.packageadmin provides OSGi R4.2 package admin 1.2 required e.g. for Apache Felix WebConsole o.e.c.service.startlevel provides OSGi R4.2 start level service 1.1 required e.g. for Apache Felix WebConsole o.e.c.service.xmlparser provides OSGi R5.0 XML Parser Specification 1.0 required e.g. for Equinox Extension Registry o.e.c.shell provides simple shell without further dependencies
  • 9. Size of Eclipse Concierge • Framework about 250 kB (stripped debug info) • All extensions as separate fragments/bundles to keep core as small as possible $ ls -lR ./framework: -rw-r--r-- 1 jhiller wheel 249354 Dec 1 10:07 org.eclipse.concierge-1.0.0.alpha2-nodebug.jar -rw-r--r-- 1 jhiller wheel 333189 Nov 28 11:35 org.eclipse.concierge-1.0.0.alpha2.jar ./bundles: -rw-r--r-- 1 jhiller wheel 13476 Nov 28 11:35 org.eclipse.concierge.extension.permission-1.0.0.alpha2.jar -rw-r--r-- 1 jhiller wheel 13116 Nov 28 11:35 org.eclipse.concierge.service.packageadmin-1.0.0.alpha2.jar -rw-r--r-- 1 jhiller wheel 3781 Nov 28 11:35 org.eclipse.concierge.service.startlevel-1.0.0.alpha2.jar -rw-r--r-- 1 jhiller wheel 11974 Nov 28 11:35 org.eclipse.concierge.service.xmlparser-1.0.0.alpha2.jar -rw-r--r-- 1 jhiller wheel 13059 Nov 28 11:35 org.eclipse.concierge.shell-1.0.0.alpha2.jar $
  • 10. XargsFileLauncher • Concierge supports Knopflerfish styled xargs file for startup • Enhanced property (variable replacement) and install notation (wildcard support) $ java -jar org.eclipse.concierge-1.0.0.alpha2.jar myapp.xargs # myapp.xargs -Dorg.osgi.framework.system.packages.extra+=javax.xml.parsers -DrepoDir=./repo -istart ${repoDir}/org.apache.felix.gogo.runtime-0.12.*.jar -istart ${repoDir}/org.apache.felix.gogo.shell-0.10.*.jar -istart ${repoDir}/org.apache.felix.gogo.command-0.14.*.jar
  • 11. System Packages Extra • Concierge only includes java.* and org.osgi.* packages in export packages of System bundle • Typical problem during bundle resolve: [Mon Dec 01 13:39:22 CET 2014] [DEBUG] Solution: MultiMap {} Exception in thread "main" org.osgi.framework.BundleException: Resolution failed [BundleRequirement{Import-Package javax.management}, BundleRequirement{Import-Package javax.naming}, BundleRequirement{Import-Package javax.xml.parsers}, BundleRequirement{Import-Package org.w3c.dom}, BundleRequirement{Import-Package org.xml.sax}, BundleRequirement{Import-Package org.xml.sax.helpers}] at org.eclipse.concierge.Concierge.resolve(Concierge.java:2518) • Other packages need to be added to “org.osgi.framework.system.packages.extra” # required for Apache log4j -Dorg.osgi.framework.system.packages.extra+=javax.management, -Dorg.osgi.framework.system.packages.extra+=javax.naming, -Dorg.osgi.framework.system.packages.extra+=javax.xml.parsers, -Dorg.osgi.framework.system.packages.extra+=org.w3c.dom, -Dorg.osgi.framework.system.packages.extra+=org.xml.sax, -Dorg.osgi.framework.system.packages.extra+=org.xml.sax.helpers, -istart ${repo}/log4j_*.jar
  • 12. Bootdelegation • Concierge only loads java.* packages from System ClassLoader • All further packages from Java Runtime (sun.*, javax.*, com.sun.*, …) have to be added to Bootdelegation • Typically indicated by NoClassDefFound exceptions • Enable org.eclipse.concierge.debug=true, org.eclipse.concierge.debug.classloading=true for better analysis -Dorg.osgi.framework.bootdelegation+=javax.*, -Dorg.osgi.framework.bootdelegation+=sun.*,com.sun.*,
  • 13. SyntheticBundleBuilder • Plain Concierge Framework testing using OSGi TCK (not public) • Additional regression tests for Concierge implementation • Additional integration tests with “real” bundles from Equinox, Apache Felix, … • Helper class “SyntheticBundleBuilder” to create bundles on the fly SyntheticBundleBuilder builder = new SyntheticBundleBuilder(); builder.bundleSymbolicName("myBundle").bundleVersion("1.0.0") .addManifestHeader("Import-Package", "org.osgi.framework") .addFile("plugin.properties", "# a props file"); Bundle bundleUnderTest = framework.getBundleContext().installBundle( "myBundle", builder.asInputStream()); bundleUnderTest.start(); URL resource = bundleUnderTest.getEntry("/plugin.properties"); // ... do more testing
  • 14. Jochen Hiller @jochenhiller Concierge Project http://eclipse.org/concierge Mailinglist https://dev.eclipse.org/mailman/listinfo/concierge-dev Product names, logos, brands and other trademarks referred to within this presentation are the property of their respective trademark holders.