The Open Services Gateway Initiative (OSGi) defines an architecture for developing and deploying modular applications and
offers the following advantages:
You can install, uninstall, start, and stop different modules of your application dynamically without restarting the container.
Your application can have more than one version of a particular module running at the same time.
OSGi provides very good infrastructure for developing service-oriented applications, as well as embedded, mobile, and rich
The basic idea is that once you add an OSGi Service Platform to a networked device (embedded as well as servers), you should
be able to manage the lifecycle of software components in that device from anywhere in the network.
In 2003, the Eclipse development team began looking for ways to make Eclipse a more dynamic rich client platform and increase
the toolset’s modularity. Eventually, the team settled on using the OSGi framework as a runtime component model. Eclipse 3.0,
released in June of 2004, was the first version of Eclipse based on OSGi.
The OSGi Service
Platform offers a dynamic application execution environment in which
modules (bundles) can be installed, updated, or removed on the fly. It
also has excellent support for modularity and versioning.
Spring Dynamic Modules makes it easy to write Spring applications
that can be deployed in an OSGi execution environment, and that can take
advantage of the services offered by the OSGi framework.