OSGi
Encyclopedia
The Open Services Gateway initiative framework is a module system and service platform for the Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM
Virtual machine
A virtual machine is a "completely isolated guest operating system installation within a normal host operating system". Modern virtual machines are implemented with either software emulation or hardware virtualization or both together.-VM Definitions:A virtual machine is a software...

 environments. Applications
Application software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...

 or components (coming in the form of bundle
Bundle (software distribution)
A "bundle" is a software package that contains a software and everything it needs to operate.- Discussion :On the one hand, the use of software bundles have a clear advantage: they usually include a program and all the libraries it needs to operate statically compiled, so the program can work...

s for deployment
Software deployment
Software deployment is all of the activities that make a software system available for use.The general deployment process consists of several interrelated activities with possible transitions between them. These activities can occur at the producer site or at the consumer site or both...

) can be remotely installed, started, stopped, updated and uninstalled without requiring a reboot; management of Java package
Java package
A Java package is a mechanism for organizing Java classes into namespaces similar to the modules of Modula. Java packages can be stored in compressed files called JAR files, allowing classes to download faster as a group rather than one at a time...

s/class
Class (computer science)
In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects. A class defines constituent members which enable these class instances to have state and behavior...

es is specified in great detail. Application life cycle management (start, stop, install, etc.) is done via APIs that 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 OSGi specifications have moved beyond the original focus of service gateways, and are now used in applications ranging from mobile phone
Mobile phone
A mobile phone is a device which can make and receive telephone calls over a radio link whilst moving around a wide geographic area. It does so by connecting to a cellular network provided by a mobile network operator...

s to the open source Eclipse IDE
Eclipse (software)
Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...

. Other application areas include automobile
Automobile
An automobile, autocar, motor car or car is a wheeled motor vehicle used for transporting passengers, which also carries its own engine or motor...

s, industrial automation, building automation
Building automation
Building automation describes the functionality provided by the control system of a building. A building automation system is an example of a distributed control system...

, PDA
Personal digital assistant
A personal digital assistant , also known as a palmtop computer, or personal data assistant, is a mobile device that functions as a personal information manager. Current PDAs often have the ability to connect to the Internet...

s, grid computing
Grid computing
Grid computing is a term referring to the combination of computer resources from multiple administrative domains to reach a common goal. The grid can be thought of as a distributed system with non-interactive workloads that involve a large number of files...

, entertainment
Entertainment
Entertainment consists of any activity which provides a diversion or permits people to amuse themselves in their leisure time. Entertainment is generally passive, such as watching opera or a movie. Active forms of amusement, such as sports, are more often considered to be recreation...

 (e.g., iPronto), fleet management
Fleet management
Fleet management is the management of a company's vehicle fleet.Fleet management includes commercial motor vehicles such as cars, vans and trucks. Fleet management can include a range of functions, such as vehicle financing, vehicle maintenance, vehicle telematics , driver management, speed...

 and application server
Application server
An application server is a software framework that provides an environment in which applications can run, no matter what the applications are or what they do...

s.

Sponsoring organization

The OSGi Alliance (formerly known as the Open Services Gateway initiative, now an obsolete name) is an open standards organization
Standards organization
A standards organization, standards body, standards developing organization , or standards setting organization is any organization whose primary activities are developing, coordinating, promulgating, revising, amending, reissuing, interpreting, or otherwise producing technical standards that are...

 founded in March 1999 that originally specified and continues to maintain the OSGi standard.

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
Regulatory compliance
In general, compliance means conforming to a rule, such as a specification, policy, standard or law. Regulatory compliance describes the goal that corporations or public agencies aspire to in their efforts to ensure that personnel are aware of and take steps to comply with relevant laws and...

 program that is open to members only. As of November 2010, there are seven certified OSGi framework implementation
Implementation
Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy.-Computer Science:...

