A la hora de desarrollar una aplicación web contamos con distintos códigos y lenguajes de programación que podemos ir utilizando en función de nuestras necesidades. Algunos de ellos son bastantes conocidos como HTML, CSS o JavaScript, mientras que otros te sonarán menos como C, C++ o Rust.

Pues bien, en el post de hoy hablaremos de un nuevo código que promete ser una verdadera revolución para cualquier proyecto web. ¿Sabes qué es WebAssembly?

Índice

¿Qué es WebAssembly?

Según la web MDN de Mozilla, uno de los desarrolladores del proyecto, WebAssembly es un nuevo tipo de código que puede ser ejecutado en navegadores modernos. Es un lenguaje de bajo nivel, similar al lenguaje ensamblador, con un formato binario compacto que se ejecuta con rendimiento casi nativo y provee un objetivo de compilación para lenguajes como C/C++ y Rust que les permite correr en la web. También está diseñado para correr a la par de JavaScript, permitiendo que ambos trabajen juntos.

El inconveniente de JavaScript es que es relativamente lento y, en determinados escenarios, se ve limitado. Por eso, el World Wide Web Consortium (W3C) ha impulsado el método WASM. Para implementar un nuevo estándar es necesario que los desarrolladores de los navegadores web lo incorporen también, de manera que las páginas web que lo empiecen a utilizar funcionen sin problemas. Por este motivo, Mozilla (Firefox), Microsoft (Edge), Apple (Safari) y Google (Chrome) han participado en el desarrollo. En todas las versiones de navegador actuales de estos proveedores se pueden ejecutar aplicaciones en WebAssembly.

El uso de WebAssembly mejora el rendimiento o la velocidad de nuestras aplicaciones y aporta un sin fin de nuevas mejoras e innovación que podemos realizar en la web.

¿Cómo funciona WASM?

WebAssembly se presenta en forma de bytecode, un nivel intermedio entre el código máquina, apto solo para computadoras, y el lenguaje de programación legible para desarrolladores. Sin embargo, programar en bytecode es bastante inusual, por lo que en la práctica se puede hacer con C o C++. Esta es una de las grandes ventajas de WebAssembly.

Este texto se convierte con la aplicación emscripten, que básicamente se encarga de hacer el trabajo duro de crear un módulo wasm partiendo de un código base escrito en C/C++.  Así, el código está precompilado y no tiene que hacerlo en el momento de ejecutarse.

Ventajas de WebAssembly

  • Estándar web abierto de W3C
  • Alto rendimiento y tamaños de archivo reducidos
  • Apto para la navegación móvil
  • Hace posible la realidad virtual en el navegador
  • No se requiere ningún lenguaje de programación nuevo
  • Se pueden utilizar C, C++ o Rust para la programación de aplicaciones web
  • Compatible con todos los grandes proveedores de navegadores
  • Sin limitaciones para el usuario

Uno de sus inconvenientes hasta ahora era la lentitud en su difusión. Los desarrolladores están acostumbrados al uso de JavaScript y no es fácil desbancarlo. Sin embargo, debido a su complementariedad con JavaScript y su compatibilidad con los grandes navegadores, cada vez se está extendiendo más su uso.

Casos de uso

Esta tecnología tiene una lista extensa de posibles casos de uso:

  • Edición de imagen y video
  • Juegos
  • Aplicaciones de música (streaming)
  • Reconocimiento de imagen
  • VR, realidad aumentada.

Aunque algunos de estos ejemplos son técnicamente factibles con JavaScript, HTML y CSS, el uso de WebAssembly puede ofrecer ganancias significativas de rendimiento. Además, esta tecnología no se limita al uso en navegador. También es apto para crear app híbridas en dispositivos móviles o hacer cálculo del lado del servidor.

Como ya sabes qué es WebAssembly, verás que este nuevo código es una herramienta muy interesante para los desarrolladores web. Amplia mucho sus posibilidades para llevar a cabo proyectos más complejos con un resultado muy beneficioso en cuanto a rendimiento y velocidad de carga.