SlideShare ist ein Scribd-Unternehmen logo
ECLIPSE RCP
WITH BNDTOOLS
EclipseCon Europe 2017
Seminarräume 1-3
October 25, 2017 – 10:30 to 11:05
created by Dirk Fauth and Peter Kirschner
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
2
Eclipse RCP with bndtools
Speaker
Dirk Fauth
Software-Architect Rich Client Systeme
Eclipse Committer
Robert Bosch GmbH
Franz-Oechsle-Straße 4
73207 Plochingen
dirk.fauth@de.bosch.com
www.bosch.com
blog.vogella.com/author/fipro/
Twitter: fipro78
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
3
Eclipse RCP with bndtools
Speaker
Peter Kirschner
IT Software Engineer
OSGi & Eclipse Enthusiast
Kirschners GmbH
Löchgauer Straße 57
74321 Bietigheim-Bissingen
peter@kirschners.de
GitHub: peterkir.github.io
Twitter: peterkir
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
4
Agenda
„ Motivation
„ Eclipse – Insights
„ Comparison Eclipse PDE / bndtools
„ Masterplan
„ Get ready …
„ Developing with bndtools
„ There and back again
„ What‘s next
MOTIVATION
PDE - PAIN
POINTS
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
7
Eclipse PDE Pain Points
Area How Issue
Target Default: IDE bundles
or
Target Definition File
Target Platforms updates are fragile and brittle
one target for all projects inside the workspace
target configuration for p2 repos/update sites is not
supporting mixed slicer and planner configurations
BuildPath .classpath,
MANIFEST.MF,
build.properties
Default: Required Plug-ins
Bundle classpath is constituted from Require-Bundles
Alternative: Automated Management of Dependencies
Bundle is added to the Plug-in Dependencies and maintained
inside build.properties file
Run
configurations
Product or
Application
Feature or Plugin
based
Non-deterministic launch behaviour when launching
bundles with same BSN and different versions
Fragments from bundle pool are picked up inside launch,
cause they are part of the bundle pool, but not inside the Run
config
ECLIPSE INSIGHTS
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
10
Eclipse Insights
Topic Responsibility
Product Branding, splash-screen, native executables
Application Only one application gets to run in a given Eclipse instance.
Platform shuts down after exiting applications run method
Features Collection for plugins with specification of their dependencies
(either features or other plugins)
Eclipse uses Singleton Directive - OSGi spec 10.1.15.110
Singleton installable IU
e.g. org.eclipse.swt or ExtensionPoint Provider
BNDTOOLS
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
12
Comparison PDE vs. BNDTOOLS
Topic PDE ( Manifest first ) Bndtools
Dependency
Management
Explicit manual/semi-automated Generated
Package imports Manually
(manual triggered calculation)
Bytecode-based import
calculation
with semantic versioning
Import/export package
versions
Explicit properties Implicit conventions
Launch defaults Persisted, No Update Clean, Hot Bundle Deploy
Bundle handling IDE uses „virtual bundle“
Explicit export
Instant bundle creation
One Eclipse project One bundle Can become multiple bundles
MASTERPLAN
Eclipse IDE
Masterplan
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
13
Eclipse
p2 repo
ecl2bnd
example.product
p2 repo
Ant
PDEbuid
bundles
bundles
bundles
bundles
example.product
linux.win32.x86-64
example.product
macosx.cocoa.x86-64
example.product
win32.win32.x86-64
bundles
bndtools
Require
macros
Build
macrosindx
Eclipse
p2 repo
ecl2bnd
GET READY…
„ Eclipse with p2
mirrorApplications
‒ Run configurations are inside
the GIT repository
„ Ant p2 tasks – p2.mirror
‒ External Tool Configuration
available inside GIT repo
[ecl2bnd] Mirroring Eclipse repos locally
Mind the gap
Eclipse p2 pitfalls
- Composite Repo structure
- Blobstores during mirroring
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
15
„ Since bndtools version 3.3 P2 repositories can be directly referenced
[ecl2bnd] Indexing repository
-plugin.eclipse.platform.4.7.1: 
aQute.bnd.repository.p2.provider.P2Repository; 
name = "Eclipse Platform R-4.7.1"; 
url = "${eclipse.platform.url}"; 
cache = "${cache}"
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
16
[ecl2bnd] Map Eclipse Features to bnd macros
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
17
p2 repo feature folder bnd macros for buildpath / runrequires
… …
Mind the gap
- platform fragments
- system bundle [org.eclipse.osgi]
- Equinox launcher fragments
[ecl2bnd] Mind the gap – platform fragments
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
18
Example of Eclipse Feature org.eclipse.e4.rcp
which has platform specific bundles/fragments
becomes several bnd runrequire macros for given platform configs
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
19
THERE AND BACK
AGAIN
[bnd2ecl] Creating Eclipse Products
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
21
„ 2 Alternatives are available
‒ Feature based products (preferred – can be updated by p2)
‒ Plug-in based products
Features Container for plugins with dependency and include of other features
Eclipse uses Singleton Directive - OSGi spec 10.1.15.110
Singleton installable IU
e.g. org.eclipse.swt or ExtensionPoint Provider
[bnd2ecl] From bundles to eclipse features
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
22
Tasks:
„ create Eclipse Product
„ constituted from Eclipse Features
„ containing Bundles build by bnd
How:
„ Template eclipse product with include to Template Feature
„ Template Feature includes Eclipse Features bnd bundles depend on
and the
„ Dynamically generate Eclipse Feature of all bnd bundles
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
23
Re-cap
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
24
„ Local mirroring
‒ development liberation
‒ build performance
„ Local development
‒ bndtools based development process
„ Local assembly
‒ Native Eclipse Products
‒ P2 Repository for online updates
But, ready for the cloud
WHAT‘S NEXT
Next steps / plans / wishes
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
26
„ [wip] Make example platform independent
„ [wip] Refactor ecl2bnd feature/macro generation as service
„ [plan] create bnd workspace configurations for Eclipse Target releases
„ [wish] incorporate ecl2bnd feature/macro generation into bnd p2
repositories?
THANK YOU
QUESTIONS
REMARKS
BLAME
OSGi Remote Services
Automotive Service Solutions | AA-AS/EIS2-EU | 24.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
25
Evaluate the Sessions
Sign in and vote at eclipsecon.org
- 1 + 10
REFERENCES
References
Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017
© Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
27
„ BND documentation http://bnd.bndtools.org
„ PDE product builds help
„ Source Code repo on GitHub

