What on Earth is OSGI?
OSGI framework is a service platform for system of modules or bundles
and provides full interoperability of installed bundles. Bundles are
Java jar files which must implement methods for activation and deactivation
of bundle. Bundles can be installed, started, stopped, updated and uninstalled.
Bundles provide functions (services) to
other bundles. OSGI enables modular architecture of applications, where individual
components (bundles) can be deployed independently of each other.
Many OSGI frameworks exist. Most remarkable are Equinox, Apache Felix and Knopflerfish. Personally I prefer Knopflerfish, because it is really easy to set up and it comes with nice graphical interface for managing bundles.
For example, Eclipse IDE is built on Equinox OSGI platform.
Running Knopflerfish OSGI
Download and unzip Knopflerfish OSGI framework to custom directory.
To start Knopflerfish OSGI double click the framework.jar inside the ~/knopflerfish_osgi_version/osgi directory. Alternatively start it from console:
$ java -jar framework.jar
Examples are the easiest way to learn OSGI.
HelloWorld example is introductory example to writing OSGI applications and provides information how to build and deploy OSGI bundles.
CalculatorService is example how to implement service in OSGI and provide its functionality to other bundles.
ServiceListener example shows how to use listener to receive service events from the framework when new service that matches given filter is registered.
ServiceTracker example is similar to ServiceListener example. It shows how to implement ServiceTrackerCustomizer interface which is called when specific service becomes available or unavailable.