Ajax: Un Nuevo acercamiento a las Aplicaciones Web


Lo que sigue es la traducción revisada (la revisión la ha hecho un servidor, la traducción en la que me he basado la tenéis aquí) de un artículo titulado Ajax: A New Approach to Web Applications (AJAX: un nuevo acercamiento a Aplicaciones Web), escrito por Jesse James Garrett en febrero de 2005. No es un artículo técnico, sino más bien divulgativo, y aunque los que nos dedicamos a estas cosas ya tenemos más o menos clara cual es la filosofía de AJAX, me ha parecido interesante publicar el que puede que sea uno de los primeros documentos (si no el primero) que explica de forma clara que es 'la cosa esta del AJAX'. Es más, parece ser que este señor (o su empresa) se atribuyen la invención el término AJAX.

El autor de la traducción en la que me he basado (Mariano Amartino) asegura que dicha traducción está autorizada por JJG (autor del ensayo original). Yo debo reconocer que no he pedido autorización a nadie, simplemente me ha parecido interesante que un sitio como éste disponga de su propia versión de este documento. Espero que nadie se moleste.

Al final hay unas cuantas preguntas de lectores del artículo original que el autor responde y que también son interesantes.

Me he permitido la licencia de cambiar las imágenes así como alguno de los enlaces que aparecían el artículo original.


Ajax: Un Nuevo acercamiento a las Aplicaciones Web
Por Jesse James Garrett
18 de Febrero de2005

Si algo del actual diseño interactivo puede considerarse 'glamuroso', es la creación Aplicaciones Web. Después de todo, ¿cuándo fue la última vez que escuchaste a alguien entusiasmarse con el diseño interactivo de un producto que no estuviera en la Web? (bueno, dejando de lado el iPod). Todos los nuevos proyectos innovadores y 'guays' están online.

A pesar de esto, los diseñadores de Webs interactivas no podemos evitar sentir un poquito de envidia de nuestros colegas que crean software de escritorio. Las aplicaciones de escritorio tienen una riqueza y una respuesta que parecía fuera del alcance de la Web. La misma simplicidad que permitió la rápida proliferación de la Web también crea una brecha entre las experiencias que podemos proporcionar a los usuarios y las que estos pueden experimentar con las aplicaciones de escritorio.

Esa brecha se está cerrando. Echa un vistazo a Google Suggest. Mira la forma en que los términos sugeridos se van actualizando a medida que uno teclea, casi instantáneamente. Ahora mira Google Maps. Haz zum. Usa el cursor para arrastrar un poco el mapa. Otra vez, todo sucede casi instantáneamente, sin esperar que las páginas se recarguen.

Google Suggest y Google Maps son dos ejemplos de un nuevo acercamiento a las aplicaciones Web, que nosotros en Adaptative Path hemos denominado AJAX. El nombre es un acrónimo para Asynchronous JAvascript + XML (JavaScript y XML asíncronos), y representa un cambio fundamental sobre lo que es posible en la Web.

Definiendo Ajax
Ajax no es una tecnología. Realmente son varias tecnologías, cada una de las cuales se ha afianzado por sus propios méritos, que se unen en nuevas y potentes formas. Las tecnologías que AJAX incorpora:

El modelo clásico de las aplicaciones Web funciona de esta forma: Muchas de las acciones que el usuario realiza sobre la interfaz disparan una petición HTTP al servidor web. El servidor realiza algún procesamiento (recopilando información, realizando cálculos numéricos, comunicándose con algunos sistemas propietarios), y devuelve una pagina HTML al cliente. Éste es un modelo adaptado del uso original de la Web como medio para la transmisión de hipertextos, pero como fans de The Elements of User Experience (1) sabemos que lo que hace a la Web buena para el hipertexto, no la hace necesariamente buena para las aplicaciones de software.


Figura 1: El modelo clásico para las aplicaciones Web frente con el modelo de AJAX

Esta aproximación tiene mucho sentido desde un punto de vista técnico, pero no lo tiene desde el punto de vista de la experiencia de muchos usuarios. Mientras el servidor está haciendo sus cosas, ¿qué está haciendo el usuario? Eso es, esperar. Y, en cada paso de la tarea a realizar, tiene que esperar un poco más.

Obviamente, si estuviéramos diseñando la Web partiendo de cero y pensando en las aplicaciones, no querríamos hacer esperar a los usuarios. Una vez que la interfaz está cargada, ¿por qué la interacción del usuario tiene que detenerse cada vez que la aplicación necesita algo del servidor? De hecho, ¿por qué tiene el usuario que ver siempre como la aplicación va hacia el servidor?

