Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

WebAsssembly: acelerando y creando nuevas posibilidades en desarrollo web

WebAssembly está cambiando de manera fundamental la forma en la que se pueden crear nuevas capacidades y funcionalidades de desarrollo para la web.

Para mantener la interoperabilidad de los navegadores, las nuevas capacidades web deben pasar por un riguroso proceso de estandarización e implementaciones entre navegadores. Varias décadas de grandes inversiones han logrado llevar la funcionalidad que ofrecen los navegadores a cotas asombrosas, pero sacarle partido puede llevar tiempo y la Web no necesita realmente tener todas las capacidades integradas. Después de años de invertir en capacidades a bajo nivel que actúan como bloques de construcción para una funcionalidad de nivel superior, estamos viviendo una nueva era de funcionalidades ampliadas, a un ritmo dramáticamente acelerado.

WebAssembly o WASM

WebAssembly es un formato de código de bytes portable, compilado a partir de otros lenguajes para ofrecer un enorme rendimiento. Y forma parte de todos los navegadores modernos, al igual que JavaScript. No es necesario utilizar extensiones ni parches de tipo alguno: todo es nativo.

Gracias a WebAssembly, los desarrolladores pueden elegir bibliotecas y funcionalidades de otras plataformas y llevarlas a la Web de manera eficiente, sin necesidad de volver a implementarlas. Además, WASM también ofrece primitivas de computación avanzadas como por ejemplo la posibilidad de crear subprocesos paralelizables y datos múltiples de instrucción única (SIMD) que le permiten maximizar el rendimiento de la CPU.

Al ofrecer WebAssembly portabilidad y acceso eficaz a la CPU, la Web ahora tiene los componentes básicos necesarios para construir una gran variedad de nuevas funciones. Todo esto, por supuesto, se basa en la base increíble que es la plataforma web completa, llena de capacidades poderosas, métodos de renderizado y mucho más.

Ejemplos del mundo real

En Google tienen un interesante post que muestra una pequeña parte de la nueva funcionalidad que está disponible en los navegadores modernos gracias a WebAssembly.

Algunos de los ejemplos que nos muestran son funcionalidades que intentaron pasar por el proceso estándar para ser una API nativa del navegador pero no lo lograron por distintas razones. Otros, se están estandarizando e implementando activamente todavía en todos los navegadores:

  • FFMPEG en Wasm permite que las aplicaciones web funcionen de manera efectiva con videos. Los WebCodecs son una alternativa estándar que ofrece soporte de codificación y decodificación similar, pero aún no se ha distribuido en todos los navegadores.
  • WebAssembly está detrás de la característica de desenfoque de fondo durante llamadas de videoconferencia en Google Meet, por ejemplo, y ahora existe incluso una propuesta de estándar específica para esta funcionalidad.
  • Web SQL se estandarizó e incluso se incluyó en Chrome durante muchos años, pero nunca se adoptó lo suficiente en todos los navegadores. SQLite en Wasm va a sustituir a Web SQL, que finalmente se eliminará de Chrome.
  • Blazor: la plataforma de desarrollo Front-End y Back-End de Microsoft que permite evitar JavaScript y utilizar C# para todo el código.
  • Universal Scene Descriptor (USD) se incluye en Safari, pero no está disponible en otros navegadores.

Ventajas de WebAssembly y este nuevo paradigma de desarrollo

Velocidad de iteración más rápida

Debido a que la funcionalidad no tiene que pasar por estándares y obtener aprobación antes de distribuirse, los ciclos de iteración pasan de años a días o incluso a horas. Los enfoques como por ejemplo "Origin Trials" ayudan a permitir una mayor experimentación, pero aún requieren semanas o meses para las iteraciones. Cuando cambias la tasa de iteración de algo, cambias fundamentalmente la cosa en sí misma.

Algunos campos, como el aprendizaje automático (Machine Learning), avanzan tan rápido que es increíblemente difícil mantenerse al día con los enfoques basados en estándares. En el momento en que un diseño ha pasado por la estandarización y la implementación entre navegadores se ha completado, el campo en su conjunto ha pasado a algo nuevo que tendría que pasar por todo el proceso otra vez.

Dicho esto, la estandarización sigue siendo esencial para muchas cosas (como veremos en el apartado de desventajas justo a continuación) y, cuando sea factible, se debe intentar la estandarización.

