internet - Opción de marco de plugin de Java
plugin java firefox (3)
Estamos tratando de determinar cómo implementar un marco de plugins simple para un servicio que estamos implementando que permite que los diferentes tipos de calculadoras se "conecten".
Después de leer una number de publicaciones sobre frameworks de plugins de Java, parece que las opciones más comunes son:
- OSGI
- " Rolando tu propio " marco de plugin
- El marco de plugin de Java (JPF)
- El marco de complemento simple de Java (JSPF)
OSGI parece ser más de lo que necesitamos.
"Rodar uno mismo" está bien, pero sería bueno reutilizar una biblioteca común.
Así que estamos abajo de 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 una 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 esto ... sin embargo, vamos a ir con la idea de Pavol ya que solo necesitamos una solución realmente simple. Gracias EoH por la buena guía.
(Descargo de responsabilidad: soy el autor de JSPF, así que mejor tome mi comentario con un grano de sal ;-)
La razón principal por la que comencé con JSPF fue porque tuve el mismo problema que 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í al leer la documentación y casi me olvidé de mi tarea original. Entonces, según tu declaración
Estamos tratando de determinar cómo implementar un marco de plugins simple para un servicio que estamos implementando que permite que los diferentes tipos de calculadoras se "conecten".
Creo que podrías darle una oportunidad a JSPF y ver qué tan lejos estás dentro de 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.
Entonces, para responder a su pregunta brevemente (y seguramente de forma sesgada), usaría
OSGi para proyectos y equipos
- que son grandes y tienen mucha gente trabajando en ello
- que justifica la sobrecarga de configurar la infraestructura
- en necesidad de los servicios específicos ofrecidos
JPF para proyectos y equipos
- de tamaño mediano (? honestamente, no estoy seguro del tamaño del proyecto / equipo al que se dirigen)
- que necesitan instalaciones más estructuradas para organizar su código, como configuraciones XML, administración detallada del ciclo de vida de los complementos, complementos extensibles ...
JSPF para proyectos y equipos
- de pequeño tamaño, siguiendo un paradigma ágil
- que solo necesita algo que funcione de la caja, sin la necesidad de configuraciones o configuraciones
- dispuesto a sacrificar algunas características por simplicidad
Espero que encuentres el plugin framework más adecuado para tu escenario. Y, sin importar lo que intentes, me complacerá escuchar tus resultados.
Si necesitas una solución realmente simple, prueba jin-plugin . Es un marco de complemento minimalista para Java y PHP.
Si planea tener solo uno (o solo unos pocos) ''puntos de extensión'' no muy complejos, quizás un SPI bien definido y una pieza de configuración sean suficientes. No es necesario usar un marco de plugin.
Por configuración me refiero a algún mecanismo para encontrar tus complementos. Por ejemplo algo como META-INF/services/
o simplemente enumerando tus complementos en un archivo de configuración.
Más detalles (bajo petición):
SPI = Interfaz del proveedor de servicios , un "equivalente del implementador 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 bonito y breve artículo " Creating a Service Provider Interface " de Ethan Nicholas describe cómo crear su propio SPI de manera similar a como lo hace en varias partes de la plataforma Java.
META-INF/services/
puede verse como un enfoque más generalizado para crear SPI. Se puede encontrar más información en la sección respectiva de la Especificación de archivo JAR .