Difference between revisions of "OSGi Concepts"

From CDOT Wiki
Jump to: navigation, search
 
(4 intermediate revisions by the same user not shown)
Line 7: Line 7:
 
::1. '''The OSGi technology is a set of specifications that define a dynamic component system for Java'''.[http://www.osgi.org/About/WhatIsOSGi]
 
::1. '''The OSGi technology is a set of specifications that define a dynamic component system for Java'''.[http://www.osgi.org/About/WhatIsOSGi]
 
::A software component is a unit of composition that can be developed independently with contractually specified interfaces and explicit context dependencies.[http://www.softwareresearch.net/fileadmin/src/docs/publications/J010.pdf]
 
::A software component is a unit of composition that can be developed independently with contractually specified interfaces and explicit context dependencies.[http://www.softwareresearch.net/fileadmin/src/docs/publications/J010.pdf]
 
  
 
'''OSGi''' enables the development of applications from '''components''' that could be:
 
'''OSGi''' enables the development of applications from '''components''' that could be:
Line 19: Line 18:
  
  
[[Image:OSGi-Layering.png|500px]]
+
[[Image:OSGi-Layering.png|400px]]
  
 
[http://zenit.senecac.on.ca/wiki/index.php/OSGi_Framework OSGi Framework]
 
[http://zenit.senecac.on.ca/wiki/index.php/OSGi_Framework OSGi Framework]
Line 25: Line 24:
  
 
* '''[http://zenit.senecac.on.ca/wiki/index.php/OSGi_Concepts_Bundles Bundles]''' - Bundles are the OSGi components made by the developers.
 
* '''[http://zenit.senecac.on.ca/wiki/index.php/OSGi_Concepts_Bundles Bundles]''' - Bundles are the OSGi components made by the developers.
* '''[http://zenit.senecac.on.ca/wiki/index.php/OSGi_Concepts_Services Services''' - The services layer connects bundles in a dynamic way by offering a publish-find-bind model for plain old Java objects.
+
* '''[http://zenit.senecac.on.ca/wiki/index.php/OSGi_Concepts_Services Services]''' - The services layer connects bundles in a dynamic way by offering a publish-find-bind model for plain old Java objects.
 
* '''[http://zenit.senecac.on.ca/wiki/index.php/OSGi_Concepts_Bundle_Life-Cycle Life-Cycle]''' - The API to install, start, stop, update, and uninstall bundles.
 
* '''[http://zenit.senecac.on.ca/wiki/index.php/OSGi_Concepts_Bundle_Life-Cycle Life-Cycle]''' - The API to install, start, stop, update, and uninstall bundles.
 
* '''[http://zenit.senecac.on.ca/wiki/index.php/OSGi_Concepts_Modules Modules]''' - The layer that defines how a bundle can import and export code.
 
* '''[http://zenit.senecac.on.ca/wiki/index.php/OSGi_Concepts_Modules Modules]''' - The layer that defines how a bundle can import and export code.
Line 32: Line 31:
  
 
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 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 [http://www.osgi.org/Specifications/HomePage OSGi Specifications] are [http://www.knopflerfish.org/ Knopflerfish] and [http://www.eclipse.org/equinox/ Equinox]. Regardless of the particular implementation, the interactions between layers take place as depicted in the below picture.
 +
<h4>[http://www.osgi.org/Release4/HomePage Interactions between layers]</h4>
 +
 +
[[File:bundle-inter.png|400px|Interactions between layers]]

Latest revision as of 09:55, 25 January 2011

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