It is interesting to see the number of new descriptions and definitions that come up to describe a new technology framework. For the last couple of months I have been embarking on a journey on OSGi and its impacts and implications for the company I work for. I got into a conversation at work between the differences between each of the following OSGi implementations, components and runtimes. After spending considerable time getting it clear in my head I decided to write a blog entry on it (mainly for myself).
What is OSGi?
OSGi in and of itself is a specification using the java language, it outlines a framework to which software and equipment vendors can develop and manage services in a coordinated fashion. The OSGi specification targets a range of devices, equipment & software from phones, automobiles and service gateways. Implementers of the specification are able to build applications or devices which can provide services in a dynamic way with the ability to stop, start, update and add new services without bringing any downtime or interruption to the application or device.
Implementation of the OSGi Specification
Felix and Equinox are 2 OSGi runtimes, Apache (Felix) and Eclipse (Equinox) have taken the specification defining the interfaces and api’s of the OSGi specification and have provided an implementation. Given both a valid implementations of the OSGi specification they are interchangeable within an OSGi container.
OSGi Containers
Apache Karaf is a container for an OSGi runtime it provides a richness to the OSGi platform by offering a console, logging, hot deployment, provisioning, dynamic configuration and security.
Technology Layer
Sitting above the OSGi container is technology layer provisioning for a number of component technologies which can be deployed as part of a bundle. The following outlines the list of component technologies supported by the technology layer:
- BPEL
- JBI
- JMS
- JAX-WS
- JAX-RS
- Camel
- Spring
Ok but what is FUSE?
Fuse is a company which offers support and consultancy around 4 key Apache Open Source projects (been Camel, ESB, Active MQ & CXF) FUSE ESB (or ServiceMix) is the current ESB implementation which made up of the OSGi Implementation, container and technology layer outlined above and illustrated by the diagram below:
