WebAssembly: definición, usos, ventajas y desventajas

WebAssembly es una tecnología relativamente nueva (se ha hablado de WebAssembly desde el 2015) que traerá muchas cosas nuevas a la web y a la forma en la que se programan las cosas.

En este post voy a dar una definición y análisis de WebAssembly desde mi punto de vista, analizando sus usos y explicación, además de algunas ventajas.

¿Qué es WebAssembly?

WebAssembly es un formato de código compilado desde otros lenguajes de programación para JavaScript.

WebAssembly se abrevia como wasm, y los archivos de WebAssembly tienen la extensión .wasm.

No es un transpilador ni minificador como Babel o Uglify, es código nativo que el navegador entiende a un nivel más bajo.

Si conoces Java, imagina que es el bytecode de Java y que corre sobre la JVM pero en lugar de la JVM tenemos al navegador web.

Lenguajes que soportan WebAssembly

Los lenguajes hasta el momento son:

  • C
  • C++
  • Rust
  • Go

Esto es porque cada lenguaje debe compilar a WebAssembly y ser compatible con la especificación.

Ventajas de WebAsembly

Tenemos muchas ventajas:

  • El código del cliente no es legible, ya que no es JavaScript, es código casi nativo. Sí, sí se puede analizar pero es casi como analizar un archivo .exe o ejecutable
  • Podemos usar JavaScript como de costumbre, y tener algunas funciones en WebAssembly. Es decir, podemos intercambiar los lenguajes
  • Se programa en un lenguaje fuertemente tipado o al menos un lenguaje seguro, no como JavaScript. Aunque el lenguaje no hace el programador, un buen lenguaje ayuda bastante y JavaScript carece de muchas cosas.
  • Podemos usar las librerías y características nativas del lenguaje de programación sin preocuparnos de que JavaScript las tenga o no
  • La más importante: mejora bastante el rendimiento de las aplicaciones web y sobre todo los videojuegos

Un minador de criptomonedas en la web llamado coinhive (que ya no está disponible, que en paz descanse) utilizaba WebAssembly para minar la criptomoneda Monero aprovechando al máximo el procesador.

Desventajas de WebAssembly

Aunque cuesta admitirlo, por el momento hay varias desventajas. Pero espera, programar en WebAssembly no es tan complejo, solo estoy siendo objetivo.

Las desventajas son:

  • Tienes que saber JavaScript: aunque seas experto en C, Rust o Go, debes saber JavaScript, pues es como llamar a código JavaScript desde otro lenguaje
  • No todos los navegadores están soportados. Al momento se soporta Safari, Edge, Chrome y Firefox, pero recuerda que hay navegadores incluso para la Nintendo DS
  • El proceso de compilación y ejecución es más lento, es decir, al programar llevas más tiempo porque primero debes compilar el archivo wasm y después llamarlo desde JavaScript. Imagina hacer eso en cada cambio que haces.

Cuándo usar WebAssembly

WebAssembly no es el futuro de la web a como yo lo veo, pues siempre podremos seguir haciendo animaciones bonitas con jQuery o confiando en JavaScript nativo, incluso haciendo webapps usando frameworks como Angular, Vue o React.

El uso de WebAssembly va más allá, sobre todo al desarrollo de videojuegos o a procesos que se requiere sean extremadamente rápidos.

Se me ocurre que podría usarse para eso de los algoritmos de seguridad, cifrado o aplicándolo a las matemáticas y simulaciones.

Lo que trato de decir es que para un simple formulario de inicio de sesión o un CRUD no vas a utilizar WebAsembly, pues con JavaScript basta.

Conclusión

Si quieres saber más sobre WebAssembly visita la página oficial. Pronto traeré un tutorial sobre WebAssembly en Go.

WebAssembly: definición, usos, ventajas y desventajas

Por parzibyte Tiempo de lectura: 2 min
1