Bndtools 101
Getting Started with OSGi Development
– Many Java Developers
“Why Use OSGi?”
OSGi is From the Future
• Microservices since 1998
• Continuous delivery since
1999
• Software component
repositories since 2003
• Runtime resolve/assemble
since 2005
image credit: Sam Howzit (flickr.com/photos/aloha75/)
Why Aren’t We All Using It?
• Steep Learning Curve…?
• Complexity…?
• Weak Tools…?
Famous Dude
• “Things should be as simple
as possible, but no simpler”
Actually He Said…
• “It can scarcely be denied
that the supreme goal of all
theory is to make the
irreducible basic elements as
simple and as few as possible
without having to surrender
the adequate representation
of a single datum of
experience.”
Inherent vs Accidental
Complexity
OSGi Really Is “As
Simple as Possible”
Holy Sh*t We
Needed Better
Tools!
image credit: Uwe Schwarzbach (flickr.com/photos/uwebkk/)
Bndtools
“One tool to bnd them all”
0. Initial Setup
• Create Workspace Config
• Setup Repository
image credit: Germán Poo-Caamaño (flickr.com/photos/gpoo/)
1. Define API
• Blog
• BlogListener
• Baseline
• Release
image credit: Jessica Spengler (flickr.com/photos/wordridden/)
2. Create Provider
• Add blog.api to build path.
• Add MongoDB client from
JPM.
3. Run It!
• Add blog.provider to Run
Requirements
• Resolve and Run
image credit: Dru Bloomfield (flickr.com/photos/athomeinscottsdale/)
4. Create Consumer
• Add blog.api and servlet 2.5
API to build path
• Publish Servlet service
• Add service property: alias=/
blog
• Add HTTP whiteboard & event
admin to Run Requirements
image credit: epSos .de (flickr.com/photos/epsos/)
5. Evolve the API
• Add deleteEntry() method to
Blog
• Fix the baselining errors
• Release
6. Package and Ship It
• Export as standalone JAR
• Run from bash
image credit: Glyn Lowe Photoworks. (flickr.com/photos/glynlowe/)
What Did We Make?
Blog
Provider
Blog
Consumer
(REST)
Jetty
HTTP
Whiteboard
Blog
Servlet
HttpService
What Did We Make?
• A modular, dynamically assembled, type-safe,
versioned microservice.
• … in 45 minutes (give or take)
Over to You
• Bndtools 2.4 M1 Just
Released: bndtools.org

• Demo Sources: github.com/
bndtools/101
NEW
Thanks!
The Bndtools Team,
Working Hard(ly)

Bndtools 101 - N Bartlett

  • 1.
    Bndtools 101 Getting Startedwith OSGi Development
  • 2.
    – Many JavaDevelopers “Why Use OSGi?”
  • 3.
    OSGi is Fromthe Future • Microservices since 1998 • Continuous delivery since 1999 • Software component repositories since 2003 • Runtime resolve/assemble since 2005 image credit: Sam Howzit (flickr.com/photos/aloha75/)
  • 4.
    Why Aren’t WeAll Using It? • Steep Learning Curve…? • Complexity…? • Weak Tools…?
  • 5.
    Famous Dude • “Thingsshould be as simple as possible, but no simpler”
  • 6.
    Actually He Said… •“It can scarcely be denied that the supreme goal of all theory is to make the irreducible basic elements as simple and as few as possible without having to surrender the adequate representation of a single datum of experience.”
  • 7.
  • 8.
    OSGi Really Is“As Simple as Possible” Holy Sh*t We Needed Better Tools! image credit: Uwe Schwarzbach (flickr.com/photos/uwebkk/)
  • 9.
    Bndtools “One tool tobnd them all”
  • 10.
    0. Initial Setup •Create Workspace Config • Setup Repository image credit: Germán Poo-Caamaño (flickr.com/photos/gpoo/)
  • 11.
    1. Define API •Blog • BlogListener • Baseline • Release image credit: Jessica Spengler (flickr.com/photos/wordridden/)
  • 12.
    2. Create Provider •Add blog.api to build path. • Add MongoDB client from JPM.
  • 13.
    3. Run It! •Add blog.provider to Run Requirements • Resolve and Run image credit: Dru Bloomfield (flickr.com/photos/athomeinscottsdale/)
  • 14.
    4. Create Consumer •Add blog.api and servlet 2.5 API to build path • Publish Servlet service • Add service property: alias=/ blog • Add HTTP whiteboard & event admin to Run Requirements image credit: epSos .de (flickr.com/photos/epsos/)
  • 15.
    5. Evolve theAPI • Add deleteEntry() method to Blog • Fix the baselining errors • Release
  • 16.
    6. Package andShip It • Export as standalone JAR • Run from bash image credit: Glyn Lowe Photoworks. (flickr.com/photos/glynlowe/)
  • 17.
    What Did WeMake? Blog Provider Blog Consumer (REST) Jetty HTTP Whiteboard Blog Servlet HttpService
  • 18.
    What Did WeMake? • A modular, dynamically assembled, type-safe, versioned microservice. • … in 45 minutes (give or take)
  • 19.
    Over to You •Bndtools 2.4 M1 Just Released: bndtools.org • Demo Sources: github.com/ bndtools/101 NEW
  • 20.