Mostrando entradas con la etiqueta Ajax. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ajax. Mostrar todas las entradas

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

lunes, 18 de enero de 2010

¿Por qué no terminan de tener éxito las RIA's?

Algunos fruncirán el cejo con el título de este post, y es que el mismo puede dar lugar interpretaciones de datos y de gustos, donde se juntan en la cazuela de un debate apasionado y colectivo.

Las RIA's (Rich Internet Applications o Aplicaciones Ricas de Internet) prometen ser la siguiente revolución en cuanto a software se refiere, trayendo a la web interfaces de usuario de buen gusto y diseño, muy usables y productivas, amén de mantener una comunicación de datos entre el navegador y el servidor en la que no hay que repintar a cada actualización.

Hay propuestas muy interesantes, tales como Ajax, que es una evolución del JavaScript; Flex, que lleva la tecnología Flash a las aplicaciones de gestión, aprovechando las capacidades multimedia de esta tecnología; Silverlight, que extiende las posibilidades de Ajax; y OpenLaszlo, que facilita el desarrollo de estas tecnologías, generando finalmente la aplicación bajo tecnología Flash o bajo Ajax. Existen más propuestas, pero quizás sean éstas las más extendidas o populares.

Se puede apreciar que surgen ideas y propuestas, y rápidamente salen nuevas versiones de estas tecnologías con nuevas y espectaculares funcionalidades. Pero, ¿terminan de despegar realmente la implantación de estas tecnologías? Si interpretamos el cada vez mayor número de aplicaciones, podemos decir que sí, pero no con el crecimiento esperado como en otro tipo de tecnologías anteriores, que tuvieron una aceptación inmediata y una adopción ingente en muy poco tiempo, teniendo una curva de crecimiento bastante tenue. ¿Recelos a adoptar estas tecnologías? ¿Influye quizá la crisis actual?. La culpa la tiene, probablemente, una pequeña cantidad de cada, y ambas estén interrelacionadas.

La crisis ha recortado drásticamente el número de proyectos tecnológicos, y además está obligando al sector a rebajar al máximo las tarifas y los márgenes de beneficio, amén de concentrarse en aquellos proyectos vitales y prioritarios. Se prima ahora más la productividad que la calidad.

Las aplicaciones RIA's encarecen los proyectos, debido a que los nuevos profesionales de estas tecnologías son todavía pocos, y debido a la oportunidad de la escasez y la especialización, sus tarifas son más altas.

Aunque las RIA's añadan más detalles y posibilidades a una aplicación, añaden también tiempo de desarrollo, con el siguiente incremento de coste. Para la productividad se sigue confiando en los frameworks ya existentes (como, por ejemplo los struts) o en interfaces estándar, que sin ser tan funcionales, se despachan con mucha más presteza y a un menor coste. La "industrialización" está garantizada en las anteriores tecnologías por experiencia y rodaje, mientras que las RIA's, aunque sean su especialidad, se les imprime o demanda más artesanalidad.

Otro punto a considerar es que un desarrollador RIA, generalmente, no desarrolla la parte de negocio, o la planificación de un proyecto separa claramente a un desarrollador de front-end de uno back-end. En un desarrollo estándar, comúnmente, un desarrollador puede elaborar las dos capas simultáneamente. Esta particularidad añade dependencias, pues un desarrollador RIA necesitará tener un determinado servicio funcionando para poder desarrollar su interfaz. Cualquier demora en la capa de negocio afectará, inevitablemente, a la capa de presentación.

Por otro lado, un proyecto desarrollado con RIA, requerirá un mantenimiento posterior en la misma tecnología, lo que hipoteca tener a disposición especialistas en estas tecnologías. Como dije anteriormente, son profesionales especializados con un coste superior a un profesional de una tecnología más estandarizada, donde el valor de la escasez no existe y sus costes son muy inferiores.

Las ventajas de un aplicativo desarrollado mediante RIA's son innegables: presencia, diseño, usabilidad, funcionalidades de usuario, refresco... Yo desarrollo por mi cuenta utilizando RIA's, pero en la empresa para la que trabajo no se demanda este tipo de tecnologías, y no porque no se proponga a los clientes, si no porque en estos tiempos de crisis, las RIA's vienen a ser un pequeño lujo que pocos clientes están dispuestos a pagar, sacrificando una estética bonita a una interfaz estándar, completamente funcional que presente y capture datos, y que después sea fácil y barato de mantener.

Cuando estos tiempos se superen, las RIA's ganarán más porcentaje de adopción y más confianza en los proyectos. De momento lo mantendremos como un capricho o un pequeño lujo para las necesidades actuales, pero que indudablemente, marcarán en un futuro no muy lejano, un nivel de categoría mínimo para los desarrollos de aplicaciones.

Safe Creative #1001195345876