OSGi is an open specification and
open source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
project under the
Eclipse Foundation. It is a continuation of the work done by the OSGi Alliance (formerly known as the Open Services Gateway initiative), which was an
open standard
An open standard is a standard that is openly accessible and usable by anyone. It is also a prerequisite to use open license, non-discrimination and extensibility. Typically, anybody can participate in the development. There is no single definition ...
s organization for
computer software founded in March 1999. The foundation originally specified and maintained the OSGi standard. The alliance transferred its work to the
Eclipse Foundation at the end of 2020. The OSGi specification describes a modular system and a
service
Service may refer to:
Activities
* Administrative service, a required part of the workload of university faculty
* Civil service, the body of employees of a government
* Community service, volunteer service for the benefit of a community or a pu ...
platform for the
Java programming language that implements a complete and dynamic
component model
Component-based software engineering (CBSE), also called component-based development (CBD), is a branch of software engineering that emphasizes the separation of concerns with respect to the wide-ranging functionality available throughout a give ...
, something that does not exist in standalone Java or
VM environments. It has a
service-oriented architecture based on micro services each implemented as an extended Java class file archive (
JAR (file format)).
Description
OSGi is built around a
service-oriented architecture.
Applications or components, come 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. Application life cycle management is implemented via APIs that enable remote
downloading
In computer networks, download means to ''receive'' data from a remote system, typically a server such as a web server, an FTP server, an email server, or other similar system. This contrasts with uploading, where data is ''sent to'' a remote ...
of management policies. The service registry enables bundles to detect the addition of new services or the removal of services, and adapt accordingly.
The OSGi specifications have evolved beyond the original focus of service gateways, and are now used in applications ranging from
mobile phones to the open-source
Eclipse IDE. Other application areas include
automobiles,
industrial automation,
building automation,
PDA
PDA may refer to:
Science and technology
* Patron-driven acquisition, a mechanism for libraries to purchase books
*Personal digital assistant, a mobile device
* Photodiode array, a type of detector
* Polydiacetylenes, a family of conducting poly ...
s,
grid computing
Grid computing is the use of widely distributed computer resources to reach a common goal. A computing grid can be thought of as a distributed system with non-interactive workloads that involve many files. Grid computing is distinguished from co ...
,
entertainment,
fleet management and
application server
An application server is a server that hosts applications or software that delivers a business application through a communication protocol.
An application server framework is a service layer model. It includes software components available to a ...
s.
In October 2020, the OSGi Alliance announced the transition of the standardization effort to the
Eclipse Foundation, subsequent to which it would shut down. All artifacts have been transferred to the
Eclipse Foundation, where an OSGi Working Group" continues to maintain and evolve the specification.
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. The OSGi Alliance has a
compliance
Compliance can mean:
Healthcare
* Compliance (medicine), a patient's (or doctor's) adherence to a recommended course of treatment
* Compliance (physiology), the tendency of a hollow organ to resist recoil toward its original dimensions (this is a ...
program that is open to members only. As of November 2010, there are seven certified OSGi framework
implementations. A separate page lists both certified and non-certified
OSGi Specification Implementations The OSGi framework is a standardized module system and service platform for the Java programming language. The OSGi standards are defined in thOSGi Specification Project at Eclipseand published in OSGi specification documents such as the Core and Co ...
, which include OSGi frameworks and other OSGi specifications.
Architecture

OSGi is a Java framework for developing and deploying modular software programs and libraries. 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 interfaces (
POJIs) or
plain old Java objects (POJOs).
;Services Registry:The
application programming interface
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how t ...
for management services.
;Life-Cycle:The
application programming interface
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how t ...
for life cycle management (install, start, stop, update, and uninstall) for 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
Bundles
A bundle is a group of Java classes and additional resources equipped with a detailed manifest
MANIFEST.MF
file on all its contents, as well as additional services needed to give the included group of Java classes more sophisticated behaviors, to the extent of deeming the entire aggregate a component.
Below is an example of a typical
MANIFEST.MF
file with OSGi Headers:
Bundle-Name: Hello World
Bundle-SymbolicName: org.wikipedia.helloworld
Bundle-Description: A Hello World bundle
Bundle-ManifestVersion: 2
Bundle-Version: 1.0.0
Bundle-Activator: org.wikipedia.Activator
Export-Package: org.wikipedia.helloworld;version="1.0.0"
Import-Package: org.osgi.framework;version="1.3.0"
The meaning of the contents in the example is as follows:
# Bundle-Name: Defines a human-readable name for this bundle, Simply assigns a short name to the bundle.
# Bundle-SymbolicName: The only required header, this entry specifies a unique identifier for a bundle, based on the
reverse domain name convention (used also by the
java packages).
# Bundle-Description: A description of the bundle's functionality.
# Bundle-ManifestVersion: Indicates the OSGi specification to use for reading this bundle.
# Bundle-Version: Designates a version number to the bundle.
# Bundle-Activator: Indicates the class name to be invoked once a bundle is activated.
# Export-Package: Expresses which Java packages contained in a bundle will be made available to the outside world.
# Import-Package: Indicates which Java packages will be required from the outside world to fulfill the dependencies needed in a bundle.
Life-cycle
A Life Cycle layer adds bundles that can be dynamically installed, started, stopped, updated and uninstalled. Bundles rely on the module layer for class loading but add an API to manage the modules in run time. The life cycle layer introduces dynamics that are normally not part of an application. Extensive dependency mechanisms are used to assure the correct operation of the environment. Life cycle operations are fully protected with the security architecture.
Below is an example of a typical Java class implementing the
BundleActivator
/code> interface:
package org.wikipedia;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator
Services
Standard services
The OSGi Alliance has specified many services. Services are specified by a Java interface. Bundles can implement this interface and register the service with the Service Registry. Clients of the service can find it in the registry, or react to it when it appears or disappears.
The table below shows a description of OSGi System Services:
The table below shows a description of OSGi Protocol Services:
The table below shows a description of OSGi Miscellaneous Services:
Organization
The OSGi Alliance was founded by Ericsson, IBM, Motorola, Sun Microsystems
Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, the ...
and others in March 1999. Before incorporating as a nonprofit corporation, it was called the Connected Alliance.
Among its members are () more than 35 companies from quite different business areas, for example Adobe Systems
Adobe Inc. ( ), originally called Adobe Systems Incorporated, is an American multinational computer software company incorporated in Delaware
and headquartered in San Jose, California. It has historically specialized in software for the crea ...
, Deutsche Telekom
Deutsche Telekom AG (; short form often just Telekom, DTAG or DT; stylised as ·T·) is a German telecommunications company that is headquartered in Bonn and is the largest telecommunications provider in Europe by revenue. Deutsche Telekom was ...
, Hitachi
() is a Japanese multinational corporation, multinational Conglomerate (company), conglomerate corporation headquartered in Chiyoda, Tokyo, Japan. It is the parent company of the Hitachi Group (''Hitachi Gurūpu'') and had formed part of the Ni ...
, IBM, Liferay, Makewave, NEC, NTT, Oracle
An oracle is a person or agency considered to provide wise and insightful counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. As such, it is a form of divination.
Description
The word '' ...
, Orange SA, ProSyst
ProSyst Software GmbH was founded in Cologne in 1997 as a company specializing in Java software and middleware. ProSyst's first commercial application was a Java EE application server. In 2000, the company sold this server technology and has si ...
, Salesforce, Siemens
Siemens AG ( ) is a German multinational conglomerate corporation and the largest industrial manufacturing company in Europe headquartered in Munich with branch offices abroad.
The principal divisions of the corporation are ''Industry'', '' ...
, Software AG and TIBCO Software.
The Alliance has a board of directors that provides the organization's overall governance. OSGi officers have various roles and responsibilities in supporting the alliance. Technical work is conducted within Expert Groups (EGs) chartered by the board of directors, and non-technical work is conducted in various working groups and committees. The technical work conducted within Expert Groups include developing specifications, reference implementations, and compliance tests. These Expert Groups have produced five major releases of the OSGi specifications ().
Dedicated Expert Groups exist for the enterprise, mobile, vehicle and the core platform areas.
The Enterprise Expert Group (EEG) is the newest EG and is addressing Enterprise / Server-side applications.
In November 2007 the Residential Expert Group (REG) started to work on specifications to remotely manage residential/home-gateways.
In October 2003, Nokia, Motorola, IBM, ProSyst
ProSyst Software GmbH was founded in Cologne in 1997 as a company specializing in Java software and middleware. ProSyst's first commercial application was a Java EE application server. In 2000, the company sold this server technology and has si ...
and other OSGi members formed a Mobile Expert Group (MEG) that will specify a MIDP-based service platform for the next generation of smart mobile phones, addressing some of the needs that CLDC cannot manage - other than CDC. MEG became part of OSGi as with R4.
Specification versions
* OSGi Release 1 (R1): May 2000
* OSGi Release 2 (R2): October 2001
* OSGi Release 3 (R3): March 2003
* OSGi Release 4 (R4): October 2005 / September 2006
** Core Specification (R4 Core): October 2005
** Mobile Specification (R4 Mobile / JSR-232): September 2006
* OSGi Release 4.1 (R4.1): May 2007 (AKA JSR-291)
* OSGi Release 4.2 (R4.2): September 2009
** Enterprise Specification (R4.2): March 2010
* OSGi Release 4.3 (R4.3): April 2011
** Core: April 2011
** Compendium and Residential: May 2012
* OSGi Release 5 (R5): June 2012
** Core and Enterprise: June 2012
* OSGi Release 6 (R6): June 2015
** Core: June 2015
* OSGi Release 7 (R7): April 2018
** Core and Compendium: April 2018
* OSGi Release 8 (R8): December 2020
Related standards
* MHP / OCAP
* Universal Plug and Play (UPnP)
*DPWS
The Devices Profile for Web Services (DPWS) defines a minimal set of implementation constraints to enable secure web service messaging, discovery, description, and eventing on resource-constrained devices.
Its objectives are similar to those of ...
* ITU-T G.hn
* LonWorks
* CORBA
* CEBus
* EHS (KNX
KNX is an open standard (see EN 50090, ISO/IEC 14543) for commercial and domestic building automation. KNX devices can manage lighting, blinds and shutters, HVAC, security systems, energy management, audio video, white goods, displays, remote ...
) / CECED CHAIN
A chain is a serial assembly of connected pieces, called links, typically made of metal, with an overall character similar to that of a rope in that it is flexible and curved in compression but linear, rigid, and load-bearing in tension. A c ...
* Java Management Extensions
Projects using OSGi
* Adobe Experience Manager
Adobe Experience Cloud (AEC), formerly Adobe Marketing Cloud (AMC), is a collection of integrated online marketing and web analytics products by Adobe Inc.
History
Adobe Experience Cloud includes a set of analytics, social, advertising, medi ...
- an enterprise Content Management System
A content management system (CMS) is computer software used to manage the creation and modification of digital content (content management).''Managing Enterprise Content: A Unified Content Strategy''. Ann Rockley, Pamela Kostur, Steve Manning. New ...
* Apache Aries
Apache Aries, a Blueprint Container implementations and extensions of application-focused specifications defined by OSGi Enterprise Expert Group. The project aims to deliver a set of pluggable Java components enabling an enterprise OSGi applicati ...
- Blueprint Container implementations and extensions of application-focused specifications defined by OSGi Enterprise Expert Group
* Apache Sling - OSGi-based applications layer for JCR content repositories
* Atlassian Confluence and JIRA - the plug-in architecture for this enterprise wiki and issue tracker uses OSGi
* Business Intelligence and Reporting Tools (BIRT) Project - Open source reporting engine
* Cytoscape - an open source bioinformatics software platform (as of version 3.0)
* DataNucleus - open source data services and persistence platform in service-oriented architectures
DDF
- Distributed Data Framework provides free and open-source data integration
* Dotcms - open source Web Content Management
* EasyBeans
EasyBeans is an open-source Enterprise JavaBeans (EJB) container hosted by the OW2 Consortium. The License used by EasyBeans is the LGPL. EasyBeans is the EJB 3.0 container of the JOnAS application server.
EasyBeans is integrated in the JOnAS ...
- open source EJB 3 container
* Eclipse
An eclipse is an astronomical event that occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three ce ...
- open source IDE and rich client platform
* iDempiere
iDempiere. Community Powered Enterprise, also known as OSGi + ADempiere, is an open source Enterprise Resource Planning (ERP) software that is fully navigable on PCs, tablets and smartphones, it also has customer relationship management (CRM) and ...
- is an OSGi implementation of the open source ERP Branch GlobalQSS Adempiere361 originally started by Low Heng Sin
* Eclipse Virgo - open source microkernel-based server constructed of OSGi bundles and supporting OSGi applications
* GlassFish (v3) - application server for Java EE
* Fuse ESB - a productized and supported release of ServiceMix 4.
* Integrated Genome Browser - an open source, desktop GUI for visualizing, exploring, and analyzing genome data
* IntelliJ - Java IDE and rich client platform with free community edition
* JBoss - Red Hat's JBoss Application Server
* JOnAS 5 - open source Java EE 5 application server
* JOSSO 2 - Atricore's open source standards-based Identity and Access Management Platform
* Liferay Dxp - open source and commercial enterprise Portal platform use OSGi from version 7.x.
* Lucee 5 - open source CFML Web Application Server
* NetBeans - open source IDE and rich client platform
* Nuxeo - open source ECM
ECM may refer to:
Economics and commerce
* Engineering change management
* Equity capital markets
* Error correction model, an econometric model
* European Common Market
Mathematics
* Elliptic curve method
* European Congress of Mathematics
...
Service Platform
* Open Daylight Project
The OpenDaylight Project is a collaborative open-source project hosted by the Linux Foundation. The project serves as a platform for software-defined networking (SDN) for open, centralized, computer network device monitoring.
History
On Apr ...
- Project with the goal of accelerating the adoption of software-defined networking
* OpenEJB - open source OSGi-enabled EJB 3.0 container that can be run both in standalone or embedded mode
* openHAB - open source home automation software
* OpenWorm - open source software simulation of ''C. elegans'', via the dedicated ''Geppetto'' modular platform
* Akana
Akana is a provider of computer software products for application programming interface (API) management. The company was founded as Digital Evolution and was later known as SOA Software. In November 2016, Akana was acquired by Rogue Wave Softwar ...
- API Gateway, Portal and Analytics server from Akana (formerly SOA Software)
* Weblogic - Oracle Weblogic Application Server
* WebSphere - IBM Websphere JEE Application Server
* WebMethods - SoftwareAG WebMethods
* WSO2 Carbon - Base platform for WSO2's enterprise-grade Open source middleware stack
Current framework implementations
See also
* OSGi Specification Implementations The OSGi framework is a standardized module system and service platform for the Java programming language. The OSGi standards are defined in thOSGi Specification Project at Eclipseand published in OSGi specification documents such as the Core and Co ...
References
Further reading
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
External links
*
Oredev 2008 - Architecture - OSGi Now and Tomorrow
Eclipse Equinox Article Index
- Articles on an open source OSGi implementation
{{authority control
Standards organizations in the United States
Articles with example Java code
Free software programmed in Java (programming language)
1999 establishments in the United States
Embedded systems
Organizations based in California