Open Source Gateway Initiative is an architecture for modular application development and it’s also knowns as Dynamic Module System for java.
Modularity is the way of developing or implementing software as number of unique modules rather than entire software as single unit.
Modules are communicating each other through Application Programming Gateway interface and finally it will form unique system.
OSGi responsibility is to make communication among these modules and manage the lifecycle of modules.
Module is an independent small piece of software and it will fulfill defined business requirements and it can be reuse. Module can work independently or it will associate with other module to prepare complex system. Module consist java files and required configuration files.
Component is same like module. We can call module and component interchangeably. When compare with scope of component is limited and it’s less than module. A module can be collection of components.
A bundle is collection of one or more components. According to the OSGi a bundle is smallest unit of modularization. We can say a bundle is packaged JAR file which consist java classes and required configuration files.
Plugin and bundle are similar and in eclipse terminology we call it as plugin.
OSGi container provides the run time environment to bundles its means it manage the lifecycle of bundles. It will responsible to activate and deactivate bundles and make communication among bundles.
MANIFEST is configuration file for bundles and OSGi container will read bundle information form this file. It’s same like Deployment descriptor in web applications. It will provides the bundle general information and its dependency with other bundles or components.
OSGi Runtime allows us to register services implementation and consume the existing services.
OSGi Runtime achieved through Service Registry. It maintain the information of services implementation and consume the existing services which are deployed in OSGi container.
OSGi Declarative Service
OSGI Declarative Services is a framework that provide the way to define and consume service by configuring details in the xml file without any dependency in source code to OSGi framework.
Service Component Runtime (SCR)
Service Component Runtime (SCR) is implementation of OSGi Declarative Service from Apache Felix.
OSGi Service Tracker
OSGi Service Tracker responsible to track or finding the services which are registered through service registry in the OSGi runtime.
Bundle activator is java class that implements the lifecycle of bundle.
Blueprint is framework form apache which provides the dependency injection nature for OSGi. Its design to deal with dynamic nature of OSGi. It’s similar to Declarative Services.
BnD provide set of tools to develop OSGi bundles. It’s very easy way to develop OSGi bundles. It will manage bundle dependency and other configurations itself by tool rather developer.
The OSGi enRoute project provides a programming model of OSGi applications. The OSGi specifications provide a powerful and solid platform for component oriented programming but by their nature lack ease of use, especially for newcomers to get started.