domingo, 10 de agosto de 2008

RIA: tiempo de apostar

He mencionado las Rich Internet Application a la pasada en algunas entradas anteriores. Hasta hace poco estaba indeciso a cual solución apostar entre Adobe, Microsoft, Sun, Google, etc. Ya me decidí.

Un poco de historia

Cada salto tecnológico es acompañado de avances notorios pero también de retrocesos.

De la época mainframe con terminales tontos a la época cliente servidor, se gano la capacidad de generar aplicaciones más interactivas basadas en ventanas graficas. Pero, el costo de despliegue de las aplicaciones aumento significativamente, porque había que desplazarse para instalar cada nueva versión en cada PC y era frecuente que diferencias pequeñas de configuración de Windows introduzcan incompatibilidades. Ese ultimo fue llamado el DLL Hell.

La época web permitio solucionar los problemas de despliegue: hay mucho menos versiones de browsers que configuraciones de Windows posibles y las aplicaciones se instalan en un servidor donde técnicas como el classloading de Java reducen significativamente el problema del DLL Hell. Lo que se perdió es la capacidad de hacer aplicaciones interactivas complejas como por ejemplo, tener un control fino de los movimientos del ratón.

La meta de las RIA es recuperar la interactivad usando el browser como método de despliegue. Se obtiene entonces los beneficios de todas las plataformas anteriores:
  • de la web con HTML puro y del mainframe monolítico: un ambiente centralizado y controlado donde se hace el despliegue de las aplicaciones,
  • del cliente-servidor: la capacidad de hacer aplicaciones clientes sofisticadas.
El termino es reciente pero hubieron varios intentos con distintos grados de éxito:
  • las applets Java: aparte de lanzar el lenguaje a la fama, se usaron en algunos sitios de juegos en-linea como el de Yahoo. Cuando Microsoft abandono Java por .Net, no se actualizo más la versión de la JVM en internet explorer y las applets se estancaron. Además, los grandes sponsores de Java, Sun, IBM, Oracle se preocuparon más del lado servidor donde podían generar ingresos. A pesar de eso, Java y las API's J2SE son una buena plataforma para aplicaciones desktop: Eclipse, Netbeans, Azureus, Limewire demuestran que se pueden hacer aplicaciones de buena calidad grafica.
  • ActiveX de Microsoft: no tuvo el efecto esperado pero permitio distribuir algunos plug-ins importantes como...
  • Flash: tiene un gran éxito para generar contenido más vistoso que lo posible con HTML puro.

Técnicas en competencia
  • Javascript, AJAX: Google con su servicio Gmail permitio revivir tecnologías que ya existían dentro de los browsers, pero que no habían sido usadas con toda su potencial. Se abre en varias alternativas:
    • javascript puro, usando framework o API's como Dojo, jQuery, Prototype
    • componentes en el servidor que generan el código Javascript (potencialmente, usando uno de los framework anterior),
    • GWT de Google que permite compilar un programa Java basado en las API's de Google a código Javascript que se ejecuta en el browser
    • seguramente, otros que no conozco
  • las applet Java: están de retorno con nuevas facilidades que las hacen un poco más entretenidas, como por ejemplo:
    • hacer drag de la applet para dejarla en el escritorio de Windows donde se ejecutará posteriormente como cualquier aplicación.
    • el lenguaje JavaFX que es más amigable para diseñadores y tiene acceso a las capacidades de Java2D,
    • API's graficas que se han mejorado en todos estos años, incluyendo mejoras de rendimiento con acceso directo al hardware
  • Adobe AIR: gracias al tremendo éxito de Flash, Adobe tiene una buena recepción con los diseñadores web. Tiene que convencer ahora a los programadores.
  • Microsoft Silverlight: se puede esperar muchos esfuerzos de parte de Microsoft para recuperar su influencia sobre los programadores de la capa cliente. Alguna vez Visual Basic reinaba el mundo y MS perdió este liderazgo con la web, Java y PHP.

Por gustos personales, siempre voy a preferir una solución basada en estándares. Antes de probar Adobe AIR y MS Silverlight, tendría que descartar completamente a Javascript y las applet java. A primera vista, las dos soluciones estandares tienen defectos:
  • Javascript es la más compleja de todas las soluciones, partiendo por todas las alternativas disponibles, las incompatibilidades entre browsers y la falta de IDE que facilitan el desarrollo.
  • las Applets sufren de su pasado y Sun ha generado mucho anti-cuerpo por haber abandonado un grupo de programadores que se fueron mayoritariamente a Flash.
Entonces, mi apuesta es:
  • no a Adobe AIR y Microsoft Silverlight. No soy el único en el mundo a quien le gusta los estándares y se inquieta cuando depende de un solo proveedor: por algo Java tuvo mucho éxito
  • dudo del retorno de las applets. Creo que va a depender de como Sun se maneja en el mundo de los celulares donde tiene que hacer un upgrade de su exitoso J2ME a una plataforma más sofisticada y compatible con el desktop: JavaFX es supuestamente para eso. Pero Sun esta cada vez más solo. Google, por ejemplo, decidio crear una platafarmo propia con Android.

4 comentarios:

Francois dijo...

Cnet acaba de publicar un articulo sobre el mismo tema.

A ver si se atreven a hacer una apuesta...

Francois dijo...

La URL del articulo de CNET.

http://news.cnet.com/8301-1001_3-10011048-92.html?tag=newsEditorsPicksArea.0

Algunos comentarios adicionales:

- Me olvide mencionar Gear en mi entrada. Ya no es necesario, el articulo de CNET habla en forma extensa.

- No estoy de acuerdo que haya que esperar el soporte de Canvas y SVG para poder usar AJAX y Javascript. Vean este ejemplo co el plug-in jQuery Flot y abran el codigo fuente en el browser para ver el sencillo que es:

http://people.iola.dk/olau/flot/examples/visitors.html

- los comentarios en el articulo de CNET son extredamente duros con el autor. Me sorprende, porque estoy de acuerdo con el: hay una guerra tecnologica importante en curso. El que gana la capa cliente, controla la capa servidora.

- el autor no se atrevio a apostar.

Jorge.Rodriguez.Suarez dijo...

Francois:

Buen post.

De mi criterio:

- Las incompatibilidades de browsers en javascript pueden ser ignoradas usando frameworks como jQuery, Dojo o prototypejs.

- He visto también el renacimiento de los applets, el fin de semana subi 60 fotos a facebook de forma muy fácil. En el browser pude primero marcar cuales me interesaban subir. Edite algunas girandolas 90 grados y finalmente pedí hacer el upload.

- Mi apuesta a corto plazo también es JavaScript, de hecho hace bastante rato que aposte por eso. GEARS viene a mostrar que JavaScript es también la apuesta de Google.

Francois dijo...

Jorge:

Usando jQuery he visto pequeñas incompatibilidades que, supongo, existen tambien con Dojo y Prototype. Pero, no es nada del otro mundo.

Buen dato lo de Facebook y las applet: es un sitio muy popular que puede marcar tendencias.

Habia visto en tu sitio muchos post sobre Javascript, asi que no me sorprendre tu posicion. Cuando haga una entrada sobre Spring, creo que vamos a tener divergencias serias :)