2011-01-02 25 views
48

Acabo de comenzar a escuchar el término OSGi que se utiliza (mientras leo tutoriales en contenedores Java EE comunes como GlassFish y Spring), sin embargo, no he podido encontrar un sencillo, directo, fácil de entender explicación de lo que OSGi es que un principiante empresarial como yo entendería.¿Qué es OSGi y cuáles son algunos ejemplos de su uso?

¿Alguien puede proporcionar una explicación a prueba de errores? Tal vez con algunos ejemplos o incluso extractos de código?

Gracias!

Respuesta

60

Dicho simplemente, OSGi es un sistema de módulo dinámico para Java. Define los medios para instalar, desinstalar, actualizar, iniciar y detener módulos. Esos módulos se denominan paquetes, pero son, en su forma más simple, en realidad archivos jar de Java con un Manifiesto especial. Los módulos se pueden instalar, desinstalar, etc. sin detener o reiniciar Java VM.

Un marco OSGi gestiona el ciclo de vida descrito y las dependencias entre los paquetes de forma segura. Un paquete necesita indicar qué paquetes Java exporta y cuáles importa. Las declaraciones de importación y exportación se pueden anotar con información de versión, de modo que incluso puede tener más de una versión del mismo paquete en la misma máquina virtual de Java.

OSGi Alliance es la organización que especifica el marco OSGi y muchos servicios complementarios, p. para gestionar datos de configuración, acceso a dispositivos, etc.

Esta es una descripción muy básica. OSGi es mucho más. Eche un vistazo a https://www.osgi.org/developer/architecture/ (una introducción a la arquitectura de OSGi) y https://www.osgi.org/developer/where-to-start/ (una gran cantidad de enlaces y otras lecturas recomendadas por OSGi Alliance).

+0

¡WoW! Esta es la mejor respuesta a la pregunta. Gracias – Walker

+0

Explicación más simple que vi para OSGI, debe estar en la página principal de osgi.org para que la gente pueda obtener en 2 minutos lo que generalmente toma un día. Es frustrante cuando los proyectos tienen páginas y páginas de marketing y archivos PDF en un sitio oficial, mientras que para entender solo necesitamos un buen resumen como este. Gracias por esto ! – xask

28

A expensas de algunos votos a la baja ;-), me gustaría responder a esto en mis propias palabras (para que pueda ser corregido en mi entendimiento).

Desarrollamos aplicaciones como un conjunto de módulos, cada módulo funcionalmente cohesivo en sí mismo y vagamente acoplado con otros módulos. Esto tiene muchas ventajas, como ya sabrá. En el tiempo extra, la unidad de modularidad ha mejorado de funciones a clases a paquetes a una unidad de implementación (como jar en Java y ensamblado en .Net). Pero todo esto es solo durante el tiempo de desarrollo, una vez que se implementa la aplicación (que es un conjunto de módulos), el servidor aún la ve como una aplicación monolítica gigante, es decir, los límites lógicos no se preservan durante el tiempo de ejecución. OSGi hace que estos límites explícitos durante desarrollo, así como el tiempo de ejecución aparte de other benefits outlined here

Sugiero este excelente libro gratis para empezar OSGi in Practice

Si usted trabaja en la plataforma Java, también comprobar esta presentación: Why Have The OSGi Specifications Been Based On Java™ Technology?

+0

Gracias a akr y Pangea por tomarse el tiempo para aclarar esto. Creo que estoy empezando a "entenderlo". Parece que OSGi es un marco poderoso para hacer JARs PnP, ¡¿sí?!? Una última cosa: ¿alguien puede proporcionarme algunos ejemplos concretos de paquetes ("servicios") y qué podrían hacer? ¡Gracias a todos! – Zac

+0

@Zac Puede encontrar información sobre OSGi, cómo usar paquetes y cómo crear o consumir servicios, por ejemplo, en [este tutorial] (http://www.javaworld.com/javaworld/jw-03-2008/jw- 03-osgi1.html? Page = 1). Es bastante bueno en mi opinión. – Piotr

Cuestiones relacionadas