s. A separate page lists both certified and non-certified OSGi Specification Implementations
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 the OSGi Alliance and published in OSGi specification documents such as the Core and Compendium specifications. These specifications contain chapters each of...

, which include OSGi frameworks and other OSGi specifications.

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
JAR (file format)
In software, JAR is an archive file format typically used to aggregate many Java class files and associated metadata and resources into one file to distribute application software or libraries on the Java platform.JAR files are built on the ZIP file format and have the .jar file extension...

 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 (POJI
POJI
Acronym for Plain Old Java Interfaces.A POJI corresponds to a Java standard interface. They are usually used in the JEE context to provide services. As an example, the services in OSGI are offered through Plain Old Java Interfaces.See POJO...

) or Plain Old Java Objects POJO
Pojo
Pojo may refer to:* Pohja, the Swedish name for the Finnish municipality* POJO, abbreviation of Plain Old Java Object in computer programming...

.
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
Java Community Process
The Java Community Process or JCP, established in 1998, is a formalized process that allows interested parties to get involved in the definition of future versions and features of the Java platform....

 creates new versions and editions of Java. However, the following set is currently supported by most OSGi implementations:
  • CDC-1.0/Foundation-1.0
    Connected Device Configuration
    The Connected Device Configuration is a specification of a framework for Java ME applications describing the basic set of libraries and virtual-machine features that must be present in an implementation. The CDC is combined with one or more profiles to give developers a platform for building...

  • CDC-1.1/Foundation-1.1
    Connected Device Configuration
    The Connected Device Configuration is a specification of a framework for Java ME applications describing the basic set of libraries and virtual-machine features that must be present in an implementation. The CDC is combined with one or more profiles to give developers a platform for building...

  • 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: This little known header 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 what Java packages contained in a bundle will be made available to the outside world.
  • Import-Package: Indicates what Java packages will be required from the outside world, in order 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.
Bundle State Description
INSTALLED The bundle has been successfully installed.
RESOLVED All Java classes that the bundle needs are available. This state indicates that the bundle is either ready to be started or has stopped.
STARTING The bundle is being started, the BundleActivator.start method will be called, and this method has not yet returned. When the bundle has an activation policy, the bundle will remain in the STARTING state until the bundle is activated according to its activation policy.
ACTIVE The bundle has been successfully activated and is running; its Bundle Activator start method has been called and returned.
STOPPING The bundle is being stopped. The BundleActivator.stop method has been called but the stop method has not yet returned.
UNINSTALLED The bundle has been uninstalled. It cannot move into another state.

Below is an example of a typical Java class implementing the BundleActivator interface:

package org.wikipedia;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class Activator implements BundleActivator {
private BundleContext context;

public void start(BundleContext context) throws Exception {
System.out.println("Starting: Hello World");
this.context = context;
}

public void stop(BundleContext context) throws Exception {
System.out.println("Stopping: Goodbye Cruel World");
this.context = null;
}
}

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:
System Services Description
Logging The logging of information, warnings, debug information or errors is handled through the Log Service. It receives log entries and then dispatches these entries to other bundles that subscribed to this information.
Configuration Admin This service allows an operator to set and get the configuration information of deployed bundles
Device Access Facilitates the coordination of automatic detection and attachment of existing devices. This is used for Plug and Play scenarios.
User Admin This service uses a database with user information (private and public) for authentication and authorization purposes.
IO Connector The IO Connector Service implements the CDC
Connected Device Configuration
The Connected Device Configuration is a specification of a framework for Java ME applications describing the basic set of libraries and virtual-machine features that must be present in an implementation. The CDC is combined with one or more profiles to give developers a platform for building...

