OSGi es un proyecto de código abierto y especificación abierta bajo la Fundación Eclipse . [2]
Se trata de una continuación del trabajo realizado por la OSGi Alliance (antes conocida como la iniciativa Open Services Gateway ), que era una organización de estándares abiertos para software fundada en marzo de 1999. La fundación especificó y mantuvo originalmente el estándar OSGi . La alianza transfirió su trabajo a la Fundación Eclipse a finales de 2020. [3]
La especificación OSGi describe un sistema modular y una plataforma de servicios para el lenguaje de programación Java que implementa un modelo de componentes completo y dinámico , algo que no existe en entornos independientes de Java o VM . Tiene una arquitectura orientada a servicios basada en microservicios, cada uno implementado como un archivo de clase Java extendido ( JAR (formato de archivo) ).
OSGi está construido en torno a una arquitectura orientada a servicios . Las aplicaciones o componentes, que vienen en forma de paquetes para su implementación , se pueden instalar, iniciar, detener, actualizar y desinstalar de forma remota sin necesidad de reiniciar . La gestión de paquetes / clases de Java se especifica con gran detalle. La gestión del ciclo de vida de las aplicaciones se implementa a través de API que permiten la descarga remota de políticas de gestión. El registro de servicios permite que los paquetes detecten la adición de nuevos servicios o la eliminación de servicios y se adapten en consecuencia.
Las especificaciones OSGi han evolucionado más allá del enfoque original de las pasarelas de servicios y ahora se utilizan en aplicaciones que van desde teléfonos móviles hasta el entorno de desarrollo integrado (IDE) Eclipse de código abierto . Otras áreas de aplicación incluyen automóviles , automatización industrial , automatización de edificios , PDA , computación en red , entretenimiento , gestión de flotas y servidores de aplicaciones .
En octubre de 2020, la OSGi Alliance anunció la transición del esfuerzo de estandarización a la Fundación Eclipse, tras lo cual cerraría. [4] Todos los artefactos se han transferido a la Fundación Eclipse, donde un "Grupo de trabajo OSGi" continúa manteniendo y desarrollando la especificación.
La especificación OSGi es desarrollada por los miembros en un proceso abierto y se pone a disposición del público de forma gratuita bajo la Licencia de Especificación OSGi. [5] La OSGi Alliance tiene un programa de cumplimiento que está abierto únicamente a los miembros. A partir de noviembre de 2010, existen siete implementaciones de marcos OSGi certificadas . [6] Una página separada enumera las Implementaciones de Especificaciones OSGi certificadas y no certificadas , que incluyen marcos OSGi y otras especificaciones OSGi.
OSGi es un marco de trabajo Java para desarrollar e implementar programas y bibliotecas de software modulares. Cada paquete es una colección de clases, jar y archivos de configuración estrechamente acoplados y cargables de forma dinámica que declaran explícitamente sus dependencias externas (si las hay).
El marco se divide conceptualmente en las siguientes áreas:
Un paquete es un grupo de clases Java y recursos adicionales equipados con un MANIFEST.MF
archivo de manifiesto detallado sobre todo su contenido, así como servicios adicionales necesarios para dar al grupo de clases Java incluido comportamientos más sofisticados, hasta el punto de considerar todo el agregado como un componente.
A continuación se muestra un ejemplo de un MANIFEST.MF
archivo típico con encabezados OSGi:
Nombre del paquete : Hola mundo Nombre simbólico del paquete : org.wikipedia.helloworld Descripción del paquete : Un paquete de Hola mundo Versión del manifiesto del paquete : 2 Versión del paquete : 1.0.0 Activador de paquetes : org.wikipedia.Activator Paquete de exportación : org.wikipedia.helloworld;version="1.0.0" Paquete de importación : org.osgi.framework;version="1.3.0"
El significado del contenido del ejemplo es el siguiente: [7]
Una capa de ciclo de vida agrega paquetes que se pueden instalar, iniciar, detener, actualizar y desinstalar dinámicamente. Los paquetes dependen de la capa de módulo para la carga de clases, pero agregan una API para administrar los módulos en tiempo de ejecución. La capa de ciclo de vida introduce dinámicas que normalmente no son parte de una aplicación. Se utilizan mecanismos de dependencia extensivos para garantizar el funcionamiento correcto del entorno. Las operaciones de ciclo de vida están completamente protegidas con la arquitectura de seguridad.
A continuación se muestra un ejemplo de una clase Java típica que implementa la BundleActivator
interfaz:
paquete org.wikipedia ; importar org.osgi.framework.BundleActivator ; importar org.osgi.framework.BundleContext ; La clase pública Activator implementa BundleActivator { contexto privado BundleContext ; @Override public void start ( BundleContext context ) lanza una excepción { System . println ( "Iniciando: Hola mundo" ) ; this . context = context ; } @Override public void stop ( BundleContext context ) lanza una excepción { System . println ( " Deteniendo : Adiós mundo cruel" ) ; this . context = null ; } }
La OSGi Alliance ha especificado muchos servicios. Los servicios se especifican mediante una interfaz Java . Los paquetes pueden implementar esta interfaz y registrar el servicio en el Registro de servicios. Los clientes del servicio pueden encontrarlo en el registro o reaccionar ante él cuando aparece o desaparece.
La siguiente tabla muestra una descripción de los servicios del sistema OSGi:
La siguiente tabla muestra una descripción de los servicios del protocolo OSGi:
La siguiente tabla muestra una descripción de los servicios varios de OSGi:
La OSGi Alliance fue fundada por Ericsson , IBM , Motorola , Sun Microsystems y otros en marzo de 1999. Antes de constituirse como una corporación sin fines de lucro, se llamaba Connected Alliance.
Entre sus miembros se encuentran (a febrero de 2015 [update]) más de 35 empresas de áreas de negocio muy diferentes, por ejemplo, Adobe Systems , Deutsche Telekom , Hitachi , IBM , Liferay , Makewave, NEC , NTT , Oracle , Orange SA , ProSyst , Salesforce , Siemens , Software AG y TIBCO Software . [8]
La Alianza cuenta con una junta directiva que se encarga de la gobernanza general de la organización. Los funcionarios de OSGi tienen diversas funciones y responsabilidades en el apoyo a la alianza. El trabajo técnico se lleva a cabo en el marco de grupos de expertos (EG) autorizados por la junta directiva, y el trabajo no técnico se lleva a cabo en varios grupos de trabajo y comités. El trabajo técnico que se lleva a cabo en los grupos de expertos incluye el desarrollo de especificaciones, implementaciones de referencia y pruebas de cumplimiento. Estos grupos de expertos han producido cinco versiones principales de las especificaciones de OSGi (hasta 2012 [update]).
Existen grupos de expertos dedicados para las áreas empresarial, móvil, de vehículos y de plataformas centrales.
El Enterprise Expert Group (EEG) es el grupo de expertos más nuevo y se ocupa de las aplicaciones empresariales y del lado del servidor. En noviembre de 2007, el Residential Expert Group (REG) comenzó a trabajar en especificaciones para gestionar de forma remota los gateways residenciales y domésticos. En octubre de 2003, Nokia , Motorola , IBM , ProSyst y otros miembros de OSGi formaron un Mobile Expert Group (MEG) que especificará una plataforma de servicio basada en MIDP para la próxima generación de teléfonos móviles inteligentes, abordando algunas de las necesidades que el CLDC no puede gestionar, aparte de CDC . MEG pasó a formar parte de OSGi al igual que con R4.
{{cite web}}
: |last=
tiene nombre genérico ( ayuda )