Siempre parezco tener esta lucha interna cuando se trata de la interfaz de usuario. Construyo un "motor" de aplicaciones y tiendo a diferir la interfaz de usuario después de que mis algoritmos funcionen. Luego voy y vengo tratando de decidir cómo permitir que un usuario interactúe con mi programa. Personalmente, soy un fanático de la línea de comando, pero no puedo esperar la de mis usuarios en general.¿Cómo decido entre usar una GUI Swing o un cliente web ligero para la interfaz de usuario de mi aplicación Java?
Me gusta mucho lo que es posible en el navegador en la era de la web 2.0 y ajax. Por otro lado, no es tan difícil crear un front-end Swing, y generalmente se puede contar con una presentación más consistente para el usuario (aunque el uso de un buen marco de JavaScript como YUI o jQuery ayuda a normalizar los navegadores).
Es evidente que ambos enfoques tienen sus ventajas y desventajas. Entonces, ¿qué criterios/parámetros/situaciones deberían llevarme a utilizar una GUI liviana (por ejemplo, basada en web)? ¿Qué criterios/parámetros/situaciones deberían llevarme a utilizar una GUI más pesada (por ejemplo, basada en Swing)?
No es mi intención iniciar una guerra de fuego, simplemente me interesan las opiniones constructivas/objetivas de la comunidad.
Edición # 1 A la luz de las primeras respuestas, me gustaría aclarar que quisiera desplegar mi aplicación sin tener en cuenta, no alojarlo en algún servidor en Internet necesariamente. Así que tendría que implementar una infraestructura de servidor web liviana a la de Jetty/Tomcat o similar.
¡Esta es una excelente pregunta! Estoy esperando las respuestas. –
Un tercer ángulo es JavaFX, ya que se dirige al segmento RIA. –