Soporte inmediato en todos los navegadores

Debido a que WASM es compatible con todos los navegadores, la funcionalidad integrada también funcionará en todos los navegadores inmediatamente. La interoperabilidad y la implementación de funciones entre navegadores suele ser el peor problema para los desarrolladores y, al mover la funcionalidad a estas primitivas de bajo nivel, eliminaremos gran parte de esta preocupación.

Seguridad mejorada

Debido a que esta funcionalidad se basa en entornos aislados de seguridad increíblemente reforzados, hay una seguridad sustancialmente mejorada en comparación con las API implementadas de forma nativa. Flash, por ejemplo, se eliminó de la web en gran parte porque era demasiado difícil de dotar de seguridad robusta dado lo complejo del complemento, pero ahora se puede ejecutar en WebAssembly 😱 eliminando casi todos los problemas de seguridad que tenía.

Desventajas y limitaciones

Como con cualquier nueva solución a problemas complejos, WebAssembly no está exento de desventajas y limitaciones. Algunos de estos son inherentes y otros tienen algunas soluciones prometedoras.

No sustituirá a JavaScript para la mayoría de los desarrollos Web

WebAssembly no reemplazará a JavaScript ni lo convertirá en obsoleto, sino que ampliará sus capacidades.

WebAssembly en el navegador todavía depende completamente de JavaScript y necesita interactuar a través de JavaScript para acceder a otras funciones web. Las bibliotecas y la nueva funcionalidad habilitada por WebAssembly se utilizarán a través de las API de JavaScript. Si bien existen algunas propuestas que podrían permitir la comunicación entre módulos de WASM y la interfaz directa con las API web, todavía se encuentra en las primeras etapas de desarrollo.

Tamaño de las páginas

Al mover más lógica y funcionalidad a la parte de los usuarios, el tamaño de las páginas también aumentará. Este es un gran problema ya que un tamaño de empaquetado menor es lo más importante para una buena experiencia de usuario. Como resultado de ello, los desarrolladores deben pensar detenidamente antes de aumentar el tamaño de sus aplicaciones con esta funcionalidad, y puede ser más relevante para aplicaciones Web más grandes que para sitios de comercio electrónico o blogs más pequeños. Esto ha sido durante mucho tiempo un problema para los frameworks pesados de JavaScript y es algo en lo que podrían ofrecer futuras soluciones para mejorar la situación.

Otra mitigación potencial sería observar las funcionalidades populares que se utilizan muy a menudo por parte de los desarrolladores y usar esta información como base para decidir qué funcionalidad debería estandarizarse en el navegador en sí, obviando la necesidad de usarla de manera externa. Por ejemplo, el estándar de WebCodecs que reemplazará a FFMPEG compilado a WASM, o la API de reconocimiento de escritura manual para reemplazar las opciones que existen actualmente creadas con WASM.

Acceso a las capacidades del dispositivo

WebAssembly consiste en su mayoría en mecanismos de computación, pero no otorga ningún tipo de acceso de bajo nivel (de "root") al sistema operativo o al dispositivo en sí. Por ello, funcionalidades como el acceso directo al hardware (USB o Bluetooth), la gestión de pantallas o ventanas, los controles de entrada, el sistema de archivos, el portapapeles y mucho más todavía requieren APIs de bajo nivel de la plataforma para acceder. El proyecto Fugu de Chromium tiene como objetivo específico habilitar todos estos casos para los navegadores basados en Chromium, pero aquí aún se necesitarían implementaciones en otros navegadores.

En resumen

WebAssembly ya está habilitando nuevas funcionalidades en el navegador, pero más que eso, representa un enfoque fundamentalmente nuevo sobre cómo se desarrollan estas funcionalidades. Al igual que con cualquier nuevo paradigma, existen ventajas y desventajas, pero en general, WASM es un nuevo y poderoso enfoque tanto para los navegadores como para los desarrolladores de todo el mundo.

Vamos a ver cosas muy alucinantes basadas en esto en el futuro...

Este artículo es una traducción libre con pequeños retoques del artículo How WebAssembly is accelerating new web functionality publicado en el blog oficial de Chrome por Thomas Nattestad, Product Manager de WebAssembly en Google.

campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP
Archivado en: Desarrollo Web

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.