Yo diría que siempre "depende".
Su entorno
Considere un equipo existente sin experiencia OSGi (que con orgullo se consideran a sí mismos como desarrolladores experimentados que "agilicen". Hay una posibilidad de que van a experimentar un gran dolor o un comienzo lento .
muchos (más de lo que podría pensar) los desarrolladores no están familiarizados con las herramientas de construcción, tales como Ant o Maven, y cuando son sólo utilizan funciones limitadas de aquellos construir herramientas.
Creación Los paquetes OSGI se logran mejor con Eclipse, Ant tasks o Maven BND plugin VS una secuencia de comandos o un manifiesto escrito manualmente para el archivo jar.
pequeñas aplicaciones
Para aplicaciones pequeñas, OSGi introduce una complejidad innecesaria, mientras que usted podría utilizar lenguajes dinámicos como Jython, etc., o un marco plug-in, como JPF o la SPI. También podría ir directamente con la reflexión y un simple cargador de clases personalizado.
grandes aplicaciones
aplicaciones grandes podrían beneficiarse de OSGi, especialmente cuando se escriben a partir de cero. En mi humilde opinión, la integración de OSGI en una aplicación existente es más como la introducción de un parche para proporcionar una arquitectura modular.
Desde mi experiencia, después de reescribir muchas aplicaciones, es mejor pensar en la modularidad en los primeros días de un proyecto.
Otras preocupaciones
de implementación: Es lo mismo en todas las aplicaciones. Si está acostumbrado a implementar aplicaciones Java Web Start, la implementación no es una preocupación. Si está acostumbrado a OSGI, la implementación no debería ser una preocupación.
Siempre hay problemas de vez en cuando en cualquier aplicación cuando se trata de implementarlo en producción, lo cual es natural.
Versiones: Existen muchas formas de proporcionar control de versiones en una aplicación. Pero si solo utiliza el control de versiones como "información" frente a una herramienta (gestionar el requisito de dependencias), el control de versiones no es una preocupación.
Reutilización: Al utilizar OSGi que tienden a escribir el código para su reutilización, pero cualquier API bien escrito está diseñado con la reutilización de código en mente.
Eclipse es el ejemplo número uno de una gran aplicación exitosa escrita con OSGI. Hay otras herramientas grandes/agradables que no usan OSGI y son modulares.
Conclusión
En muchos marcos modulares, es difícil de manejar dependencias, arranque/parada/desinstalar/instalar características en tiempo de ejecución, sin necesidad de reiniciar la aplicación. Juega con un cargador de clases personalizado, shutdown y ganchos de inicio, etc.
OSGI le da tanta flexibilidad a un costo menor en mi humilde opinión.
Esto es subjetivo, pero no material CW. Voy a elegir la respuesta con los mejores argumentos. –
De acuerdo con la respuesta de Cloudy en parte, la "complejidad reducida" es discutible. – Thilo