Loupe

Qu’est-ce que WebAssembly ?

Dans cet article je vais essayer de répondre aux questions les plus courantes sur WebAssembly.
Si vous préférez le format vidéo, un podcast est disponible ici.

Qu’est-ce que WebAssembly ?

WebAssembly est un standard de binaire (byte code) compréhensible par les navigateurs modernes.
Les plus pointilleux ne parleront pas de byte code mais d’AST (Abtract Syntaxt Tree), mais ça, c’est un autre débat !

WebAssembly c’est donc un nouveau langage ?

Non, c’est un format binaire comme l’assembleur.
Il a été conçu pour être utilisé avec des langages haut niveau comme le C / C++ / Rust ou C# pour concevoir des applications web.
Par exemple, dans le cas du C#, au lieu de produire du IL, il pourrait créer un binaire WebAssembly.

Faut-il générer un binaire pour chaque plateforme x86, x64 et ARM ?

Non, le binaire est indépendant de la plateforme : il n’y aura pas de compilation spécifique pour ARM / x32 / x64. Une fois le byte code livré, il fonctionnera tel quel sur tous les types d’architecture.

Est-ce une entreprise qui crée WebAssembly ?

Non, il est créé par le même consortium que le HTML : le W3C.
Cela rend l’initiative très intéressante : ce n’est pas Adobe ou Microsoft qui essayent d’imposer un nouveau format de binaire !

C’est supporté par quels navigateurs ?

WebAssembly est supporté par les 4 navigateurs principaux : Edge, Chrome, Firefox et Safari, et ce depuis fin 2017.

Quels sont les avantages de WebAssembly par rapport à Javascript ?

Le binaire WebAssembly est déjà compilé lorsqu’il arrive au navigateur :

  • Son parsing est grandement facilité : selon les dernières expérimentations, il serait 20 fois plus rapide qu’un fichier javascript
  • Ce n’est pas un fichier texte donc il sera « moins » gros

Il est donc plus rapide à charger et plus rapide à exécuter.

Il est aussi plus rapide pour faire les calculs : il sera donc plus adapté pour faire de la compression, manipulation d’images, jeux vidéos…

Est-ce que WebAssembly est sécurisé ?

WebAssembly est dans un environnement d’exécution en mode bac à sable sécurisé. Il hérite des mêmes stratégies de sécurité que Javascript.

WebAssembly va-t-il remplacer Javascript ?

WebAssembly n’a pas pour but de remplacer Javascript. Il est conçu pour compléter Javascript avec des performances supérieures. C’est une alternative pour construire des applications Web ou des jeux 2D / 3D, pour lesquels il est plus optimisé.

WebAssembly peut-il communiquer avec Javascript ?

Oui, WebAssembly JavaScript Interface fournit une API JavaScript explicite pour interagir avec WebAssembly.

WebAssembly est-il le nouveau Flash / Silverlight / JavaFX ?

WebAssembly a certaines similitudes avec ces moteurs, dans le sens où il permet de faire fonctionner des applications dans un navigateur.

Mais contrairement à ses aînés:

  • il n’est pas issu d'une seule grosse entreprise qui essaye d’imposer son standard.
  • ce n’est pas un plugin qu’il faut ajouter au navigateur car le moteur est déjà intégré et fonctionnel dans le navigateur web

Quels outils permettent de générer des binaires WebAssembly ?

En dotnet, 3 outils permettent de générer du WebAssembly :

  • Unity3D : Moteur de jeux vidéo 2D / 3D
  • Blazor : L’équipe d’ASP.net a porté le moteur de vue Razor dans WebAssembly. Un projet à surveiller.
  • Uno: UWP everywhere : nventive a permis au code UWP de fonctionner sur iOS / Android mais aussi WebAssembly.

Ces trois outils sont encore en phase de beta sur la génération de byte code WebAssembly. Il va donc falloir encore attendre un peu avant de commencer à migrer nos applications web dans ce nouveau format.

Happy coding !

Pour aller plus loin :

Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus