Mientras JavaScript se utiliza principalmente del lado del cliente, implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas, WebAssembly es una plataforma web permite el uso del navegador para despliegue y ejecución de aplicaciones.
¿Qué es WebAssembly?
WebAssembly (abreviado Wasm ) es un formato de instrucción binaria para una máquina virtual basada en pila. Wasm está diseñado como un objetivo de compilación portátil para lenguajes de programación, lo que permite la implementación en la web para aplicaciones de cliente y servidor.
La implementación inicial de soporte para WebAssembly en navegadores se basó en los formatos asm.js, soportado por Mozilla, y PNaCl (Portable Native Client), propuesto por Google.
Tras sacar una versión MVP se plantea incorporar recolección de basura, lo que permitirá a lenguajes con este sistema, tales como Java o C# compilarse generando código wasm.
Los estándares abiertos para WebAssembly se desarrollan en un grupo comunitario del W3C (que incluye representantes de los principales navegadores Mozilla, Microsoft, Google o Apple), así como en un grupo de trabajo del W3C.
Después de que el World Wide Web Consortium (W3C) lo nombrara estándar web en 2019, se ha convertido en el cuarto estándar web con HTML, CSS y JavaScript.
Pero si bien las aplicaciones de navegador web han representado el caso de uso central e histórico de Wasm, nuevamente, el punto es que está diseñado para ejecutarse en cualquier lugar con una CPU configurada correctamente; aquí es donde Wasm y JavaScript se bifurcan y se integran más para algunos casos de uso.
¿Por qué WebAssembly?
- Se codifica en un formato binario eficiente en tamaño y tiempo de carga.
- Diseñado para imprimirse en formato textual para depurar, probar, experimentar, optimizar, aprender, enseñar y escribir programas a mano.
- Describe un entorno de ejecución de espacio aislado y seguro para la memoria que incluso puede implementarse dentro de máquinas virtuales JavaScript existentes
- Mantiene la naturaleza de la web sin versiones, con funciones probadas y compatible con versiones anteriores
¿WebAssembly está intentando reemplazar JavaScript?
¡No! WebAssembly está diseñado para ser un complemento, no un reemplazo, de JavaScript.
Si bien WebAssembly permitirá, con el tiempo, que muchos lenguajes se compilen en la Web, JavaScript tiene un impulso increíble y seguirá siendo el lenguaje dinámico único y privilegiado.
Wasm y JavaScript siguen estrechamente vinculados, pero Wasm trata en gran medida de otras cosas además de JavaScript.
En pocas palabras, el propósito original de Wasm de ayudar a que JavaScript se ejecute de manera más eficiente en el navegador web sigue siendo un componente clave de su integración.
Esa integración ahora se extiende más allá del navegador web y llega a aplicaciones perimetrales y de servidor para las cuales JavaScript por sí solo no ha sido la mejor opción.