2009-11-30 3 views
8

OSGi es un sistema modular dinámico para Java. Bien, pero ¿cuál es el tema de la línea de base, por qué se desarrolló OSGi? ¿Cuáles son los beneficios de usar OSGi? ¿Cuál es la historia principal del desarrollo de OSGi? ¿Por qué existe?¿Cuál es el tema subyacente en OSGi?

+0

osgi es una forma que dice: "oye, sabemos que todos los programadores tienen malos hábitos, pero aquí hay una manera de facilitarles la práctica de sus malos hábitos". –

Respuesta

5

OSGi es

  • Un sistema de módulos para Java: proporciona una manera de exportar e importar los paquetes de Java y hacer cumplir los límites de módulos, incluyendo la dependencia explícita e información de la versión.

  • Contenedor generalizado para sistemas Java: los paquetes se pueden cargar y descargar dinámicamente sin detener el sistema, donde "paquete" es básicamente archivo jar.

  • Un sistema de programación orientado a servicios: además de modularizar el sistema por paquetes, OSGi admite modularidad orientada a servicios, incluidos elementos como el whiteboard pattern (PDF).

OSGi fue desarrollado originalmente para apoyar los sistemas integrados de gama alta, tales como set-top boxes, lo que motiva las dependencias explícitas y control de versiones, así como por lo que es bastante ligero cuando se usa como más reciente, del lado de la empresa envase.

+1

Antes de que OSGi Alliance se cambiara de nombre, OSGi significaba "Iniciativa de puerta de enlace de servicios abiertos". Su objetivo principal eran puertas de enlace y enrutadores integrados. – akr

17

Si miras más de cerca, el concepto de classpath en Java realmente apesta.

Distribuyes tus clases en archivos JAR, pero durante el tiempo de ejecución Java (casi) lanzará ciegamente todas las clases de todos los archivos JAR en una gran bolsa donde las clases con el mismo nombre se eclipsarán mutuamente y luego interactuarán de maneras inesperadas.

OSGi ofrece una modularidad de tiempo de ejecución adecuada para la plataforma Java y, además de eso, un potente modelo de servicio, a veces denominado "SOA dentro de la JVM".

Recomiendo leer algunos artículos introductorios sobre OSGi que darán una idea más concreta de lo que significa todo esto. Un buen punto de partida podría ser la serie de artículos sobre InfoQ sobre la modularidad de Java por Alex Blewitt:

3

Supongo que la pregunta se reduce a '¿Qué es el valor de Modularisation '. Para una excelente serie de artículos sobre este tema por Kirk Knoernschild, ver http://techdistrict.kirkk.com/. Creo que un libro también está en proceso.

Si tiene inclinaciones académicas, el poder de la modularidad y el ensamblaje dinámico del sistema están bien explorados por un libro recientemente publicado - "Diversidad y Complejidad" (http://press.princeton.edu/titles/9208.html). Aunque no está centrado en el software, el libro explica por qué la próxima generación del sistema de software adaptable/robusto tendrá que ser modular.

Tenga en cuenta que, además de ser el estándar de la industria para la modularidad de Java (lo que permite todo lo anterior); OSGi también trae a la mesa una poderosa arquitectura de servicios 'SOA-inside the JVM'.

Por último, para una introducción suave y bien diseñado a desarrollar en OSGi - tratar el libro de Neil Bartlett OSGi en la práctica 'http://njbartlett.name/osgibook.html

Saludos

Richard

3

lo beneficia OSGi ofrece, son eclipsados por la pérdida de flexibilidad, las modificaciones en el entorno de construcción y una serie de otros cambios, en su mayoría causados ​​por (incompetencia de desarrolladores con mucha experiencia).

Estos impedimentos disminuirán la productividad del desarrollador y, por lo tanto, disminuirán la velocidad con la que se pueden realizar todas las mejoras en el código fuente (no solo las mejoras de modularidad).

+0

No estoy de acuerdo, las herramientas en Bundles son bastante buenas, por lo que puede hacer mucho sí mismo (Anotaciones Bnd y Félix y cubren bastante). Y muchas bibliotecas de código abierto ya tienen entradas de manifiesto OSGi (exactamente porque es bastante fácil de agregar). – eckes

+0

Ejemplos: Maven bundle plugins generando archivos de configuración rechazados por Felix como malformados (y tener que arreglarlos a mano), "Apply to classpath" que rompe proyectos maven, sin errores o advertencias cuando algo no funciona, repite el wazoo, iPOJO silenciosamente falla en hacer su trabajo, faltas de ortografía en los mensajes, requiere hacking (pax url) para hacer que el trabajo sea igual entre IDE y JAR implementado porque lo sobre-diseñaron y asumieron que cada máquina tendrá un administrador controlando un contenedor OSGi, haciendo despliegue de juegos conectables, gráficos, software de audio para usuarios normales irrazonables. – user515655

Cuestiones relacionadas