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?
Respuesta
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.
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
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:
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
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).
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
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
- 1. ¿Cuál es el contenedor subyacente en Java String?
- 2. ¿Cuál es el transporte subyacente para D-Bus?
- 3. ¿Cuál es la mejor manera de comenzar con OSGI?
- 4. ¿Cuál es la relación entre OSGi y Dependency Injection
- 5. ¿Cuál es el caso de uso para especificar el tipo subyacente en las enumeraciones?
- 6. ¿Es MEF OSGi para .NET?
- 7. ¿Cuál es la diferencia entre un tema y una plantilla?
- 8. TextAppearance en el tema
- 9. Iniciando el paquete OSGi
- 10. ¿Cuál es la mejor manera de utilizar el tema jQuery-UI en CDN con respaldo local?
- 11. Código subyacente en ASP.NET MVC
- 12. OSGi distribuido: ¿cuál es la forma correcta de administrar paquetes en todos los contenedores?
- 13. ¿Cuál es el mecanismo subyacente para la síntesis de ivar en el tiempo de ejecución de Objective C moderno
- 14. OSGi: ¿Cuán madura es esta tecnología?
- 15. Comprobando si un ValidationGroup es válido desde el código subyacente
- 16. java.lang.NoClassDefFoundError en OSGi
- 17. ¿Cuál es el límite de longitud del tema del correo electrónico?
- 18. Android textAllCaps en el tema
- 19. Aplicar el tema en PrimeFaces
- 20. Uso de la biblioteca no OSGI en una aplicación OSGI
- 21. DropDownList obtener el objeto subyacente
- 22. Ver el SQL subyacente en Spring JdbcTemplate?
- 23. OSGi en infraestructuras distribuidas
- 24. JGrowl establecer el tema
- 25. OSGi o Impala?
- 26. OSGi modelo de subprocesos
- 27. OSGi + Hibernate
- 28. OSGi y bibliotecas heredadas
- 29. ¿Cuál es la forma correcta de deshabilitar un servicio OSGi al inicio del servicio?
- 30. ¿Cuál es el %% en Happy?
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". –