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/cof...
foo$ coffee-bash: /usr/local/bin/coffee: No such file or directoryfoo$ sudo npm -g install coffee-script/usr/local/bin/cof...
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 d...
Java packagepackage com.example;              dependencyimport com.foo.*;import aQute.bnd.annotations.*@Componentpublic Fo...
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,  b...
Require-Capability:  osgi.contract;    filter:=”(osgi.contract=java.ee)       (&(version>=1.6)(!(version>=1.7)))”,  foo.sc...
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....
foo$ eclipse-bash: /usr/local/bin/eclipse: No such file or directoryfoo$ sudo obr -g install eclipsebndtools@1.2.0 /usr/lo...
foo$ eclipse-bash: /usr/local/bin/eclipse: No such file or directoryfoo$ sudo obr -g install eclipsebndtools@1.2.0 /usr/lo...
Q&A
How to simplify OSGi development using OBR - Peter Kriens
How to simplify OSGi development using OBR - Peter Kriens
How to simplify OSGi development using OBR - Peter Kriens
How to simplify OSGi development using OBR - Peter Kriens
Upcoming SlideShare
Loading in...5
×

How to simplify OSGi development using OBR - Peter Kriens

2,836

Published on

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.

Published in: Technology, Business
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,836
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
59
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • \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

    1. 1. OSGiBundle Repository
    2. 2. foo$
    3. 3. foo$ coffee-bash: /usr/local/bin/coffee: No such file or directory
    4. 4. 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
    5. 5. 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>
    6. 6. Dependencies
    7. 7. Huh? NIH????• maven• p2• ivy• ...
    8. 8. Coffee
    9. 9. CoffeeB C
    10. 10. CoffeeB C
    11. 11. CoffeeB C
    12. 12. Alternative Universe• Additional Namespace • Self inflicted pain!• Managed by humans • We’re bad in this!• Hides the real dependencies
    13. 13. Java packagepackage com.example; dependencyimport com.foo.*;import aQute.bnd.annotations.*@Componentpublic FooImpl implements Foo { @Reference void setBla(Bla bla) { … }}
    14. 14. ExtendBundle er
    15. 15. Coffee B CRequirement Namespace Capability
    16. 16. Coffee B CRequirement Namespace Capability
    17. 17. Coffee B CRequirement Namespace Capability
    18. 18. 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
    19. 19. 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)”,
    20. 20. osgi.wiring.*• Packages (osgi.wiring.package)• Require Bundle (osgi.wiring.bundle)• Fragments (osgi.wiring.host)
    21. 21. Repository Repo
    22. 22. 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/>
    23. 23. 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
    24. 24. 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
    25. 25. Q&A
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×