martes, 26 de enero de 2010

¿Cuál es la mejor plataforma RIA?

En la actualidad se está debatiendo una guerra por la supremacía de las RIA's, aún en pañales. Tenemos en el escenario varios actores: Flex, Ajax, OpenLaszlo, Silverlight y JavaX. Es posible que pudiera aparecer algún nuevo actor, pero dada la consolidación de estas plataformas, se hace difícil competir en este terreno, a no ser que incorpore una revolución en cuanto a innovación, tecnología o prestaciones.

Para aquellos que no conocen lo que es una RIA, baste decir que es una tecnología para crear interfaces de aplicaciones ricas para Internet (Rich Internet Application). La gran cualidad de esta tecnología es que permite interactuar con datos con un servidor y actualizar las interfaces (pantallas, formularios, etc...) sin tener que redibujar todo nuevamente. Asimismo, incorporan nuevos elementos de interfaz que permiten una experiencia de usuario muy agradable y usable, añadiendo propiedades multimedia (imágenes, vídeo, sonido...).

Para evaluar qué plataforma es mejor, hay que considerar varios factores, principalmente las necesidades que uno tiene para la aplicación a desarrollar. En el presente análisis se van exponer qué cosas fuertes y flojas tiene cada una de estas plataformas.


Ajax

Ajax (Asynchronus Javascript And XML) aprovecha la penetración y uso de Javascript en los navegadores web. El casi 100% de los navegadores tiene esta capacidad, sin importar en qué sistema operativo se esté ejecutando. La pega es que los navegadores podrían tener alguna pequeña incompatibilidad en alguna característica de Javascript (supone un porcentaje ínfimo), especialmente entre Internet Explorer y Mozilla Firefox.

El código Ajax se integra perfectamente con el código HTML y CSS de las páginas web, pudiendo, incluso incrustar otros elementos tales como películas Flash. El código no se compila, si no que el navegador lo analiza, lo interpreta y lo ejecuta. Esta característica lo puede hacer más lento que otras opciones (que veremos más adelante). Las últimas versiones de navegadores están optimizando el motor de javascript, alcanzando niveles de ejecución realmente rápidos (actualmente ganan esta carrera Opera, Chrome y Safari).

Ajax, en su esencia, puede resultar un poco artesano y arduo de programar, sobre todo si se desea cosas avanzadas en interfaces. Existen frameworks disponibles que facilitan esta tarea, tales como MooTools, Dojo, ExtJS, JQuery o Prototype. Asimismo, hay extensiones para eClipse para desarrollar en Ajax que facilitan su implantación.

A favor tiene la adopción unánime de la comunidad de Internet, lo que le erige como un estándar abierto y universal.


Adobe Flex
Adobe Flex aprovecha el parquet de implantación de Flash, con un concepto muy interesante y con un gran apoyo técnico por detrás. El plug-in de Flash está instalado en cerca de un 95% de los navegadores, y al ser un lenguaje compilado (en lugar de interpretado, como Ajax) la ejecución es mucho más rápida, optimizando más los tiempos de la CPU y del navegador.

Utiliza un lenguaje basado en tags XML, denominado MXML. Asimismo, puede incrustar código en ActionScript, el lenguaje nativo de Flash. Este lenguaje no es tan universal como Ajax, y por ello, el número de desarrolladores es mucho menor, más especializados y mejor cotizados en el mercado laboral. Detrás de Flex hay una comunidad extensa, con soporte masivo de tutoriales, blogs, foros, libros, librerías, utilidades, etc.

Adobe Flex está muy pensado al diseño, proporcionando herramientas profesionales para crear interfaces de usuario espectaculares y cuidadas, con una velocidad sorprendente. Incluye también una plataforma de comunicación con servidor muy buena, para acceso a servicios y datos remotos, donde la complejidad se reduce al mínimo y la estabilidad y velocidad se aprovechan al máximo. Esta plataforma está especialmente indicada para desarrollos multimedia, debido a sus capacidades de reproducción de vídeo, de música o de animaciones 2D y 3D, así como de la multitud de efectos visuales y de animación que posee.