De qué manera es diferente AJAX
Una aplicación AJAX elimina de la interacción en la Web la situación de arrancar-parar-arrancar-parar introduciendo un intermediario -el motor AJAX- entre el usuario y el servidor. Podría parecer que añadir una capa más a la aplicación la haría menos eficiente, sin embargo ocurre todo lo contrario.

Al iniciar la sesión, en vez de cargar una página web, el navegador carga el motor AJAX, escrito en JavaScript y normalmente almacenado en un 'frame' oculto. Este motor es el responsable de dos tareas, mostrar la interfaz que el usuario ve, y comunicarse con el servidor en su nombre. El motor AJAX permite que la interacción del usuario con la aplicación sea asíncrona (independiente de la comunicación con el servidor). Así el usuario nunca estará mirando la ventana en blanco del navegador ni el icono del reloj de arena mientras espera a que el servidor haga algo.


Figura 2: El patrón de interacción síncrona de una aplicación Web clásica comparada con el patrón asincrónico de una aplicación AJAX

Cada acción del usuario que normalmente generaría una petición HTTP toma ahora la forma de una llamada JavaScript al motor AJAX. Cualquier respuesta a una acción del usuario que no requiera una operación del servidor (como una simple validación de datos, editar datos de memoria, incluso algo de navegación) será manejada por el propio motor AJAX. Si éste necesita algo del servidor para responder (enviando datos para procesar, cargando código adicional, o recuperando nuevos datos), hace dichas peticiones de forma asíncrona, normalmente usando XML, sin frenar la interacción del usuario con la aplicación.

Quién usa Ajax
Google está haciendo una gran inversión para desarrollar con tecnología Ajax. Todos los grandes productos que Google ha introducido en el último año (Orkut, Gmail, la última versión beta de Google Groups, Google Suggest, y Google Maps) son aplicaciones Ajax (para más información sobre los detalles técnicos de estas implementaciones Ajax, echa un vistazo a estos excelentes análisis de Gmail, Google Suggest, y Google Maps). Otros están siguiendo la tendencia: muchas de las funciones que la gente más aprecia en Flickr dependen de Ajax, y el motor de búsqueda de Amazon A9.com aplica técnicas parecidas.

Estos proyectos demuestran que Ajax no es sólo técnicamente viable, sino que también es práctico para las aplicaciones del mundo real. Ésta no es otra tecnología que sólo funciona en un laboratorio. Y las aplicaciones Ajax pueden ser de cualquier tamaño, desde lo más sencillo, funciones simples como en Google Suggest, a lo más complejo y sofisticado como Google Maps.

En Adaptive Path, hemos estado haciendo nuestro propio trabajo con Ajax en los últimos meses, y hemos descubierto que tan sólo rascamos la superficie de la riqueza que la interacción y respuesta que las aplicaciones Ajax puede proporcionar. Ajax es un importante desarrollo para las aplicaciones Web, y su importancia sólo va a ir a más. Y como hay tantos desarrolladores que ya conocen como usar estas tecnologías, esperamos ver más organizaciones siguiendo el liderazgo de Google y aprovechando la ventaja competitiva que Ajax proporciona.

Mirando adelante
Los mayores desafíos de la creación de aplicaciones Ajax no son técnicos. Las tecnologías principales son maduras, estables y perfectamente conocidas. En cambio, los desafíos son para los diseñadores de estas aplicaciones: olvidar lo que creemos saber sobre las limitaciones de la Web, y comenzar a imaginar un nivel más amplio y rico de posibilidades.

Va a ser divertido.


Ajax: Preguntas y Respuestas
Marzo 13, 2005:
Desde la primera publicación del ensayo de Jesse, recibimos una cantidad enorme de correspondencia de nuestros lectores con preguntas sobre AJAX. Aquí, Jesse responde algunas de las más comunes:

P: ¿Fue Adaptive Path quien inventó Ajax? ¿Fue Google? ¿Ayudó Adaptive Path a construir las aplicaciones Ajax de Google?
R: Ni Adaptive Path ni Google inventaron Ajax. Los nuevos productos de Google son simplemente los ejemplos de más alto nivel de Aplicaciones Ajax. Adaptive Path no estuvo involucrado en el desarrollo de las Aplicaciones Ajax de Google, pero está haciendo Ajax para algunos de sus clientes.

