OSGi

Applications or components, come in the form of bundles for deployment, can be remotely installed, started, stopped, updated, and uninstalled without requiring a reboot.

The OSGi specifications have evolved beyond the original focus of service gateways, and are now used in applications ranging from mobile phones to the open-source Eclipse IDE.

In October 2020, the OSGi Alliance announced the transition of the standardization effort to the Eclipse Foundation, subsequent to which it would shut down.

[4] All artifacts have been transferred to the Eclipse Foundation, where an “OSGi Working Group" continues to maintain and evolve the specification.

Each bundle is a tightly coupled, dynamically loadable collection of classes, jars, and configuration files that explicitly declare their external dependencies (if any).

The framework is conceptually divided into the following areas: A bundle is a group of Java classes and additional resources equipped with a detailed manifest MANIFEST.MF file on all its contents, as well as additional services needed to give the included group of Java classes more sophisticated behaviors, to the extent of deeming the entire aggregate a component.

Below is an example of a typical MANIFEST.MF file with OSGi Headers: The meaning of the contents in the example is as follows:[7] A Life Cycle layer adds bundles that can be dynamically installed, started, stopped, updated and uninstalled.

The technical work conducted within Expert Groups include developing specifications, reference implementations, and compliance tests.

OSGi Service Gateway Architecture
Classification: OSGi
OSGi Bundle Life-Cycle