James R. Borck Construir aplicaciones efectivas – las que pueden ser distribuidas y correr fácilmente por Internet – requieren la evasión de fallas inherentes en la entrega del navegador Web estático. Muchas compañías están cambiando las RIAs (Aplicaciones Ricas de Internet) para alcanzar esa meta. Dos productos actualizados, Macromedia Flex 1.5 y Laszlo Presentation Server 2.2, ofrecen plataformas RIA con un modelo de entrega que involucra proxies del lado del servidor para la acumulación de datos y el tiempo de ejecución de Macromedia Flash. Estas aplicaciones Flash reciben datos vía servidor, pero dirigen localmente la capa de presentación y la lógica de procesamiento. La interacción se siente como una aplicación del escritorio, se ejecuta en un navegador, y, después de que la aplicación inicial es cargada, requiere una cantidad mínima de transmisión de datos para actualizar la presentación local. El proceso reduce el número requerido de actualizaciones de ida y vuelta de la página para completar una tarea usando un navegador basado en HTML. Las plataformas Flex y LPS (Laszlo Presentation Server) tienen distintas ventajas sobre otros proveedores RIA en los que el tiempo de ejecución de Flash tiene una amplia penetración y aceptación en el mercado, haciéndolo un modelo de entrega confiable para aplicaciones dirigidas a los clientes. Más aún, las Interfaces de Usuario (UIs) mejoran su funcionalidad gracias a la deslumbrante animación en Flash. Con efectos ahora accesibles en forma de programa, no hay necesidad para los desarrolladores de soportar el tedio de la animación basada en cuadros. Macromedia y Laszlo toman diferentes estrategias para alcanzar la misma meta. A diferencia de los paquetes IDE de Macromedia, Flex Builder, Laszlo no ofrece desarrollo de herramientas que mencionar, aparte de un rudimentario depurador. Sin embargo, recientemente Laszlo abrió el código fuente LPS bajo la CPL (Licencia Pública Común), poniéndola disponible y gratuita para su reuso comercial y quizá un poco más facil de justificar para un ejecutivo ahorrativo. Debido a que Flex y LPS son sólo herramientas de capa de presentación, complementan, en lugar de reemplazar, la infraestructura de respaldo existente, facilitando el construir y desplegar aplicaciones a una fracción de los costos tradicionales de desarrollo. Con características para diagramación y soporte para llamadas de servicios Web, hacen una buena pareja para tareas como mejorar las iniciativas de servicio a cliente e implementar aplicaciones ejecutivas de consola con facilidad. En general, ambos proveedores hicieron un trabajo impresionante. Sin embargo, en el grandioso proyecto, aún tendrá que ver a los SPs de Integra, AltioLive y otros distribuidores para encontrar cualidades avanzadas de software como herramientas de transformación XML o facilidades de servicios de conexión Web. Para características como sincronización sin conexión, acceso a archivos locales, persistencia confiable, y compartir información a través de las aplicaciones locales RIA – como las capacidades integradas en PiiE de Digital Harbor– necesitará Macromedia Central para evitar restricciones sandbox (protección contra aplicaciones maliciosas) de Flash. RIA en acción Comenzar a usar estos programas fue sencillo; ambos usan un proceso de un click para configurar el servidor. LPS agiliza la instalación empaquetando e instalando todas las piezas de terceros en su infraestructura basada en Java – particularmente el servidor de aplicaciones Jakarta Tomcat, el analizador Python XML, y el JGenerator (una herramienta de código abierto usada para combinar datos en tiempo de ejecución con el lenguaje de Flash, similar al Generator de Macromedia). Los fundamentos arquitectónicos de LPS y Flex están basados en los mismos principios fundamentales: Una plataforma Java de servidor con XML y JavaScript (ActionScript, en el caso de Flex) definiendo una clase básica para el manejo de eventos y almacenamiento de datos (data binding), y una variedad de componentes de interface adaptables para construir aplicaciones de manejo de eventos. Los lenguajes de desarrollo de ambos proveedores son del tipo XML. LPS tiene su propio lenguaje de presentación LZX, y Flex usa MXML (Macromedia Flex Markup Language). Aunque ambos eran lo suficientemente fáciles de seguir, el Flex Builder, incluido en la cotización de Flex, es un suplemento bienvenido para la creación rápida y unión de interfaces. No obstante, hay algo decepcionantemente irónico en que una plataforma de desarrollo de Interfaces de Usuario sea tan deficiente en su propia interface como lo es Lazlo, debido a que carecen de un IDE. El Flex Builder, por otro lado, provee de una experiencia tipo DreamWeaver por manejar MXML. Puedo trabajar en vista de código y vista de diseño simultáneamente, fácilmente efectuar agrupamiento de datos, y trabajar con los eventos de una paleta de comportamientos predefinidos. Esta versión de Flex muestra un nuevo componente de rejilla de datos que hace un fino trabajo al mostrar datos en forma de tabla. –fui capaz de envolver texto e imágenes dentro de las celdas y fácilmente adaptar el alto de las filas. Preferí también el rango completo de eventos manipulados por el mouse, los cuales acomodan eventos mouse-over, a diferencia de los botones de mensajes de LPS. Laslzo ha hecho un buen trabajo al mejorar la guía del desarrollador, y esta versión ofrece un impresionante número de componentes pre construidos para construir interfaces. Modifiqué fácilmente las propiedades visuales en forma de programa; por ejemplo, para resaltar un elemento en la pantalla para llamar la atención del usuario, basado en el valor de una variable. Con la localización absoluta y relativa por medio de XPath, trabajando con árboles de datos XML de LPS fue fácil. Encontré dificultades menores de rendimiento con LPS, y pienso que mejores herramientas de manipulación de texto beneficiarán los esfuerzos de diseño. No obstante, el resultado fue una llamativa aplicación que sobrepasó por mucho todo lo que se puede realizar usando un simple lenguaje HTML). Encontré el rendimiento de SOAP lento y carente del soporte de cabecera SOAP en LPS, pero la etiqueta adicional de la lista blanca ayuda a extender la seguridad sobre las clases de Java que son llamadas por las aplicaciones. Ahora LPS soporta llamadas de servicio Web usando el RPC Java, XML-RPC, y SOAP-comprimiendo las transmisiones usando gzip. Flex agrega su propio protocolo AMF (Action Message Format: Formato de mensaje de actividad) para transferencia binaria y compatibilidad con Flash Remoting. Desempate del desempeño Cuando hizo correr mis aplicaciones, hubo una marcada diferencia de desempeño entre Flex y LPS durante la secuencia de iniciación y en la sensibilidad global del servidor. Antes sentí a LPS lento. Aunque Lazlo hizo algunas mejoras para ese fin, la ultima versión permanece obstaculizada por un mal desempeño. En general, el desempeño de iniciación y arranque era mejor en Flex. Macromedia ha “rearquitecturado” su estructura de entrega, separando bibliotecas subyacentes de Flash del código de la aplicación. Las nuevas bibliotecas de ejecución mejoran el desempeño permitiendo a las aplicaciones compartir un solo código base. Los usuarios reciben los códigos de básicos y de aplicación en la transferencia inicial, pero las aplicaciones subsecuentes requieren bajar sólo un código específico de aplicación que ahorra ancho de banda. LPS 2.2 incluye una nueva herramienta llamada Krank para ayudar a los desarrolladores a optimizar el desempeño en el inicio de las aplicaciones. Krank se acelera la iniciación precompilando vistas estáticas directamente en la aplicación, rodeando el arranque en el cliente. El problema con Krank era que causaba que mis aplicaciones crecieran considerablemente, con frecuencia más del doble y en una ocasión hasta tres veces el tamaño. Cualquier beneficio percibido del “Krankear” una aplicación debe ser estimado contra factores como disponibilidad de ancho de banda y la capacidad de procesamiento del cliente. Algunos tipos de herramientas perfiladoras ofrecerían a los desarrolladores más que la investigación de prueba y error disponible actualmente. Esta herramienta de desarrollo necesita extensiones, también para la administración general del servidor de LPS. Más allá de reportes de monitoreo básicos, había pocas herramientas para administrar la optimización del caché en el servidor o los controles de desempeño de ejecución del cliente. Flex no ofreció mejoras. Cuanto más prevalente se vuelve RIA, este tipo de herramientas serán más necesarias para controlar el desempeño. Las conclusiones Lazlo está actualmente enganchado al modelo de beneficio de Macromedia y la incierta dirección de Flash, lo cual introduce el tema del ROI a largo plazo y la extensibilidad de productos como LPS. LPS sigue recopilando sólo al Flash 5 standard, así que es incapaz de soportar directamente las ventajas de Flash MX o de aprovechar las mejoras de la versión 7. Laszlo necesita tomar la abstracción ofrecida por su lenguaje XML y reducir su dependencia de Flash para su ejecución, así como ampliar sus opciones multiplataforma. Me gustaría ver si ambos distribuidores trabajan en soluciones que permitan a las aplicaciones ser independientes del servidor de presentación. Estas herramientas ofrecen un buen primer paso ante la simplificación de la entrega de aplicaciones y el mejoramiento de la interacción con el usuario final, pero dado que los mayores beneficios se deben a la competencia con los ofrecimientos de RIA es la ubicuidad del navegador Flash, ambos se adaptan mejor como aplicaciones para el cliente (directo al cliente) que como aplicaciones caseras. De las dos, Flex es la aplicación de integración más cercana a ser confiable y con más posibilidades de realización. Cuando se trata de aplicaciones para el desarrollo de aplicaciones empresariales, Flex hace alcanzables las aplicaciones ricas de Internet. Para proyectos pequeños y más caseros, Laszlo cumple los requisitos – y los ahorros hacen que valga la pena el tiempo o esfuerzo empleado en hacer funcionar LPS.