Tengo un programa muy grande que actualmente usa SWT. El programa se puede ejecutar en Windows, Mac y Linux, y es una gran aplicación de escritorio con muchos elementos. Ahora que SWT es algo viejo, me gustaría cambiar a Swing o JavaFX. Y me gustaría escuchar tu opinión sobre tres cosas.
Mi principal preocupación es ¿qué será mejor para una aplicación GUI de escritorio? (Busqué en línea y mucha gente sugiere que JavaFX es tan bueno como Swing, pero no vi muchos argumentos válidos, excepto simples guerras de fuego de opinión). Tiene que funcionar tanto en Windows, Mac y algunas distribuciones populares de Linux.
¿Qué será más limpio y más fácil de mantener?
¿Y qué será más rápido de construir desde cero?
Estoy usando la metodología MVC en mi aplicación, si eso es de alguna ayuda.
Respuestas:
En igualdad de condiciones, probablemente JavaFX: la API es mucho más coherente en todos los componentes. Sin embargo, esto depende mucho más de cómo se escribe el código en lugar de qué biblioteca se usa para escribirlo .
Depende mucho de lo que estés construyendo. Swing tiene más componentes disponibles (tanto de terceros como integrados) y no todos han llegado a la plataforma JavaFX más nueva todavía, por lo que puede haber una cierta cantidad de reinvención de la rueda si necesita algo poco personalizado Por otro lado, si quieres hacer transiciones / animaciones / material de video, entonces esto es mucho más fácil en FX.
Otra cosa a tener en cuenta es (quizás) verse y sentirse. Si debe tener el aspecto predeterminado del sistema, JavaFX (en la actualidad) no puede proporcionarlo. No es un gran requisito para mí (prefiero el aspecto FX predeterminado de todos modos) pero sé que algunas políticas exigen una restricción a los estilos del sistema.
Personalmente, veo JavaFX como el "prometedor" biblioteca de interfaz de usuario que no es bastante allí todavía (pero más útiles), y Swing como la biblioteca de interfaz de usuario en el límite-legado que está totalmente equipado y apoyado por el momento, pero probablemente no será tanto en los años venideros (y, por lo tanto, es probable que FX lo supere en algún momento).
fuente
Como dijo Oracle, JavaFX es el siguiente paso en su estrategia de cliente enriquecido basado en Java. En consecuencia, esto es lo que recomiendo para su situación:
Para obtener más información, consulte estas publicaciones de preguntas frecuentes de Oracle sobre JavaFX aquí.
fuente
Nadie lo ha mencionado, pero JavaFX no compila ni ejecuta ciertas arquitecturas consideradas "servidores" por Oracle (por ejemplo, Solaris), debido a la falta de soporte "jfxrt.jar". Seguir con SWT, hasta nuevo aviso.
fuente
No creo que haya una respuesta correcta a esta pregunta, pero mi consejo sería seguir con SWT a menos que encuentre limitaciones severas que requieren una revisión tan masiva.
Además, SWT es en realidad más nuevo y se mantiene más activamente que Swing. (Fue desarrollado originalmente como un reemplazo para Swing usando componentes nativos).
fuente
Miraría a mi alrededor para encontrar algunos componentes (¿de terceros?) Que hacen lo que quieres. Tuve que crear componentes Swing personalizados para una vista de agenda donde puede reservar múltiples recursos, así como una cuadrícula similar a Excel que funciona bien con la navegación del teclado, etc. Me costó mucho hacer que funcionaran bien porque necesitaba profundizar en muchas de las complejidades de Swing cada vez que me encontraba con un problema. El comportamiento del mouse y del foco y muchas otras cosas pueden ser muy difíciles de corregir, especialmente para un usuario casual de Swing. Espero que JavaFX esté un poco más orientado al futuro y fuera de la caja.
fuente
En portátiles más antiguos con video integrado, la aplicación Swing se inicia y funciona mucho más rápido que la aplicación JavaFX. En cuanto al desarrollo, recomendaría cambiar a Scala: la aplicación Scala Swing comparable contiene 2..3 veces menos código que Java. En cuanto a Swing vs SWT: Netbeans GUI considerablemente más rápido que Eclipse ...
fuente