SlideShare a Scribd company logo
1 of 14
Download to read offline
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 ActionRemotty
 
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 PythonYurii 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 AlltagPatrick Baumgartner
 
JBoss Fuse Workshop 101 part 5
JBoss Fuse Workshop 101 part 5JBoss Fuse Workshop 101 part 5
JBoss Fuse Workshop 101 part 5Christina 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
 
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 AnsibleBas Meijer
 
Node.js primer for ITE students
Node.js primer for ITE studentsNode.js primer for ITE students
Node.js primer for ITE studentsQuhan Arunasalam
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to AnsibleMichael Bahr
 
Use bonding driver with ethernet
Use bonding driver with ethernetUse bonding driver with ethernet
Use bonding driver with ethernetSUSE 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 Ziegelermfrancis
 
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 illumosEric 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 2015Darryl 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 2016Ben Chou
 
Introduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomiIntroduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomiMichael 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 minutesSerge Huber
 
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
 
Introduction to OSGGi
Introduction to OSGGiIntroduction to OSGGi
Introduction to OSGGiMarek Koniew
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationGiacomo 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-160331143725miguel dominguez
 
Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725MortazaJohari
 
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 stepsDragos_Mihailescu
 
Java in a world of containers
Java in a world of containersJava in a world of containers
Java in a world of containersDocker, 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 2018Arun Gupta
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 applicationRoman 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 SystemdRichard Lister
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardwayDave 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

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
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
 
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
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
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
 
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
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
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
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
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
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
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
 

Recently uploaded (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
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
 
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
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
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
 
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
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
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
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
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.
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
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
 

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.