Putting it together

by Luismi Cavallé

He llegado a una conclusión: En el mundo hay dos tipos de frameworks web, los que se avergüenzan y los que se enorgullecen. En el Día del Orgullo Web, desfilarían en sus carrozas Rails, Prototype, Django y demás. Sin embargo, dentro del armario se quedarían otros, como ASP.NET o GWT, que se avergüenzan de lo que son y se disfrazan con trajes del pasado.

El Google Web Toolkit es un framework open source hecho en Java cuyo principal ánimo es el de permitir desarrollar aplicaciones web AJAX a desarrolladores que no tengan ni idea de la web, ni de HTML, ni de Javascript. Para ello proporciona un compilador capaz de transformar un front-end desarrollado en Java al estilo Spring, en HTML y Javascript ejecutable en cualquier navegador.

En algún sentido, la propuesta me suena a los viejos tiempos del ASP.NET, el framework web de Microsoft con el que he venido trabajado desde hace tiempo. El objetivo de este framework era proporcionar una experiencia de desarrollo similar a la de las aplicaciones de escritorio con Visual Basic 6.0 y, de esa manera, facilitar la entrada a la plataforma .NET a la base de programadores Microsoft existente. Para conseguir esto adapta los conceptos de control y evento a la web gracias a una cosa que se inventan llamada ViewState, que no es más que un campo oculto que guarda el estado de la página entre Postbacks (hay que tener en cuenta que, a diferencia del GWT, aquí no hay AJAX. Los eventos, cuando se producen en el cliente, producen un Postback y se tratan en el servidor, que actualiza los controles y renderiza de nuevo la misma página con el nuevo estado).

Si resulta complicado de explicar es porque, efectivamente, la abstracción que proponía ASP.NET no es precisamente sencilla. Y el problema es que es necesario comprender bien la abstracción cuando tienes que utilizar el framework para cosas “avanzadas” en el mundo real (más allá de las demos de Microsoft, donde todo es estupendo y solo tienes que arrastrar y soltar).

El caso es que, aunque sabemos que el desarrollo de software evoluciona siempre en la dirección de crear nuevas capas de abstracción que nos permitan resolver problemas más complejos obviando los detalles de las capas inferiores, no cualquier abstracción es necesariamente buena. El problema viene dado cuando resulta más complicado entender y utilizar la abstracción que aquello de lo que te quieres abstraer. Y este es el caso. La web es tremendamente simple, y fácil de entender. Los conceptos básicos son los que son: recursos identificados por URLS sobre los que se pueden aplicar 4 operaciones sin estado. El caso es que parece que no hemos entendido nada de esto hasta que ha llegado la Web2.0, se ha puesto de moda el REST y todos los frameworks nuevos como Rails, Prototype, etc… que realmente abrazan la sencillez de la web y basan su potencia, precisamente, en sus limitaciones

Microsoft algo debe de esto debe haber entendido cuando parece que por fin pretende dar marcha atrás y ofrecer un framework MVC —ninguneando, como es habitual, a las propuestas open source previamente existentes. En cuanto al framework de Google, no lo conozco bien, es distinto y más sofisticado y, seguramente, el uso intensivo de AJAX permita que todo sea más coherente que en el caso de ASP.NET. Sin embargo, encuentro el mismo problema en el objetivo de intentar proporcionar un modelo de desarrollo de aplicaciones de escritorio para el desarrollo de aplicaciones web.

Para mí una de las cosas más importantes que ha aportado todo esto de la Web2.0 es entender realmente qué es la web y sus tecnologías, cuáles son sus principios y fortalezas, dejando obsoletos los modelos de desarrollo de aplicaciones de escritorio. Así que, ¿por qué seguir insistiendo en desarrollar para la web como lo hacíamos para el escritorio?… Supongo que la respuesta tiene que ver con esa cosa llamada mundo empresarial.

Pero eso casi que lo dejamos para otro día.