How to simplify OSGi development using OBR - Peter Kriens
Upcoming SlideShare
Loading in...5
×
 

How to simplify OSGi development using OBR - Peter Kriens

on

  • 2,797 views

Presentation by Peter Kriens at OSGi DevCon 2012 BOF (22 March, 2012) ...

Presentation by Peter Kriens at OSGi DevCon 2012 BOF (22 March, 2012)

Video recording of presentation available at http://youtu.be/hemY-6dfPnw

The OSGi Alliance has been working on the OBR specification to describe resources in terms of requirements and capabilities. This talk will explore how this generic model can be applied to OSGi development to significantly simplify and improve the development, build, release and deployment processes. The talk will include a look at practical use cases, a demo or two (time permitting) and insight into the sort of capabilities you could build into your systems in the future.

Statistics

Views

Total Views
2,797
Views on SlideShare
2,797
Embed Views
0

Actions

Likes
3
Downloads
48
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Internal dependencies, explain the new name that aggregates the internal dependencies\n
  • Internal dependencies, explain the new name that aggregates the internal dependencies\n
  • Internal dependencies, explain the new name that aggregates the internal dependencies\n
  • Internal dependencies, explain the new name that aggregates the internal dependencies\n
  • Internal dependencies, explain the new name that aggregates the internal dependencies\n
  • Internal dependencies, explain the new name that aggregates the internal dependencies\n
  • Internal dependencies, explain the new name that aggregates the internal dependencies\n
  • Internal dependencies, explain the new name that aggregates the internal dependencies\n
  • Internal dependencies, explain the new name that aggregates the internal dependencies\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n
  • Simple Dependency\n

How to simplify OSGi development using OBR - Peter Kriens How to simplify OSGi development using OBR - Peter Kriens Presentation Transcript

  • OSGiBundle Repository
  • foo$
  • foo$ coffee-bash: /usr/local/bin/coffee: No such file or directory
  • foo$ coffee-bash: /usr/local/bin/coffee: No such file or directoryfoo$ sudo npm -g install coffee-script/usr/local/bin/coffee -> /usr/../coffee-script/bin/coffee/usr/local/bin/cake -> /usr/../coffee-script/bin/cakecoffee-script@1.2.0 /usr/local/lib/node_modules/coffee-script
  • foo$ coffee-bash: /usr/local/bin/coffee: No such file or directoryfoo$ sudo npm -g install coffee-script/usr/local/bin/coffee -> /usr/../coffee-script/bin/coffee/usr/local/bin/cake -> /usr/../coffee-script/bin/cakecoffee-script@1.2.0 /usr/local/lib/node_modules/coffee-scriptfoo$ coffeecoffee>
  • Dependencies
  • Huh? NIH????• maven• p2• ivy• ...
  • Coffee
  • CoffeeB C
  • CoffeeB C
  • CoffeeB C
  • Alternative Universe• Additional Namespace • Self inflicted pain!• Managed by humans • We’re bad in this!• Hides the real dependencies
  • Java packagepackage com.example; dependencyimport com.foo.*;import aQute.bnd.annotations.*@Componentpublic FooImpl implements Foo { @Reference void setBla(Bla bla) { … }}
  • ExtendBundle er
  • Coffee B CRequirement Namespace Capability
  • Coffee B CRequirement Namespace Capability
  • Coffee B CRequirement Namespace Capability
  • Provide-Capability: osgi.contract; osgi.contract=java.ee; version=1.6, foo.screen; width=400; height=400, bar.xslt; bar.xslt=footransform; url=/foo/transform.xsl
  • Require-Capability: osgi.contract; filter:=”(osgi.contract=java.ee) (&(version>=1.6)(!(version>=1.7)))”, foo.screen; filter:=”(&(width>=300)(height>=300))”, bar.xslt; filter:=”(bar.xslt=footransform)”,
  • osgi.wiring.*• Packages (osgi.wiring.package)• Require Bundle (osgi.wiring.bundle)• Fragments (osgi.wiring.host)
  • Repository Repo
  • XML - bindex<repository name=OSGi Repository increment=13582741 xmlns=http://www.osgi.org/xmlns/repository/v1.0.0> <resource location=resources/org.osgi.test.cases.tracker-3.0.0.jarsourceLocation=resources/org.osgi.test.cases.tracker-3.0.0-src.jar> <capability namespace=osgi.identity> <attribute value=org.apache.commons.pool name=osgi.identity /> <attribute value=1.5.6 name=version type=Version /> <attribute value=osgi.bundle name=type/> </capability> <capability namespace=osgi.content> <attribute value=org.apache.commons.pool-1.5.6.jar name=osgi.content/> <attribute value=Copyright (c) OSGi Alliance (2000, 2011). All Rights Reserved. name=copyright /> <attribute value=Common Object Pooling Library name=description /> <attribute value=http://commons.apache.org/pool name=documentation/> <attribute value=http://commons.apache.org/pool/api-1.5.6 name=javadoc/> <attribute value=http://www.opensource.org/licenses/Apache-2.0 name=license /> <attribute value=Apache Commons Pool name=name/> <attribute value=http://svn.apache.org/repos/asf/commons/proper/pool/trunk name=scm/> <attribute value=4405 name=size type=Long /> <!-- Dynamically generated: <attribute value=... name=source/> --> </capability> <capability namespace=osgi.wiring.bundle> <attribute value=org.apache.commons.pool name=osgi.wiring.bundle/> <attribute value=1 name=manifest.version/> <attribute value=1.5.6 name=version type=Version/> </capability> <capability namespace=osgi.wiring.package> <attribute value=org.apache.commons.pool name=osgi.wiring.package /> <attribute value=1.5.6 name=version type=Version/> <attribute name="a" value="1"/> <attribute name="b" value="1"/> <attribute name="c" value="1"/> <directive name="mandatory" value="a,b,c"/> </capability> <capability namespace=osgi.wiring.package> <attribute value=org.apache.commons.pool name=osgi.wiring.package /> <attribute value=2.0.6 name=version type=Version/>
  • foo$ eclipse-bash: /usr/local/bin/eclipse: No such file or directoryfoo$ sudo obr -g install eclipsebndtools@1.2.0 /usr/local/lib/node_modules/bndtoolsfoo$ eclipse
  • foo$ eclipse-bash: /usr/local/bin/eclipse: No such file or directoryfoo$ sudo obr -g install eclipsebndtools@1.2.0 /usr/local/lib/node_modules/bndtoolsfoo$ eclipse
  • Q&A