After a long lapse, I thought of reverting to a general, yet, in-vogue-theory elucidation. This post will be skimming through the OSGi Framework and its basic layout.
The OSGi (Open Services Gateway initiative) framework offers a dynamic modular architecture which has been used in many applications such as Eclipse Equinox, Apache Felix, etc. Contemplating OSGi framework’s back-end functionalities aids in developing Eclipse plugins and similar atomic programs.
OSGi framework architecture comprises 3 theoretical layers. Each layer is reliant on the layer(s) underneath it. The figure below shows the outline of each layer.
- Service Layer
- Module Layer
- Lifecycle layer
This is the layer that fulfills a service request from a client who is the requester. The service requester/client will request a service from the service provider, who publishes the service if it is available.
This resembles and functions in a manner similar to a Service Oriented Architecture (SOA) which is extensively utilized in web services.
This layer elucidates the overview or conceptualization which is known as the Bundle. The Bundle is a JAR file which contains Meta data about the project’s components. Class files and associated assets like images and xml files are encapsulated within the module layer.
The manifest.mf is the Meta data file in the module layer that dictates which files are made to be visible to the external environment, the external packages upon which the bundle depends on, and so on.
The lifecycle layer is the host of the definition of how bundles are dynamically installed and controlled in the OSGi framework. It paves way for a bundle to access the base OSGi framework.
This layer is also the application programming interface.