Esta plataforma tiene sus detractores, entre los que se encuentran aquellos que abogan por el software libre 100%. El plug-in de Flash no está liberado todavía (está liberado el lenguaje Flex), y éste es un factor importante a la hora de confiar la ejecución de un programa en un entorno que no sabes qué hace por detrás ni que puedes modificar. El plug-in de Flash, por contra, tiene a favor que no hay incompatibilidades entre los navegadores ni entre sistemas operativos.

Otro factor a tener muy en cuenta, es que casi todos los recursos de un proyecto en Flex se compilan y se integran en un único archivo .SWF. Por un lado es bueno, porque la instalación es sencillísima, y el navegador sólo ha de cargar dicho fichero. Pero, por contra, si alguno de los recursos (como una imagen, un icono, una fuente o un archivo de audio o vídeo) se ha de actualizar, hay que volver a recompilar nuevamente el swf, y volverlo a instalar en el servidor.

Uno de los problemas que ven los adeptos a Ajax con respecto a Flex, es que toda la aplicación se carga desde el principio (fichero SWF), cargando innecesariamente la memoria del navegador y ejecutando procesos que no se requieren en ese momento. La carga inicial puede ser tediosa si la aplicación es de tamaño considerable.

Otra cosa a favor de Flex, es que también existe la tecnología AIR, que permite desarrollar las mismas aplicaciones para entornos de escritorio, con una extensión de funcionalidades que permiten fortalecer la seguridad del equipo, así como el acceso a ficheros físicos del disco duro o el uso directo de una base de datos, como SQLite (entre otras muchas características adicionales).

La tecnología Flash también permite su ejecución en dispositivos móviles, con el inmenso mercado que hay detrás.

Otro problema añadido a la tecnología Flash es que al estar todo encapsulado en un archivo SWF, y compilado, no hay elementos visibles en la página para que los buscadores puedan indexar. De cara al éxito de búsquedas, no es la mejor opción.


OpenLaszlo

OpenLaszlo lleva ya diez años en este escenario de las RIA's. A favor tiene que es software libre 100%, lo que lo convierte en un buen candidato para los puritanos. Esta plataforma tiene una dependencia importante del servidor de aplicaciones Apache Tomcat y de la máquina virtual de Java, pues se trata, principalmente, de un servlet que interpreta el código y lo compila en tiempo de ejecución para devolver al navegador un Ajax o DHTML, o un Flash.

El lenguaje está muy estudiado para que sea interpretado igual en DHTML o en Flash (sinergias entre ambas plataformas), y también, en el caso de Ajax, corrige las posibles incompatibilidades entre navegadores.

Está basado en un lenguaje de marcas XML muy sencillo de aprender, e incluso permite agregar scripts de JavaScript.

Las capacidades multimedia son muy limitadas, si bien puede reproducir algunos medios audiovisuales. También son limitadas las capacidades de interfaz (comparándolas con Flex), pero son sobradamente suficientes para cualquier aplicación de gestión.

La comunidad OpenLaszlo no es muy numerosa, y el número de recursos en la red no es tan numeroso como en las plataformas anteriores. En el sitio oficial de OpenLaszlo, se puede encontrar una buena documentación, así como otros recursos. Fuera de este sitio, es más difícil encontrar soluciones específicas.


Microsoft Silverlight

Silverlight es la apuesta de Microsoft a este nuevo mercado de oportunidades tecnológicas basadas en RIA. Llegó tarde, cuando las plataformas anteriormente citadas ya estaban consagradas.

En este periplo, Microsoft trae una interfaz rica y con capacidades multimedia, para intentar cubrir lagunas en Ajax. Su CORE está basado, precisamente, en Ajax, y con Silverlight extiende sus capacidades de forma notable, haciendo más sencilla la programación gracias también a su entorno de desarrollo Visual Studio (para mi, sin lugar a dudas, el mejor sistema de programación que existe, aunque sea propietario).

Si bien la idea es buena, y la productividad aumenta con esta tecnología, tiene por contra que los clientes han de instalarse un plug-in en su ordenador (como el de Flash), y que además de ser una tecnología que no es open source, tiene gran dependencia con otras tecnologías de la fábrica del gigante de Redmond, como el framework .NET. Asimismo, el plug-in de Silverlight sólo funciona para entornos Windows y MacOS, y que el entorno de desarrollo Visual Studio está unicamente para entornos Windows (el proyecto MONO aún no contempla esta tecnología).

