Aplicaciones web vs aplicaciones escritorio

02:36PM sep 05, 2006 in category General by Alberto Gimeno

Quizá alguno al ver el título haya pensado... tema redundante y cansino. De todas formas voy a ello.

Desde hace mucho tiempo al hacer una aplicación a veces uno se pregunta. ¿Aplicación web o aplicación de escritorio? O lo que es lo mismo... ¿HTML o Swing/SWT/GTK/Qt/...? Para algunas aplicaciones está claro. Para otras no tanto.

Una aplicación web te da varias ventajas. Más o menos son estas...

  • Instalación. Si el usuario ha llegado a tí es que tiene instalado todo lo necesario para ejecutar tu aplicación: el navegador con el que ha llegado a tu página.
  • Actualizaciones. No hay que actualizar nada porque tampoco ha habido que instalar nada.
  • Ubicuidad. Muchas veces la razón por la que hacer una aplicación con interfaz web es simplemente porque así el usuario tiene todas sus preferencias/configuraciones guardadas en el servidor web y no en su ordenador. De este modo el usuario podrá "ejecutar" la aplicación con sus mismas preferencias y configuraciones en cualquier ordenador del mundo sin tener que instalar nada.

Sin embargo el principal inconveniente es obvio: una interfaz de usuario rica es mucho más sencilla de programar en cualquier toolkit gráfico (Swing/SWT/...) que en HTML+JavaScript. El panorama ha mejorado con AJAX. Han surgido muchos frameworks de todo tipo para facilitar la tarea: prototype, dojo, Google Web Toolkit, cualquier implementación de JSF con componentes AJAX,...

Sin embargo doy la razón a aquellos que dicen que esto es un tremendo e increíble hack. HTML no se diseñó para esto. Pero al fin y al cabo este inmenso hack funciona, es extensible y flexible y están surgiendo herramientas que, al menos, nos abstraen de los detalles oscuros :P

¿Cuánto durará esto? Pues no lo sé. ¿Se pueden hacer aplicaciones web sin tener que sufrir? Pues han surgido alternativas: Adobe Flex. Flex es sin duda, para mí, la filosofía a seguir. Una buena herramienta (Flex Builder) para hacer las interfaces de usuario, componentes ricos, drag&drop,... Todo de forma sencilla y eficaz. Pero... ¿no podíamos hacer lo mismo con los applets de java? Pues sí, más o menos. Las ventajas de flex son varias... Flash es aparentemente más ligero que un applet. En flash hay cosas muy fáciles de hacer: animaciones, efectos, streaming de audio y vídeo, una interfaz eye-candy,... Otro punto a favor es el plug-in de flash, "siempre ha estado ahí", sin embargo los plugins para Java en casi todos los navegadores no han estado todo lo integrados o no han sido todo lo transparentes que debieran bajo mi punto de vista. Pero sobre todo, la principal diferencia que veo es la herramienta de desarrollo: Flex Builder. También hay que decir, muy imporante, que el gran inconveniente de Flex es que para uso comercial es de pago.

También hay una alternativa que no conozco mucho: XUL. ¿Los inconvenientes? Sólo funciona en navegadores basados en Mozilla y, creo, que no alcanza todas las características de Flex (streaming de audio y vídeo, animaciones,...).

¿Con todo esto a qué quiero llegar? Pues a que Flex me parece el camino a seguir. Sería muy bueno tener un Flex Open Source. Quizá ya alguien lo esté desarrollando. Que pienso que se ha avanzado muchísimo en las aplicaciones web basadas en HTML, pero que en ese aspecto aún hay mucho que mejorar. Cuando veo cosas como eyeOs pienso... "Si esto existe... en algo nos hemos equivocado". Y ¿por qué pienso esto? Pues porque estos tipos se han construido un gestor de ventanas y una serie de ventanas, etc. a base de etiquetas div, getElementById,... Vamos, un trabajo a muy bajo nivel. ¡Necesitamos una tecnología mejor para construir aplicaciones web! Y sería muy bueno que estas aplciaciones se integraran en el escritorio. Quizá alguno ya lo esté pensando... sí! como Java Web Start. Quizá sería interesante mejorar las herramientas que hay disponibles en Java para que construir una aplicación desplegable con Java Web Start fuera tan sencillo como hacer una aplicación Flex. Es decir, alguna librería que simplificase aún más el diseño de la interfaz gráfica y la comunicación con el servidor.

