Pourquoi WebAssembly est-il important ?

0
186
Shutterstock/Andrey Suslov

WebAssembly est un format d'instruction binaire pouvant être exécuté dans les navigateurs Web. Il fournit un environnement d'exécution en bac à sable avec des performances quasi natives, éliminant la plupart des frais généraux associés à JavaScript sur les pages Web.

WebAssembly (Wasm) est un code machine de bas niveau qui s'exécute dans une machine virtuelle basée sur une pile. . Cela signifie qu'il est beaucoup plus proche de votre matériel que JavaScript. Cela doit être analysé et entièrement interprété avant de pouvoir s'exécuter.

Créer Wasm est un peu plus compliqué que d'écrire du JavaScript. Bien que vous puissiez le coder à la main au format texte Wasm, il s'agit d'un niveau bas et équivalent à l'écriture de code assembleur pour une exécution native. Le plus souvent, vous écrirez dans un langage de programmation établi et compilerez avec Wasm. (Plus de détails plus tard.)

Pourquoi Wasm est-il vraiment important ?

Si l'augmentation des applications Web riches est quelque chose à faire, les développeurs, dans l'ensemble, sont assez à l'aise avec l'écriture de JavaScript. Il a considérablement évolué au cours de la dernière décennie avec de nouvelles fonctionnalités de syntaxe et des améliorations des performances du navigateur. Ceux-ci l'ont élevé de simples scripts à un langage capable de prendre en charge des applications complexes et autonomes. Pourquoi WebAssembly est-il alors nécessaire ?

Wasm ne remplace pas JavaScript. Il est ciblé sur des cas d'utilisation spécifiques où JavaScript est toujours un obstacle et le sera peut-être toujours. Parmi ces cas, la performance est celle où Wasm excelle particulièrement.

Les sites Web lourds en JavaScript ont tendance à se sentir lents et à consommer de la mémoire. Cela est particulièrement visible sur les appareils mobiles, où les applications Web n'ont toujours pas la « sensation » de leurs homologues natifs.

Parce que Wasm est beaucoup plus proche du matériel, il offre un niveau de performances à peine distinguable des applications natives. Cela ouvre le Web à une nouvelle classe d'applications critiques en termes de performances. S'il s'exécute sur votre bureau, il pourrait s'exécuter dans le navigateur sans aucun ralentissement perceptible des performances.

Avons-nous besoin de plus de performances Web ?

Il y aura toujours un argument selon lequel certaines applications sont tout simplement les mieux adaptées à une utilisation sur ordinateur. Cependant, le Web offre ses propres avantages, en particulier lorsqu'il s'agit d'une large diffusion.

La publication de votre application sur le Web vous offre l'audience la plus large possible. Tout le monde peut y accéder depuis n'importe quel appareil qu'il possède. Cela augmente la commodité pour vos utilisateurs et signifie que vous avez une base de code à maintenir.

La vraie question n'est pas de savoir si nous avons besoin de plus de performances Web : nous devrions plutôt nous demander si nous avons besoin de plus d'applications sur le Web. Pour répondre à cette question, nous pouvons nous tourner vers des sites riches en fonctionnalités qui ont déjà adopté Wasm.

AutoCAD est un logiciel de conception assistée par ordinateur pour les architectes et les ingénieurs. La dernière version Web a fait ses débuts à Google I/O en 2018. Elle utilise Wasm pour consommer les composants de la base de code de bureau existante telle quelle. Une partie du code remonte à 35 ans mais s'exécute maintenant dans le navigateur.

Un autre exemple est Figma, qui utilisait déjà le sous-ensemble JavaScript asm.js pour optimiser ses performances. En passant à Wasm, Figma a noté une amélioration des performances par 3. Google utilise également Wasm, s'appuyant sur lui pour mettre Google Earth sur le Web pour tous.

