fbpx
Wikipedia

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.

OSGi
Información general
Tipo de programa framework
Lanzamiento inicial mayo de 2000
Licencia Licencia de Especificación OSGi v.2
Información técnica
Programado en Java
Plataformas admitidas máquina virtual Java
Enlaces
Sitio web oficial

Aunque OSGi define su propia arquitectura, ha sido pensada para su compatibilidad con Jini 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ón

El 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]

Arquitectura

 
Arquitectura del servicio de pasarelas OSGi

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

Bundles
Los bundles son componentes en formato de archivos JAR con el agregado de archivos cabecera llamados manifest headers (manifiesto de encabezado).
Servicios
La capa de servicios conecta los bundles en forma dinámica que ofrece un modelo para publicación, búsqueda y enlace para interfaces POJO o plain old Java object (POJO).
Registración de servicios
La api para administración de servicios.
Ciclo de vida
La api para la administración de ciclos de vida para los bundles(instalación, inicio, fin, actualización, y desinstalación).
Módulos
The layer that defines encapsulation and declaration of dependencies (how a bundle can import and export code).
Seguridad
La capa que maneja los aspectos de seguridad limitando la funcionalidad del bundle a ciertas capacidades predefinidas.
Ambiente de ejecución
Define de qué métodos y clases se didsponen en una plataforma en particular. No existe una lista prefijada de ambientes de ejecución, ya que está sujeta a cambios siempre que el Java Community Process vaya creando nuevas versiones y ediciones de Java. Sin embargo, actualmente la mayoría de las implementaciones OSGi soporta los siguientes ambientes:

Bundles

 
Clasificación: OSGi

Un bundle es un conjunto de clases Java y de recursos adicionales que incluye el agregado de un archivo manifiesto detallado MANIFEST.MF que informa de todo el contenido, así como de los servicios adicionales que son necesarios para dar al grupo de clases de Java comportamientos más sofisticados, hasta el punto de considerar a todo el agregado como un componentet.

El siguiente ejemplo es el código de un archivo MANIFEST.MF para el encabezado OSGi:

 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]

  1. Bundle-Name: Define un nombre para el bundle, se le asigna un nombre corto.
  2. Bundle-SymbolicName: El único encabezado obligatorio, esta entrada debe especificar un identificador único para un bundle, basedo en la notación de nombre de dominio inverso (useda también en los paquetes de java).
  3. Bundle-Description: Una descripción de la funcionalidad del bundle.
  4. Bundle-ManifestVersion: Indicata la especificación OSGi utilizada para leer el bundle.
  5. Bundle-Version: Designación de un número de versión al bundle.
  6. Bundle-Activator: Indicaa el nombre de la clase que será invocada por el bundle cuando sea activada.
  7. Export-Package: Expresa que paquetes Java están contenidos en el bundle los cuales estárán disponibles para el mundo exterior.
  8. Import-Package: Indic que paquetes Java se necesitan en el mundo exterior para satisfacer las dependencias necesarias del bundle.

Ciclo de vida

 
Ciclo de vida de un Bundle OSGi.

UNa capa de Ciclo de Vida agrega bundles las cuales pueden dinamicamente ser instaladas, iniciadas, finalizadas, actualizadas y desinstaladas. Los bundles están sobre la capá 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.

Estado del Bundle Descripción
INSTALLED (INSTALADO) El bundle fue instalado exitosamente.
RESOLVED (RESUELTO) Todas las clases Java que necesita el bundle están instaladas. Este estado indica que el bundle está listo para iniciar o finalizar.
STARTING (INICIANDO) El bundle está iniciando, el método BundleActivator.start fue llamado el método de inicio no ha terminado. Cuando el bundle tiene una política de activación, el bundle queda en el estado STARTING hasta que el bundle se active according según su política de activación.
ACTIVE (ACTIVO) El bundle ha sido activado exitosamente y está en ejecución; su método de inicio Bundle Activator fue llamado y ha terminado.
STOPPING (FINALIZACIÓN) EL bundle está siendo finalizado. Se ha llamado al método BundleActivator.stop pero este aun no ha terminado..
UNINSTALLED (DESINSTALADO) El bundle fue desinstalado. No se puede pasar a otro estado.

