2008-11-11 24 views
17

¿Qué estructura de interfaz gráfica de usuario/biblioteca elegiría si fuera a iniciar su nuevo proyecto ahora o en un futuro próximo?¿Qué marco de GUI de Java elegir ahora?

Tiene que ser gratuito para uso comercial y multiplataforma.

he sido un usuario de oscilación feliz, pero Sun parece como empujar oscilación de desaprobación, mientras empuja JavaFX, que aún no está listo para el prime time. También hay SWT, pero parece que tiene problemas en Linux.

¿Cuál es su biblioteca/marco Gui de su elección?

EDITAR: Sun ha cancelado swingx proyecto. De los comentarios del foro en http://swingx.dev.java.net parece que la mayoría de los recursos de Sun que anteriormente trabajaban en core swing ahora están desarrollando JavaFx a tiempo completo.

+0

@Marko: ¿Por qué crees que Swing quedará obsoleto? ¿Y cómo considera que javafx es un reemplazo? –

+0

¿Está JavaFax incluso disponible en un formato no beta ahora? No creía que JavaFX fuera un competidor de Swing. Parecían complementarios cuando miré por primera vez a JavaFX ... –

+0

SwingX no se cancela y no es Swing. SwingX es un proyecto de código abierto para agregar extensiones sobre Swing. Lo que se ha dicho es que Sun actualmente no tiene personal propio dedicado a SwingX. Obviamente, se está poniendo mucho esfuerzo en JavaFX en este momento. El escritorio JavaFX usa Swing. –

Respuesta

7

Creo que a pesar de la mala administración de Sun, Swing sigue siendo un marco excelente. Puede hacer un lote con él, especialmente si ese "lote" implica controles de UI renderizados personalizados. Si su aplicación necesita un LAF de marca, o incluso algunos controles personalizados complejos aquí y allá, Swing es exactamente lo que quiere.

En el otro lado de la moneda, me gusta mucho SWT. Se critica bastante porque todos solían pensar que era la estratagema de IBM tomar el control de Java, pero en realidad es solo otro marco de UI que es bastante complementario a Swing. No aconsejaría usar SWT para la renderización de gráficos súper complejos (específicamente: composición) o para crear controles personalizados realmente no triviales, pero para todo lo demás es realmente fantástico. La API recibe muchas críticas debido a cosas como la dependencia de las máscaras de bits y un bucle de envío de eventos administrado por el usuario, pero la mayoría de esas cosas son bastante transparentes una vez que te acostumbras. Los componentes en sí son mucho más simples que Swing (en términos de extensibilidad y similares), lo que significa que la API puede ser proporcionalmente más simple. De hecho, puedo recordar cómo crear y llenar una tabla en SWT; mientras que no creo que haya alguna vez manejada en Swing sin la asistencia de Google.

El mayor problema de SWT ahora mismo es que la versión estable depende de Carbon en Mac OS X. Esto significa que las aplicaciones SWT solo pueden ejecutar 32 bits en Java 5 (o 32 bits en SoyLatte). En cuanto a otras plataformas, SWT es fenomenal en Windows (Vista y XP) y casi igual de bueno en GTK Linux. No (en el pasado reciente) tuve problemas con SWT en Linux, así que estoy un poco sorprendido de que lo menciones como un punto delicado.

Volviendo a su pregunta: todo depende de lo que necesite su aplicación. Si se trata de una llamativa aplicación de estilo personalizado con toneladas de controles personalizados y composición compleja, Swing es el único juego de la ciudad. Sin embargo, si una API más simple es más importante para usted, o si sus usuarios exigen lo último en fidelidad LAF de plataforma, SWT es la mejor opción.

+0

Acepto que SWT es un marco de GUI bastante bueno. También se ejecuta en PocketPC, lo que significa que puede crear una versión móvil de su aplicación de forma bastante rápida cuando la administración hace la demanda. – JeeBee

3

Todavía utilizo Swing, y continuaré haciéndolo hasta que ya no sea compatible. Gracias por la información sobre Javafx, tendré que buscarlo ahora.

+0

Sí, es compatible con la forma en que AWT es compatible, pero no habrá ningún nuevo desarrollo en el lado del swing. – Marko

+1

Ahh, pero si la versión actual hace lo que necesita, ¿a quién le importa si no hay un nuevo desarrollo? Si no está roto, no lo arregles. – Elie

4

En este momento, estoy usando SWT o Qt (Jambi).

Swing no evolucionó en los últimos, digamos, 10 años, los errores no se corrigieron, el desarrollo se detuvo en favor de JavaFX, por lo que nunca verá funciones nuevas. Es probable que JavaFX se vea genial, pero sigue siendo vaporware y está hecho por las personas que permitieron que Swing muera de hambre, así que no estoy poniendo dinero en ello.

Entre SWT y Qt, prefiero usar Qt porque es un marco muy maduro y potente hecho por personas que saben lo que están haciendo (bueno, la mayor parte del tiempo de todos modos :)) y SWT si la licencia para el nuevo proyecto no era compatible con Qt.