AJAX: ¿Qué es y Para que Sirve?

Si algún acrónimo ha dominado en los últimos meses a la industria del software, es AJAX. Según Gartner, el mercado de este tipo de tecnologías tendrá un crecimiento superior a los 250 millones de dólares para el 2009. AJAX nació el 18 de febrero de este año gracias a un pequeño artículo, en principio inofensivo, de Jesse James Garrett, de la empresa Adaptive Path.
www.adaptivepath.com/publications/essays/archives/000385.phpSi algún acrónimo ha dominado en los últimos meses a la industria del software, es AJAX. Según Gartner, el mercado de este tipo de tecnologías tendrá un crecimiento superior a los 250 millones de dólares para el 2009. AJAX nació el 18 de febrero de este año gracias a un pequeño artículo, en principio inofensivo, de Jesse James Garrett, de la empresa Adaptive Path.
www.adaptivepath.com/publications/essays/archives/000385.php

En este artículo nos enfocaremos en entender en qué consiste AJAX, cuáles son sus orígenes, así como los beneficios que puede brindar. En artículos próximos hablaremos con mayor profundidad sobre cómo se desarrollan aplicaciones AJAX.

Elementos de AJAX
AJAX es una abreviación de Asynchronous JavaScript and XML, y no se trata de una tecnología, sino un grupo de ellas que usadas en conjunto dan un nuevo sabor al Web. En particular, AJAX incorpora:
• Presentación basada en estándares usando XHTML y CSS.
• Despliegue e interacción dinámica usando el DOM.
• Intercambio y manipulación de datos usando XML y XSLT.
• Acceso asíncrono a datos usando XMLHTTPRequest.
• JavaScript haciendo que todo funcione de manera conjunta.

La forma como algunos sitios muy populares (entre ellos GMail, Google Suggest y Google Maps) utilizaban todos estos elementos, estaba tomando cada vez una forma más distintiva y, de alguna manera, uniforme. Pero, sobre todo, los usuarios estaban muy contentos de ver, por vez primera, a las páginas web como algo más que piezas estáticas de contenido colorido. El abismo de usabilidad entre las aplicaciones de escritorio y las aplicaciones Web comenzaba a reducirse.

Todo estaba ahí para que el nuevo acrónimo fuera un éxito: una masa crítica de usuarios que amaban ese tipo de aplicaciones, un sinnúmero de desarrolladores que deseaban generar aplicaciones “a la Google”, y algunas empresas pioneras que ya habían comenzado a avanzar algunos años antes en perfeccionar estas técnicas.

Ciertamente, ninguna de las tecnologías que conforman AJAX es nueva. La siguiente gráfica muestra la disponibilidad de las tecnologías involucradas como recomendación del W3C o su equivalente, así como algunas aplicaciones importantes para el desarrollo de AJAX.Figura 1. Disponibilidad de tecnologías en que se basa AJAX.

Como vemos, los ladrillos estaban ahí desde hacía mucho tiempo. Sin embargo, haber acuñado un acrónimo para todas esas tecnologías y técnicas de programación juntas, fue un gran acierto. De pronto, estaba disponible una manera para nombrar a todo eso de forma unificada, clara y veloz. La comunicación fue mucho más eficiente. Esto es un fenómeno común que sucede cuando le asignamos nombres a las cosas. Ya hemos tenido algunos ejemplos de ello, así pues, cuando un equipo de desarrolladores utiliza patrones de diseño, una de las ventajas más evidentes es que el grupo comparte un vocabulario común para nombrar estructuras e interacciones complejas de forma eficiente.

¿Por qué Hasta Ahora?
Si las herramientas ya estaban hace tanto tiempo disponibles, ¿por qué hasta el día de hoy se le prestó tanta atención? Adam Bosworth, testigo de la creación del objeto XMLHTTPRequest y creador del término DHTML (HTML dinámico a través de CSS + JavaScript), menciona las siguientes tres razones:
• Mayor confianza en el web. Los administradores ahora entienden bien qué significa tanto mantener una aplicación compleja en web, como las ventajas que esto conlleva en términos de costos. El web ya no es visto como una navaja de doble filo.
• Evolución del hardware e infraestructura. Las máquinas son mucho más potentes el día de hoy que cuando todo el movimiento DHTML entró en escena. Asimismo, el ancho de banda es mucho más barato y accesible, de modo que hacer viajar al browser y ejecutar un script de 20,000 líneas hoy sencillamente es cotidiano, mientras que antes era imposible.
• Los browsers han mejorado sus implementaciones de los estándares. Por lo menos a un nivel en el cual, después de algunas consideraciones, se logran efectos muy similares en distintos browsers.