Weitere ähnliche Inhalte

Ähnlich wie Eclipse RCP with Bndtools - P Kirschners & D Fauth

2016 9000 0013_pcc_integrierte_struktur_001
2016 9000 0013_pcc_integrierte_struktur_0012016 9000 0013_pcc_integrierte_struktur_001
2016 9000 0013_pcc_integrierte_struktur_001Ulrich Schmidt
 
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...NETWAYS
 
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...NETWAYS
 
Li So G Osci
Li So G OsciLi So G Osci
Li So G OsciCloudcamp
 
BASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsBASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsRobin Sedlaczek
 
Architekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenArchitekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenRobin Sedlaczek
 
MEDINA - towards continuous (automated) certification of cloud services in Eu...
MEDINA - towards continuous (automated) certification of cloud services in Eu...MEDINA - towards continuous (automated) certification of cloud services in Eu...
MEDINA - towards continuous (automated) certification of cloud services in Eu...MEDINA
 
Softwarepaketierung und Continuous Integration bei Airbus Defence and Space
Softwarepaketierung und Continuous Integration bei Airbus Defence and SpaceSoftwarepaketierung und Continuous Integration bei Airbus Defence and Space
Softwarepaketierung und Continuous Integration bei Airbus Defence and SpaceB1 Systems GmbH
 
logi.cals Power Camp 2009
logi.cals Power Camp 2009logi.cals Power Camp 2009
logi.cals Power Camp 2009logi.cals
 
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzierenPlattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzierenteam-WIBU
 
Umsetzungsstrategien für Cross-Plattform Projekte - IA Konferenz 2013 Klaus R...
Umsetzungsstrategien für Cross-Plattform Projekte - IA Konferenz 2013 Klaus R...Umsetzungsstrategien für Cross-Plattform Projekte - IA Konferenz 2013 Klaus R...
Umsetzungsstrategien für Cross-Plattform Projekte - IA Konferenz 2013 Klaus R...Klaus Rüggenmann
 
Service oriented alerting
Service oriented alertingService oriented alerting
Service oriented alertinggeekQ
 
20150611 track5 2_ bp25_edit_life_connections
20150611 track5 2_ bp25_edit_life_connections20150611 track5 2_ bp25_edit_life_connections
20150611 track5 2_ bp25_edit_life_connectionsDNUG e.V.
 

Ähnlich wie Eclipse RCP with Bndtools - P Kirschners & D Fauth (20)

