OSGi technology is a set of specifications that define a dynamic component system for Java. These specifications enable a development model where applications are (dynamically) composed of many different (reusable) components. The OSGi specifications enable components to hide their implementations from other components while communicating through services, which are objects that are specifically shared between components. This surprisingly simple model has far reaching effects for almost any aspect of the software development process.
OSGi technology has flourished in the embedded systems and network devices market. Now, thanks in part to Eclipse, OSGi is emerging as a viable and valuable technology for enterprise development.
Software components can be installed, updated, or removed on the fly without ever having to disrupt the operation of the device.
OSGi component system is actually used to build highly complex applications like IDEs (Eclipse), application servers (GlassFish, IBM Websphere, Oracle/BEA Weblogic, Jonas, JBoss), application frameworks (Spring, Guice), industrial automation, residential gateways, phones, and so much more.
What benefits does OSGi's component system provide us? Reduced Complexity, Reuse, Easy Deployment, Dynamic Updates, Adaptive, etc..
The OSGi has a layered model that is depicted in the following figure.
Bundles - Bundles are the OSGi components made by the developers.
Services - The services layer connects bundles in a dynamic way by offering a publish-find-bind model for plain old Java objects.
Services - The services layer connects bundles in a dynamic way by offering a publish-find-bind model for plain old Java objects.
Life-Cycle - The API to install, start, stop, update, and uninstall bundles.
Modules - The layer that defines how a bundle can import and export code.
Security - The layer that handles the security aspects.
Modules - The layer that defines how a bundle can import and export code.
Security - The layer that handles the security aspects.
Execution Environment - Defines what methods and classes are available in a specific platform.
Comments
Post a Comment