2009-10-23 13 views
57

Estamos tratando de determinar cómo implementar un marco de plugin simple para un servicio que estamos implementando que permite que diferentes tipos de calculadoras sean "conectadas".Opción de marco de plugin de Java

Después de leer un number de puestos unos marcos plugin de Java, parece que las opciones más comunes son:

OSGI parece ser más de lo que necesitamos.

"Hacer rodar el tuyo" está bien, pero sería bueno reutilizar una biblioteca común.

Así que estamos a la JPF y JSPF. JPF ya no parece estar en desarrollo activo.

JSPF parece muy simple y realmente todo lo que necesitamos. Sin embargo, no he escuchado mucho al respecto. Solo he visto uno post en StackOverflow al respecto. ¿Alguien más tiene alguna experiencia con JSPF? O cualquier otro comentario sobre esta elección de diseño?


actualización: No hay necesariamente una respuesta correcta a esta .. Sin embargo vamos a ir con la idea de Pavol ya que necesitamos sólo una solución muy, muy simple. Gracias EoH por la buena guía.

Respuesta

29

Si planea tener solo uno (o solo unos pocos) 'puntos de extensión' no muy complejos que quizás un SPI bien definido y una pieza de configuración podrían ser suficientes. No es necesario usar un marco de plugin.

Por configuración me refiero a algún mecanismo para encontrar sus complementos. Por ejemplo, algo como META-INF/services/ o simplemente enumerando sus complementos en un archivo de configuración.

Más detalles (a petición):

SPI = Service Provider Interface, un "equivalente de lado de ejecutor de una API". Para obtener más información, intente buscar una diferencia entre API y SPI. Sin embargo, en este contexto, es simplemente un término elegante para que sus complementos implementen una interfaz (es decir, define el contrato para sus complementos).

Un artículo breve y bonito "Creating a Service Provider Interface" de Ethan Nicholas describe cómo crear su propio SPI de forma similar a como se hace en varias partes de la plataforma Java.

META-INF/services/ puede verse como un enfoque más general para la creación de SPI. Se puede encontrar más información en la sección respectiva del JAR File Specification.

+0

API o SPI? Que es SPI? – Egwor

+0

Acabamos de tener una (o como mucho algunas) extensiones directas. ¿Puedes elaborar sobre tu idea? –

+0

Perdón por una respuesta tardía. He actualizado mi respuesta original con más detalles. –

43

(exención de responsabilidad: yo soy el autor de JSPF, así que es mejor tomar mi comentario con un grano de sal ;-)

La razón principal por la que empecé con el JSPF era porque tenía el mismo problema que usted tiene ahora : Estaba buscando una solución simple para hacer extensible mi proyecto de tesis 1) y 2) darle una estructura de código más o menos clara.

La razón por la que no he decidido utilizar un marco existente fue porque la mayoría de ellos eran tan pesados ​​para empezar, que me perdí en la lectura de la documentación y casi me olvidé de la tarea original. Así, de acuerdo con su estado de cuenta

Estamos tratando de determinar cómo implementar un marco simple plug-in para un servicio que estamos implementando permite diferentes tipos de calculadoras a ser "conectados".

Creo que podría darle una oportunidad a JSPF y ver qué tan lejos puede llegar en una o dos horas.

Sin embargo, la decisión final también depende un poco de qué es exactamente lo que quiere lograr y las circunstancias específicas.

He escuchado resultados positivos de varias personas que lo han utilizado para estructurar sus proyectos o cargar complementos en sus proyectos. Por otro lado, también conozco a una persona en nuestro departamento que lo descartó nuevamente porque no sentía que se estuviera mezclando bien con su estilo de programación.

lo tanto, para responder a su pregunta brevemente (y seguramente de una manera sesgada), me gustaría utilizar

OSGi para proyectos y equipos

  • , que son grandes y tienen muchas personas que trabajan en él
  • que justifican la sobrecarga de la creación de la infraestructura
  • en necesidad de los servicios específicos ofrecidos

JPF para proyectos y equipos

  • de tamaño medio (?, La verdad es que no estoy seguro sobre el tamaño del proyecto/equipo que se dirigen)
  • que están en necesidad de instalaciones más estructurados para organizar su código, como las configuraciones XML, la administración detallada del ciclo de vida de los complementos, los complementos extensibles ...

JSPF para proyectos y equipos

  • de pequeño tamaño, siguiendo un paradigma ágil
  • que sólo tiene algo que funciona fuera de la caja, sin necesidad de configuraciones o instalación
  • dispuestos a sacrificar algunas características por simplicidad

Espero que encuentre el plugin framework más adecuado para su escenario. Y, sin importar lo que intentes, me complacerá escuchar tus resultados.

+3

¿Alguien ha usado JSPF? ¿en producción? –

+0

tiene alguien un ejemplo simple con JSPF? Me gustaría entender la función Opciones. – capovawi

+4

¿Está jspf obsoleto? – wener

2

Si necesita una solución realmente simple, intente jin-plugin. Es un marco de complemento minimalista para Java y PHP.