Si el entorno de la apliación está basado en sistemas Microsoft, con servicios de servidor basados en .NET, Silverlight es el complemento idóneo, ya que se integra a la perfección sin problemas, además de añadir una dosis de productividad que se aprecia en las planificaciones y en la rentabilidad de los proyectos.


JavaFX

JavaFX llega bastante tarde a esta contienda, y viene con una propuesta interesante, aunque algo escasa en comparación con sus competidores, especialmente a lo que se refiere a capacidades multimedia (de momento no tiene capacidad para 3D y en cuestión de vídeos o audio está muy limitado).

JavaFX requiere de la instalación de la máquina virtual de Java, así como del módulo específico de JavaFX, en el equipo cliente (en donde está el navegador web).

El IDE de JavaFX es interesante, pues es una extensión que se ha añadido a NetBeans, el IDE de Sun Microsystems.

Las interfaces de usuario están heredadas de las vetustas y anticuadas Swing, aunque han mejorado ciertas cosas. Parece que también han retomado los anticuados Applets. En este aspecto, queda un poco humilde en relación a sus competidores.

La carga de cualquier aplicación JavaFX puede resultar desesperante. Del mismo modo que Flash, requiere que se cargue toda la aplicación al principio. En el caso de Flash es bastante rápido, y la espera no suele suponer un problema. En el caso de JavaFX recuerda mucho a la de los antiguos Applets, y es muy lenta (he probado los ejemplos de la página de JavaFX, y no se trata simplemente de unos pocos segundos).

Otra de las apuestas de JavaFX es el mercado de los dispositivos móviles, donde ya tiene bastante parte del pastel ganado, aunque no es lo mismo un framework ligero como Java ME, que un framework tan pesado como éste.

En cuanto a soporte, JavaFX está a la altura que nos tiene acostumbrados Sun Microsystems (ahora Oracle). El IDE NetBeans es bueno, hay mucha documentación y recursos documentales, así como comunidades en torno a esta tecnología.


Conclusión final

La mejor plataforma RIA dependerá de las necesidades del proyecto, y es necesario conocer las características de cada una de las plataformas que hemos visto en este artículo.

Ajax es la plataforma RIA utilizada por una amplia mayoría de desarrolladores Web. Las capacidades básicas o de serie de esta plataforma no pueden compararse con las de Flex, y los elementos de interfaz, o bien se desarrollan, o hay que buscar frameworks de terceros. Muchos desarrolladores se encuentran muy a gusto con este entorno, y puede ser utilizado desde diversos IDE, como eClipse, NetBeans, Aptana Studio, Visual Studio, etc. Los navegadores no requieren de instalaciones adicionales (Ajax se interpreta de serie), y la velocidad de su motor JavaScript es lo suficientemente rápido como para soportarlo.

Adobe Flex es mi plataforma favorita, y para mis proyectos lo utilizo por su velocidad, por su bajo consumo, por sus capacidades de interfaz, multimedia, de integración, de desarrollo y de depuración, así como tener la posibilidad de portar el desarrollo a una aplicación de escritorio mediante AIR. Sin embargo, en una aplicación pública en la que su principal activo sea la promoción y en la que sus contenidos que aparezcan en las búsquedas, desde luego, deberíamos pensar en otra plataforma.

OpenLaszlo recoge lo mejor de Ajax y AdobeFlex, y lo plasma en un lenguaje muy sencillo de aprender y de utilizar, suficiente para cualquier aplicación de gestión que no requiera de grandes dosis multimedia.

En un entorno puramente Microsoft, Silverlight es una gran opción, si bien no hay una comunidad tan amplia como la de Ajax o la de Flex, Microsoft tiene recursos suficientes como para dar soporte.

JavaFX aún está en pañales, y si la comunidad Java, que es ingente y amplia, da su voto de confianza a esta tecnología, es muy posible que las nuevas versiones puedan codearse con sus competidores.



Enlaces:

Ajax (Wikipedia): http://en.wikipedia.org/wiki/Ajax_(programming)
Adobe Flex: http://www.adobe.com/es/products/flex
OpenLaszlo: http://www.openlaszlo.org
Microsoft Silverlight: http://www.microsoft.com/SILVERLIGHT
JavaFX: http://javafx.com
Safe Creative #1001265387317