/CLDC javax.microedition.io package as a service. This service allows bundles to provide new and alternative protocol schemes.
Preferences Offers an alternative, more OSGi-friendly mechanism to using Java’s default for storing preferences.
Component Runtime The dynamic nature of services—they can come and go at any time—makes writing software harder. The Component Runtime specification can simplify handling these dynamic aspects by providing an XML based declaration of the dependencies.
Deployment Admin Standardizes access to some of the responsibilities of the management agent.
Event Admin Provides an inter-bundle communication mechanism based on a publish-and-subscribe model.
Application Admin Simplifies the management of an environment with many different types of applications that are simultaneously available.

The table below shows a description of OSGi Protocol Services:
Protocol Services Description
HTTP Service Allows information to be sent and received from OSGi using HTTP.
UPnP Device Service Specifies how OSGi bundles can be developed to interoperate with Universal Plug and Play
Universal Plug and Play
Universal Plug and Play is a set of networking protocols for primarily residential networks without enterprise class devices that permits networked devices, such as personal computers, printers, Internet gateways, Wi-Fi access points and mobile devices to seamlessly discover each other's presence...

 (UPnP) devices.
DMT Admin Defines an API for managing a device using concepts from the Open Mobile Alliance
Open Mobile Alliance
The Open Mobile Alliance is a standards body which develops open standards for the mobile phone industry.- Principles :Mission: To provide interoperable service enablers working across countries, operators and mobile terminals....

 (OMA) device management specifications.

The table below shows a description of OSGi Miscellaneous Services:
Miscellaneous Services Description
Wire Admin Allows the connection between a Producer service and a Consumer service.
XML Parser The XML Parser service allows a bundle to locate a parser with desired properties and compatibility with JAXP.
Measurement and State The Measurement and State service allows and simplifies the correct handling of measurements in an OSGi service platform.

Organization

The OSGi Alliance was founded by Ericsson
Ericsson
Ericsson , one of Sweden's largest companies, is a provider of telecommunication and data communication systems, and related services, covering a range of technologies, including especially mobile networks...

, IBM, Motorola
Motorola
Motorola, Inc. was an American multinational telecommunications company based in Schaumburg, Illinois, which was eventually divided into two independent public companies, Motorola Mobility and Motorola Solutions on January 4, 2011, after losing $4.3 billion from 2007 to 2009...

, Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...

 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 IONA Technologies
IONA Technologies
IONA Technologies was an Irish software company. It was founded in 1991.The company began life as a campus company in Trinity College, Dublin and maintains headquarters in Dublin, Boston and Tokyo....

, Ericsson
Ericsson
Ericsson , one of Sweden's largest companies, is a provider of telecommunication and data communication systems, and related services, covering a range of technologies, including especially mobile networks...

, Deutsche Telekom
Deutsche Telekom
Deutsche Telekom AG is a telecommunications company headquartered in Bonn, Germany. It is the largest telecommunications company in Europe....

, IBM, Makewave (formerly Gatespace Telematics), Motorola
Motorola
Motorola, Inc. was an American multinational telecommunications company based in Schaumburg, Illinois, which was eventually divided into two independent public companies, Motorola Mobility and Motorola Solutions on January 4, 2011, after losing $4.3 billion from 2007 to 2009...

,Orga Systems
Orga Systems
Orga Systems is a medium sized billing company based in Paderborn, Germany, and more than 20 additional locations worldwide.As one of the pioneer in prepaid billing it provides Billing and Customer Care systems to mobile operators for fifteen years, including launching the world’s first GSM...

, Nokia
Nokia
Nokia Corporation is a Finnish multinational communications corporation that is headquartered in Keilaniemi, Espoo, a city neighbouring Finland's capital Helsinki...

, NTT, Oracle
Oracle Corporation
Oracle Corporation is an American multinational computer technology corporation that specializes in developing and marketing hardware systems and enterprise software products – particularly database management systems...

, ProSyst
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...

, Red Hat
Red Hat
Red Hat, Inc. is an S&P 500 company in the free and open source software sector, and a major Linux distribution vendor. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North Carolina with satellite offices worldwide....

, Samsung Electronics
Samsung Electronics
Samsung Electronics is a South Korean multinational electronics and information technology company headquartered in Samsung Town, Seoul...

