¿Empieza a migrar su proyecto Swing a JavaFX [cerrado]

13

Tengo un proyecto de 4 años escrito en Swing + SwingX. Actualmente, todavía está vivo y sigue pateando.

Sin embargo, a medida que llegan más solicitudes de características relacionadas con la GUI (por ejemplo, una tabla de árbol clasificable), comienzo a sentir la dificultad de completar las solicitudes. Esto es cierto especialmente porque no hay ningún desarrollo activo en torno al proyecto SwingX.

Además, casi no puedo encontrar ningún marco de GUI Java bueno, pero mantenido / desarrollado / evolucionado activamente.

Me estaba preguntando, ¿alguno de los desarrolladores de Swing siente lo mismo? ¿Ha comenzado a migrar su proyecto Swing a un marco de GUI desarrollado mucho más activo, como JavaFX?

    
pregunta Cheok Yan Cheng 11.05.2012 - 19:27

8 respuestas

9

Personalmente me estoy moviendo a JavaFX (2.1+, no a la antigua versión extraña 1.x con el lenguaje de scripting desagradable). El nuevo JavaFX no es 100% perfecto, pero ya es una vista más agradable de usar que Swing, veo un futuro razonable para ello (especialmente dado el motor de Webkit incorporado).

    
respondido por el Martijn Verburg 11.05.2012 - 23:02
9

Me pregunto lo mismo a menudo, pero no creo que migre proyectos existentes a JavaFX. Al menos no por ahora, y no para proyectos de tamaño mediano a grande. Sin embargo, me gustaría considerar JavaFX para nuevos proyectos, considerar una migración nuevamente en el futuro y volver a evaluar una pregunta basada en el progreso de JavaFX.

En este momento, mis preocupaciones son:

  • Seguridad>

    Sí, pronto llegaremos a la versión 3.0, pero no ha existido tanto tiempo, y aún sufrimos cambios importantes. Por lo tanto, para un software corporativo grande y adverso al riesgo, este es un lugar relativamente delicado.

  • Rendimiento

    No he visto suficientes datos concretos sobre las diferencias de rendimiento.

  • Widgets y componentes

    No he visto suficiente ganancia en los nuevos componentes. Esto puede relacionarse con la inmadurez, supongo. Tampoco sé todavía qué tan bien se pueden extender y componer, en contraste con Swing.

En general, supongo que los datos sólidos sobre las ventajas es lo que me falta para estar completamente convencido por JavaFX.

Por otro lado, Swing está probado y probado. Sí, la API es torpe e invoca el autocompletado en tu IDE en un objeto Swing como el JTextPane lo hará llorar y llorar por su mamá, pero, si tienes el conocimiento suficiente, puedes crear IU increíbles con Swing, que están funcionando bien (nunca compré la falacia Swing-has-bad-performance, veo las publicaciones anteriores de Romain Guy en los blogs de Sun) y te permiten hacer cosas muy buenas.

Por lo tanto, antes de cambiar cualquier cosa, te recomiendo que pruebes un pequeño prototipo primero, y quizás intentes portar algunos de los diálogos de tu aplicación y ver cómo va.

    
respondido por el haylem 08.06.2012 - 03:06
5

He estado haciendo un montón de JavaFX ahora y lo prefiero a Swing. La estructura de Scene Graph es diferente a lo que estás acostumbrado con Swing, pero proporciona muchas mejoras. Es divertido trabajar con la API, se siente refrescante.

Hay mucho más que puedes hacer con él, multimedia, animación, navegación web. Por ejemplo, puede crear una aplicación Google Maps en unas pocas líneas de código, incrustando html5 y javascript.

Se dice que se incluye en el tiempo de ejecución de Java 8, lo que significaría como el reemplazo definitivo de Swing como el marco de la interfaz de usuario predeterminado

@Migration : debe comenzar por aislar partes de su aplicación que se pueden convertir a JavaFX. La interoperabilidad de Swing-JavaFX 2 es una gran cosa, puede usar el javafx.embed.swing.JFXPanel para incrustar su elemento JavaFX. Consulte swing-fx-interoperability . (Para completar, también puede incrustar en SWT).

    
respondido por el GallifreyanCode 08.06.2012 - 23:33
4

Swing se está convirtiendo en una tecnología heredada, o ya lo es. Sin embargo, es bastante bueno en lo que hace y no va a desaparecer en un futuro previsible, por lo que no veo ninguna razón para alejarme de él, especialmente si uno ya ha invertido en él. El software JIDE hace que los componentes Swing sean buenos (comerciales) para reemplazar lo que falta en el Swing estándar. Por ejemplo, la tabla de clasificación se puede ordenar en su Grids fuera de la caja.

    
respondido por el Joonas Pulakka 11.05.2012 - 19:37
2

Aunque las nuevas versiones de JavaFX parecen muy impresionantes, dudo que valga la pena realizar una migración completa a menos que esté dispuesto a invertir mucho tiempo / esfuerzo / dinero en una revisión completa de la GUI.

Swing puede tener sus peculiaridades y está mostrando su edad, pero también tiene algunas ventajas:

  • Capacidad multiplataforma muy sólida, actualmente mucho mejor que JavaFX
  • Es maduro y probado, mucho más que JavaFX
  • Tiene un gran ecosistema de comunidad / biblioteca de usuarios
  • Probablemente ya tienes muchas habilidades de Swing o puedes contratar personas fácilmente con ellos

