One of the great unsolved Java problems is a lack of modularity. OSGi is a technology designed to solve the problem. Wikipedia says:
The OSGi framework is a module system and service platform for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments. Applications or components (coming in the form of bundles for deployment) can be remotely installed, started, stopped, updated and uninstalled without requiring a reboot; management of Java packages/classes is specified in great detail. Life cycle management is done via APIs which allow for remote downloading of management policies. The service registry allows bundles to detect the addition of new services, or the removal of services, and adapt accordingly.
Cote said OSGi could underpin a Stackless Stack, but I wonder whether we should have called it a VMless VM. OSGi allows for component-based development and production in Javaland. It has been enthusiastically adopted by Java application server and ESB vendors.
But while OSGi solves one problem – a lack of modularity – it creates another – the need to manage dependencies. In order to see OSGi widely adopted by developers and IT organisations the industry needs to solve the dependency management problem. If everything is componentised, runtime management becomes exponentially more complicated.
Dependency management, or lack of it, is a barrier to adoption for OSGi.
My client Paremus has an elegant solution to the problem called Nimble, and I recently shot some video on the subject – talking to Paremus founder and CEO Richard Nicholson and the developer of the tool Robert Dunne.
Lets kick off with a high level overview of Paremus, OSGi and what Nicholson calls The Service Fabric
OK that’s the CEO stuff out of the way. What about the developer’s view, and a demo? Tomcat? Jetty? That’s just configuration decision…
Very cool… As Dunne says “the dependency stuff becomes an advantage”.
Nimble isn’t the only game in town – its worth looking at the Apache Felix Bundle Plugin for Maven. For disclosure sake I should say the Apache Software Foundation is also a client. Another fix, another client – SpringSource implements its own Spring Dynamic Modules Framework. SpringSource Tool Suite version 2.0 packages some tooling for building modules and managing dependencies graphically.
For further context its been a big news week for OSGi – IBM’s WebSphere Application Server v7 is designed to make it easier to use OSGi, in the shape of the snappily named Feature Pack for OSGi Applications and Java Persistence API (JPA) 2.0 Open Beta. Arguably though Lotus has been a more enthusiastic adopter of OSGi.
Paremus Nimble is elegant, and although its free (with the caveat that people that don’t want to pay a nominal fee to use the software will need to regularly re-register to use it), its not open source.
disclosure: seems like everyone is a RedMonk client.