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.
@Marko: ¿Por qué crees que Swing quedará obsoleto? ¿Y cómo considera que javafx es un reemplazo? –
¿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 ... –
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. –