tutorial interfaz grafica example español ejemplos java swing

interfaz - ¿Cuál es la mejor manera de agregar una característica de auto actualización a una aplicación Java Swing?



java swing pdf (6)

Estoy tratando de encontrar una manera de agregar una función de actualización automática a una aplicación Java / Swing en la que estoy trabajando.

Básicamente tengo un montón de archivos jar con funcionalidad extra para volver a implementar a los usuarios instalados cuando cambien. Nada complicado, solo verifica si se ha lanzado una nueva versión, descárgala a través de HTTP y luego ofrécete a reiniciar la aplicación para el usuario.

Eché un vistazo al webstart, y podría funcionar. Pero esta aplicación en particular hace algunas cosas funky con la carga de clases y la configuración de la memoria del GC que no se ven como si fueran compatibles a través de webstart, o al menos complicará las cosas. (Es una versión modificada de JMeter)

También fui por el camino de agregar en este controlador de complementos http://swing-fx.blogspot.com/2008/06/add-auto-update-and-plugins-to-your.html , pero es muy alfa, e intenta hacer demasiado con los errores habituales que obtienes con material alfa.


Actualizaciones, complementos, separación de preocupaciones, etc. son exactamente de lo que se trata OSGi, es posible que desee echar un vistazo a esto. No vendrá gratis (léase: con una curva de aprendizaje inicial empinada, especialmente cuando está utilizando trucos de carga de clases), al menos hay buenas implementaciones de código abierto (felix - vea felix.apache.org , equinox - vea www.eclipse.com). org y otros)

Para estas implementaciones, los autores de búsqueda están disponibles: si escribe los módulos correctamente, es posible actualizarlos en tiempo de ejecución sin reiniciar.



Definitivamente probaría Webstart. Hemos tenido mucho éxito lanzando incluso las primeras aplicaciones de Eclipse RCP con Webstart, y probablemente no pueda obtener más problemas de carga de clases que con el marco OSGI (Eclipse Equinox).

¿Podría quizás dar más detalles en su pregunta sobre su enfoque de carga de clases?

Con respecto a la GC y otras configuraciones de VM: éstas son fáciles de especificar en los archivos JNLP (Protocolo de inicio de red Java) utilizados por Webstart para iniciar aplicaciones.


Hice exactamente lo mismo. Pero eso fue hace mucho tiempo, entonces probablemente haya mejores herramientas hoy.

Lo que descubrí que necesitaba era un cargador. El programa principal del cargador no tenía los archivos jar de la aplicación en classpath. Primero descargó una actualización si era necesario y luego creó un cargador de clases personalizado con los archivos jar de la aplicación en la ruta de clases e invocó el método principal de la clase principal de la aplicación. No es muy complicado. IIRC Necesitaba hacer esto porque las jarras no se podían sobrescribir en Windows si ya estaban en classpath.

Espero que esto ayude.


Java Web Start es una buena opción. El material de GC no es importante. La carga de clases podría ser un problema. Pero cuando el usuario le haya otorgado la confianza, puede otorgar AllPermisions y podrá realizar una carga de clases personalizada. Tal vez sea bueno reconsiderar las cosas originales con la carga de clases. Es realmente necesario? O mira NetBeans. Debería haber inspiración para la actualización automática.


tuvimos una aplicación de swing hace 6 años que se auto-actualizó. como sugirió,

1) descargó las últimas jarras sobre http,
2) los copió en una carpeta.
3) dado que la aplicación swing se inicia utilizando un archivo .BAT, después de que el usuario haya dicho SÍ, cerramos la aplicación de oscilación y buscamos cualquier archivo en la carpeta de actualización. en caso afirmativo, ejecute otro archivo .BAT para copiar los archivos NEW JAR en el directorio requerido.
4) luego reinicia la aplicación swing.