En última instancia, si no está roto, ¿por qué solucionarlo?

Por supuesto, para un nuevo proyecto estaría buscando muy seriamente JavaFX, Android y / o una GUI basada en la web (quizás con algo como Vaadin).

    
respondido por el mikera 31.07.2012 - 11:45
1

Estoy en la misma posición que el OP: tengo aplicaciones heredadas de swing pero necesito implementar nuevos lenguajes e interfaces que no son compatibles de forma nativa. La mayor de estas aplicaciones ha sido refaccionada un par de veces por varias razones (mejora la modularidad, mejor MVC y estructura de despacho de eventos, etc.), por lo que no soy completamente reacio a volver a escribir el código de UI. Así que he pensado mucho sobre el tema.

Sin embargo, algunas cosas no se pueden resolver con Swing sin invertir mucho más tiempo y esfuerzo en lo que es esencialmente una tecnología heredada. Por ejemplo, aparte de los simples eventos del mouse, los nuevos dispositivos de pantalla táctil no son compatibles con Swing. Proporcionar un componente de navegador basado en Swing es igualmente problemático o costoso, y en mi caso, el enfoque de javafx-in-swing no es una opción, ya que complica el manejo de eventos de IU de manera no trivial.

Creo que ha sido lo viejo y fiel en su tiempo, y si su plataforma es tan invariable como su código base, quédese con él, obviamente. Pero para que una aplicación avance hacia nuevos casos de uso más contemporáneos, JavaFX 2+ probablemente será el camino a seguir en mi caso.

Como una nota al margen: la única característica errónea en Swing me hubiera encantado haber desaparecido en jfx, pero no lo hizo, es el enfoque de un hilo a regla para todos ellos para el envío de eventos de IU. Cualquier interfaz de usuario no trivial necesita subprocesos múltiples para mantener la interfaz de usuario nítida y receptiva, y dejar que el desarrollador de la aplicación se tropiece con los mismos escollos con tanta facilidad es un déficit en la API IMHO.

    
respondido por el David Nugent 15.02.2013 - 06:55
0

He tenido una gran experiencia al usar RCP en aplicaciones grandes basadas en escritorio. Básicamente, comenzó como una abstracción de la capa GUI de Eclipse y ha avanzado mucho desde entonces. En lugar de Swing, que se basa en AWT, RCP se basa en JFace, que a su vez se basa en SWT. Le permite desarrollar aplicaciones y usar los conceptos de GUI que Eclipse usa (vistas, editores, perspectivas, asistentes, etc.). Es muy escalable y, al igual que Eclipse, se mejora constantemente.

Sin embargo, nunca he migrado un proyecto existente de Swing a RCP; Me imagino que llevaría bastante tiempo rodear tu cabeza con los diferentes paradigmas y si no has separado bien tu modelo y las capas de visualización, es probable que tengas dificultades. Pero como preguntaste sobre cosas como las tablas de árboles que se pueden ordenar, RCP es excelente en eso.

Si desea volver a consultar esto, puede probar el tutorial de Lars Vogel's. o eche un vistazo a algunos ejemplos de proyectos de código abierto o proyectos comerciales que utilizan RCP.

    
respondido por el Amos M. Carpenter 13.08.2012 - 15:14
-2
  

(Por ejemplo, una tabla de árbol clasificable), comienzo a sentir la dificultad de completar las solicitudes. Esto es cierto, especialmente porque no hay desarrollo activo en torno al proyecto SwingX.

  • no es cierto, nuevamente este proyecto está vivo,

  • blablabla una vez, cuando SwingX perdió las subvenciones de Sun (durante la adquisición de Oracle), la gente de SwingX fue a JavaFX creado

  

Además, casi no puedo encontrar nada bueno, pero manteniéndome activamente / desarrollando / evolucionando GUI Java framework.

  • no Swing no es sobre Framework sino sobre Look and Feel

  • Los marcos son para usuarios no técnicos (MsAccess es el mejor ejemplo para el marco GUI)

  • pero si desea compilar una aplicación real, tiene sólidos conocimientos sobre Swing y Overriden también proviene de Framework,

  • ejemplo divertido Netbeans ha incorporado Swing Framework basado en JSR296, pero no puede cambiar el icono de JFrames directamente,

  

¿Has comenzado a migrar tu proyecto Swing a un marco de GUI desarrollado mucho más activo como JavaFX?

no hay razón por la que

  • lo mismo con la migración a Java7, tal vez cuándo estará allí Java7.15 - 17

  • Estoy comparando JavaFx con el Nimbus, el desarrollo finalizó / se dio por vencido en algún lugar de la primera mitad

  • lo siento, no soy desarrollador, solo soy Java & Ventilador de giro

respondido por el mKorbel 07.06.2012 - 23:18

Lea otras preguntas en las etiquetas

Comentarios Recientes

[confidencial] usando Spring Frameworks? StartUpframework: todavía no estoy en producción y necesito ayuda. ¿Qué tal visitar un CI con BeanCouch (revisado con precisión) que ya funciona para mi proyecto Swing (usé Spring 2 en la producción integrada), ¿debería ser útil para usted? ¿Todavía escéptico? Antes de desarrollar aplicaciones javaFX, primero pruebe, interactúe con, solucione problemas, resuelva, mejore y reutilice los productos JavaFX de otras compañías como Electrode, Mono, Apache Pascal, Vue,... Lee mas