|OSGi Service Platform|
|Publishing year||May 2000|
|License||OSGi Specification License|
The OSGi Alliance (formerly Open Services Gateway initiative ) specifies a hardware-independent dynamic software platform that makes it easier to modularize and manage applications and their services using a component model (“bundle” / “service”) (“service registry”). The OSGi platform requires a Java Virtual Machine (JVM) and offers the OSGi framework based on it.
There are now different generations of OSGi, all of which were specified by the OSGi Alliance, an industry consortium . The alliance consists of large companies such as IBM , Deutsche Telekom , NTT and Oracle , but also many smaller companies, among others. A. from the open source software area (OSS area). The jointly defined OSGi standard is therefore open to all interested parties, and there is also a correspondingly liberal patent law.
The OSGi Alliance itself only specifies the programming interfaces (APIs) and test cases for third-party OSGi implementations and also provides a reference implementation as part of this. This is not intended for productive use, but only serves as a template for commercial and OSS alternatives.
The generic OSGi software platform, which is manufacturer-independent as a result, can be used to control or network all types of devices - e.g. B. in the automotive industry , in cell phones, in building automation , for intelligent remote control of household appliances or in the area of "assisted living". The gateway principle plays a particularly important role in the home. H. Here, an OSGi framework is often not installed directly on the respective devices, but on so-called residential gateways - they can be understood as an embedded system that (comparable to a DSL router ) gives individual devices access to certain services or the abstract ones from outside Allows access to certain devices. OSGi frameworks are used differently in cars and mobile phones - here they run directly on the powerful embedded hardware without an additional gateway.
The specification of the OSGi Service Platform defines a Java -based runtime environment above the JVM and its basic services. An important feature of the service platform is the possibility of dynamically and controlled service applications (so-called bundles) to be loaded during runtime and - above all - to be updated and removed again. The model of the OSGi service platform enables various largely independent and modular applications to run in parallel in the same virtual machine and to (remotely) administer and update them during the entire life cycle of the application. Dependencies between bundles are automatically resolved and an intelligent version management is available.
The individual implementations of the respective manufacturers mostly consist of the OSGi framework and ideally a large number of service bundles (packages) that can also be added dynamically due to the modular architecture.
Definition: OSGi framework
An OSGi framework is an open, modular and scalable “Service Delivery Platform” based on Java. It is a component model with a component registry (= "service registry"). The "service" term, which is often used in the OSGi context, hardly goes beyond the general "interface" term of a component.
While service-oriented architectures as a paradigm for company-wide structuring of system landscapes require location transparency and access transparency, the possibilities for programming distributed systems are not an integral part of the OSGi framework, which has its origin in embedded systems. In the OSGi framework, the focus is on the component (= "bundle"), which publishes its interface (= "service") via the registry (= "service registry") locally on the JVM and supports re / deployment over the component lifecycle. Nevertheless, it is ultimately possible to use the OSGi framework as the underlying component model of an SOA in a Java environment.
As a software base platform for embedded devices, it enables the networking of intelligent end devices through subsequent delivery and installation of web services during runtime. This includes the task of classic remote control , remote diagnosis and maintenance of these devices. Furthermore, the distribution of information and multimedia entertainment content to these devices is made possible via suitable protocols.
In its form as an application container in the enterprise area, it enables the implementation of an SOA platform via its corresponding fine-grained service-based Java specifications. The applications running on the individual clients can also be administered via remote management using suitable protocols.
OSGi in the JCP
OSGi was adopted in 2007 as “ JSR- 291: Dynamic Component Support for Java SE” as part of the Java Community Process (JCP) as the official dynamic component model for Java - alongside “JSR 232: Mobile Operational Management”, which is based on mobile environments under Java ME refers. JSR-232 (or JSR-232, 246, 248/9) corresponds to the R4 Mobile Specification (MEG) and JSR-291 corresponds to OSGi R4.1. Furthermore, there are content-related points of contact with JSR-277 and JSR-294.
OSGi is typically used in vehicles ( telematics ), mobile end devices (cell phones, PDAs ) and in home networking ( residential gateways , routers ) - there in turn in the areas of smart grids , assisted living or building management ( facility management ). In addition, it is also used in industrial automation solutions or completely different types of embedded systems ( aviation , parking systems, etc.), often in conjunction with suitable remote management solutions.
One of the newer applications of OSGi is the integrated development environment (IDE) Eclipse where OSGi in the form of Equinox - framework acts as a more desktop-and enterprise-oriented platform, while the relatively new Rich Client (RCP) operated paradigm. Eclipse was originally developed by OSGi member IBM - Eclipse is now open source ( OSS ), and plugins for Eclipse are (from version 3) OSGi bundles. Eclipse itself is thus an example of an enterprise application from OSGi that goes beyond the original embedded orientation - this also has an impact on the further development of the specification.
In addition, OSGi is also used today for the modularization of Java (J2EE) based application servers, where it serves as the basis for more complex frameworks.
Through various activities in the Java Community Process (JSR-232, 246 and 248/9), which are in charge and a. were controlled by Nokia and Motorola, OSGi also found its way into cell phones as part of a "Mobile Service Architecture" (MSA). For this purpose, it was specially adapted for the requirements in these environments and integrated with standards such as OMA-DM . However, this development has been outdated in this form since Android and HTML5.
In the broadband area, many products already combine a client-side OSGi framework (possibly with an integrated TR-069 client) with an OSGi remote management server (or a conventional TR-069 ACS) to enable remote configuration and administration of high-bandwidth end-user equipment ( e.g. DSL routers, set-top boxes, smart meter gateways, smart home gateways, energy management gateways etc.) and, on the other hand, the management of local apps to combine in a holistic end-to-end solution. As an alternative protocol for the telematics area, the same applies to OMA-DM- based solutions.
Through the standardization as a generic Java extension (JSR-291) on the one hand and through the cooperation with the HGI (Home Gateway Initiative) , further new applications in the embedded environment are to be expected. The enterprise rail, in turn, is served by increased interest from the providers of application servers and the RCP / Eclipse environment.
The OSGi website lists numerous other application examples.
Classification: OSGi & system layers
- The figure shows the layer structure of a typical OSGi architecture.
- In this context, server usually means a classic embedded system, not necessarily an enterprise server or desktop client (RCP) - although OSGi is also developing in this direction, see Eclipse and Equinox .
The OSGi Alliance was founded in 1999. More than 100 companies from different industries belong to it. These industries are served within the organization by various working groups, so-called "expert groups", which all contribute to the further specification of the standard and thereby help the standard to be used across industries. When it comes to membership , a distinction is made between “full members”, “adopters” and “supporters”.
The alliance is headed by a Board of Directors , which is elected annually by its full members. In addition to the company representatives who are elected as “directors”, there are so-called “officers” who take on certain tasks within the board of directors and who work for the board of directors.
On the commercial level, in various committees ( Committee worked), while technical questions - are driven by the various working groups - such as the development of the specification of Release 1 2 and 3 to version 4th There are currently (as of January 2008) expert groups for the areas of Residential , Enterprise , Mobile , Vehicle and Core Platform .
Board of Directors
Composition of the "Board of Directors" in alphabetical order (according to represented companies) (as of October 2019):
- Carsten Ziegeler, Adobe Inc.
- Kai Hackbarth, Bosch Software Innovations
- Dan Bandera, IBM Corporation
- Ray eye, Liferay
- Hiroyuki Maeomichi, NTT
- Tim Ward, Paremus
- Prasad Yendluri, Software AG
- 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
- Core extensions (R4 Compendium): October 2005
- Mobile Specification (R4 Mobile / JSR-232): September 2006
- OSGi Release 4.1 (R4.1): May 2007
- OSGi Release 4.2 (R4.2): September 2009 / March 2010
- Core specification (R4.2 Core): September 2009
- Core extensions (R4.2 Compendium): September 2009
- Enterprise enhancements (R4.2 Enterprise): March 2010
- OSGi Release 4.3 (R4.3): April 2011
- Core specification (R4.3 Core): April 2011
- Core extensions (R4.3 Compendium): May 2012
- Residential Specification (R4.3 Residential): May 2012
- OSGi Release 5 (R5): June 2012
- Core specification (R5 Core): March 2012
- Enterprise extensions (R5 Enterprise): March 2012
- OSGi Release 6 (R6): June 2014
- Core specification (R6 Core): June 2014
- OSGi Release 7 (R7)
- Compendium Release 7 Specifications: April 25, 2018
The reference implementation of the OSGi Alliance is not intended for productive use, but only serves as a template for other implementations.
Productive OSGi frameworks are available from various providers, on the one hand as free, freely available open source solutions, on the other hand as commercial products. Both variants have advantages and disadvantages.
Commercial or closed source OSGi frameworks
Commercial or closed source frameworks are usually certified, more application-oriented (or optimized to that effect) and, in addition to the actual framework, usually contain other optional software packages - the latter often form the basis for customer-specific commissioned work, which can also be integrated into application-related optimized frameworks - Variants can be reflected (e.g. for the mobile area). The extent to which the unavailability of the source code has disadvantages here has to be weighted differently in individual cases, especially since access is often made possible by means of confidentiality agreements.
Commercial R4 certified OSGi service platforms (frameworks) are as follows (as of February 2010):
- ProSyst software mBedded Server
- Makewave Knopflerfish Pro
- Samsung OSGi R4 Solution
- HitachiSoft SuperJ Engine Framework
- KT OSGi Service Platform (KOSP)
Open source OSGi frameworks
Open source frameworks are usually less application-oriented - or, on the contrary, are strongly focused on a certain application (see Equinox) and / or dominated by a single company that decoupled its previous commercial product in this way or from the beginning as Maintains OSS product. In some cases, upgraded OSS solutions are also sold commercially. The extent to which the source code availability offers advantages here has to be weighted differently in each individual case.
List of OSS OSGi frameworks:
- Equinox - powered by Eclipse (Enterprise)
- mBedded Server Equinox Edition - OSS product from ProSyst based on the Equinox framework from Eclipse (supplemented with additional features)
- Oscar - originally an academic project, is now being further developed as Apache Felix
- Apache Felix - Community project of the Apache Software Foundation
- Knopflerfish - originally a commercial embedded product from Gatespace
- Concierge - lightweight OSGi implementation for mobile and embedded systems
- Jadabs - rudimentary approach, quote: "A dynamic lightweight container for small devices in a distributed environment"
- Native OSGi implementation in C / C ++
Enterprise / Application Server
- Spring Dynamic Modules - by Spring Source (today: Pivotal), is now being continued as Gemini Blueprint by Eclipse
- Gemini Blueprint - by Eclipse
- JOnAS - from Bull, OW2
- WebSphere Application Server - from IBM, via JSR-291, as a Feature Pack for OSGi Applications
- WebSphere Application Server Community Edition free license. - from IBM, via JSR-291, as a Feature Pack for OSGi Applications
- BEA WebLogic - from BEA, via microService Architecture, has now been taken over by Oracle
- Glassfish - by Sun, later acquired by Oracle, now Eclipse Foundation
- WildFly - from JBoss or Red Hat
- Eclipse - generic IDE from the Eclipse Foundation
- Nuxeo Enterprise Platform - Content Management System
Relevant RFCs and Java standards
- OSGi Service Platform, Release 3 (2003) . IOS Press, Amsterdam 2004, ISBN 1-58603-311-5 (English).
- Bernd Weber, Patrick Baumgartner, Oliver Braun: OSGi for practitioners: principles, tools and practical instructions on the way to the "small SOA". Hanser Verlag, 2010, ISBN 978-3-446-42094-6 .
- Gerd Wütherich, Nils Hartmann, Bernd Kolb, Matthias Lübken: The OSGi Service Platform - An introduction with Eclipse Equinox. dpunkt.verlag, 2008, ISBN 978-3-89864-457-0 .
- Christoph Schmidt-Casdorff, Thorsten Vogel OSGi introduction and overview Developer.Press, 2008, ISBN 978-3-86802-043-4
- Neil Bartlett: OSGi In Practice (DRAFT ed.) January 10, 2009, ( njbartlett.name , freely available book, in the drafting stage, with practical examples, English).
- Kirk Knoernschild Java Application Architecture: Modularity Patterns with Examples Using OSGi. (English).
- Holly Cummins, Timothy Ward Enterprise Osgi in Action: With Examples Using Apache Aries. (English), ISBN 978-1-61729-013-8 .
- Richard S. Hall, Karl Pauls, Stuart McCulloch, David Savage: OSGi in Action - Creating Modular Applications in Java. Manning, New York April 2011, ISBN 1-933988-91-6 .
- Alexandre De Castro Alves, OSGi in Depth. Manning, New York December 2011, ISBN 978-1-935182-17-7 .
- Direct specification download (R1-R6)
- OSGi Alliance Developer Site - Public Wiki & APIs
- Spring OSGi Specification - OSGi services in the Spring J2EE framework
- About the OSGi Alliance
- OSGi Blog - the official blog of the OSGi Evangelist
- Mobile OSGi Blog - Blog about OSGi in mobile devices
- The OSGi Framework - online article introducing the OSGi framework (German)
- First steps with OSGi - 4-part online article (German)
- OSGi Remote Management Remote management of devices with OSGi
- OSGi by Example (PDF; 2.6 MB)
- Native OSGi
- OSGi Drafts - draft version of the next OSGi release
Relevant RFCs and Java standards
- Sun JCP JSR-277 (Java Module System)
- Sun JCP JSR-232 (Mobile Operational Management - OSGi R4 MEG)
- Sun JCP JSR-246 (Device Management API)
- Sun JCP JSR-249 (Mobile Service Architecture for CDC)
- Sun JCP JSR-291 (Dynamic Component Support for Java SE - OSGi R4.1)