Eso parece: todo está cada día más en Internet. En comparación con hace unos años, donde todo se encontraba localizado en, como mucho, una intranet o red local muy controlada, ahora mismo todo parece estar en alguna parte… No sabemos bien donde. Hemos hablando mucho de la nube en esta sección, pero hoy quería meterme con otro tema que nadie quiere tocar ni con un palo: la ubicuidad de las aplicaciones.
Es evidente que el mundo de las apps se está diversificando enormemente, pero el usuario final sólo llega a percibir el punto de ejecución, y en realidad, el usuario es en general bastante agnóstico sobre este tema: siempre que se ejecute y lo haga donde el usuario esté, realmente no parece importar mucho como esté desarrollada esa app. Es cierto que la dependencia de Windows ya terminó hace mucho, y Google fue la primera en demostrar que era posible desarrollar todo un ecosistema en la web. Apple demostró también que era posible crear una plataforma de aplicaciones totalmente nueva de la nada en un mercado totalmente inexistente hace 10 años, siendo ahora el más exitoso en ventas superando incluso al PC hace ya tiempo.
Aunque se han desarrollado diversos sistemas para la ejecución de aplicaciones en diversos escenarios, el navegador ha sido siempre una herramienta estrella, ya fueran los primeros applets java, que eran bastante miserables y que tampoco fueron demasiado populares, por razones obvias. La falta de compatibilidad real y su ineficiencia en la ejecución terminaron por mandarlos al olvido. Javascript pasó a ser prácticamente el único medio de desarrollar aplicaciones en los navegadores, destrozando literalmente al Visual Basic Script de Microsoft, que hoy día sólo tiene un espacio testimonial en el mundo de los hacks para Windows, y el sistema desarrollado por Netscape fue el honroso salvavidas de los creadores de Firefox que pudieron salvar de la guerra de navegadores de la década pasada contra Microsoft. Ahora la cosa vuelve por sus fueros con el llamado WebAssembly, que es un mecanismo que permite, al menos de momento, desarrollar de forma nativa aplicaciones en C/C++ y algunos otros lenguajes. Echando un vistazo, he encontrado incluso proyectos en .NET (eso sí, no oficiales), con lo que la oferta para desarrollar en esta plataforma puede hacer que literalmente podamos desarrollar aplicaciones completas nativas de ejecución prácticamente a nivel de máquina en nuestros navegadores.
Si este nuevo sistema termina por imponerse, las aplicaciones de escritorio estarían oficialmente muertas. Los desarrolladores de software tendríamos literalmente el santo grial de la programación en nuestras manos: la promesa de «escribe una vez, ejecuta siempre», en cualquier plataforma y sistema de hardware haría que ya no hiciera falta desarrollar de forma dependiente y que sólo con ejecutar en el navegador, ya sea un Windows, Mac o Linux, la misma aplicación funcione de forma eficiente. En ese momento, la promesa del PaaS (Platform as a Service) sería una realidad completa y la independencia del sistema haría que, excepto por las limitaciones de hardware que impidieran una buen ejecución de la app, todo el mundo pudiera ejecutar las aplicaciones de forma controlada por el proveedor: multimedia, juegos, gestión, ofimática, etc… Sólo con una conexión a Internet, cualquier software a mano… Y totalmente controlado por el fabricante. Ese mundo utópico (o distópico, según quieras verlo) está a la vuelta de la esquina… ¿Los usuarios también estaremos listos para lo que llega? ¿Y Apple y Google?