2016 9000 0013_pcc_integrierte_struktur_001
2016 9000 0013_pcc_integrierte_struktur_0012016 9000 0013_pcc_integrierte_struktur_001
2016 9000 0013_pcc_integrierte_struktur_001
 
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
 
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
 
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
 
Li So G Osci
Li So G OsciLi So G Osci
Li So G Osci
 
CADFEM ihf Toolbox
CADFEM ihf ToolboxCADFEM ihf Toolbox
CADFEM ihf Toolbox
 
.NET und jetzt!
.NET und jetzt!.NET und jetzt!
.NET und jetzt!
 
Monolithen mit ddd zerlegen
Monolithen mit ddd zerlegenMonolithen mit ddd zerlegen
Monolithen mit ddd zerlegen
 
2020 oracle lizenznews
2020 oracle lizenznews2020 oracle lizenznews
2020 oracle lizenznews
 
BASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsBASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio Extensions
 
Architekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenArchitekturen für .NET Core-Anwendungen
Architekturen für .NET Core-Anwendungen
 
MEDINA - towards continuous (automated) certification of cloud services in Eu...
MEDINA - towards continuous (automated) certification of cloud services in Eu...MEDINA - towards continuous (automated) certification of cloud services in Eu...
MEDINA - towards continuous (automated) certification of cloud services in Eu...
 
Softwarepaketierung und Continuous Integration bei Airbus Defence and Space
Softwarepaketierung und Continuous Integration bei Airbus Defence and SpaceSoftwarepaketierung und Continuous Integration bei Airbus Defence and Space
Softwarepaketierung und Continuous Integration bei Airbus Defence and Space
 
Technische schulden abbauen
Technische schulden abbauenTechnische schulden abbauen
Technische schulden abbauen
 
logi.cals Power Camp 2009
logi.cals Power Camp 2009logi.cals Power Camp 2009
logi.cals Power Camp 2009
 
OSLC in Aktion
OSLC in AktionOSLC in Aktion
OSLC in Aktion
 
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzierenPlattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
 
Umsetzungsstrategien für Cross-Plattform Projekte - IA Konferenz 2013 Klaus R...
Umsetzungsstrategien für Cross-Plattform Projekte - IA Konferenz 2013 Klaus R...Umsetzungsstrategien für Cross-Plattform Projekte - IA Konferenz 2013 Klaus R...
Umsetzungsstrategien für Cross-Plattform Projekte - IA Konferenz 2013 Klaus R...
 
Service oriented alerting
Service oriented alertingService oriented alerting
Service oriented alerting
 
20150611 track5 2_ bp25_edit_life_connections
20150611 track5 2_ bp25_edit_life_connections20150611 track5 2_ bp25_edit_life_connections
20150611 track5 2_ bp25_edit_life_connections
 

Mehr von mfrancis

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

Mehr von mfrancis (20)

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