El siguiente ejemplo es una clase Java títpica que implemeta el código de una interfaz de BundleActivator:

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

Nombre Licencia
Apache Felix Código abierto
Concierge OSGi Código abierto
Equinox OSGi Código abierto
Knopflerfish Código abierto
Bosch IoT Gateway Software Comercial
Eclipse Gemini Código abierto

Versiones de la especificación

  • OSGi Release 1 (R1): mayo de 2000
  • OSGi Release 2 (R2): octubre de 2001
  • OSGi Release 3 (R3): marzo de 2003
  • OSGi Release 4 (R4): octubre de 2005 / septiembre de 2006
    • Core Specification (R4 Core): octubre de 2005
    • Mobile Specification (R4 Mobile / JSR-232): septiembre de 2006
  • OSGi Release 4.1 (R4.1): mayo de 2007 (AKA JSR-291)
  • OSGi Release 4.2 (R4.2): septiembre de 2009
    • Enterprise Specification (R4.2): marzo de 2010
  • OSGi Release 4.3 (R4.3): abril de 2011
    • Core: abril de 2011
    • Compendium and Residential: mayo de 2012
  • OSGi Release 5 (R5): junio de 2012
    • Core and Enterprise: junio de 2012
  • OSGi Release 6 (R6): junio de 2015
    • Core: junio de 2015
  • OSGi Release 7 (R7): abril de 2018
    • Core and Compendium: abril de 2018
  • OSGi Release 8 (R8): Draft marzo de 2020[5]

Véase también

Referencias

  1. searchnetworking.techtarget.com/definition/OSGi Definición de OSGi (en inglés).
  2. . Archivado desde el original el 14 de septiembre de 2015. Consultado el 10 de mayo de 2012.  Parámetro desconocido |url-status= ignorado (ayuda)
  3. https://www.osgi.org/osgi-compliance/osgi-certification/osgi-certified-products/
  4. Creating OSGi bundles por Costin Leau
  5. https://blog.osgi.org/2020/03/osgi-core-r8-specification-available.html

Bibliografía

  • Daniel Rubio (2009). Pro Spring Dynamic Modules for OSGi™ Service Platforms. Apress. ISBN 1430216123. 
  • IBM Redbooks (2010). Getting Started with the Feature Pack for OSGi Applications and JPA 2.0. Vervante. ISBN 0738434965. 
  • Jamie Goodyear; Johan Edstrom (2013). OSGi Starter: The essential guide to modular development with OSGi. Birmingham: Packt Publishing. ISBN 9781849519922. 

Enlaces externos

  •   Wikimedia Commons alberga una categoría multimedia sobre OSGi.
  • Sitio oficial
  • Artículos de Eclipse Equinox - Sobre implementación de código abierto de OSGi (en inglés)
  • Equinox OSGi (en inglés)
  • por Daniel Rubio
  •   Datos: Q1156326
  •   Multimedia: OSGi

