Introducción a WebAssembly (wasm)

Technology/Web

En pocas palabras, WASM es un formato de código binario y está diseñado para habilitar el desarrollo de aplicaciones web con un lenguaje de programación como C#, C++, Rust, entre otros que estén soportados, WASM actualmente está disponible en la mayoría de los navegadores como Mozilla Firefox, Chrome y Safari. Un punto de confianza que tiene WASM es que actualmente es un estándar de la W3C, lo que significa que hay un grupo de personas encargadas de supervisar el desarrollo de esta tecnología para que pueda ser usada como HTML, CSS y JS (los lenguajes estándar para el desarrollo de sitios y aplicaciones web).

La web dio un paso más a su evolución con esta tecnología, creo personalmente que antes no se pensaba que podríamos ejecutar código binario en el navegador, sabemos que todo código binario proviene de un lenguaje compilado a diferencia de JavaScript. JavaScript a la fecha nos permite desarrollar páginas dinámicas y aplicaciones web, para el desarrollo de ello nacieron muchos frameworks que ayudan a facilitar la construcción de una aplicación y mejorar la experiencia de usuario, con esto nació el concepto de SPA (Single Page Application / Aplicaciones de una sola página) en la que el navegador no se recarga cuando navegamos en cada una de las opciones del menú de la aplicación. El que WASM permita el desarrollo de aplicaciones web SPA no significa que llegó el fin de el tan apreciado JavaScript, WASM no pretende ser el remplazo de este, al contrario, el objetivo es que se pueda potencializar el uso de estos dos al momento de desarrollar aplicaciones web.

Hay 3 formas en las que podemos usar WASM:

  1. Escribir el código desde 0
  2. Compilar desde otros lenguajes como C++ o C#
  3. Usa módulos existentes de WASM en JavaScript

A continuación, haré una breve explicación de las 3 formas que mencioné anteriormente en las que se puede usar WASM

Escribir el código desde 0

Puede que esta forma sea la más tediosa para los desarrolladores, ya que se trata de aprender un lenguaje con formato .wat en el cual escribes el código que podrás convertir a WASM usando el kit de herramientas binarias de montaje web (the WebAssembly binary toolkit), ese código convertido es el que podrás ejecutarlo en un entorno usando JavaScript.

Compilar desde otros lenguajes de programación

Básicamente se trata de escribir un programa en un lenguaje como C++ y convertirlo a WASM. En mi opinión el que ha tomado la delantera en esta forma de construir aplicaciones web es Microsoft con su tecnología Blazor, con Blazor tenemos la sintaxis Razor en la que podemos usar C# para construir aplicaciones web SPA, la forma en como sucede detrás de escenas es que los archivos .dll son ejecutados en un entorno desarrollado por Microsoft para convertir los .dll a WASM y puedan ser ejecutados en el navegador.

Usar módulos existentes de WASM en JavaScript

En resumen, lo qué sucede detrás de escenas al crear una aplicación web con Blazor es la carga de módulos que son instanciados con JavaScript para ejecutar las funciones que se hayan programado con C#, se pueden ejecutar esas funciones pasándole parámetros (si los solicita) y también podemos ejecutar funciones JavaScript desde WASM que al final será ejecutado en C#, en Blazor a esto último se le llama JS Interop y trae consigo una librería que permite hacer esa operación.

Mi testimonio inicial con Blazor

He tenido la oportunidad de probar esta tecnología, Blazor, me ha sorprendido mucho y me está gustando, la parte de JS Interop pienso que podría mejorarse y creo que es algo que probablemente ya estén pensando, no sólo para Blazor e igual puede ser para otras tecnologías similares soportados con otros lenguajes como Rust.

En próximos artículos trataré de hacer una demostración de Blazor explicando los puntos clave y de valor para los desarrolladores de aplicaciones Web.

Deja un comentario