2009-07-28 11 views
5

Parece que OSGi es un término caliente en estos días. Muchos benefits se invocan:Punto de equilibrio para OSGi

  • Reducción de la complejidad
  • reutilización
  • Fácil despliegue
  • de versiones

(etc)

estoy pidiendo un caso de uso muy específico - aplicaciones web pequeñas o medianas. ¿Qué beneficios traería OSGi para esos? En realidad, vale la pena?

+0

Esto es subjetivo, pero no material CW. Voy a elegir la respuesta con los mejores argumentos. –

+0

De acuerdo con la respuesta de Cloudy en parte, la "complejidad reducida" es discutible. – Thilo

Respuesta

6

I'll hazard a NO, aunque soy un gran fan de OSGi. A menos que esté trabajando con otros paquetes OSGi o tiene un problema específico que no puede resolver fácilmente sin este mazo.

El beneficio es la separación classpath elegante (en mi humilde opinión). Si necesita versiones diferentes de la misma JAR/clase, digamos porque está actualizando ciertas partes de una aplicación mientras se está ejecutando, o porque está combinando muchos módulos de terceros, entonces OSGi es genial.

No es algo fácil de lograr, y no se hace fácil con OSGi. Se hace limpio, pero a costa de otra capa en la pila de entorno. Y mucho trabajo para aprender y mantener.

Sin mencionar que la documentación no es especialmente amigable para principiantes.

Sugiero aprender sobre esto: crear complementos de Eclipse es una muy buena manera, pero no incorporarlo a su plan de desarrollo hasta que lo sepa bien.

7

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.