, Siemens
Siemens AG
Siemens AG is a German multinational conglomerate company headquartered in Munich, Germany. It is the largest Europe-based electronics and electrical engineering company....

, VMware
VMware
VMware, Inc. is a company providing virtualization software founded in 1998 and based in Palo Alto, California, USA. The company was acquired by EMC Corporation in 2004, and operates as a separate software subsidiary ....

 (SpringSource
SpringSource
SpringSource is a division of VMware that provides a suite of software products that accelerate the entire enterprise Java application life cycle of build, run, and manage. SpringSource employs open source leaders who created and drive innovation for Spring, a programming model for enterprise Java...

), and Telefonica
Telefónica
Telefónica, S.A. is a Spanish broadband and telecommunications provider in Europe and Latin America. Operating globally, it is the third largest provider in the world...

.

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 four major releases of the OSGi specifications .

There are dedicated Expert Groups 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
Nokia
Nokia Corporation is a Finnish multinational communications corporation that is headquartered in Keilaniemi, Espoo, a city neighbouring Finland's capital Helsinki...

, Motorola
Motorola
Motorola, Inc. was an American multinational telecommunications company based in Schaumburg, Illinois, which was eventually divided into two independent public companies, Motorola Mobility and Motorola Solutions on January 4, 2011, after losing $4.3 billion from 2007 to 2009...

, IBM, ProSyst
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...

 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
Connected Limited Device Configuration
The Connected Limited Device Configuration is a specification of a framework for Java ME applications describing the basic set of libraries and virtual-machine features that must be present in an implementation...

 cannot manage - other than CDC
Connected Device Configuration
The Connected Device Configuration is a specification of a framework for Java ME applications describing the basic set of libraries and virtual-machine features that must be present in an implementation. The CDC is combined with one or more profiles to give developers a platform for building...

. MEG became part of OSGi as with R4.

Community

Also in 2003 Eclipse selected OSGi as the underlying runtime for the plug-in architecture used for the Eclipse Rich Client Platform and the IDE platform. Eclipse itself includes sophisticated tooling for developing OSGi bundles and there are a number of other Eclipse plug-ins aimed at supporting OSGi behaviour (e.g., both ProSyst and Knopflerfish
Knopflerfish
Knopflerfish is a non-profit organization, developing OSGi related material. The project provides easy to use open source certified implementation of the OSGi R4 v4.2 core framework specification , as well as related build tools and applications...

 have Eclipse plug-ins available specifically for OSGi developers).

There is a vibrant free software community
Free software community
The free-software community is an informal term that refers to the users and developers of free software as well as supporters of the free-software movement. The movement is sometimes referred to as the open-source software community or a subset thereof...

 revolving around the OSGi specification. Some widely-used open source implementations are Equinox OSGi
Equinox OSGi
Equinox is an Eclipse project that provides a certified implementation of the OSGi R4.x core framework specification. As such, Equinox is a module runtime that allows developers to implement an application as a set of "bundles" using common services and infrastructure.Equinox started as a project...

, Apache Felix and Knopflerfish OSGi
Knopflerfish
Knopflerfish is a non-profit organization, developing OSGi related material. The project provides easy to use open source certified implementation of the OSGi R4 v4.2 core framework specification , as well as related build tools and applications...

. Regarding tooling, build system support and testing, the OPS4J Pax projects provide a lot of useful components and expertise.

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

New in OSGi Release 4

