The OSGi Alliance (formerly known as the Open Services Gateway initiative, now an obsolete name) is an open standards organization founded in March 1999. The Alliance and its members have specified a Java-based service platform that can be remotely managed. The core part of the specifications is a framework that defines an application life cycle management model, a service registry, an Execution environment and Modules. Based on this framework, a large number of OSGi Layers, APIs, and Services have been defined.

OSGi Framework Scope
Classification: OSGi & System-Layering

The OSGi framework is a module system for Java that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments. Applications or components (coming in the form of bundles for deployment) can be remotely installed, started, stopped, updated and uninstalled without requiring a reboot; management of Java packages/classes is specified in great detail. Life cycle management is done via APIs which allow for remote downloading of management policies. The service registry allows bundles to detect the addition of new services, or the removal of services, and adapt accordingly.

The original focus was on service gateways but the applicability turned out to be much wider. The OSGi specifications are now used in applications ranging from mobile phones to the open source Eclipse IDE. Other application areas include automobiles, industrial automation, building automation, PDAs, grid computing, entertainment (e.g. iPronto), fleet management and application servers.
[edit] Specification Process

The OSGi specification is developed by the members in an open process and made available to the public free of charge under the OSGi Specification License [1]. The OSGi Alliance has a compliance program that is open to members only. As of October 2009, the list of certified OSGi implementations contains five entries.
[edit] Architecture
OSGi Service Gateway Architecture

Any framework that implements the OSGi standard provides an environment for the modularization of applications into smaller bundles. 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:

Bundles
Bundles are normal jar components with extra manifest headers.
Services
The services layer connects bundles in a dynamic way by offering a publish-find-bind model for plain old Java objects (POJO).
Services Registry
The API for management services (ServiceRegistration, ServiceTracker and ServiceReference).
Life-Cycle
The API for life cycle management for (install, start, stop, update, and uninstall) bundles.
Modules
The layer that defines encapsulation and declaration of dependencies (how a bundle can import and export code).
Security
The layer that handles the security aspects by limiting bundle functionality to pre-defined capabilities.
Execution Environment
Defines what methods and classes are available in a specific platform. There is no fixed list of execution environments, since it is subject to change as the Java Community Process creates new versions and editions of Java. However, the following set is currently supported by most OSGi implementations:

* CDC-1.0/Foundation-1.0
* CDC-1.1/Foundation-1.1
* OSGi/Minimum-1.0
* OSGi/Minimum-1.1
* JRE-1.1
* From J2SE-1.2 up to J2SE-1.6

Projects Using OSGi

* Apache Sling - OSGi-based applications layer for JCR content repositories
* Business Intelligence and Reporting Tools (BIRT) Project - Open source reporting engine
* DataNucleus - open source data services and persistence platform in service oriented architectures
* EasyBeans - open source EJB 3 container
* Eclipse - open source IDE and rich client platform
* GlassFish (v3) - application server for J2EE
* FUSE ESB - a productized and supported release of ServiceMix 4.
* GX WebManager Community Edition - An Enterprise Web Content Management System based on OSGi, spring and JCR
* JBoss - Red Hat's JBoss Application Server
* JOnAS 5 - open source Java EE 5 application server
* Nuxeo - open source ECM Service Platform
* OpenEJB - open source OSGi-enabled EJB 3.0 container that can be run both in standalone or embedded mode
* Weblogic - Oracle Weblogic Application Server
* WebSphere - IBM Websphere JEE Application Server

submber: en.wikipedia.org