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

viernes, 29 de enero de 2010

Apache Pivot: Una RIA más

Las RIA's están revolucionando el modo en que interactuamos con Internet, gracias a las interfaces de usuario que proporcionan una experiencia diferente y amena, en contraste con las vetustas y aburridas interfaces tradicionales. En un artículo anterior (¿Cuál es la mejor plataforma RIA?) hice un análisis superficial sobre las distintas propuestas existentes: Ajax, Adobe Flex, OpenLaszlo, Microsoft Silverlight y JavaFX.

He descubierto una RIA más que me parece muy interesante, pues viene de la comunidad Apache, líder en proyectos de tecnologías web libres. Esta propuesta se denomina Apache Pivot, basándose en el archiconocido y popular lenguaje Java, líder mundial en cuanto a número de desarrollos y desarrolladores. El concepto es distinto al de JavaFX de Oracle (anteriormente Sun MicroSystems), pues esta comunidad ha sabido ver lo mejor de cada mundo y desarrollar una tecnología agradable y sencilla.



Al ser un desarrollo en Java, contamos con multitud de IDE's para desarrollar, en cualquier plataforma. Sólo es necesario descargar el framework y empezar a trabajar, sin necesidad de plugins adicionales en el navegador (sólo la máquina virtual de Java). Cuenta con un lenguaje de marcado llamado WTK basado en el modelo vista controlador, que facilita mucho el desarrollo de las aplicaciones, y que permite también combinar con código Java, del mismo que Adobe Flex combina MXML y ActionScript.


Apache Pivot ha desarrollado un conjunto de elementos de interfaz de usuario amplia, que abarca cualquier necesidad que podamos tener, incluyendo contenedores, árboles, menús, etc.

Aconsejo al lector que pueda verla y probarla mediante la siguiente demo: http://pivot.apache.org/tutorials/sample-application.html


Apache Pivot dispone también de recursos para conectar con servicios de datos remotos, como SOA, Web Services, HTTPServices o servicios de queries web (por citar algunos). La gestión de XML es simple y potente, al igual que que trabajar con JSON y con colecciones. No se olvida tampoco de efectos visuales ni del tratamiento del drag and drop. Asimismo, incluye un módulo especialmente dedicado a gráficos estadísticos.



Tampoco se olvida de las pieles para los elementos de interfaz, así como tampoco de los renderers, pudiendo ser capaz de añadir elementos de edición a las interfaces, como a una tabla o Grid.


Apache Pivot es una buena alternativa libre a las RIA's, con una comunidad con solera y con muchos adeptos. Los desarrolladores Java lo van a acoger muy bien, pues la interfaz de usuario es muy rica y bien definida y organizada, además de poder seguir desarrollando en Java o integrar este lenguaje al WTK.

Para ser imparcial, debo añadir algunas críticas:
1) La velocidad de carga. La carga del applet es tediosa, pudiendo llegar a minutos. Lo más importante en una página web o en una aplicación es que el usuario no tenga que esperar.
2) La velocidad de navegación. Cuando navegas por una aplicación, al cambiar de escenario (mediante una opción, por ejemplo), parece que la aplicación se para durante un tiempo indeterminado. El usuario no sabe qué hacer, hace clic en otros sitios y no responde. Crea estupefacción y confusión.
3) Recursos multimedia. Apache Pivot parece más pensado para aplicaciones de gestión, y no añade recursos multimedia, aunque conociendo Java, sería posible importar alguna librería y poder usar estos recursos. Tampoco tiene muchos efectos.


Enlaces
Página oficial: http://pivot.apache.org/index.html
Tutoriales: http://pivot.apache.org/tutorials
Demos: http://pivot.apache.org/demos

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

lunes, 30 de noviembre de 2009

OpenLaszlo: Introducción



En esta ocasión vamos a presentar una tecnología que puede dar mucho de lo que hablar, y que entra dentro de las RIA's, actualmente lideradas por Flex, AJAX, Silverlight o JavaFx. Esta tecnología comenzó por el año 2002, y hoy es un proyecto bastante maduro y una alternativa a las anteriormente citadas.

A su favor tiene una experiencia avalada y contrastada, y que tiene una estructura muy bien orientada a trabajar en cualquier plataforma Web, y en cualquier sistema operativo. Existen sitios web muy curiosos que apuestan por esta tecnología como la de Fnac, Walmart o Amazon.

OpenLaszlo simplifica completamente AJAX a través de tags XML, y cuando se compila y se despliega en el servidor, se convierte en un SWF (Flash) o en DHTML (Ajax). La ventaja de OpenLaszlo, además de simplificar el desarrollo, tiene en cuenta las incompatibilidades de los navegadores en cuanto a AJAX se refiere.

Otro de los atractivos de OpenLaszlo, es que permite integrar perfectamente código secuencial JavaScript con los tags XML, así como crear clases, reutilizar éstas, crear componentes, tags avanzados para reproducir recursos multimedia, animaciones, efectos, etc.

En cuanto a despliegue de arquitectura, a diferencia de Flash, una aplicación OpenLaszlo no requiere de ningún plugin para funcionar en el navegador. En el servidor, tan sólo es necesario instalar OpenLaszlo Server junto a una instalación de Jakarta Tomcat para funcionar. En sí mismo, OpenLaszlo está construido en Java.

No he profundizado mucho en esta tecnología, pero lo que he visto me ha sorprendido gratamente, y por las características que ofrece se pueden realizar cosas bastante potentes y parecidas a Flex. La comparativa no ha lugar, pues la comunidad que tiene Flex y Flash, la integración de ambas tecnologías, y la cantidad de componentes que se han generado, es inmensamente mayor que la de OpenLaszlo.

Introducción y descarga: http://www.openlaszlo.org/getstarted
WhitePaper: http://www.openlaszlo.org/whitepaper/LaszloWhitePaper.pdf
Ejemplos: http://www.openlaszlo.org/node/409