Articulo de referencia

OSGi

{{cite web |url= https://docs.osgi.org/specification/osgi.core/8.0.0/toc.html |title=OSGi Alliance | Specifications / HomePage |work=osgi.org |year=2020 |access-date=Octobe...

OSGi es una especificación abierta y un proyecto de código abierto bajo la Fundación Eclipse . [ 2 ]

Es una continuación del trabajo realizado por la Alianza OSGi (anteriormente conocida como la iniciativa Open Services Gateway ), que fue 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 Java o de máquinas virtuales independientes . Tiene una arquitectura orientada a servicios basada en microservicios, cada uno implementado como un archivo de clase Java extendido ( JAR ).

Descripción

OSGi se basa en una arquitectura orientada a servicios . Las aplicaciones o componentes, que se presentan como paquetes para su implementación , pueden instalarse, iniciarse, detenerse, actualizarse y desinstalarse de forma remota sin necesidad de reiniciar el sistema . La gestión de paquetes y clases Java se especifica con gran detalle. La gestión del ciclo de vida de las aplicaciones se implementa mediante API que permiten la descarga remota de políticas de gestión. El registro de servicios permite que los paquetes detecten la adición o eliminación de servicios y se adapten en consecuencia.

Las especificaciones OSGi han evolucionado más allá de su enfoque original en las pasarelas de servicio y ahora se utilizan en aplicaciones que van desde teléfonos móviles hasta el entorno de desarrollo integrado (IDE) de código abierto Eclipse . Otras áreas de aplicación incluyen automóviles , automatización industrial , automatización de edificios , PDA , computación en malla , entretenimiento , gestión de flotas y servidores de aplicaciones .

En octubre de 2020, la Alianza OSGi anunció la transición del esfuerzo de estandarización a la Fundación Eclipse, tras lo cual cerraría. [ 4 ] Todos los artefactos se transfirieron 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 Alianza OSGi cuenta con un programa de cumplimiento exclusivo para sus miembros. A noviembre de 2010, existen siete implementaciones certificadas del marco OSGi . [ 6 ] Una página aparte enumera las implementaciones de la especificación OSGi , tanto certificadas como no certificadas , que incluyen marcos OSGi y otras especificaciones OSGi.

Arquitectura

Arquitectura de puerta de enlace de servicios OSGi

OSGi es un framework de Java para el desarrollo y despliegue de programas y bibliotecas de software modulares. Cada paquete es una colección de clases, archivos JAR y archivos de configuración estrechamente acoplados y de carga dinámica que declaran explícitamente sus dependencias externas (si las hay).

El marco se divide conceptualmente en las siguientes áreas:

Paquetes
Los bundles son componentes JAR normales con encabezados de manifiesto adicionales.
Servicios
La capa de servicios conecta los paquetes de forma dinámica ofreciendo un modelo de publicación-búsqueda-enlace para interfaces Java simples ( POJI ) u objetos Java simples (POJO).
Registro de servicios
La interfaz de programación de aplicaciones para servicios de gestión.
Ciclo vital
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 gestiona 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, la mayoría de las implementaciones de OSGi admiten actualmente el siguiente conjunto:

Paquetes

Clasificación: OSGi

Un bundle es un grupo de clases Java y recursos adicionales que cuenta con un MANIFEST.MFarchivo manifiesto detallado sobre todo su contenido, así como con los servicios adicionales necesarios para dotar al grupo de clases Java incluidas de comportamientos más sofisticados, hasta el punto de considerar al conjunto completo como un componente.

A continuación se muestra un ejemplo de un MANIFEST.MFarchivo típico con encabezados OSGi:

Nombre del paquete : Hola MundoBundle-SymbolicName : org.wikipedia.helloworldDescripción del paquete : Un paquete de "Hola Mundo"Bundle-ManifestVersion : 2Versión del paquete : 1.0.0Bundle-Activator : org.wikipedia.ActivatorExport-Package : org.wikipedia.helloworld;version="1.0.0"Import-Package : 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 este paquete. Simplemente asigna un nombre corto al paquete.
  2. Bundle-SymbolicName: El único encabezado obligatorio, 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 de Java ).
  3. Descripción del paquete: Una descripción de la funcionalidad del paquete.
  4. Bundle-ManifestVersion: Indica la especificación OSGi que se debe usar para leer este paquete.
  5. Versión del paquete: Asigna un número de versión al paquete.
  6. Bundle-Activator: Indica el nombre de la clase que se invocará una vez que se active un paquete.
  7. Export-Package: Indica qué paquetes Java contenidos en un bundle estarán disponibles para el mundo exterior.
  8. Import-Package: Indica qué paquetes Java serán necesarios desde el exterior para satisfacer las dependencias necesarias en un paquete.

Ciclo vital

Ciclo de vida de los paquetes OSGi

La capa de ciclo de vida añade paquetes que pueden instalarse, iniciarse, detenerse, actualizarse y desinstalarse dinámicamente. Estos paquetes dependen de la capa de módulos para la carga de clases, pero incorporan una API para gestionar los módulos en tiempo de ejecución. La capa de ciclo de vida introduce dinámicas que normalmente no forman parte de una aplicación. Se utilizan mecanismos de dependencia exhaustivos para garantizar el correcto funcionamiento del entorno. Las operaciones del ciclo de vida están totalmente protegidas mediante la arquitectura de seguridad.

A continuación se muestra un ejemplo de una clase Java típica que implementa la BundleActivatorinterfaz:

paquete org.wikipedia ;importorg.osgi.framework.BundleActivator;importorg.osgi.framework.BundleContext;publicclassActivatorimplementsBundleActivator{privateBundleContextcontext;@Overridepublicvoidstart(BundleContextcontext)throwsException{System.out.println("Starting: Hello World");this.context=context;}@Overridepublicvoidstop(BundleContextcontext)throwsException{System.out.println("Stopping: Goodbye Cruel World");this.context=null;}}

Services

Standard services

The OSGi Alliance has specified many services. Services are specified by a Java interface. Bundles can implement this interface and register the service with the Service Registry. Clients of the service can find it in the registry, or react to it when it appears or disappears.

The table below shows a description of OSGi System Services:[8]

La siguiente tabla muestra una descripción de los servicios del protocolo OSGi:

La siguiente tabla muestra una descripción de los servicios misceláneos de OSGi:

Organización

La Alianza OSGi fue fundada por Ericsson , IBM , Motorola , Sun Microsystems y otras empresas en marzo de 1999. Antes de constituirse como corporación sin fines de lucro, se llamaba Connected Alliance.

Entre sus miembros se encuentran ( a fecha de 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 . [ 9 ]

La Alianza cuenta con una junta directiva que proporciona la gobernanza general de la organización. Los responsables de OSGi tienen diversas funciones y responsabilidades en el apoyo a la alianza. El trabajo técnico se lleva a cabo dentro de los Grupos de Expertos (GE) designados 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 realizado dentro de 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 ( a partir de 2012) .).

Existen grupos de expertos especializados en las áreas de empresa, dispositivos móviles, vehículos y plataforma central.

El Enterprise Expert Group (EEG) es el EG más reciente y se centra en aplicaciones empresariales/del lado del servidor. En noviembre de 2007, el Residential Expert Group (REG) comenzó a trabajar en especificaciones para la gestión remota de gateways residenciales/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 servicios basada en MIDP para la próxima generación de teléfonos inteligentes, abordando algunas de las necesidades que CLDC no puede gestionar , a excepción de CDC . MEG pasó a formar parte de OSGi al igual que R4.

Versiones de especificación

  • OSGi Versión 1 (R1): Mayo de 2000
  • OSGi Versión 2 (R2): Octubre de 2001
  • OSGi Versión 3 (R3): marzo de 2003
  • OSGi versión 4 (R4): octubre de 2005/septiembre de 2006
    • Especificación principal (R4 Core): octubre de 2005
    • Especificación móvil (R4 Mobile / JSR-232): septiembre de 2006
  • Versión OSGi 4.1 (R4.1): mayo de 2007 (también conocido como JSR-291)
  • OSGi versión 4.2 (R4.2): septiembre de 2009
    • Especificación empresarial (R4.2): marzo de 2010
  • OSGi versión 4.3 (R4.3): abril de 2011
    • Núcleo: abril de 2011
    • Compendio y Residencial: Mayo de 2012
  • OSGi Versión 5 (R5): junio de 2012
    • Núcleo y Empresa: junio de 2012
  • OSGi Versión 6 (R6): junio de 2015
    • Núcleo: junio de 2015
  • OSGi Versión 7 (R7): abril de 2018
    • Núcleo y Compendio: abril de 2018
  • OSGi Versión 8 (R8): diciembre de 2020 [ 10 ]

Implementaciones de marcos actuales

Referencias

  1. "OSGi Alliance | Especificaciones / Página principal" . osgi.org . 2020. Consultado el 3 de octubre de 2022 .
  2. Grupo de Trabajo de OSGi. "¿Qué es OSGi? | La Fundación Eclipse" . Grupo de Trabajo de OSGi . Consultado el 8 de noviembre de 2023 .
  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 del original el 14 de septiembre de 2015. Consultado el 10 de mayo de 2012 .
  6. "OSGi Alliance | Mercados / Certificado" . Archivado del original el 25/09/2008 . Consultado el 23/06/2017 .
  7. Creación de paquetes OSGi Archivado el 16/04/2009 en Wayback Machine por Costin Leau
  8. Diaz Redondo, RP; Vilas, AF; Cabrer, MR; Pazos Arias, JJ; Lopez, Marta Rey (2007-02-01). "Enhancing Residential Gateways: OSGi Service Composition". IEEE Transactions on Consumer Electronics . 53 (1): 87– 95. doi : 10.1109/TCE.2007.339507 .
  9. "OSGi Alliance | Acerca de / Miembros" . Archivado del original el 11 de marzo de 2014. Consultado el 11 de marzo de 2014 .
  10. Hargrave, BJ "OSGi Core Release 8 ya es la versión final y publicada" .

Lecturas adicionales

  • Cummins, Holly; Ward, Tim (28 de marzo de 2013), Enterprise OSGi in Action (1.ª  ed.), Manning Publications , pág.  376, ISBN 978-1617290138
  • Alves, Alexandre de Castro (28 de julio de 2011), OSGi en profundidad (1.ª  ed.), Manning Publications , pág.  325, ISBN 978-1-935182-17-7
  • McAffer, Jeff; VanderLei, Paul; Archer, Simon (24 de febrero de 2010), OSGi y Equinox: Creación de sistemas Java altamente modulares (1.ª  ed.), Addison-Wesley Professional , pág.  460, ISBN 978-0-321-58571-4
  • Joseph Gédéon, Walid (5 de noviembre de 2010), Guía para principiantes de OSGi y Apache Felix 3.0 (1.ª  ed.), Packt Publishing , p.  336, ISBN 978-1-84951-138-4Archivado del original el 2 de octubre de 2012 , consultado el 31 de marzo de 2011.
  • Walls, Craig (julio de 2009), Java modular con OSGi y Spring (1.ª  ed.), Pragmatic Bookshelf, pág.  250, ISBN 978-1-934356-40-1Archivado del original el 30/05/2011 , consultado el 19/02/2009.
  • Hall, Richard S; Pauls, Karl; McCulloch, Stuart (septiembre de 2009), OSGi en acción (1.ª  ed.), Manning Publications , pág.  375, ISBN 978-1-933988-91-7
  • Alves, Alexandre de Castro (marzo de 2009), Marcos de aplicación OSGi (1.ª  ed.), Manning Publications , pág.  325, ISBN 978-1-935182-17-7
  • Bartlett, Neil (10 de enero de 2009), OSGi en la práctica (PDF) (  edición BORRADOR), pág.  229, archivado del original (PDF) el 16 de febrero de 2012 , consultado el 11 de junio de 2009.
  • McAffer, Jeff; VanderLei, Paul; Archer, Simon (7 de septiembre de 2009), Equinox y OSGi: El poder detrás de Eclipse (1.ª  ed.), Addison-Wesley Professional , pág.  480, ISBN 978-0-321-58571-4
  • Mak, Gary (2009), Pro SpringSource dm Server , Apress , pág.  250, ISBN 978-1-4302-1640-7Archivado del original el 5 de diciembre de 2010 , consultado el 28 de diciembre de 2008.
  • Rubio, Daniel (12 de febrero de 2009), Módulos dinámicos Pro Spring para plataformas de servicios OSGi (Primera  edición), Apress , 392 págs. , ISBN  978-1-4302-1612-4
  • The OSGi Alliance (2003), OSGi Service Platform, Release 3 , IOS Press, pág.  604, ISBN 1-58603-311-5
  • Plataforma de servicios OSGi, Especificación principal, Versión 4, Versión 4.1 , OSGi Alliance, 2007, pág.  228, ISBN 978-90-79350-01-8
  • Plataforma de servicios OSGi, Especificación principal, Versión 4, Versión 4.2 , OSGi Alliance, 2009, pág.  332, ISBN 978-90-79350-04-9
  • Plataforma de servicios OSGi, Compendio de servicios, Edición 4, Versión 4.1 , OSGi Alliance, 2007, pág.  594, ISBN 978-90-79350-02-5
  • Plataforma de servicios OSGi, Especificación móvil, Versión 4, OSGi Alliance, 2007, pág.  426, ISBN 978-90-79350-03-2
  • Kirk Chen, Li Gong. (2001), Programación de pasarelas de servicio abierto con tecnología Java Embedded Server(TM) , Prentice Hall PTR, pág.  480, ISBN 0-201-71102-8
  • Kayode Odeyemi (2010), Creación de un servicio declarativo OSGi con Maven usando Netbeans
  • BJ Hargrave (IBM) (2011), Actualización técnica de OSGi 4.3: ¿Qué hay de nuevo?, The Eclipse Foundation, archivado del original el 21/06/2011 , consultado el 11/06/2011.
  • Sitio web oficial
  • Oredev 2008 - Arquitectura - OSGi Hoy y Mañana
  • Índice de artículos de Eclipse Equinox : artículos sobre una implementación OSGi de código abierto.