Nombra un lenguaje de programación cuya muerte ha sido anunciada cada año, en los últimos 20 años….Si, JavaScript. La verdad es que JavaScript ha muerto tantas veces como han nacido nuevos frameworks del lenguaje de Brendan Eich.
Aparentemente, uno de los serios rivales de JavaScript actualmente es WebAssembly, una nueva tecnología que se caracteriza por tener un formato compacto y binario para programar. Pero, ¿nació WebAssembly con el objetivo de sustituir a JavaScript? Intentemos ver sus características y contestar juntos a esta pregunta.
¿Qué es WebAssembly?
WebAssembly, o WASM es un nuevo estándar web que define una forma de crear módulos en diferentes lenguajes de programación y ejecutarlos en un navegador.
WebAssembly es conocido por su velocidad, y - sorpresa - a pesar de la aparente rivalidad con JavaScript se diseñó para trabajar junto con JavaScript, ya que puedes llamar a módulos WASM desde código de JavaScript.
Oficialmente, WebAssembly, “es un formato de instrucciones binarias para una máquina virtual basada en pila. WASM está diseñado como un objetivo portátil para la complicación de lenguajes de alto nivel como C/C++/Rust, lo que permite implementar en la web aplicaciones de cliente y de servidor”. Creo que vale la pena insistir también que en WASM, el código es generado por compiladores.
¿Cuáles son las características más importantes de WASM?
- Rápido y eficiente. La máquina de pila de Wasm está diseñada para que se ejecute a la velocidad nativa, aprovechando las capacidades del hardware disponible en cada plataforma. Gracias al formato binario de un fichero .wasm, su carga es más rápida que la carga de un fichero .js con código similar.
- Seguridad. WebAssembly aplicará las políticas de seguridad del mismo origen y permisos del navegador.
- Abierto y depurable. WebAssembly se ha diseñado para que el código tenga un formato bonito y sea fácil depurar, testear, experimentar, aprender y escribir programas a mano - algo que no era fácil en sus inicios. El formato de texto permite ver la fuente de los módulos de Wasm en la web.
- Parte de la plataforma web abierta. Esta es una característica que puede ser clave para el éxito de WebAssembly. Por esto, Wasm está diseñado para que esté siempre actualizado con mejoras incrementales, con tests realizados y versiones compatibles con versiones anteriores para la web. Los módulos de WebAssembly podrán entrar y salir del contexto de JavaScript y acceder a la funcionalidad del navegador a través de las mismas API Webs accesibles desde JavaScript.
¿En qué tipos de proyectos puedo usar WebAssembly?
- Mejora de rendimiento. Si tu proyecto está relacionado solamente con el manejo de datos numéricos y necesitas que los cálculos complejos se hagan de forma rápida, WebAssembly es tu herramienta.
- Código ofuscado. Si algún cliente tuyo desea ver el código de su aplicación ofuscado en el navegador, gracias a los módulos de WebAssembly lo puedes hacer.
Web Assembly Studio
Si quieres probar WebAssembly sin instalarlo en tu máquina - lo podrias hacer en menos de cinco minutos – , te animo a jugar con la versión de navegador que te proporciona WebAssembly a través de WebAssembly Studio. ¡Me parece realmente una buena herramienta para aprender sobre WebAssembly!
Conclusión
¿WebAssembly puede sustituir a JavaScript? Desde mi punto de vista, de momento no puede hacerlo. De hecho no se creó para que lo hiciera, si no para que trabajara junto a JavaScript.
Aunque sea una tecnología entusiasmante por ser "nueva", su éxito dependerá de la adopción por parte de los desarrolladores y organizaciones, y esto definirá si esta “nueva” tecnología madurará, o no para ser el sustituto de JavaScript.
Todo dependerá, como casi siempre de la comunidad, y si quieres implementarlo ya en tus proyectos, siempre es un consuelo saber que todos los navegadores modernos lo soportan ya de forma nativa, y Node.js también. Además, como has podido ver en Web Assembly Studio, sus herramientas se pueden utilizar de forma fácil.
Por tanto, siendo una tecnología nueva como hemos dicho anteriormente, valorar correctamente su implementación en algún proyecto web es importante ya que su curva de aprendizaje para funcionalidades más triviales es muy pronunciada y podrás perder algún tiempo en desarrollar y en depurar.
¿Has desarrollado aplicaciones web en WebAssembly? ¿Qué tal la experiencia?
Foto: endri yana yana en Pixabay
Fuentes: