2010-01-20 8 views
6

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.

+0

¡Esta es una excelente pregunta! Estoy esperando las respuestas. –

+0

Un tercer ángulo es JavaFX, ya que se dirige al segmento RIA. –

Respuesta

2

Depende de la aplicación y esta es esencialmente una pregunta impulsada por la usabilidad (aunque hay consideraciones como el almacenamiento de datos y los requisitos de la plataforma). Piensa en los pros y los contras.

Pros de una ligera interfaz de usuario web:

  • Facilidad de distribución
  • Independiente de la plataforma
  • Facilidad de mantenimiento

contras de una interfaz de usuario web ligero:

  • Menos de control ambiental
  • normas de marcado varían entre los navegadores
  • requiere un servidor web y todo lo que va con ella

Pros de una interfaz de usuario ejecutable

  • Más control del medio ambiente (es decir: Aplicaciones de pantalla completa, etc)
  • No necesariamente sujetas a la latencia y cortes de

Contras de una interfaz de usuario ejecutable

  • actualizaciones de empuje puede ser más difícil
  • requiere la instalación
  • Requisitos potenciales de la plataforma (marcos, paquetes, etc.)
  • Posiblemente requir es conocimiento de temas avanzados de redes (servicios web, etc.)
+1

Ventajas de una interfaz de usuario web ligera: almacenamiento y validación de datos del lado del servidor. Esto es arbitrario. Para ti tal vez sea un profesional, porque obtienes una gran cantidad de datos para analizar a tus usuarios. Para los usuarios, podría ser una estafa si esos datos son personales. – zedoo

+0

Buen punto zedoo. Eso es difícil de poner en cualquier categoría como pro o contra, pero definitivamente es una consideración. – Daniel

+0

No tuvo en cuenta la posibilidad de utilizar un navegador integrado como JXBrowser, lo que superaría algunos inconvenientes de la interfaz web. –

1

Un pequeño factor que quizás desee considerar es que el usuario deberá someterse a algún tipo de instalación (aunque mínima) si distribuye una aplicación swing.

También una aplicación web le permitirá realizar un seguimiento preciso del uso de su aplicación (a través de Google Analytics o algo similar). No estoy seguro de si eso es una preocupación, pero puede ser útil para usted en el futuro.

1

Si se trata de una aplicación cliente-servidor, normalmente elegiría una interfaz web para la aplicación.

usted se ahorrará un sinnúmero de problemas con cosas como las versiones de JRE instalados, actualizaciones de distribución, permisos de las aplicaciones, accesos directos desaparecido ...

0

Si prevé que exista actualizaciones frecuentes a continuación, la aplicación basada en la web puede ser mejor, ya el usuario no tendría que actualizar el cliente o instalar un nuevo cliente que contenga las actualizaciones. Si crees que el usuario puede necesitar la posibilidad de utilizar la aplicación mientras no está conectado a Internet, entonces el swing sería mejor.

Solo dos cosas en la parte superior de mi cabeza.

1

Es necesario romper con los requisitos de la aplicación a decidir esto ...

  1. ¿Los usuarios tienen la versión de Java instalada suficiente? Será necesario que sea para ejecutar una GUI de Swing.
  2. ¿Tienes un servidor web?
  3. ¿Necesita la flexibilidad de una GUI Swing o la accesibilidad de la interfaz web?
  4. Es Java Webstart y la opción, si es así, puede distribuir una GUI de Swing a través de la web.
  5. ¿Su aplicación realiza cálculos o procesos extensos? Si es así, una aplicación cliente puede ser la respuesta.

Hay un millón de preguntas como estas. Yo sugeriría una sesión de tormenta de ideas y un seguimiento de todos los pros y contras de cada una, agregando una puntuación, que tirando todo y yendo con tu instinto :)

0

Piensa en los usuarios y casos de uso de tu proyecto.

¿Los usuarios esperan tener acceso a ella cuando están desconectados de Internet (por ejemplo, en un avión o en una cafetería sin acceso a Internet)? Usa Swing.

¿Desea que los usuarios puedan acceder a la misma herramienta desde diferentes computadoras (por ejemplo, tanto en el trabajo como en casa)? Use una interfaz de usuario web.

Considere también si el usuario necesita guardar y cargar datos, y si la herramienta produce archivos de datos que algunos podrían considerar sensibles (de ser así, el almacenamiento en la web podría ser un problema).

0

Haga una suposición rápida A menudo intento preguntarme a mí mismo/a los clientes si la aplicación tiene una gran demanda de "escritura". Para una aplicación principalmente de solo lectura, una solución de cliente ligero es perfectamente adecuada. Pero si se necesitan muchas acciones de escritura, entonces una aplicación de escritorio oscilante tiene más flexibilidad.

Personalmente siempre prever una aplicación de escritorio oscilante. Se puede implementar fácilmente usando Java Webstart.

0

Sin saber nada sobre su aplicación No puedo dar la mejor recomendación posible. Sin embargo, puedo afirmar a partir de la experiencia personal/profesional que instalar una aplicación en las máquinas de los clientes es mucho más doloroso de lo que parece.

Con AJAX/web realmente solo tiene que preocuparse por admitir como tres navegadores. Los problemas/actualizaciones de instalación solo se sienten una vez cuando implementa el producto en el servidor web.

Al igual que una aplicación Swing independiente, se enfrenta al verdadero gran desastre que es la instalación de la aplicación en sistemas desconocidos. Este lío era tan malo que cosas como AJAX realmente fueron empujadas para hacer que las aplicaciones web se comportaran como una verdadera aplicación nativa.

Cuestiones relacionadas