OSGi | |
---|---|
Tipo de organización | framework , software libre y organización de estándares [d] |
Base | |
fecha de fundación | mayo de 2000 [1] [2] |
Sitio web | osgi.org _ |
Archivos multimedia en Wikimedia Commons |
OSGi Alliance , anteriormente conocida como la iniciativa Open Services Gateway (iniciativa de acceso a servicios abiertos) es una organización de estándares abiertos (Open Standards Development Organization - SDO). Durante los últimos años, ha estado desarrollando una plataforma de servicios OSGi basada en Java (también conocida como el sistema de módulos dinámicos para Java) que se puede administrar de forma remota. La parte principal de este desarrollo es un marco (framework), que define el modelo de ciclo de vida de la aplicación y el registro del servicio.
OSGi (Open Services Gateway Initiative) es una especificación para un sistema modular dinámico y una plataforma de servicios para aplicaciones Java , desarrollado por el consorcio OSGi Alliance. Las especificaciones proporcionan un modelo para crear una aplicación a partir de componentes vinculados entre sí a través de servicios [3] . El resultado final es la capacidad de reinstalar dinámicamente los componentes y componentes de la aplicación sin tener que detenerla y reiniciarla.
La gama de aplicaciones de esta especificación es bastante amplia: originalmente se desarrolló para crear sistemas integrados (en particular, para automóviles BMW , Siemens también participa activamente en el desarrollo de la especificación ), pero ahora son aplicaciones de escritorio independientes multifuncionales (por ejemplo, Eclipse SDK) y los sistemas corporativos se están construyendo en base a OSGi .
Sobre la base de este marco, se han creado una gran cantidad de servicios OSGi:
|
|
Hay 4 implementaciones de código abierto del estándar OSGi:
Basado en Equinox, se construye el entorno de desarrollo Eclipse 3.0+, que afirma ser el estándar de la industria para el ensamblaje de componentes de programas.
El proceso del ciclo de vida agrega paquetes que se pueden instalar, iniciar, detener, actualizar y eliminar dinámicamente. Los paquetes se basan en el nivel del módulo para la carga de clases, pero agregan una API para administrar los módulos en tiempo de ejecución. La capa del ciclo de vida representa dinámicas que normalmente no forman parte de la aplicación. Se utilizan amplios mecanismos de dependencia para garantizar que el entorno funcione correctamente. Las operaciones del ciclo de vida están completamente protegidas por la arquitectura de seguridad.
Estado del paquete | Descripción |
---|---|
INSTALADO | Paquete instalado correctamente |
RESUELTO | Todas las clases de Java necesarias para el paquete están disponibles. Este estado indica que el paquete está listo para ejecutarse o detenido. |
COMENZANDO | El paquete se inicia, se llama al método BundleActivator.start , pero el método de inicio aún no ha regresado. Cuando un paquete tiene una política de activación, el paquete permanecerá en el estado INICIANDO hasta que el paquete se active de acuerdo con su política de activación. |
ACTIVO | El paquete se ha activado y lanzado con éxito; Su método de inicio Bundle Activator fue llamado y devuelto. |
PARADA | El paquete ha sido detenido. Se llama al método BundleActivator.stop , pero el método de detención aún no ha devuelto un resultado. |
DESINSTALADO | El paquete ha sido eliminado. No puede mudarse a otro estado. |
El siguiente es un ejemplo de una clase típica de Java que implementa la interfaz BundleActivator :
paquete org.wikipedia ; importar org.osgi.framework.BundleActivator ; importar org.osgi.framework.BundleContext ; Activador de clase pública implementa BundleActivator { contexto de BundleContext privado ; @Override public void start ( contexto BundleContext ) arroja una excepción { System . fuera _ println ( "Iniciando: Hola Mundo" ); esto _ contexto = contexto ; } @Override public void stop ( contexto BundleContext ) arroja una excepción { System . fuera _ println ( "Parando: Adiós Mundo Cruel" ); esto _ contexto = nulo ; } }OSGi | |
---|---|
|