The new features of OSGi R4 in brief are as follows:
  • New modularization capabilities providing enhanced encapsulation of networked services that can share a single Virtual Machine
    Virtual machine
    A virtual machine is a "completely isolated guest operating system installation within a normal host operating system". Modern virtual machines are implemented with either software emulation or hardware virtualization or both together.-VM Definitions:A virtual machine is a software...

     (VM).
  • Modularized class sharing and hiding of implementation details.
  • Methods for handling multiple versions of the same classes so old and new applications can execute within the same VM.
  • Localization
    Internationalization and localization
    In computing, internationalization and localization are means of adapting computer software to different languages, regional differences and technical requirements of a target market...

     of OSGi bundle manifests
    Manifest file
    On the Java platform, a Manifest file is a specific file contained within a JAR archive. It is used to define extension and package-related data. It is a metadata file that contains name-value pairs organized in different sections. If a JAR file is intended to be used as an executable file, the...

     enabling service deployment anywhere.
  • Enhancements in security and policies: The new Conditional Permission Admin service provides an elegant and simple way to manage networked services securely. It also supports dynamic policies that can depend on external (custom) conditions. Combined with R4 support for digital signatures, this provides a central security solution to large deployments of products using the OSGi Service Platform.
  • A Declarative Services specification that addresses memory footprint issues that can prevent small embedded devices from using a service oriented architecture to support multiple applications. Additionally, it significantly simplifies the service-oriented programming
    Service-oriented architecture
    In software engineering, a Service-Oriented Architecture is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components that can be reused for...

     model by declaratively handling the dynamics of services.
  • Compatibility with Release 3, requiring no changes for existing OSGi bundles, applications, or services.

New in Release 4.1

OSGi R4.1 was a minor revision intended to clarify certain aspects of bundle initialization
Booting
In computing, booting is a process that begins when a user turns on a computer system and prepares the computer to perform its normal operations. On modern computers, this typically involves loading and starting an operating system. The boot sequence is the initial set of operations that the...

 and loading in order to improve third party
Third-party software component
In computer programming, a third-party software component is a reusable software component developed to be either freely distributed or sold by an entity other than the original vendor of the development platform...

 usage. It added no new services or major features.

New in Release 4.2

OSGi R4.2 was a significant release that added several new services and capabilities, including:
  • Framework launching: Standardized means to launch OSGi from various providers
  • Remote Services: Allows the exporting of services to remote VM
    Virtual machine
    A virtual machine is a "completely isolated guest operating system installation within a normal host operating system". Modern virtual machines are implemented with either software emulation or hardware virtualization or both together.-VM Definitions:A virtual machine is a software...

    s (formerly known as Distribute OSGi)
  • Blueprint Service: Dependency injection
    Dependency injection
    Dependency injection is a design pattern in object-oriented computer programming whose purpose is to improve testability of, and simplify deployment of components in very large software systems....

     and inversion of control
    Inversion of Control
    In software engineering, Inversion of Control is an abstract principle describing an aspect of some software architecture designs in which the flow of control of a system is inverted in comparison to procedural programming....

     (similar to Spring) that allows external configuration of bundle dependencies
  • Bundle Tracker: Track and respond to changes in bundle presence and state
  • Service Hooks: Allow introspection and behavior modification of service calls to inject security or dynamicism
  • Conditional Permissions: Support negative permissions, forbidding specific actions instead of just allowing them


More information can also be specified in each bundle header, such as license information, MIME
MIME
Multipurpose Internet Mail Extensions is an Internet standard that extends the format of email to support:* Text in character sets other than ASCII* Non-text attachments* Message bodies with multiple parts...

 types and icons. Additionally, changes to Declarative Services allow the easier setting of permissions. Finally, OSGi bundles can now have their return values read.

OSGi R4.2 also introduced a new specification release for the enterprise including support for:
  • Web Applications: A standardized format for building OSGi web applications packaged using the WAR file format (Sun)
  • JPA Service: Provides a reliable standard mechanism to use the Java Persistence API
    Java Persistence API
    The Java Persistence API, sometimes referred to as JPA, is a Java programming language framework managing relational data in applications using Java Platform, Standard Edition and Java Platform, Enterprise Edition....

     in OSGi
  • JNDI Service: Allows integration of the OSGi service registry and the Java Naming and Directory Interface
    Java Naming and Directory Interface
    The Java Naming and Directory Interface is a Java API for a directory service that allows Java software clients to discover and look up data and objects via a name. Like all Java APIs that interface with host systems, JNDI is independent of the underlying implementation...

  • JDBC Service: Provides an OSGi lifecycle-aware mechanism to obtain connections to an external Database
    Database
    A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...


