Filed Under Architecture & Design, Development, Java, OSGi |
OSGi has emerged as the de facto standard for modularity on the Java platform. The Eclipse RCP plug-in architecture is built on Equinox. Major application server vendors, including IBM, Oracle, and JBoss are leveraging OSGi to increase the modularity of their platforms. The ability to dynamically provision server-side modules reduces footprint and decreases start-up time. Without question, OSGi will play a major role in the next generation application platform.
In my last post where I embedded OSGi (Equinox) in Tomcat, I promised to provide a synopsis of my experiences thus far with OSGi. I’ve come to a disturbing conclusion - OSGi is not ready for the enterprise. With so much industry momentum, OSGi is not ready for enterprise web application development! The reason is because enterprise developers don’t have the tools to build OSGi based server-side applications, and vendors aren’t exposing the capabilities of OSGi to enterprise developers. Neil says that I should be able to name 10 things I don’t like about OSGi. Well here’s six things I don’t like today when using OSGi to build enterprise applications. But first, some background.
Understanding the root of this problem demands we examine the two ways to build web applications using OSGi. The first is Host OSGi. The second is Embedded OSGi.
The differences may seem subtle, but have significant ramifications on how we develop and manage enterprise applications.
Why is this important? Foremost, it allows us to build more modular applications. The bane of many enterprise development efforts is the lack of modularity, the excessive (and often unknown) dependencies, the ripple effect of change, and the design rot that ultimately brings the system to it’s knees. Beyond this, a platform built atop OSGi can remove the artificial application boundaries that exist today. By separating the unit of deployment from application and process boundaries, we open up amazing flexibility in how enterprise applications can adapt, shrink, grow, and morph over time.
Host OSGi is the preferred scenario, but today, SpringSource dm Server and Paremus Infiniflow are the only products I’m aware of that provides the capability. While other major application platform vendors are beginning to build OSGi into their platform, they are not exposing the capabillities to enterprise developers. Until application platform vendors expose the capabilities of OSGi to the enteprise, our only option is Embedded OSGi, which can be tricky and difficult. Unfortunately, the enterprise is left building applications on many of the traditional application servers - WAS, WebLogic, and JBoss - and this poses challenges.
Attempting to develop enterprise web applications today using OSGi presents significant challenges. In fact, these challenges are significant enough that they are severely impeding OSGi adoption within the enterprise. While the OSGi framework implementations themselves are capable, the surrounding ecosystem is not yet mature enough.
OSGi was once heralded as the most important technology of the decade, and the majority of enterprise software developers can’t even use it yet. OSGi proper may be ready for primetime, but we have a long ways to go before the enterprise is able to develop web applications leveraging OSGi. The problem isn’t the OSGi specification, nor the popular Equinox and Felix implementations. Each of these are waiting and ready. Unfortunately, there is no easy way to build modular applications using OSGi and deploy them to the current generation application servers. There are no frameworks that help me do this. There are no tools that make this easy. There is no migration path that helps developers move away from building monolithic Java EE applications and move toward building the modular applications of tomorrow.
Ultimately, we need a migration path. As OSGi is built into the platform and exposed to enterprise developers, we need tools and patterns that allow us to build and manage more modular applications. These tools must allow us to take advantage of OSGi in building more modular applications today, and help us prepare for the platforms of tomorrow so that we are ready when they arrive.
If we are able to architect modular applications today, built using OSGi, then we are prepared for what tomorrow brings as we migrate to application platforms that Host OSGi. Just because the application platform doesn’t currently expose OSGi to enterprise developers doesn’t mean we shouldn’t be striving to create more modular applications. There is benefit to this of itself. And because OSGi bundles are backward compatible and capable of running in today’s application servers, what should prevent us from designing more modular software. Shouldn’t we be doing this today? Until there are tools available that help us do this, it’s not likely to happen. And that’s going to make leveraging the capabilities of the next generation platform more difficult, even after it’s arrived.
OSGi is an important and valuable technology that can help enterprise developers create more modular applications. The OSGi Tool Summit is being held Friday (03/27/09). Hopefully, this will result in another small step toward being able to leverage OSGi in the enterprise.
8 Responses to “OSGi Discontent - No Migration Path!”
Leave a Reply
You arguments seem very narrowly focused around whether a specific app framework, such as Spring, has OSGi support - and from the deficits in this, you draw the conclusion that OSGi is not ready for enterprise app development.
I wouldn’t argue with the former - or that there is plenty to work improving the latter. But that does not make a valid conclusion that enterprise apps can’t be reliably and quickly built on OSGi. Not having all the tools available is not the same as “not being ready”, at least in my experience.
We are one of I suspect hundreds of commercial product developers who build enterprise applications on OSGi. In our case Felix, and formerly it’s predecessor Oscar. We’ve been doing so successfully for nearly 10 years now too - so claiming it is not ready is bogus. Sure, we sometimes have to roll our own code or build are own tools, but we’re developers. That’s what we do. We don’t buy into the current trend that seems to believe if you can’t just assemble some pre-built blocks, then you can’t develop anything.
Rob,
thanx for your feedback. I didn’t intend to come across as narrowly focused. In fact, I thought I was pretty broadly focused and made it clear I was talking about OSGi for enterprise web development. That’s a pretty big market.
I was also pretty clear that I felt OSGi proper (Equinox & Felix) is ready for primetime, but the surrounding ecosystem makes it incredibly difficult to build enterprise applications because of lack of development tooling, application management tooling, and product support (WAS, JBoss, WebLogic, etc.).
Most organizations have a legacy of Java web apps deployed on WAS, JBoss, WebLogic, Tomcat, etc. While many vendors are leveraging OSGi in their products, they are not exposing the capabilities to the enterprise developer.
The enterprise needs the tools that makes building applications with OSGi easier. They don’t have time to build infrastructure code. They don’t have the time to embed Jasper so they can deploy JSP. That’s why they use products and frameworks. It’s not because they don’t know how to develop software, it’s because they expect the platform to help them out.
Until these tools exist or vendors decide to expose the capabilities of OSGi to the enterprise developer, it’s unrealistic for the majority of enterprise applications to leverage OSGi. I’d prefer to see this change sooner rather than later.
[...] For the first part of the story, see my blog post titled OSGi Discontent - No Migration Path. [...]
I’m happy to find a kindrid soul on this. I agree 110% with everything you’re saying (and I never agree 110% with anybody on anything). ;^)
“… (Equinox & Felix) is ready for primetime, but the surrounding ecosystem makes it incredibly difficult to build enterprise applications because of lack of development tooling, application management tooling, and product support (WAS, JBoss, WebLogic, etc.).”
Lack of sufficient tooling to make OSGi more transparent to developers is a big issue, I agree. This should create a market opportunity tooling vendors, but no one seems to be rushing in to fill the void in any meaningful (disruptive) way, AFAIK.
A pity.
[...] also provide ways to help manage dependencies. And of course, looming on the horizon is OSGi, which may not be ready for widespread enterprise use today, but hopefully will be [...]
[...] Tooling, a migration path, and educational material surrounding how to use OSGi most effectively continues to be a significant issue for developers, even though roughly 15% more of this year’s respondents claimed familiarity [...]
[...] sexy enough? I suppose that’s just a bit more fodder for the argument that there is no migration path for modularity, and that we need better tools, tutorials, and educational materials to help us design modular [...]
[...] there has been a nagging problem…an elephant in the room you might say…that’s hindered widespread adoption. Without gluing together a platform, assembling it yourself, or adopting an entirely new platform, [...]