Eclipse RCP with Bndtools - P Kirschners & D Fauth

  • 1. ECLIPSE RCP WITH BNDTOOLS EclipseCon Europe 2017 Seminarräume 1-3 October 25, 2017 – 10:30 to 11:05 created by Dirk Fauth and Peter Kirschner
  • 2. Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 2 Eclipse RCP with bndtools Speaker Dirk Fauth Software-Architect Rich Client Systeme Eclipse Committer Robert Bosch GmbH Franz-Oechsle-Straße 4 73207 Plochingen dirk.fauth@de.bosch.com www.bosch.com blog.vogella.com/author/fipro/ Twitter: fipro78
  • 3. Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 3 Eclipse RCP with bndtools Speaker Peter Kirschner IT Software Engineer OSGi & Eclipse Enthusiast Kirschners GmbH Löchgauer Straße 57 74321 Bietigheim-Bissingen peter@kirschners.de GitHub: peterkir.github.io Twitter: peterkir
  • 4. Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 4 Agenda „ Motivation „ Eclipse – Insights „ Comparison Eclipse PDE / bndtools „ Masterplan „ Get ready … „ Developing with bndtools „ There and back again „ What‘s next
  • 7. Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 7 Eclipse PDE Pain Points Area How Issue Target Default: IDE bundles or Target Definition File Target Platforms updates are fragile and brittle one target for all projects inside the workspace target configuration for p2 repos/update sites is not supporting mixed slicer and planner configurations BuildPath .classpath, MANIFEST.MF, build.properties Default: Required Plug-ins Bundle classpath is constituted from Require-Bundles Alternative: Automated Management of Dependencies Bundle is added to the Plug-in Dependencies and maintained inside build.properties file Run configurations Product or Application Feature or Plugin based Non-deterministic launch behaviour when launching bundles with same BSN and different versions Fragments from bundle pool are picked up inside launch, cause they are part of the bundle pool, but not inside the Run config
  • 9. Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 10 Eclipse Insights Topic Responsibility Product Branding, splash-screen, native executables Application Only one application gets to run in a given Eclipse instance. Platform shuts down after exiting applications run method Features Collection for plugins with specification of their dependencies (either features or other plugins) Eclipse uses Singleton Directive - OSGi spec 10.1.15.110 Singleton installable IU e.g. org.eclipse.swt or ExtensionPoint Provider
  • 11. Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 12 Comparison PDE vs. BNDTOOLS Topic PDE ( Manifest first ) Bndtools Dependency Management Explicit manual/semi-automated Generated Package imports Manually (manual triggered calculation) Bytecode-based import calculation with semantic versioning Import/export package versions Explicit properties Implicit conventions Launch defaults Persisted, No Update Clean, Hot Bundle Deploy Bundle handling IDE uses „virtual bundle“ Explicit export Instant bundle creation One Eclipse project One bundle Can become multiple bundles
  • 13. Eclipse IDE Masterplan Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 13 Eclipse p2 repo ecl2bnd example.product p2 repo Ant PDEbuid bundles bundles bundles bundles example.product linux.win32.x86-64 example.product macosx.cocoa.x86-64 example.product win32.win32.x86-64 bundles bndtools Require macros Build macrosindx Eclipse p2 repo ecl2bnd
  • 15. „ Eclipse with p2 mirrorApplications ‒ Run configurations are inside the GIT repository „ Ant p2 tasks – p2.mirror ‒ External Tool Configuration available inside GIT repo [ecl2bnd] Mirroring Eclipse repos locally Mind the gap Eclipse p2 pitfalls - Composite Repo structure - Blobstores during mirroring Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 15
  • 16. „ Since bndtools version 3.3 P2 repositories can be directly referenced [ecl2bnd] Indexing repository -plugin.eclipse.platform.4.7.1: aQute.bnd.repository.p2.provider.P2Repository; name = "Eclipse Platform R-4.7.1"; url = "${eclipse.platform.url}"; cache = "${cache}" Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 16
  • 17. [ecl2bnd] Map Eclipse Features to bnd macros Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 17 p2 repo feature folder bnd macros for buildpath / runrequires … … Mind the gap - platform fragments - system bundle [org.eclipse.osgi] - Equinox launcher fragments
  • 18. [ecl2bnd] Mind the gap – platform fragments Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 18 Example of Eclipse Feature org.eclipse.e4.rcp which has platform specific bundles/fragments becomes several bnd runrequire macros for given platform configs
  • 19. Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 19
  • 21. [bnd2ecl] Creating Eclipse Products Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 21 „ 2 Alternatives are available ‒ Feature based products (preferred – can be updated by p2) ‒ Plug-in based products Features Container for plugins with dependency and include of other features Eclipse uses Singleton Directive - OSGi spec 10.1.15.110 Singleton installable IU e.g. org.eclipse.swt or ExtensionPoint Provider
  • 22. [bnd2ecl] From bundles to eclipse features Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 22 Tasks: „ create Eclipse Product „ constituted from Eclipse Features „ containing Bundles build by bnd How: „ Template eclipse product with include to Template Feature „ Template Feature includes Eclipse Features bnd bundles depend on and the „ Dynamically generate Eclipse Feature of all bnd bundles
  • 23. Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 23
  • 24. Re-cap Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 24 „ Local mirroring ‒ development liberation ‒ build performance „ Local development ‒ bndtools based development process „ Local assembly ‒ Native Eclipse Products ‒ P2 Repository for online updates But, ready for the cloud
  • 26. Next steps / plans / wishes Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 26 „ [wip] Make example platform independent „ [wip] Refactor ecl2bnd feature/macro generation as service „ [plan] create bnd workspace configurations for Eclipse Target releases „ [wish] incorporate ecl2bnd feature/macro generation into bnd p2 repositories?
  • 28. OSGi Remote Services Automotive Service Solutions | AA-AS/EIS2-EU | 24.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 25 Evaluate the Sessions Sign in and vote at eclipsecon.org - 1 + 10
  • 30. References Automotive Service Solutions | AA-AS/EIS2-EU | 25.10.2017 © Robert Bosch GmbH 2017. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 27 „ BND documentation http://bnd.bndtools.org „ PDE product builds help „ Source Code repo on GitHub