java osgi blueprint-osgi osgi-ds

java - OSGi: ¿Blueprint reemplaza a los servicios declarativos?



blueprint-osgi osgi-ds (4)

Me hice la misma pregunta y al discutir esto con otras personas involucradas en el tema, el tenor fue que aunque los dos se superponen en cierto grado, el caso de uso es muy diferente cuando se usa. DS es una solución liviana para evitar activadores y modelar dependencias de servicio de manera declarativa. BP es básicamente un contenedor DI destinado a implementaciones empresariales. También es más común que los desarrolladores de Java "normales" no estén tan familiarizados con la naturaleza dinámica de OSGi (que se esconde detrás de los proxies).

En cuanto a la implementación, hay dos proyectos trabajando en ello (todos ellos son agnósticos en contenedores y no se lanzan oficialmente). Spring DM 2.0 proporcionará una implementación ( 2.0.0.M1 ya contiene una implementación funcional ), así como Apache como parte de su proyecto geronimo ( slideshow ).

La nueva especificación R4.2 para OSGi describe el servicio Blueprint, para inyección de dependencias y cableado de servicio.

¿Blueprint reemplaza a los Servicios declarativos (que también son parte de la especificación) o están destinados a trabajar juntos?

¿Blueprint ya está disponible para las implementaciones populares (Felix y Equinox)?


Otro problema es que los servicios de planos, que yo sepa, están todos presentes en un contenedor, el contenedor de planos, mientras que los servicios declarativos están disponibles en los paquetes que los referencian. Especialmente con Equinox esto resulta en un comportamiento diferente. DS debe usarse sobre el plano cuando desee adherirse al enfoque estricto de carga de clases que defiende el equinoccio.


Según mi experiencia en el entorno basado en Felix, DS es el único inyector de dependencia que es suficientemente maduro y que proporciona coherencia con otras partes de las especificaciones del Compendio de OSGi, como ConfigAdmin.

Blueprint me parece una inclusión política de Spring DM en las especificaciones de OSGi.

iPojo es una alternativa basada en las anotaciones de Java en lugar de los descriptores XML, que oculta parte de la base OSGi.


Si ha usado Spring antes, los servicios de Blueprint son más familiares de usar. Los servicios declarativos no son tan poderosos, pero se adoptan ampliamente en los contenedores OSGi.