Ces applications très complexes ne pouvaient pas exister auparavant sur le Web. S'ils le faisaient, ils couraient avec des pénalités de performances sévères par rapport à leurs homologues de bureau. Wasm est l'architecture nécessaire pour achever la transition du Web des pages orientées documents vers une plate-forme d'application complète. Vous pouvez même jouer à Doom 3 !

Augmentation du choix des développeurs

Au-delà des performances, WebAssembly est important car il offre aux développeurs plus de flexibilité et de choix. À l'exception de l'héritage des plugins Flash, Java et ActiveX, JavaScript a été votre seul choix lors de l'écriture de code pour le navigateur.

Cette situation s'est maintenant transformée. WebAssembly est un format de bas niveau vers lequel d'autres langages compilent. C, C++, C#, Java, Python, Rust et bien d'autres sont capables de générer des modules WebAssembly. Cela donne aux développeurs beaucoup plus d'options lors de la création de code pour le Web.

Vous avez toujours besoin de JavaScript pour charger vos modules Wasm, mais c'est à peu près tout. Vous pouvez implémenter toutes les fonctionnalités de votre projet en utilisant le langage de votre choix, puis le compiler dans Wasm pour le navigateur.

Les développeurs peuvent désormais écrire pour le Web dans le langage qui leur convient le mieux et leur application. Cela peut être un langage fortement typé, orienté objet, ou quelque chose axé sur la programmation fonctionnelle. Vous n'êtes plus limité à la dactylographie et aux prototypes d'objets de JavaScript.

Faciliter la réutilisation du code

WebAssembly apporte des avantages substantiels lorsqu'il s'agit de pour réutiliser le code. Vous pouvez apporter vos bibliothèques partagées sur le Web sans les réimplémenter en JavaScript. Cela pourrait vous faire gagner des heures, des jours ou des semaines.

En utilisant C# comme exemple, vous pourriez avoir une DLL .NET qui contient des méthodes pratiques utilisées par votre code côté serveur et votre application de bureau. Auparavant, vous deviez implémenter ces méthodes en JavaScript au moment de créer votre application Web.

Avec Wasm, vous pouvez recompiler votre DLL en utilisant WebAssembly comme cible. Le même code devient accessible dans le navigateur. Wasm réduit les déchets et les doublons d'ingénierie en vous permettant d'utiliser ce que vous avez déjà.

Historiquement, cela n'était vraiment possible que si votre backend utilisait Node.js. Vous pouvez faire abstraction de la logique commune dans une bibliothèque JavaScript prête à être réutilisée dans le frontend. Désormais, vous pouvez travailler avec des bibliothèques écrites dans n'importe quel langage.

Cela fonctionne même si vous vous en tenez à JavaScript pour la majeure partie de votre application Web. Vous pouvez vous interfacer avec les modules Wasm via JavaScript, vous pouvez donc toujours utiliser votre DLL de fonctions partagées. Les API asynchrones vous permettent d'échanger des données avec Wasm afin que vous puissiez appeler des fonctions et obtenir leurs valeurs de retour.

Résumé

WebAssembly est facilement rejeté comme une technologie obscure avec peu de pertinence pour les applications Web d'aujourd'hui. Wasm vise vraiment le Web de demain, où les applications de bureau fonctionneront avec des performances natives.

Il est également important de regarder au-delà des principaux avantages. Wasm n'est pas seulement une question d'augmentation de vitesse. Cela peut également réduire les délais de livraison pour les équipes de développement, en particulier celles qui travaillent sur plusieurs plates-formes ou partagent une logique entre le client et le serveur. Une partie de l'enthousiasme autour de WebAssembly provient de la transformation du Web en une cible de compilation, au lieu d'être une plate-forme complètement autonome. Construire pour le navigateur ne signifie plus écrire du JavaScript.

Ici, en 2021, l'adoption de WebAssembly reste relativement faible. Les projets qui l'utilisent ont connu des succès, il vous suffit d'essayer Figma ou Google Earth pour apprécier la norme de performance Wasm. Vous verrez probablement davantage Wasm au cours des prochaines années à mesure que les applications, nouvelles et anciennes, seront intégrées au navigateur.