OSGi DevCon 2009 Review


Published on

A review of OSGi DevCon 2009, delivered at the first meeting of the UK OSGi Users' Forum.

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

OSGi DevCon 2009 Review

  1. 1. OSGi DevCon 2009 Review Neil Bartlett - UK OSGi Users’ Forum
  2. 2. Themes OSGi Ubiquity OSGi for Eclipse Developers Enterprise OSGi “Symmetric” service Distributed OSGi oriented programming Tooling JSR 294, Jigsaw, IBM/ Sun Rumours API Modernisation
  3. 3. Ubiquity
  4. 4. Ubiquity My third EclipseCon/OSGi DevCon 2007: Some people know what OSGi is. 2008: Most people know what OSGi is, some have developed for it. 2009: Many people know and have developed for OSGi.
  5. 5. Services and Apps OSGi for modularity is mostly a done deal. All* app-servers & ESBs using it. Next wave: Services/Dynamics, and OSGi for Apps.
  6. 6. Enterprise
  7. 7. Goals Adapt enterprise tech without creating “editions”. Preserve compatibility for users of enterprise APIs.
  8. 8. Timeline Updated (R4.2) core & compendium specs in June 09. Most changes are already implemented (provisionally) in Equinox. “Enterprise Profile” in December 09.
  9. 9. Parts Blueprint Distributed OSGi (RFC 119) Java EE Modularity
  10. 10. Blueprint Essentially Spring-DM... But name “Spring” is a trademark. “Enterprise Programming Model”.
  11. 11. Old Spring Customer Manager Customer DAO DataSource Log
  12. 12. Spring-DM/Blueprint
  13. 13. Services as the Glue
  14. 14. Interoperable!
  15. 15. Java EE Modularity For OSGi devs: add QoS (e.g. transactions, declarative security) to OSGi programming model. For EE devs: enable OSGi modularity without breaking existing APIs. Deployment of standard EE artefacts (WARs and EARs).
  16. 16. Distribution
  17. 17. What Is It? Normal OSGi is intra-JVM only. D-OSGi makes the services programming model distributed. Transparently publish services outside the JVM. Transparently bind to services from other JVMs (or other non-Java runtimes).
  18. 18. Timeline Spec will be included in R4.2 in June. Reference implementation: Apache CXF available now. Eclipse Comms Framework (ECF) also implements.
  19. 19. Distribution Just add a property to the published service: osgi.remote.interfaces=* Extender bundle will automatically make the service callable remotely. Protocol depends on extender impl. E.g. SOAP, R-OSGi, XMPP, Skype...
  20. 20. Distribution Find a remote service somehow*. Extender bundle will create a local proxy service for it.
  21. 21. Discovery Publishing and look-up of services. Many ways to do it, many challenges. Examples: SLP (RFC 2608), Bonjour/ Zeroconf/DNS-SD.
  22. 22. Controversy?
  23. 23. Controversy?
  24. 24. Key Points... D-OSGi allows transparent treatment of remote services But it also allows clients to filter remote services and know when a service a remote proxy. Is this enough...?
  25. 25. Key Points... No new protocols! D-OSGi wraps existing protocols. It is optional. Fears of bloating the core spec seem misplaced.
  26. 26. Tools
  27. 27. Tools Lots of tooling discussions. One evening BoF, a Summit, many hallway conversations. More details from David.
  28. 28. API Modernisation
  29. 29. OSGi APIs “Feel” Old!
  30. 30. Ideas Generics Replace arrays with collections Don’t return null arrays Replace int masks with enums Replace Dictionary with Map Expanded filter ops Services returning JSR 294 support multiple instances
  31. 31. More Radical Ideas Should exports have ranges rather than imports? Make all events (ServiceEvent, BundleEvent etc) asynchronous.
  32. 32. OSGi for Eclipse Devs
  33. 33. OSGi for Eclipse Devs Most Eclipse developers now know they are using OSGi! Some even experimenting with Services (instead of Extensions).
  34. 34. Declarative Services Eclipse SDK Galileo includes SCR. Riena aids integration of Services and Extensions. Component models tutorial (DS, Spring-DM, iPOJO) was packed.
  35. 35. “Symmetric” Services
  36. 36. What Is it? Giving some power back to service producers. Producers have no idea if anybody even needs the service they offer.
  37. 37. Why? “On-demand” services. Filtering on behalf of a consumer. Service proxies – prevent the underlying service from being seen. Needed for D-OSGi but will be part of core spec.
  38. 38. How It Works ListenerHook – discover who is listening for which services. EventHook – filter service events before they reach listeners. FindHook – filter results of getServiceReferences() calls.
  39. 39. How It Works Hooks are themselves published as services. Powerful but NOT for the faint-hearted. Wait for frameworks to make this easier?
  40. 40. Rumours...
  41. 41. JSR 277 Is Dead
  42. 42. Jigsaw Is Undead
  43. 43. Jigsaw
  44. 44. Jigsaw Alternative module system to OSGi. NOT a standard, just a Sun project. EVIL. Cannot be killed by silver bullets, but a Big Blue bullet might work...
  45. 45. JSR 294 Not necessarily evil... Java language support for modules. Designed for Jigsaw, but may help OSGi also.