En fín. Espero comentarios. Un saludo!

Comentarios[5]

Comentarios:

Hola Gimeno.

Como alternativa a Flex para desarrollar RIA's, se puede probar de usar OpenLaszlo que es opensource. (No he usado ni una ni la otra)

Lo que tengo claro es que el futur se basa en la web, asi que espero que estos "hacks" se vayan perfeccionando para realizar aplicaciones web que antes solo eran posibles en aplicaciones de escritorio.

Saludos!

Enviado por jmonne en septiembre 05, 2006 a las 02:57 PM GMT+01:00 #

Hola.

No sé, yo creo que el futuro está en la red, pero no sé hasta que punto lo estará en el HTML. Yo creo que todos estos "hacks" vienen de no tener claro lo que iba a salir de todo esto. Si se hubiera empezado por XHTML desde el principio es posible que ya estuvieramos en otro sitio.

En cualquier caso, para simplificar la comunicación de una aplicación java de escritorio con un servidor... un servicio web?. Hoy en día dado el WSDL cualquier IDE te genera todo lo necesario. Y al contario también.

Otra cosa es hacerlo tan "bonito" como el flash, pero siendo sinceros, no veo yo que todas las aplicaciones tengan que tener animaciones y sonido. Recuerdo un simulador para preparar oposiciones que era realmente patético el uso que hacía de estas cosas (aunque supongo que eso es más achacable al buen gusto ;-) ).

En fin, la verdad es que no sé por dónde va el futuro. JWS nunca ha despegado, flex esta ahí desde hace años y sigue siendo "muy marginal", así que por eliminación, quizás si que el HTML resulte ganador, hasta que Ms imponga otra cosa.

Enviado por Al en septiembre 05, 2006 a las 03:20 PM GMT+01:00 #

Queda claro que el desarrollo de aplicaciones web va a evolucionar. El detalle es tener un estándar, porque ahora estamos con "mil" respuestas que intentan dar solución al mismo problema.

Y sí Ms ya tiene su alternativa que no dudemos intentará imponer.

Ya veremos que sucede.

Enviado por Ricardo en septiembre 06, 2006 a las 08:26 AM GMT+01:00 #

Yo creo que depende de las necesidades del producto. Pienso que muchas veces intentamos imponer una solución con calzador, normalmente porque nos interesa probar una nueva tecnología u porque es lo único que conocemos. Existen determinadas aplicaciones que no me las imagino en la web. En casos con conectividad reducida, no podemos depender de estar conectados continuamente. Por ejemplo un terminal de venta. No podemos depender que no tener conexión con el servidor para poder vender. O sistemas de analisis de información, que genera gráficas o informes a partir de información que puede descargar en un momento dado, y después realizar el proceso en local, quizás en otro momento y de esa manera no cargar el servidor.

Poco a poco se ha ido mejorando la interfaz de usuario en la web. Creo que para muchos casos, ya es suficiente, como en las webs de la entidades bancarias. Para otras, todavía tendremos que esperar un poco. Quizás una solución con flex o algo similar, como apuntas puede resultar interesante en estos casos.

Sin embargo, creo que no debemos olvidarnos del usuario final de la aplicación, que es quien realmente lo utiliza. A veces algo simple, es una buena solución.

Enviado por Juan en septiembre 07, 2006 a las 03:01 PM GMT+01:00 #

Pues para utilizar Adobe Flex (aunque cuenta con mejores herramientas), puedes emplear OpenLaszlo y tener lo mismo open source..., aunque con menos herramientas...

Saludos

Enviado por asertus en septiembre 11, 2006 a las 03:27 PM GMT+01:00 #

Enviar un comentario:
Los comentarios han sido deshabilitados.