New in Release 4.3

  • Generics: The framework now uses JDK5 generics in several places. However, Java 1.4 can still be targeted using "-source 1.5 -target jsr14" switches to javac.
  • Capabilities: A set of attributes in a namespace in a module's meta information, such as osgi.wiring.package Export-Package.
  • Requirements: A filter expression over the attribute set of a capability, such as osgi.wiring.package Import-Package.
  • adapt: Replaces Framework services; adapts Bundle to another type (if supported). Replaces PackageAdmin and StartLevel services with APIs which a Bundle can be adapted to.
  • WeavingHook: The WeavingHook services allows load-time bytecode weaving.
  • ResolverHooks and BundleHooks: Replaces the nested frameworks and composite bundles proposal with low-level capabilities to influence requirement-capability matching.
  • Service EventListener Hook: Replaces Service Event Hook with finer-grained event delivery control.

Related RFCs and Java Specifications

  • RFC-2608 (Service Location Protocol
    Service Location Protocol
    The Service Location Protocol is a service discovery protocol that allows computers and other devices to find services in a local area network without prior configuration. SLP has been designed to scale from small, unmanaged networks to large enterprise networks...

    )
  • Sun JINI
    Jini
    Jini , also called Apache River, is a network architecture for the construction of distributed systems in the form of modular co-operating services.Originally developed by Sun, Jini was released under an open source license...

     (Java Intelligent Network Infrastructure)
  • Sun JCP JSR-8 (Open Services Gateway Specification)
  • Sun JCP JSR-232 (Mobile Operational Management)
  • Sun JCP JSR-246 (Device Management API)
  • Sun JCP JSR-249 (Mobile Service Architecture for CDC)
  • Sun JCP JSR-277 (Java Module System)
  • Sun JCP JSR-291 (Dynamic Component Support for Java SE - AKA OSGi 4.1)
  • Sun JCP JSR-294 (Improved Modularity Support in the Java Programming Language)

Related standards

  • MHP
    Multimedia Home Platform
    Multimedia Home Platform is an open middleware system standard designed by the DVB project for interactive digital television. The MHP enables the reception and execution of interactive, Java-based applications on a TV-set. Interactive TV applications can be delivered over the broadcast channel,...

     / OCAP
    OpenCable Application Platform
    The OpenCable Application Platform, or OCAP, is an operating system layer designed for consumer electronics that connect to a cable television system, the Java-based middleware portion of the platform. Unlike operating systems on a personal computer, the cable company controls what OCAP programs...

  • Universal Plug and Play
    Universal Plug and Play
    Universal Plug and Play is a set of networking protocols for primarily residential networks without enterprise class devices that permits networked devices, such as personal computers, printers, Internet gateways, Wi-Fi access points and mobile devices to seamlessly discover each other's presence...

     (UPnP)
  • DPWS
  • ITU-T
    ITU-T
    The ITU Telecommunication Standardization Sector is one of the three sectors of the International Telecommunication Union ; it coordinates standards for telecommunications....

     G.hn
    G.hn
    G.hn is the common name for a home network technology family of standards developed under the International Telecommunication Union's Standardization arm and promoted by the HomeGrid Forum...

  • LonWorks
    LonWorks
    LonWorks is a networking platform specifically created to address the needs of control applications. The platform is built on a protocol created by Echelon Corporation for networking devices over media such as twisted pair, powerlines, fiber optics, and RF...

  • CORBA
    Çorba
    Chorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East...

  • CEBus
    CEBus
    CEBus, short for Consumer Electronics Bus, also known as EIA-600, is a set of electrical standards and communication protocols for electronic devices to transmit commands and data...

  • EHS
    EHS
    EHS may mean:* Electromagnetic hypersensitivity, also called electrical sensitivity and electrosensitivity* Electronic Hook Switch, a device electronically connects headset and phone...

     (KNX
    KNX (standard)
    KNX is a standardized , OSI-based network communications protocol for intelligent buildings. KNX is the successor to, and convergence of, three previous standards: the European Home Systems Protocol , BatiBUS, and the European Installation Bus...

    ) / CECED CHAIN
    CHAIN (industry standard)
    The CECED Convergence Working Group has defined a new platform, called CHAIN , which defines a protocol for interconnecting different home appliances in a single multibrand system....

  • Java Management Extensions
    Java Management Extensions
    Java Management Extensions is a Java technology that supplies tools for managing and monitoring applications, system objects, devices and service oriented networks. Those resources are represented by objects called MBeans...


