• Like

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Øredev 2010 - What Happened to OSGi?

  • 2,870 views
Uploaded on

OSGi brings modularity and µServices to Java, and with it a new set of issues for developers to solve. Are tools keeping up, or are you just trading known problems for the unknown? …

OSGi brings modularity and µServices to Java, and with it a new set of issues for developers to solve. Are tools keeping up, or are you just trading known problems for the unknown?

Is OSGi doomed to perpetual re-discovery, or will it break into the mainstream with the release of Enterprise-OSGi? Time for a hard look at the state of OSGi today, warts and all, and its potential future.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,870
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
79
Comments
0
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide























































































Transcript

  • 1. What Happened to OSGi? Stuart McCulloch
  • 2. Very Brief History of OSGi
  • 3. ry Ve Brief History of OSGi
  • 4. ry Ve Brief History of OSGi • 1999: OSGi Alliance founded / JSR 8
  • 5. ry Ve Brief History of OSGi • 1999: OSGi Alliance founded / JSR 8 • 2004: Eclipse migrates to OSGi
  • 6. ry Ve Brief History of OSGi • 1999: OSGi Alliance founded / JSR 8 • 2004: Eclipse migrates to OSGi • 2006: Spring supports OSGi
  • 7. ry Ve Brief History of OSGi • 1999: OSGi Alliance founded / JSR 8 • 2004: Eclipse migrates to OSGi • 2006: Spring supports OSGi • 2006: Enterprise Expert Group starts
  • 8. ry Ve Brief History of OSGi • 1999: OSGi Alliance founded / JSR 8 • 2004: Eclipse migrates to OSGi • 2006: Spring supports OSGi • 2006: Enterprise Expert Group starts • 2010: First Enterprise Specification
  • 9. ry Ve Brief History of OSGi • 1999: OSGi Alliance founded / JSR 8 • 2004: Eclipse migrates to OSGi • 2006: Spring supports OSGi • 2006: Enterprise Expert Group starts • 2010: First Enterprise Specification • 2011: ?
  • 10. Modularity is Hard!
  • 11. Modularity is Hard! • Designing for the future
  • 12. Modularity is Hard! • Designing for the future • Classic assumptions don’t apply
  • 13. Modularity is Hard! • Designing for the future • Classic assumptions don’t apply • Not just a matter of slice’n’dice
  • 14. Modularity is Hard! • Designing for the future • Classic assumptions don’t apply • Not just a matter of slice’n’dice • May need several attempts
  • 15. Modularity is Hard! • Designing for the future • Classic assumptions don’t apply • Not just a matter of slice’n’dice • May need several attempts • How do you test for modularity?
  • 16. Jigsaw Effect
  • 17. Jigsaw Effect • JSR 277: Java Module System
  • 18. Jigsaw Effect • JSR 277: Java Module System • JSR 294: Improved Modularity Support in the JavaTM Programming Language
  • 19. Jigsaw Effect • JSR 277: Java Module System • JSR 294: Improved Modularity Support in the JavaTM Programming Language • Jigsaw: Modularizing the JDK
  • 20. Jigsaw Effect • JSR 277: Java Module System • JSR 294: Improved Modularity Support in the JavaTM Programming Language • Jigsaw: Modularizing the JDK • May (or may not) be standardized
  • 21. Jigsaw Effect • JSR 277: Java Module System • JSR 294: Improved Modularity Support in the JavaTM Programming Language • Jigsaw: Modularizing the JDK • May (or may not) be standardized • Should you wait for Jigsaw?
  • 22. Enterprise OSGi
  • 23. Enterprise OSGi • First specification released March 2010
  • 24. Enterprise OSGi • First specification released March 2010 • Forms part of OSGi R4.2 specification
  • 25. Enterprise OSGi • First specification released March 2010 • Forms part of OSGi R4.2 specification • Defines optional packages and services
  • 26. Enterprise OSGi • First specification released March 2010 • Forms part of OSGi R4.2 specification • Defines optional packages and services • Web Applications (WABs)
  • 27. Enterprise OSGi • First specification released March 2010 • Forms part of OSGi R4.2 specification • Defines optional packages and services • Web Applications (WABs) • Remote Services, SCA Definitions
  • 28. Enterprise OSGi • First specification released March 2010 • Forms part of OSGi R4.2 specification • Defines optional packages and services • Web Applications (WABs) • Remote Services, SCA Definitions • JDBC, JNDI, JTA, JPA, JMX
  • 29. Eclipse Gemini
  • 30. Eclipse Gemini • Suite of enterprise technology modules
  • 31. Eclipse Gemini • Suite of enterprise technology modules • Reference implementations for many of the Enterprise OSGi specifications
  • 32. Eclipse Gemini • Suite of enterprise technology modules • Reference implementations for many of the Enterprise OSGi specifications • Blueprint, Web, JPA, JDBC, JMX, JNDI
  • 33. Apache Aries
  • 34. Apache Aries • Implementations and extensions of OSGi Alliance Enterprise Expert Group specifications
  • 35. Apache Aries • Implementations and extensions of OSGi Alliance Enterprise Expert Group specifications • Blueprint, JNDI, JPA, JTA, SPI
  • 36. Apache Aries • Implementations and extensions of OSGi Alliance Enterprise Expert Group specifications • Blueprint, JNDI, JPA, JTA, SPI • Assembly format for multi-bundle applications (EBAs)
  • 37. Eclipse Virgo
  • 38. Eclipse Virgo • Originally Spring dmServer
  • 39. Eclipse Virgo • Originally Spring dmServer • {OSGi} web container
  • 40. Eclipse Virgo • Originally Spring dmServer • {OSGi} web container • Applications: Plans - isolated, atomic
  • 41. Eclipse Virgo • Originally Spring dmServer • {OSGi} web container • Applications: Plans - isolated, atomic • Provisioning: PARs - plan archives
  • 42. Eclipse Virgo • Originally Spring dmServer • {OSGi} web container • Applications: Plans - isolated, atomic • Provisioning: PARs - plan archives • Legacy library support
  • 43. Eclipse Virgo • Originally Spring dmServer • {OSGi} web container • Applications: Plans - isolated, atomic • Provisioning: PARs - plan archives • Legacy library support • Enhanced diagnostics
  • 44. What does this tell us?
  • 45. What does this tell us? • It’s duelling frameworks!
  • 46. What does this tell us? • It’s duelling frameworks! • Not everything at Eclipse is named after the “Letter-Number” format
  • 47. What does this tell us? • It’s duelling frameworks! • Not everything at Eclipse is named after the “Letter-Number” format • There will only ever be 12 Enterprise OSGi projects
  • 48. What does this tell us? • It’s duelling frameworks! • Not everything at Eclipse is named after the “Letter-Number” format • There will only ever be 12 Enterprise OSGi projects • OSGi is great for middleware
  • 49. Mulesoft http://blogs.mulesoft.org/osgi-no-thanks
  • 50. Mulesoft http://blogs.mulesoft.org/osgi-no-thanks • “Great spec for middleware vendors”
  • 51. Mulesoft http://blogs.mulesoft.org/osgi-no-thanks • “Great spec for middleware vendors” • “... terrible spec for the end user ...”
  • 52. Mulesoft http://blogs.mulesoft.org/osgi-no-thanks • “Great spec for middleware vendors” • “... terrible spec for the end user ...” • “we definitely need modularization”
  • 53. Mulesoft http://blogs.mulesoft.org/osgi-no-thanks • “Great spec for middleware vendors” • “... terrible spec for the end user ...” • “we definitely need modularization” • “How do we hide the complexities of OSGi from our users?”
  • 54. WSO2 http://pzf.fremantle.org/2010/11/ using-osgi-as-core-of-middleware.html
  • 55. WSO2 http://pzf.fremantle.org/2010/11/ using-osgi-as-core-of-middleware.html • “We struggled with OSGi to start with, but in the end we have a much stronger solution than if we had built our own”
  • 56. WSO2 http://pzf.fremantle.org/2010/11/ using-osgi-as-core-of-middleware.html • “We struggled with OSGi to start with, but in the end we have a much stronger solution than if we had built our own” • “Drop a JAR in [WSO2] and we take care of the OSGi bundling for you”
  • 57. WSO2 http://pzf.fremantle.org/2010/11/ using-osgi-as-core-of-middleware.html • “We struggled with OSGi to start with, but in the end we have a much stronger solution than if we had built our own” • “Drop a JAR in [WSO2] and we take care of the OSGi bundling for you” • “eBay are currently running around 400m transactions per *day* through an OSGi based runtime” [via twitter]
  • 58. OSGi Tools
  • 59. OSGi Tools • bnd/bndtools
  • 60. OSGi Tools • bnd/bndtools • maven-bundle-plugin
  • 61. OSGi Tools • bnd/bndtools • maven-bundle-plugin • Pax-Exam (testing)
  • 62. OSGi Tools • bnd/bndtools • maven-bundle-plugin • Pax-Exam (testing) • Spring Bundlor
  • 63. OSGi Tools • bnd/bndtools • maven-bundle-plugin • Pax-Exam (testing) • Spring Bundlor • Maven-Tycho
  • 64. OSGi Tools • bnd/bndtools • maven-bundle-plugin • Pax-Exam (testing) • Spring Bundlor • Maven-Tycho • ... Sigil, PDE, Netisgo, Osmorc, ...
  • 65. OSGi Books
  • 66. OSGi Books • OSGi Alliance Specs
  • 67. OSGi Books • OSGi Alliance Specs • Die OSGi Service Platform
  • 68. OSGi Books • OSGi Alliance Specs • Die OSGi Service Platform • Modular Java
  • 69. OSGi Books • OSGi Alliance Specs • Die OSGi Service Platform • Modular Java • OSGi and Equinox
  • 70. OSGi Books • OSGi Alliance Specs • Die OSGi Service Platform • Modular Java • OSGi and Equinox • OSGi in Action
  • 71. OSGi Books • OSGi Alliance Specs • Die OSGi Service Platform • Modular Java • OSGi and Equinox • OSGi in Action • OSGi in Practice
  • 72. Let’s Recap
  • 73. Let’s Recap • OSGi is a great middleware solution!
  • 74. Let’s Recap • OSGi is a great middleware solution! • ... but it is definitely not a silver bullet
  • 75. Let’s Recap • OSGi is a great middleware solution! • ... but it is definitely not a silver bullet • You will have issues with legacy code
  • 76. Let’s Recap • OSGi is a great middleware solution! • ... but it is definitely not a silver bullet • You will have issues with legacy code • Enterprise OSGi is just getting started
  • 77. Let’s Recap • OSGi is a great middleware solution! • ... but it is definitely not a silver bullet • You will have issues with legacy code • Enterprise OSGi is just getting started • Tooling continues to evolve & improve
  • 78. Let’s Recap • OSGi is a great middleware solution! • ... but it is definitely not a silver bullet • You will have issues with legacy code • Enterprise OSGi is just getting started • Tooling continues to evolve & improve • Hedge your bets: write modular code
  • 79. Writing Modular Code
  • 80. Writing Modular Code • Keep an eye on your package layout
  • 81. Writing Modular Code • Keep an eye on your package layout • Avoid splitting packages across JARs
  • 82. Writing Modular Code • Keep an eye on your package layout • Avoid splitting packages across JARs • Limit use of Class.forName(“Foo”);
  • 83. Writing Modular Code • Keep an eye on your package layout • Avoid splitting packages across JARs • Limit use of Class.forName(“Foo”); • Consider programming to interfaces
  • 84. Writing Modular Code • Keep an eye on your package layout • Avoid splitting packages across JARs • Limit use of Class.forName(“Foo”); • Consider programming to interfaces • Avoid direct use of the OSGi API
  • 85. Writing Modular Code • Keep an eye on your package layout • Avoid splitting packages across JARs • Limit use of Class.forName(“Foo”); • Consider programming to interfaces • Avoid direct use of the OSGi API • Use Dependency Injection!
  • 86. OSGi Dependency Injection
  • 87. OSGi Dependency Injection • Blueprint (was Spring-DM)
  • 88. OSGi Dependency Injection • Blueprint (was Spring-DM) • Declarative Services
  • 89. OSGi Dependency Injection • Blueprint (was Spring-DM) • Declarative Services • Apache Felix iPOJO
  • 90. OSGi Dependency Injection • Blueprint (was Spring-DM) • Declarative Services • Apache Felix iPOJO • Peaberry (moving to sisu-inject)
  • 91. OSGi Dependency Injection • Blueprint (was Spring-DM) • Declarative Services • Apache Felix iPOJO • Peaberry (moving to sisu-inject) • Eclipse Riena / E4
  • 92. OSGi