OSGi – RunTime software evolution
OSGi Technology is rapidly becoming the foundation of many small, large, simple, and complex systems.
By providing a dynamic component model for applications as well as infra-structure it creates a universal middleware layer that enforces good software practices from development to after market upgrades.
Large scale adoption of OSGi has the chance to alter our industry.
Peter Kriens, who has been involved with the design of the OSGi specifications since 1998, will explain what OSGi really is and where we are heading to.
Frameworks that implement the OSGi standard provide 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:
- Module – encapsulation and declaration of dependencies
- Life Cycle – API for life cycle management
- Service Registry – providing functionality to other bundles
- Security layer – limit bundle functionality to pre-defined capabilities
The Framework implements a complete and dynamic component model, something that is missing 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 cars, industrial automation, building automation, PDAs, grid computing, entertainment (e.g. iPronto), fleet management and application servers.