Projects using OSGi

  • Apache Aries
    Apache Aries
    Apache Aries, a Blueprint Container implementations and extensions of application-focused specifications defined by OSGi Enterprise Expert Group...

     - Blueprint Container implementations and extensions of application-focused specifications defined by OSGi Enterprise Expert Group.
  • Apache Karaf - an OSGi based runtime that provides a lightweight container onto which various components and applications can be deployed.
  • Apache Felix - an implementation of the OSGi R4 Service Platform and other OSGi-related technologies
  • Apache Sling
    Apache Sling
    Apache Sling is an open source Web framework for the Java platform designed to create content-centric applications on top of a JSR-170-compliant content repository such as Apache Jackrabbit. Apache Sling allows developers to deploy their application components as OSGi bundles or as scripts and...

     - OSGi-based applications layer for JCR
    Content repository API for Java
    Content Repository API for Java is a specification for a Java platform application programming interface to access content repositories in a uniform manner. The content repositories are used in content management systems to keep the content data and also the metadata used in content management...

     content repositories
  • Business Intelligence and Reporting Tools (BIRT) Project
    BIRT Project
    The Business Intelligence and Reporting Tools Project is an open source software project that provides reporting and business intelligence capabilities for rich client and web applications, especially those based on Java and Java EE...

     - Open source reporting engine
  • DataNucleus
    DataNucleus
    DataNucleus is an open source project which provides a series of software products around data management in Java....

     - open source data services and persistence platform in service oriented architectures
  • EasyBeans
    EasyBeans
    EasyBeans is an open-source Enterprise JavaBeans 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....

     - open source EJB 3 container
  • Eclipse
    Eclipse (software)
    Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...

     - open source IDE and rich client platform
  • Paremus Service Fabric - an autonomic OSGi based private Cloud runtime that supports BluePrint, Declarative Services & Scala based applications.
  • Eclipse Virgo
    SpringSource dm Server
    SpringSource dm Server is an open source, OSGi-based, Java application server developed by SpringSource, now a division of VMware. SpringSource dm Server supports the deployment of OSGi bundles and unmodified Java web applications as well as OSGi-influenced Shared Libraries WARs and Shared Services...

     - open source microkernel-based server constructed of OSGi bundles and supporting OSGi applications
  • Event Insight - SAP BusinessObjects complex event processing sdn
  • GlassFish
    GlassFish
    GlassFish is an open source application server project started by Sun Microsystems for the Java EE platform and now sponsored by Oracle Corporation. The supported version is called Oracle GlassFish Server...

     (v3) - application server for Java EE
  • Fuse ESB
    FUSE ESB
    Fuse ESB is an open source integration platform based on Apache ServiceMix that supports JBI and OSGi for use in enterprise IT organizations. It is certified, productized and fully supported by the people who wrote the code...

     - a productized and supported release of ServiceMix 4.
  • GX WebManager Community Edition
    GX WebManager Community Edition
    GX WebManager Community Edition is a proprietary content management system with which developers get access to a web content management system platform including a software development kit ....

     - An Enterprise Web Content Management System based on OSGi, spring and JCR
  • JBoss
    JBoss
    JBoss Application Server is an open-source Java EE-based application server. An important distinction for this class of software is that it not only implements a server that runs on Java, but it actually implements the Java EE part of Java...

     - Red Hat's JBoss Application Server
  • JOnAS
    JOnAS
    JOnAS is an open-source implementation of the Java EE application server specification, developed and hosted by the ObjectWeb consortium ....

     5 - open source Java EE 5 application server
  • JOSSO
    JOSSO
    Java Open Single Sign On is a single sign-on solution for web applications. It is an open source Java EE based software for user authentication and authorization...

     2 - Atricore's open source standards-based Identity and Access Management Platform
  • Netbeans
    NetBeans
    NetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment for developing with Java, JavaScript, PHP, Python, Groovy, C, C++, Scala, Clojure, and others...

     - open source IDE and rich client platform
  • Nuxeo
    Nuxeo
    Nuxeo delivers an open source document management application built with a complete, modular and extensible open source platform for enterprise content management. Other packaged applications built with the platform provide solutions for digital asset management and case management...

     - open source ECM
    Enterprise content management
    Enterprise Content Management is a formalized means of organizing and storing an organization's documents, and other content, that relate to the organization's processes...

     Service Platform
  • OpenEJB - open source OSGi-enabled EJB 3.0 container that can be run both in standalone or embedded mode
  • SpringSource dm Server
    SpringSource dm Server
    SpringSource dm Server is an open source, OSGi-based, Java application server developed by SpringSource, now a division of VMware. SpringSource dm Server supports the deployment of OSGi bundles and unmodified Java web applications as well as OSGi-influenced Shared Libraries WARs and Shared Services...

     - open source microkernel-based server constructed of OSGi bundles and supporting OSGi applications
  • Weblogic - Oracle Weblogic Application Server
  • WebSphere
    WebSphere
    IBM WebSphere refers to a brand of computer software products in the genre of enterprise software known as "application and integration middleware". These software products are used by end-users to create applications and integrate applications with other applications...

     - IBM Websphere JEE Application Server
  • WSO2 Carbon
    WSO2 Carbon
    WSO2 Carbon is based on Java OSGi technology which allows components to be dynamically installed, started, stopped, updated, and uninstalled, as well as eliminating component version conflicts...

     - Base platform for WSO2’s enterprise-grade Open source middleware stack.
  • Atlassian Confluence - the plug-in architecture for this enterprise wiki package uses OSGi

See also

  • Apache Felix
  • Concierge OSGi
    Concierge OSGi
    Concierge is an OSGi R3 framework implementation intended for resource-constrained devices like mobile and embedded systems.- External links :**...

  • Equinox
    Equinox OSGi
    Equinox is an Eclipse project that provides a certified implementation of the OSGi R4.x core framework specification. As such, Equinox is a module runtime that allows developers to implement an application as a set of "bundles" using common services and infrastructure.Equinox started as a project...

  • Knopflerfish
    Knopflerfish
    Knopflerfish is a non-profit organization, developing OSGi related material. The project provides easy to use open source certified implementation of the OSGi R4 v4.2 core framework specification , as well as related build tools and applications...

  • OSGi Specification Implementations
    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 the OSGi Alliance and published in OSGi specification documents such as the Core and Compendium specifications. These specifications contain chapters each of...

  • OSGi-Tooling
    OSGi-Tooling
    The OSGi framework is a standardized module system and service platform for the Java programming language. Though standard Java tools can be used to develop OSGi bundles, this development is improved with dedicated tooling. This page collects the different tools that are available in closed or open...

     tooling page on OSGi
  • ProSyst
    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...

    mBS

External links


Guidance and information exchange

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK