created by Peter Kirschner for EclipseCon Europe 2014
PDE pain points
Why bnd/Bndtools
target horror
configuration complex
reloading is not fail safe
launch configurations
what the hell has PDE loaded in the runtime
where do these runtime settings come from
automated import package analysis including versioning | ![]() |
powerful OSGi bundle repository management | ![]() |
instant Jar bundle creation | ![]() |
annotation based Declarative Service implementation | ![]() |
Project Layouts
IDE Bundle Handling
PDE
creates "virtual bundles" for execution Launches
PDE build/export required to create concrete jar files
Bndtools
creates physical jar file inside generated folder
launches execute this jar file inside runtime
Project Build Path
Project Interdependencies
Compiler Settings
PDE
projects share a common target
high complexity selecting import-packages
Bndtools
configured for each project
reduces number of import-package
bnd projects have a precise import-package scope
OSGi dev with PDE target
BND creates generated/bundle.jar
p2 publisher generates p2 repo from bnd jar files
include p2 repo in target and reload it
BND project depending on PDE bundle
PDE feature export/build creating p2 repo
obr repo indexing
reference and refresh cnf
Luckily we don't required this
<target_prj>/workspace.target
<pde_prj>/.classpath
<pde_prj>/.settings/org.eclipse.jdt.core.prefs
<pde_prj>/META-INF/MANIFEST.MF -> Bundle-RequiredExecutionEnvironment
<pde_prj>/build.properties -> jre.compilation.profile
<cnf_prj>/ext/repositories.bnd
<bnd_prj>/.classpath
<bnd_prj>/.settings/org.eclipse.jdt.core.prefs
<bnd_prj>/bnd.bnd
Initial Dev Setup
Updating Setup or Target
Mixed-Mode Helpers
Eclipse SDK to create/update -> bootstrap IDE
install IDEfix (eclipse + Bndtools + ...)
mirror required repos locally
IDEfix with eval workspace
IDEfix product workspace
bootstrap IDE
mirror new bndversion and install new IDEfix
mirror and index new target repositories
launch IDEfix with an new eval workspace
launch IDEfix with new product workspace
compare and configure cnf
import your projects
p2 repository mirroring with OBR indexing
IDE bootstrap scripts mirror, install, launch templates
bnd2pde -> p2 publishing and PDE target creation
Mixed-Mode
Coding
After modifications on bnd bundles
bnd2pde build
target reload required
validation via view "TargetPlatform State"
Debugging source code editor is showing read-only bnd target bundles
editing impossible (uncommon behaviour)
open the appropriate source type with
Ctrl+Shift+T and CamelCase notation
Our Migration Progress
Migration Digest
Mixed-Mode is hard -> try to migrate fast
Defaults are not ideal for Enterprise Environments
Bndtools Windows Committers wanted - Windows is special
Work is more comprehensible
Benefits for us exceeded the tooling problems
Migration is feasible, but is not for free!
my suffering colleagues for their
valuable feedback
and patience in adopting new technologies
Peter Kriens, Neil Bartlett, BJ Hargrave
and all other bnd/Bndtools/bindex commiter and contributors
REVEAL.JS - HTML presentations by Hakim El Hattab