OSGi
OSGi Alliance,conocida formalmente como Open Services Gateway initiative,[1] es un conjunto de estándares abiertos creado en marzo de 1999 cuyo objetivo es definir las especificaciones abiertas de software que permitan diseñar plataformas compatibles que puedan proporcionar múltiples servicios. Aunque OSGi define su propia arquitectura, ha sido pensada para su compatibilidad con Jni o Universal Plug and Play (UPnP). La arquitectura de OSGi posee dos elementos fundamentales de los cuales el Service Platform está situado en la red local y conectada al proveedor de servicios a través de una pasarela en la red del operador. Este elemento será el responsable de permitir la interacción entre dispositivos o redes de dispositivos que podrían utilizar distintas tecnologías para comunicarse. La especificación de OSGi se ha definido con una serie de interfaces de programación de aplicaciones (API) básicas para el desarrollo de servicios, como los de logging, servidor web (HTTP) y el Device Access Specification (DAS), que permite descubrir los dispositivos y servicios ofrecidos por estos. Las especificaciones OSGi han evolucionado más allá de los propósitos originales de pasarela de servicios, y actualmente se utilizan en un amplio abanico de aplicaciones desde telefonía móvil hasta el entorno de programación Eclipse. Otras áreas de aplicación incluyen automoviles, automatización industrial, Inmótica, PDAs, computación en malla, entretenimiento, gestión de flotas y servidor de aplicaciones. Proceso de especificaciónEl proceso de especificación OSGi fue desarrollado por los miembros de un proceso abierto y se dispuso que sea libre de cargos al público bajo la "Licencia de Especificación OSGi".[2] OSGi Alliance tiene un programa de cumplimiento normativo que es solo abierto a sus miembros. Desde noviembre de 2010, hay siete implementaciones certificadas del framework OSGi.[3] ArquitecturaOSGi es un framework de Java para desarrollar y desplegar módulos de software. Cada bundle es un conjunto acoplado, una colección que de clases, jars, y archivos de configuración que se pueden cargar dinámicamente, en las cuales se declara explícitamente sus dependencias externas, si es necesario. El framework está dividido conceptualmente en las siguientes partes:
BundlesUn bundle es un conjunto de clases Java y de recursos adicionales que incluye el agregado de un archivo manifiesto detallado El siguiente ejemplo es el código de un archivo Bundle-Name: Hola Mundo
Bundle-SymbolicName: org.wikipedia.holamundo
Bundle-Description: Un bundle Hola Mundo
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"
El ejemplo detalla lo siguiente :[4]
Ciclo de vidaUna capa de Ciclo de Vida agrega bundles las cuales pueden dinámicamente ser instaladas, iniciadas, finalizadas, actualizadas y desinstaladas. Los bundles están sobre la capa del módulo para cargar la clase pero agrega una API para administrar los módulos en tiempo de ejecución. La capa de ciclo de vida introduce una dinámica que normalmente no es parte de una aplicación. Usa mecanismos de dependencia extensiva para asegurar el correcto funcionamiento del ambiente. Las operaciones del ciclo de vida están protegidas completamente con una arquitectura de seguridad.
El siguiente ejemplo es una clase Java títpica que implemeta el código de una interfaz de package org.wikipedia;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
private BundleContext context;
@Override
public void start(BundleContext context) throws Exception {
System.out.println("Starting: Hello World");
this.context = context;
}
@Override
public void stop(BundleContext context) throws Exception {
System.out.println("Stopping: Goodbye Cruel World");
this.context = null;
}
}
Implementaciones actuales del framework OSGi
Versiones de la especificación
Véase tambiénReferencias
Bibliografía
Enlaces externos
|