¿La mejor tecnología para agregar soporte de complementos a una aplicación J2SE?[cerrado]

StackOverflow https://stackoverflow.com/questions/81495

Pregunta

Estoy escribiendo una aplicación de escritorio J2SE que requiere que uno de sus componentes sea conectable.Ya definí la interfaz Java para este complemento.El usuario debería poder seleccionar en tiempo de ejecución (a través de la GUI) qué implementación de esta interfaz desea utilizar (p. ej.en un diálogo de inicialización).Preveo que cada complemento se empaquete como un archivo JAR que contenga la clase de implementación más cualquier clase auxiliar que pueda requerir.

¿Cuál es la mejor tecnología para hacer este tipo de cosas en una aplicación Java de escritorio?

¿Fue útil?

Solución

Después de muchos intentos de arquitecturas Java basadas en complementos (que es precisamente lo que parece buscar), finalmente encontré JSPF ser la mejor solución para el código Java5.No tiene las enormes necesidades de las soluciones tipo OSGI, sino que es bastante fácil de usar.

Otros consejos

OSGI es sin duda un camino válido a seguir.Pero, asumiendo que no es necesario descargarlo para recargar el complemento, podría ser que esté usando un martillo para romper una nuez.

Puede usar las clases en 'java.util.jar' para escanear cada archivo JAR en su carpeta de complementos y luego usar un 'java.net.URLClassLoader' para cargar el correcto.

Si "solo" necesita que un componente sea conectable, es suficiente simplemente crear una instancia de las clases en función de la metainformación, por ejemplo.lea a través de un cargador de clases META-INF/ información de los distintos archivos jar que se encuentran en su classpath o en un determinado directorio de complementos.

OSGi, por otro lado, proporciona medios para estructurar toda su aplicación.Si ya tiene una aplicación de escritorio grande que necesita una parte conectable, esta sería una curva de aprendizaje pronunciada.Si comienza en blanco con lo que será una aplicación de escritorio, OSGi proporciona medios para modularizar toda la aplicación.Se trata de "aislamiento de componentes" e independencia de módulos.

Apache Felix proporciona un buen comienzo si desea seguir el carril OSGi.Puede parecer complicado y pesado, pero eso es sólo porque uno no está acostumbrado a ese nivel de aislamiento entre módulos.Solía ​​ser tan fácil simplemente llamar a cualquier método público...

¿Pensaste en utilizar OSGi como marco de complementos?Con OSGi puede actualizar/reemplazar, cargar o descargar sus módulos según demanda.

Un enfoque que estoy considerando es hacer que mi aplicación inicie un contenedor OSGi liviano, que si entiendo correctamente podría descubrir qué archivos JAR de complemento existen en una carpeta designada, lo que a su vez me permitiría enumerarlos para que el usuario los elija. de.¿Es esto factible?

También encontré Este artículo por Richard Deadman, pero parece un poco anticuado (¿2006?) y no menciona ni OSGi (al menos no por su nombre) ni el java.util.jar paquete

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top