P: ¿Está Adaptive path vendiendo componentes Ajax o registrando el nombre? ¿Donde puedo descargarlos?
R: Ajax no es algo que uno puede descargar. Es un enfoque, una manera de pensar la arquitectura de las aplicaciones Web usando ciertas tecnologías. Ni el nombre Ajax ni el enfoque son propietarios de Adaptive Path.

P: ¿Es Ajax sólo otro nombre para XMLHttpRequest?
R: NO. XMLHttpRequest es sólo una parte de la ecuación Ajax. XMLHttRequest es el componente técnico que hace las comunicaciones asincrónicas con el servidor. Ajax es nuestro nombre para el acercamiento total descrito en el artículo, que se basa no sólo en XMLHttpRequest sino en CSS, DOM y otras tecnologías.

P: ¿Por qué la necesidad de darle un nombre?
R: Porque necesitaba algo más corto que 'Asynchronous JavaScript + CSS + DOM + XMLHttpRequest' para usar cuando discutía este enfoque con los clientes.

P: Las técnicas para comunicaciones asincrónicas con servidores existen hace años. ¿Qué hace a Ajax tan 'nuevo' como enfoque?
R: Lo que es nuevo es el uso prominente de estas técnicas en aplicaciones del mundo real para cambiar el modelo fundamental de interacción de la red. Ajax está afianzándose ahora porque estas tecnologías y el conocimiento de la industria sobre como utilizarlas efectivamente han tenido tiempo de desarrollarse.

P: ¿Es Ajax una plataforma tecnológica o es un estilo de arquitectura?
R: Ambos. Ajax es un conjunto de tecnologías que se usan conjuntamente de forma concreta.

P: ¿Para qué tipo de aplicaciones está mejor preparado Ajax?
R: No lo sabemos aún, es un enfoque relativamente nuevo y nuestro entendimiento sobre donde puede Ajax aplicarse mejor está aún en sus orígenes. Algunas veces el modelo tradicional de las aplicaciones Web es la mejor solución para un problema.

P: ¿Esto significa que Adaptive Path es anti-flash?
R: Para nada. Macromedia es un cliente de Adaptive Path y apoyamos Flash desde hace mucho tiempo. Al madurar Ajax, esperamos que algunas veces sea la mejor solución a un problema particular, y a veces será Flash esa mejor solución. También estamos interesados en explorar vías en las que ambas tecnologías puedan combinarse (como en el caso de flick que usa ambas).

P: ¿Tiene Ajax limitaciones de accesibilidad o compatibilidad con navegadoress? ¿Las aplicaciones Ajax “rompen” el botón de “volver”? ¿Es compatible con REST? ¿Hay consideraciones de seguridad referidas al desarrollo con Ajax? ¿Pueden estas aplicaciones ser hechas para trabajar con usuarios que tienen JavaScript desactivado?
R: La respuesta a todas esas preguntas es “tal vez”. Muchos desarrolladores ya están trabajando para ocuparse de esos problemas. Pensamos que hay más trabajo que hacer que determinar las limitaciones de Ajax, y esperamos que la comunidad de desarrolladores de Ajax descubra otros asuntos como estos con el tiempo.

P: ¿Algunos de los ejemplos de Google que citan no usan XML para nada. Tengo que usar XML y/o XSLT en una aplicación Ajax?
R: No. XML es el medio más desarrollado para mover datos desde y hacia un cliente Ajax, pero no hay razón para que no puedas lograr los mismos resultados con una tecnología como JavaScript Object Notation o algún medio similar de estructurar datos para el intercambio.

P: ¿Las aplicaciones Ajax son más fáciles de desarrollar que las tradicionales?
R: No necesariamente. Las Aplicaciones Ajax inevitablemente incluyen complejo código JavaScript en el cliente. Hacer ese código eficiente y libre de errores no es una tarea que se pueda tomar a la ligera, y van a ser necesarias mejores herramientas de desarrollo y frameworks para ayudarnos a afrontar este desafío.

P: ¿Las aplicaciones Ajax siempre proporcionan una mejor experiencia que las aplicaciones tradicionales?
R: No necesariamente. Ajax brinda a los diseñadores de aplicaciones interactivas mayor flexibilidad. Pero como siempre, cuanto más poder tenemos, mayor precaución debemos tener al aplicarlo. Debemos ser cuidadosos al usar Ajax para mejorar la experiencia de los usuarios de nuestras aplicaciones y no empeorarla.




1.- Esto es publicidad subliminal, aquí el autor hace referencia a un libro escrito por el mismo que seguramente le gustaría que comprásemos. No puedo decir nada de él, ni lo he leído ni me suena, pero seguro que está muy bien (volver)
 
Author: , 0000-00-00