A esto, yo agregaría:
• Existían serios bugs en las implementaciones de DOM y JavaScript en los browsers. Los más graves eran aquellos que generaban memory leaks, que podían tirar el browser cuando se intentaba correr una aplicación de este estilo. Al día de hoy, la mayoría de ellos han sido eliminados, y los que todavía quedan se pueden evitar con buenas prácticas o con productos que aíslan este tipo de problemas.
• En aquel tiempo, la fiebre de la tecnología en el servidor dinámico de aplicaciones opacó cualquier intento de llevar al cliente alguna porción del sistema. Debemos tomar en cuenta que en ese momento se quería evitar cualquier similitud con el mundo cliente-servidor, ya que justo se trataba del paradigma que el mundo web venía desplazando.
• La documentación de todas estas técnicas fue realizada azarosamente y su dispersión fue muy discreta. Naturalmente, esto provocó una desinformación generalizada durante mucho tiempo.
• Las implementaciones de XMLHTTPRequest no manejaban el cache de forma estándar y transparente. Todavía un bug al respecto fue resuelto recientemente con la liberación de Firefox 1.5.

Por otro lado, si bien Garrett es un agudo observador, él no es un desarrollador, es un experto en usabilidad. Así pues, no tardaron algunas voces de la comunidad de programadores en alzar observaciones y críticas. En particular, se corrigió que XML no era un elemento 100% necesario para generar los beneficios tanto tecnológicos como de usabilidad: podía usarse JavaScript (JSON, por ejemplo) y HTML. También se vio que para tener comunicación asíncrona con el servidor, se había podido prescindir del objeto XMLHTTPRequest y usar iframes y un sistema de peticiones encoladas, obteniendo así mayor cobertura de browsers y políticas de seguridad (XMLHTTPRequest se implementó como un ActiveX en el IE).

Beneficios
El beneficio principal de AJAX está en proveer funcionalidad rica (similar a la de aplicaciones de escritorio) en aplicaciones web, sin necesidad de instalar plug-ins ni otro tipo de componentes externos. Adicionalmente, AJAX se basa en estándares, por lo que no depende de los productos de uno u otro proveedor. Por otro lado, AJAX es agnóstico a la tecnología usada como middleware de web. Puede ser usado con cualquier motor de páginas dinámicas, desde PHP, Java, Ruby hasta ASP y Cold Fusion. Gracias a esto, los desarrolladores cuentan con una plataforma uniforme para generar la interfaz gráfica, sin importar qué se utilice en la capa de en medio.

Las capacidades de AJAX proveen mejoras sustanciales en términos de la usabilidad de las aplicaciones. Esto a su vez contribuye a mejorar la experiencia y productividad del usuario final. Algunos ejemplos específicos de mejoras en usabilidad que tenemos con AJAX son:
• El llenado de formas es más ágil, por medio de validaciones al servidor asíncronas y completación automática (autocomplete).
• La navegación en menúes de árboles que pueden ser poblados dinámicamente brinda una agilidad, que es vital en una aplicación de uso masivo.
• La posibilidad de filtrar, ordenar y manipular datos en el browser nos brinda la oportunidad de manejar tablas con mucha información de manera eficiente y permitirle al usuario la toma de decisiones en menos tiempo.
• El manejo de estilos y contenido dinámico, donde una misma interfaz gráfica, sin necesidad de refrescar toda la página, cambia conforme interactuamos con ella, ha generado un nuevo horizonte para la creatividad, pensando siempre en facilidad de uso y productividad del usuario final.

Otra posibilidad que abre AJAX es la de migrar aplicaciones de escritorio hacia el web de manera transparente en términos de la usabilidad de la aplicación. Gracias a esto, los usuarios pueden continuar usando las aplicaciones de la misma manera que antes, sin necesidad de entrenamiento. Lo cual no solo brinda una mayor satisfacción, sino un ahorro importante.

Consideraciones
Es importante subrayar que para lograr una implementación AJAX exitosa no basta resolver el problema meramente tecnológico. Dado que uno de los objetivos fundamentales es mejorar significativamente la experiencia del usuario, se requiere de una seria reflexión en términos de usabilidad alineada a las reglas del negocio. AJAX sólo provee los mecanismos técnicos para que esto sea posible. Como desarrolladores de AJAX, debemos tener siempre presente este factor como parte integral de nuestro trabajo. ¿No es verdad que gracias a ello, entre otras cosas, amamos a GMail, Kiko y Writely?

Acerca del autor
Gustavo Muñoz es Vicepresidente de Ingeniería en JackBe, una empresa mexicana líder y pionera a nivel mundial que provee tanto un framework y herramientas de desarrollo, como soluciones corporativas basadas en AJAX. Durante toda su trayectoria ha liderado proyectos con clientes del Fortune 500, y diseñado e implementado diversos productos y bibliotecas. Gustavo es miembro del Consejo de la Comunidad Java México (www.comunidadjava.org) y es egresado de Matemáticas Aplicadas en el ITAM.