Swordfish: Eclipse's OSGi-based SOA framework
It's a well known fact among those working on SOA projects there is no such thing as "SOA in a box" or a silver bullet for achieving an SOA, so much as it is a combination of software infrastructure, design philosophy, tools and, of course, buy in from the top brass at any organization. It's, in essence, a series of pieces, each of which gets a project closer to its full statement of intent and purpose for building a SOA. Up next, we will explore one of these pieces which aims at gaining you a few percentage points on your overall SOA gauge, and stands to influence a few more pieces that may already be part of your SOA strategy: the Eclipse Swordfish project.
Let's start by defining what is OSGi and what it brings to the table. OSGi is a dynamic module system for Java, something which brings added versatility to any initiative pegged to the Java platform. This versatility comes in a way that was missing in many of the core parts related to Java, whether it be in Java application servers, the latest Java Business Integration (JBI) service bus model, or, inclusively, the Java Virtual Machine itself.
The term "module" in OSGi refers to an actual packaging approach, which in the particular case of SOA would be the equivalent to packaged services. Even though there are already numerous ways to go about packaging Java applications, the benefit of OSGi is that it brings a dynamic nature, with all the connotations that go hand-in-hand with the word -- such as adaptability and flexibility -- which are, of course, highly desirable traits in a service-oriented architecture.
To further illustrate OSGi usage, think of your services as bundles capable of discovering themselves and fulfilling their own dependencies amongst other bundles in a system, all at run-time, without much of the overhead tasks that go into deploying or updating a system -- like starting, stopping or reloading -- all occurring dynamically on account of OSGi's packaging model.
To be certain OSGi's scope is extremely ample, to the extent it grew up from the embedded Java market, has made inroads into the Java IDE market, and is already stepping into the Java application market itself, but in principle the same concepts apply. So, with that said and the previous OSGi overview, let's explore the particularities of OSGi applied to Swordfish.
Swordfish is a framework developed under the guidance of the Eclipse Foundation, the same organization which also sponsors an IDE by the same name, as well as other numerous software projects such as the SOA Tools Platform initiative. Like many frameworks, Swordfish is not an end to itself, but rather an aid in bringing together numerous technologies that are on many SOA checklists, namely: JBI and Service Component Architecture (SCA).
In the case of JBI, this container standard has effectively given life to the concept of the ESB (Enterprise Service Bus) in a pure Java platform sense. SCA, on the other hand, has defined a platform agnostic approach which allows users to build services in a consistent fashion. For more background on JBI see this column and for more on SCA see this column.
However, as much importance and value many SOA initiatives have placed on the these last technologies, let's recall that SOA progress is better measured by using a gauge and not so much a particular end point. So to the extent that adding a dynamically aware feature set -- like the one offered by OSGi -- to an application base already using JBI and SCA can prove beneficial, Swordfish is the clear contender by which to leverage all three technologies.
In terms of maturity, Swordfish is still at a very early stage and is slated to reach its 1.0 version until late 2008. It should be mentioned the project itself is a spin-off from SOA initiatives undertaken by Deutsche Post, something that, given the sheer size of this company, should serve as a validated proof of concept. Add to this, Swordfish will now grow under the umbrella of Eclipse, which already has a vested interest in advancing both the SOA Tools Platform and OSGi technology in Equinox, and you have a validated and integrated framework that will allow you to advance your SOA projects in three major technology fronts: JBI, SCA and OSGi.