¿Qué es WebAssembly?
WebAssembly es una tecnología que permite escribir código en otros lenguajes diferentes a los habituales en la web. Actualmente está soportado por todos los principales navegadores y aunque su uso todavía no está del todo extendido, las posibilidades que nos ofrece resultan muy prometedoras.
Las claves de WebAssembly
Actualmente en los navegadores podemos ejecutar código Javascript, que junto con HTML y CSS ofrece una plataforma excelente para muchos tipos de aplicaciones, dando forma a la web de hoy en día. Sin embargo, estos lenguajes no ofrecen todas las posibilidades de las aplicaciones que pudiéramos imaginar, o por decirlo de otro modo, no son adecuados para el desarrollo de soluciones de todos los tipos, sobre todo aquellas que requieran el trabajo con la máquina a bajo nivel, o con un rendimiento muy superior al actual.
Para solucionarlo, WebAssembly ofrece una vía para ejecutar código en diversos lenguajes más cercanos a la máquina, como C, C++, C#, Rush, etc. Los programas ejecutados bajo WebAssembly son además capaces de comunicar con los recursos disponibles actualmente en la navegador como otros scripts Javascript, en ambas direcciones, aprovechando todas las características actuales de la web. Algunas de sus claves principales son:
- Velocidad. Gracias a WebAssembly dentro de la plataforma web se puede realizar el despliegue de aplicaciones requieran ejecutar código a velocidad nativa, obteniendo los beneficios directamente del hardware de los dispositivos.
- Seguridad. WebAssembly trabaja dentro del marco de seguridad que nos ofrecen los navegadores, permitiendo las verificaciones habituales que se implementan actualmente con Javascript, tales como la comprobación del origen del código, las restricciones de acceder a contenido de otras fuentes o la solicitud de permisos para acceso al hardware.
- Abierto. Igual que pasa con Javascript, el código de WebAssembly se puede examinar, de modo que facilita la verificación de lo que se está ejecutando en el navegador y la depuración.
Estándar WebAssembly en desarrollo
Aunque hoy ya somos capaces de utilizar WebAssembly en los navegadores y obtener beneficios de esta tecnología, se trata de un estándar cuyas características irán aumentando con el paso de los años. Podemos ver a WebAssembly como un conjunto de APIs enfocadas en la realización de diversas tareas a bajo nivel. Actualmente hay una cantidad de características estandarizadas y otras se encuentran en discusión y verán la luz, o no, durante los próximos años. Para encontrar una referencia en detalle podemos consultar el Roadmap de WebAssembly.
Qué esperamos en el futuro de WebAssembly
Gracias a WebAssembly podemos esperar el incremento considerable de las aplicaciones en la plataforma web, ya que nos permitirá ejecutar en el contexto del navegador casi cualquier cosa que actualmente se pueda encontrar en las aplicaciones nativas.
- En el área del entretenimiento aumentará las posibilidades de los desarrolladores para la realización de juegos que requieren aún mayores capacidades de procesamiento.
- En la creación de contenidos facilitará la aparición de programas para la edición de archivos multimedia, como vídeo y por supuesto imágenes de alta resolución, que podrán situarse a la par de programas de referencia como Photoshop o Premiere.
- En el ámbito empresarial permitirá la creación de todo tipo de aplicaciones científicas para la simulación, el trabajo con big data sin necesidad de llevar las operaciones al lado del servidor, la inteligencia artificial, etc.
En definitiva, estamos ante una tecnología que abrirá muchas posibilidades a las que la web actual era incapaz de dar soporte en el lado del cliente. Sin embargo, no debemos olvidar que la web que conocemos hoy es ya suficientemente potente para la creación de muchos tipos de aplicaciones, gracias a los lenguajes de programación soportados por los navegadores hasta la fecha. Por todo ello, el uso de WebAssembly será solamente aconsejado cuando realmente existan requisitos específicos, que impliquen la necesidad de usar características nativas de los ordenadores con programación a bajo nivel.