OSGi Concepts

From CDOT Wiki
Jump to: navigation, search

The OSGi Alliance - Open Services Gateway initiative - is an open standards organization founded in March 1999 that originally specified and continues to maintain the OSGi standard. OSGi technology seems to be remarkably difficult to those unfamiliar with it.

Definitions:

1. The OSGi technology is a set of specifications that define a dynamic component system for Java.[1]
A software component is a unit of composition that can be developed independently with contractually specified interfaces and explicit context dependencies.[2]

OSGi enables the development of applications from components that could be:

  • reusable
  • dynamically composed
  • hide their implementation
  • communicate their dependencies and services
2. Bundle is the name for a component in the OSGi Architecture.

(generic bundle definition - a group of things fastened together for convenient handling[3] )


OSGi-Layering.png

OSGi Framework The following list contains a short definition of the terms:

  • Bundles - Bundles are the OSGi components made by the developers.
  • Services - The services layer connects bundles in a dynamic way by offering a publish-find-bind model for plain old Java objects.
  • Life-Cycle - The API to install, start, stop, update, and uninstall bundles.
  • Modules - The layer that defines how a bundle can import and export code.
  • Security - The layer that handles the security aspects.
  • Execution Environments - Defines what methods and classes are available in a specific platform.

The core component of the OSGi Specifications is the OSGi Framework. The Framework provides a standardized environment to applications with the layers described above. The most used implementations of OSGi Specifications are Knopflerfish and Equinox. Regardless of the particular implementation, the interactions between layers take place as depicted in the below picture.

Interactions between layers

Interactions between layers