WebAssembly está pensado como un complemento de Javascript en el navegador web. Es un código de bytes que se supone que ayuda a aumentar la velocidad de las aplicaciones web. Sin embargo, el sistema todavía tiene ciertas debilidades.
WebAssembly, o Wasm para abreviar, tiene la tarea de eliminar algunas de las deficiencias de Javascript. En realidad, este lenguaje es demasiado complicado y tiene una sintaxis demasiado blanda para el papel central que ha desempeñado en el desarrollo web durante algún tiempo. No es suficiente para los requisitos de rendimiento modernos.
Los desarrolladores hicieron uso de emscripts a pequeña escala. De este modo, los programas en C se compilan y ejecutan en una máquina virtual del navegador. En general, todo no funciona porque Javascript no puede ofrecer el rendimiento necesario.
WebAssembly está diseñado para resolver exactamente estos problemas. Es un código de bytes que constituye una máquina virtual alternativa que tiene un rendimiento suficiente.
WebAssembly simplemente explicado
La forma más sencilla de explicar lo que hace Wasm es con una metáfora: un vehículo híbrido tiene un motor eléctrico y una unidad de gasolina. El motor eléctrico es el entorno Javascript normal del navegador. El motor es completamente suficiente para las tareas diarias. Sin embargo, tiene límites de rendimiento. En esos momentos, el motor de gasolina (la máquina Wasm) debe encenderse para eliminar esto. Se deben tener en cuenta las siguientes cosas:
- WebAssembly y el entorno Javascript deben poder comunicarse entre sí para determinar cuándo se necesita la potencia adicional.
- Wasm proporciona las llamadas «islas de rendimiento» y no proporciona continuamente servicios adicionales. En la práctica, el código compilado para WebAssembly se carga y ejecuta para esto en forma de módulos.
- Para que se puedan generar los módulos, se requieren compiladores que comprendan y puedan procesar el formato Wasm.
- Estos compiladores están disponibles, por ejemplo, para C, C ++, Rust, Blazor y Clang.
- Los compiladores deben asegurarse de que las transferencias puedan tener lugar en ambas direcciones. Para permanecer en la imagen: el motor de gasolina debe poder indicar cuándo ya no se necesita su potencia y no solo recibir comandos.
Las ventajas de WebAssembly
Todos los principales desarrolladores de navegadores (Microsoft, Google, Apple, Mozilla, Opera) están impulsando el desarrollo de WebAssembly como parte de la plataforma «Open Web». Desde 2017, todos los navegadores populares han admitido los módulos asociados con la excepción de Internet Explorer, que ahora ha sido descontinuado. Se han demostrado las siguientes ventajas:
- Las aplicaciones web se cargan más rápido.
- Las aplicaciones correspondientes funcionan de manera más eficiente.
- Los entornos Wasm son seguros porque se ejecutan en una caja de arena.
- El código de bytes es de acceso abierto y se puede utilizar en consecuencia para el desarrollo y la depuración.
- En teoría, incluso es posible utilizar WebAssembly como una máquina virtual fuera de los navegadores. Una interfaz llamada WASI debería hacer esto posible en la práctica.
Problemas de WebAssembly
Un problema importante con WebAssembly es la dificultad de implementación. Por el momento, los módulos Wasm solo se pueden cargar en el navegador ya sea programando manualmente un cargador de JavaScript separado o usando la “página de shell” generada por Emscripts.
Sin embargo, esto último es difícil y, a veces, imposible: muchos de los comandos de la biblioteca estándar requieren una infraestructura de soporte en tiempo de ejecución, que, sin embargo, a menudo no está disponible. Para retomar la metáfora anterior nuevamente: el usuario todavía tiene que asegurarse de que el motor eléctrico le explique al motor de gasolina lo que se requiere cada vez. Desafortunadamente, no comprende algunos comandos, por lo que hay que explicarlos una y otra vez (o guardarlos usando una nueva biblioteca que puede crear usted mismo).
No te vayas sin leer: Cómo borrar el caché de aplicaciones en Android y por qué hacerlo
Los desarrolladores definitivamente tienen una solución para este problema. Las etiquetas de script deberían ayudar en el futuro a cargar los módulos. Sin embargo, hasta ahora este enfoque no ha dado resultados visibles.
¿Qué es una dirección IP? Definición | Dirección única
¿Qué es el software industrial? Definición
¿Qué es DisplayPort? Interfaz digital estándar
¿Qué es AndroMDA? Definición | Desarrollo de software
¿Qué es y como funciona Teamviewer? Lo que debes saber
¿Qué es el rastreo distribuido? Definición | Microservicios
¿Qué es exactamente la memoria GPU compartida?
¿Qué es la carga inalámbrica y cómo funciona? Lo que debes saber
¿Qué es y cómo funciona internet de las cosas (IoT)?