stringtranslate.com

OSGi

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) ).

Descripción

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.

Proceso de 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.

Arquitectura

Arquitectura de puerta de enlace de servicios 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:

Paquetes
Los paquetes son componentes JAR normales con encabezados de manifiesto adicionales.
Servicios
La capa de servicios conecta paquetes de forma dinámica ofreciendo un modelo de publicación-búsqueda-vinculación para interfaces Java tradicionales ( POJI ) u objetos Java tradicionales (POJO).
Registro de Servicios
La interfaz de programación de aplicaciones para servicios de gestión.
Ciclo vital
La interfaz de programación de aplicaciones para la gestión del ciclo de vida (instalación, inicio, detención, actualización y desinstalación) de paquetes.
Módulos
La capa que define la encapsulación y la declaración de dependencias (cómo un paquete puede importar y exportar código).
Seguridad
La capa que maneja los aspectos de seguridad limitando la funcionalidad del paquete a capacidades predefinidas.
Entorno de ejecución
Define qué métodos y clases están disponibles en una plataforma específica. No existe una lista fija de entornos de ejecución, ya que está sujeta a cambios a medida que el Proceso de la Comunidad Java crea nuevas versiones y ediciones de Java. Sin embargo, actualmente la mayoría de las implementaciones de OSGi admiten el siguiente conjunto:

Paquetes

Clasificación: OSGi

Un paquete es un grupo de clases Java y recursos adicionales equipados con un MANIFEST.MFarchivo 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.MFarchivo 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]

  1. Bundle-Name: define un nombre legible para humanos para este paquete. Simplemente asigna un nombre corto al paquete.
  2. Bundle-SymbolicName: el único encabezado requerido, esta entrada especifica un identificador único para un paquete, basado en la convención de nombre de dominio inverso (utilizada también por los paquetes Java ).
  3. Descripción del paquete: una descripción de la funcionalidad del paquete.
  4. Bundle-ManifestVersion: indica la especificación OSGi que se utilizará para leer este paquete.
  5. Bundle-Version: Designa un número de versión para el paquete.
  6. Bundle-Activator: Indica el nombre de la clase que se invocará una vez que se activa un paquete.
  7. Export-Package: expresa qué paquetes Java contenidos en un paquete estarán disponibles para el mundo exterior.
  8. Import-Package: Indica qué paquetes Java serán necesarios desde el mundo exterior para cumplir con las dependencias necesarias en un paquete.

Ciclo vital

Ciclo de vida del paquete OSGi

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 BundleActivatorinterfaz:

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 ; } }        

Servicios

Servicios estándar

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:

Organización

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 ) 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 ).

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.

Versiones de especificaciones

Normas relacionadas

Proyectos que utilizan OSGi

Implementaciones del marco actual

Referencias

  1. ^ "OSGi Alliance | Especificaciones / Página de inicio". osgi.org . 2020 . Consultado el 3 de octubre de 2022 .
  2. ^ Grupo de trabajo OSGi. "¿Qué es OSGi? | La Fundación Eclipse". Grupo de trabajo OSGi . Consultado el 8 de noviembre de 2023 . {{cite web}}: |last=tiene nombre genérico ( ayuda )
  3. ^ Tyson, Matthew (13 de agosto de 2020). "¿Qué es OSGi? Un enfoque diferente a la modularidad de Java". InfoWorld . Consultado el 8 de noviembre de 2023 .
  4. ^ Hargrave, BJ "Anuncio de transición a la Fundación Eclipse".
  5. ^ "Licencia de especificación OSGi". Archivado desde el original el 14 de septiembre de 2015. Consultado el 10 de mayo de 2012 .
  6. ^ "OSGi Alliance | Mercados / Certificados". Archivado desde el original el 25 de septiembre de 2008. Consultado el 23 de junio de 2017 .
  7. ^ Creación de paquetes OSGi por Costin Leau
  8. ^ "OSGi Alliance | Acerca de / Miembros".
  9. ^ Hargrave, BJ "OSGi Core Release 8 ya es final y está publicado".
  10. ^ "Forrester nombra líderes en gestión de contenido web". CMSWire. 16 de noviembre de 2018. Consultado el 5 de diciembre de 2018 .
  11. ^ "Adempiere Branch_GlobalQSS_361". adempiere.com/ . Consultado el 27 de septiembre de 2014 .

Lectura adicional

Enlaces externos