martes marzo 29, 2005
AJAX: Un ¿nuevo? acercamiento a las aplicaciones Web
Está visto que algo no deja de ser anónimamente algo hasta que alguien lo bautiza y le pone un nombre. Es en ese preciso momento, cuando ese concepto parece que acaba adquiriendo entidad propia y tal vez, por el simple hecho de poder llamarlo con un sustantivo, que se incide directamente en la velocidad con la que se propaga dicha idea. Es más, si nos movemos en el mundo de las T.I., y si dicho nombre es un acrónimo y contiene alguna de las letras 'mágicas' (cómo la X o la J), entonces la moda tiene todos los números para acabar conviertiéndose rápidamente en tendencia.
Las bases en las que se asienta y que hacen posible AJAX, aunque me pese decirlo, son mérito de los innombrables de Redmon al crear una extensión para su navegador versión cinco punto cero, allá por el 1999, el objeto ActiveX XMLHttpRequest. Realmente ya en versiones anteriores se contaba con extensiones propietarias como sus métodos innerHTML, o su iFrame.src que permitían otras aproximaciones al refinado XMLHttpRequest.
Cuando en Mozilla, y en su análogo Netscape, se implementa y clona dicho objeto XMLHttpRequest se hacen más viables este tipo de soluciones, pero posiblemente es con la implementación que hace Apple en su navegador Safari 1.2 cuando el tema empieza a adquirir la solvencia necesaria. Posiblemente es a raíz de un artículo de Mayo del 2004 de la propia Apple cuando se populariza el conocimiento de las propiedades de dicho versátil objeto. Es precisamente unos meses más tarde y buscando documentación sobre un bug de dicho navegador en la implementación de LiveConnect, cuando tengo conocimiento de semejante innovación. Y lo primero que me llama la atención al seguir investigando sobre el tema, es que allá por Abril del 2002, en la imprescindible web de Jibbering, Jim escribe un artículo en el que hace referencia a dicho objeto con unos ejemplos esclarecedores. Lo sorprendente de semejante revelación, es el hecho de que como si de una novela sobre templarios se tratara, dicho saber queda depositado, como oculto u olvidado, en un puñado de iniciados, hasta que allá por Septiembre y Octubre del pasado 2004, surgen al unísono los artículos y menciones en las webs y blogs de referencia del mundo HTML y JavaScript.
La explosión de dicha tecnología, sin lugar a dudas (y con permiso de OWA), es obra y arte de Google con el virtuoso uso que de ella hace en su GMail (aunque anteriormente ya se podía ver en varios mapas interactivos), pero hasta que se le bautiza con el nombre de AJAX, ni tan siquiera en la web de Jibbering había sido tenida tan en cuenta. Incluso pasa bastante desapercibida la flexible implementación conseguida con JPSPAN y que hace posible logradas interfases de usuario en las aplicaciones de la arquitectura LAMP que la utilizan. Las réplicas para el mundo Java han sido menos conocidas, las últimas en llegar han sido la Direct Web Remoting o la JSON-RPC-Java. En la plataforma LAMP, tradicionalmente más preocupada por ofrecer una interface de usuario vistosa, a las carencias del HTML se les ha dado diferentes soluciones tanto del lado del cliente como del servidor en combinación con PHP, inicialmente con PHP RPC que fue un fork de IXR: Incutio XML-RPC Library for PHP y que, implementando cliente y servidor, se ha convertido en lo que actualmente es JPSPAN. Todas ellas, de una manera u otra, se basan en la especificación XML-RPC que tiene no pocos usos. En el baúl de los recuerdos también se queda vcXMLRPC Library. Otro de los precursores fue el sitio Ashley IT con una variada colección de enlaces sobre Remote Scripting y con un par de implementaciones propias como la Javascript Remote Scripting (JSRS) o la RSLite, que datan de allá por el año 2000. En Sitepoint en su día también encontré unos buenos ejemplos sobre el tema. Otra buena descripción de dicha tecnología la encontramos en el blog de Jason E. Sweat, en dicho post de Agosto del 2004 explica una implementación utilizando la librería jsolait que incluye tanto un módulo xmlrpc con la enésima implementación del archiconocido xmlrpc, como una implementación JSON-RPC utilizando el protocolo JSON. Otro artículo para recopilar desde Peej Cola, el de Paul James XMLHttpRequest, REST and the Rich User Experience con especial mención a los pilares de Http: REST.
Pero centrémonos en el tema, este Febrero, desde Adaptive Path y de la mano de Jesse James Garrett nos llega un artículo con el título Ajax: A New Approach to Web Applications en el que nos describe un combinado de baja graduación que mezclando una serie de componentes harto conocidos, y proporcionándonos la fórmula con los ingredientes precisos y las proporciones adecuadas, de la cocktelera nos saca una pócima ante la cual, una vez bautizada con su correspondiente nombre y apellidos, muchos se quitan el sombrero. Y la cosa tiene su mérito. Y ha traído cola y lo que nos rondará morena. En fiftyfoureleven hay una completa recopilación de enlaces e información sobre todo lo concerniente a XMLHttpRequest & Ajax Based Applications.
En el weblog de Denker Über podemos encontrar el post original traducido al castellano. Añado otra traducción de DeltaBlog
No es que quiera desmerecer, ni faltar, ni quitar protagonismo a nadie, pero miremos con atención en que consiste la propuesta bajo la denominación de AJAX. En esencia consiste en utilizar conjuntamente las siguientes tecnologías:
a) Presentación basada en estándares: CSS y XHTML. Quitando Flash/Applets, ¿acaso existe alguna otra alternativa seria? ¿Hay alguien que programe para la web y que no use CSS?. En el tema de XHTML realmente está bien que por enésima vez se recuerde adoptar la recomendación XHTML, dado que las adaptaciones son mínimas y HTML tiende a la obsolescencia.
b) Presentación dinámica e interacción usando el Document Objectg Model. Esto es algo que me deja frío. Hay miles de webs que usan y abusan del DOM, el del ignominioso MS-IE4. Supongo que aunque se sobreentienda, no estaría de más aclarar que se habla del DOM del W3.
c) Intercambio de datos y manipulación usando XML y XSLT. Le voy a dar un punto. La JSP/ASP/Velocity/... del W3 se llama XSLT, y no hay nada que se pueda hacer con las primeras que no sea asumible con XSLT. Lo de XML, salvo raras excepciones como JSON, no creo que nadie se ponga a pasar datos en CVS, con separación por tabuladores y a reinventar la rueda. XML está ya perfectamente asentado y reconocido.
d) Recogida de datos asíncrona usando XMLHttpRequest. ¿Y eso por qué? ¿Por qué asíncrona, por qué usando XMLHttpRequest? Se me ocurren varios escenarios en los que es imperativo el uso de llamadas síncronas, ordenadas y secuenciadas. Y otros en los que XMLHttpRequest no está disponible.
e) Uso de JavaScript para enlazar todo junto. Otro punto que le doy. ECMAScript, ese eterno desconocido, mal usado y poco entendido, poco glamuroso y nacido como el hermano pequeño y minusválido de Java. Si es que si te cae un San Benito, del cielo te baja el martillo y los clavos.
La verdad es que analizándolo con detenimiento, AJAX no deja de ser sino un compendio de recomendaciones a las que se les ha dado un nombre, y que bien podía haber sido sustituida la invención o descubrimiento por un menos pretencioso y más humilde "estado del arte" con una "guía de buenas prácticas".
En mi humilde opinión, estos cinco puntos, bien se podrían resumir en únicamente dos básicos:
i) Utilizar DXHTML para la presentación e iteración con el usuario. Y con esto se da por hecho que se ha de utilizar ECMAScript y los estándares del W3: CSS, XHTML y DOM. Y a poder ser mediante una librería que encapsule y reutilice cuanto más mejor, vamos, como siempre.
ii) Utilizar Remote Scripting para la comunicación con el servidor. Mediante cualquiera de las técnicas actualmente disponibles y que permiten una mayor compatibilidad con los navegadores existentes.
Y como que el nombre de Ajax no me pone, y dado que la denominación debería de ser, aunque sea algo larga, "HTTP+XML+HTML+W3DOM+RemoteScripting+ECMAScript+CSS", pero dado que HTML+ECMAScript+DOM, se le ha denominado tradicionalmente DHTML, me parecería más acertado usar simplemente el nombre de DXHTML con algo más, por ejemplo, subrayando el hecho de que se utilizan las recomendaciones del W3, quedando algo así como W3-DXHTML. Pero para acentuar la importancia del scripting, finalmente a estas dos recomendaciones las bautizaré como W3-DXHTML-EcmaScript. Qué nombre más poco comercial y menos 'mercantilístico', creo que se impone usar un alias, como por ejemplo.... Remote Scripting, dos palabras que recogen la esencia de todo este montaje y además con una solera que data nada menos que del 1998.
Intentando buscar alguna ventaja a AJAX, ya que concluyo que únicamente es una nueva formulación, más desgranada y detallada, de lo que debiera de ser una implementación ideal del Remote Scripting de toda la vida, bien pudiera admitir que la novedad podría venir del hecho de hacer una novedosa apuesta de futuro. Veamos esto.
Lo curioso es que, en las webs y blogs de referencia y aprovechando la entrada de este 2005, en los posts sobre las típicas predicciones para el año que entra, fue común leer el anuncio de la explosión de la tecnología de la que hablamos. Por ejemplo, nos lo vaticinó Peter-Paul Koch en el QuirksBlog de su site [Quir]{smode], también desde Mezzoblue en el post DHTML'05 lo leímos, Sitepoint también lo destacó en 2005: The year of the DOM, suscribiendo lo mismo en una sutil reseña en el weblog de Simon Willison, y como no, por estos lares también la española IdeasFreelance hacían hincapié en la idea. Supongo que cuando algo está en el aire, si sabes olerlo e identificar el olor, no es difícil hacer de futurólogo. Pero prefiero apostar por que fue el meme de GMail que se supo transmitir adecuadamente.
Los entendidos, los que hace tiempo lograron entrever la revolución de las aplicaciones web y que usaron, promovieron, o desarrollaron esta tecnología, llámese XML-RPC, Remote Scripting, o lo que sea, no han dejado escapar la oportunidad de hacer alguna mención al mérito de la 'invención/descubrimiento' de AJAX:
Call an apple an apple, Ajax From a Different Point of View, Ajax, promise or hype?, Ajax? Or how an old idea needs new marketing.
Para acabar, que queréis que os diga, a mi Ajax siempre me ha olido a limpia hogar con fragancia de pino..
Rebúscar aquí
Últimas entradas
- Recuperar los passwords de Firefox 3 (habiendo tenido FF2)
- Otro tonto error de un programador
- Incongruencias espacio temporales
- Día internacional del Software Libre
- Canon y la sopa boba
- Ideas y Buenas ideas
- Relanzamiento de cocoon.apache.org
- Wii con teclado USB
- Edicion en Roller off-line con w.bloggar
- Los términos mas buscados