osgi, alliance, conocida, formalmente, como, open, services, gateway, initiative, conjunto, estándares, abiertos, creado, marzo, 1999, cuyo, objetivo, definir, especificaciones, abiertas, software, permitan, diseñar, plataformas, compatibles, puedan, proporcio. OSGi Alliance conocida formalmente como Open Services Gateway initiative 1 es un conjunto de estandares abiertos creado en marzo de 1999 cuyo objetivo es definir las especificaciones abiertas de software que permitan disenar plataformas compatibles que puedan proporcionar multiples servicios OSGiInformacion generalTipo de programaframeworkLanzamiento inicialmayo de 2000LicenciaLicencia de Especificacion OSGi v 2Informacion tecnicaProgramado enJavaPlataformas admitidasmaquina virtual JavaEnlacesSitio web oficial editar datos en Wikidata Aunque OSGi define su propia arquitectura ha sido pensada para su compatibilidad con Jini o Universal Plug and Play UPnP La arquitectura de OSGi posee dos elementos fundamentales de los cuales el Service Platform esta situado en la red local y conectada al proveedor de servicios a traves de una pasarela en la red del operador Este elemento sera el responsable de permitir la interaccion entre dispositivos o redes de dispositivos que podrian utilizar distintas tecnologias para comunicarse La especificacion de OSGi se ha definido con una serie de interfaces de programacion de aplicaciones API basicas 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 mas alla de los propositos originales de pasarela de servicios y actualmente se utilizan en un amplio abanico de aplicaciones desde telefonia movil hasta el entorno de programacion Eclipse Otras areas de aplicacion incluyen automoviles automatizacion industrial Inmotica PDAs computacion en malla entretenimiento gestion de flotas y servidor de aplicaciones Indice 1 Proceso de especificacion 2 Arquitectura 3 Bundles 4 Ciclo de vida 5 Implementaciones actuales del framework OSGi 6 Versiones de la especificacion 7 Vease tambien 8 Referencias 8 1 Bibliografia 9 Enlaces externosProceso de especificacion EditarEl proceso de especificacion OSGi fue desarrollado por los miembros de un proceso abierto y se dispuso que sea libre de cargos al publico bajo la Licencia de Especificacion 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 Arquitectura Editar Arquitectura del servicio de pasarelas OSGi OSGi es un framework de Java para desarrollar y desplegar modulos de software Cada bundle es un conjunto acoplado una coleccion que de clases jars y archivos de configuracion que se pueden cargar dinamicamente en las cuales se declara explicitamente sus dependencias externas si es necesario El framework esta dividido conceptualmente en las siguientes partes Bundles Los bundles son componentes en formato de archivos JAR con el agregado de archivos cabecera llamados manifest headers manifiesto de encabezado Servicios La capa de servicios conecta los bundles en forma dinamica que ofrece un modelo para publicacion busqueda y enlace para interfaces POJO o plain old Java object POJO Registracion de servicios La api para administracion de servicios Ciclo de vida La api para la administracion de ciclos de vida para los bundles instalacion inicio fin actualizacion y desinstalacion Modulos The layer that defines encapsulation and declaration of dependencies how a bundle can import and export code Seguridad La capa que maneja los aspectos de seguridad limitando la funcionalidad del bundle a ciertas capacidades predefinidas Ambiente de ejecucion Define de que metodos y clases se didsponen en una plataforma en particular No existe una lista prefijada de ambientes de ejecucion ya que esta sujeta a cambios siempre que el Java Community Process vaya creando nuevas versiones y ediciones de Java Sin embargo actualmente la mayoria de las implementaciones OSGi soporta los siguientes ambientes CDC 1 0 Foundation 1 0 CDC 1 1 Foundation 1 1 OSGi Minimum 1 0 OSGi Minimum 1 1 JRE 1 1 Desde J2SE 1 2 hasta J2SE 1 6Bundles Editar Clasificacion OSGi Un bundle es un conjunto de clases Java y de recursos adicionales que incluye el agregado de un archivo manifiesto detallado MANIFEST MF que informa de todo el contenido asi como de los servicios adicionales que son necesarios para dar al grupo de clases de Java comportamientos mas sofisticados hasta el punto de considerar a todo el agregado como un componentet El siguiente ejemplo es el codigo de un archivo MANIFEST MF para el encabezado OSGi 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 Bundle Name Define un nombre para el bundle se le asigna un nombre corto Bundle SymbolicName El unico encabezado obligatorio esta entrada debe especificar un identificador unico para un bundle basedo en la notacion de nombre de dominio inverso useda tambien en los paquetes de java Bundle Description Una descripcion de la funcionalidad del bundle Bundle ManifestVersion Indicata la especificacion OSGi utilizada para leer el bundle Bundle Version Designacion de un numero de version al bundle Bundle Activator Indicaa el nombre de la clase que sera invocada por el bundle cuando sea activada Export Package Expresa que paquetes Java estan contenidos en el bundle los cuales estaran disponibles para el mundo exterior Import Package Indic que paquetes Java se necesitan en el mundo exterior para satisfacer las dependencias necesarias del bundle Ciclo de vida Editar Ciclo de vida de un Bundle OSGi UNa capa de Ciclo de Vida agrega bundles las cuales pueden dinamicamente ser instaladas iniciadas finalizadas actualizadas y desinstaladas Los bundles estan sobre la capa del modulo para cargar la clase pero agrega una API para administrar los modulos en tiempo de ejecucion La capa de ciclo de vida introduce una dinamica que normalmente no es parte de una aplicacion Usa mecanismos de dependencia extensiva para asegurar el correcto funcionamiento del ambiente Las operaciones del ciclo de vida estan protegidas completamente con una arquitectura de seguridad Estado del Bundle DescripcionINSTALLED INSTALADO El bundle fue instalado exitosamente RESOLVED RESUELTO Todas las clases Java que necesita el bundle estan instaladas Este estado indica que el bundle esta listo para iniciar o finalizar STARTING INICIANDO El bundle esta iniciando el metodo BundleActivator start fue llamado el metodo de inicio no ha terminado Cuando el bundle tiene una politica de activacion el bundle queda en el estado STARTING hasta que el bundle se active according segun su politica de activacion ACTIVE ACTIVO El bundle ha sido activado exitosamente y esta en ejecucion su metodo de inicio Bundle Activator fue llamado y ha terminado STOPPING FINALIZACIoN EL bundle esta siendo finalizado Se ha llamado al metodo BundleActivator stop pero este aun no ha terminado UNINSTALLED DESINSTALADO El bundle fue desinstalado No se puede pasar a otro estado El siguiente ejemplo es una clase Java titpica que implemeta el codigo de una interfaz de BundleActivator 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 EditarNombre LicenciaApache Felix Codigo abiertoConcierge OSGi Codigo abiertoEquinox OSGi Codigo abiertoKnopflerfish Codigo abiertoBosch IoT Gateway Software ComercialEclipse Gemini Codigo abiertoVersiones de la especificacion EditarOSGi Release 1 R1 mayo de 2000 OSGi Release 2 R2 octubre de 2001 OSGi Release 3 R3 marzo de 2003 OSGi Release 4 R4 octubre de 2005 septiembre de 2006 Core Specification R4 Core octubre de 2005 Mobile Specification R4 Mobile JSR 232 septiembre de 2006 OSGi Release 4 1 R4 1 mayo de 2007 AKA JSR 291 OSGi Release 4 2 R4 2 septiembre de 2009 Enterprise Specification R4 2 marzo de 2010 OSGi Release 4 3 R4 3 abril de 2011 Core abril de 2011 Compendium and Residential mayo de 2012 OSGi Release 5 R5 junio de 2012 Core and Enterprise junio de 2012 OSGi Release 6 R6 junio de 2015 Core junio de 2015 OSGi Release 7 R7 abril de 2018 Core and Compendium abril de 2018 OSGi Release 8 R8 Draft marzo de 2020 5 Vease tambien EditarMiddleware Pasarela XMPP Pasarela de pagoReferencias Editar searchnetworking techtarget com definition OSGi Definicion de OSGi en ingles OSGi Specification License Archivado desde el original el 14 de septiembre de 2015 Consultado el 10 de mayo de 2012 Parametro desconocido url status ignorado ayuda https www osgi org osgi compliance osgi certification osgi certified products Creating OSGi bundles por Costin Leau https blog osgi org 2020 03 osgi core r8 specification available html Bibliografia Editar Daniel Rubio 2009 Pro Spring Dynamic Modules for OSGi Service Platforms Apress ISBN 1430216123 IBM Redbooks 2010 Getting Started with the Feature Pack for OSGi Applications and JPA 2 0 Vervante ISBN 0738434965 Jamie Goodyear Johan Edstrom 2013 OSGi Starter The essential guide to modular development with OSGi Birmingham Packt Publishing ISBN 9781849519922 Enlaces externos Editar Wikimedia Commons alberga una categoria multimedia sobre OSGi Sitio oficial Articulos de Eclipse Equinox Sobre implementacion de codigo abierto de OSGi en ingles Equinox OSGi en ingles An Introduction to OSGi on the Server Side por Daniel Rubio Datos Q1156326 Multimedia OSGi Obtenido de https es wikipedia org w index php title OSGi amp oldid 138198075, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos