web

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.