SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler 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.

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante a 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
 

Semelhante a 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
 

Último

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 

Último (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

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.