Avez-vous déjà pensé à exécuter des applications Web avec des performances de type natif ? Si vous le faites, vous avez une option intéressante : WebAssembly, également connu sous le nom de WASM.
Les technologies Web actuelles se concentrent sur une approche riche en fonctionnalités. Prenez JavaScript, par exemple. En utilisant JavaScript, vous pouvez manipuler DOM, dessiner de beaux graphiques et même lancer un jeu sur le navigateur. Cependant, l'exécution de code JavaScript dans le navigateur est relativement lente pour l'exécution de tâches axées sur les performances.
Dans cet article, nous allons examiner de plus près WebAssembly. Commençons.
What is WebAssembly?
WebAssembly est un nouveau langage de bas niveau qui s'exécute sur les navigateurs Web modernes. Il offre un format binaire compact capable de fonctionner à des performances quasi natives.
Les choix de conception de WebAssembly correspondent aux performances des langages de programmation tels que Rust, C++ et C, qui offrent des performances natives car ils peuvent communiquer directement avec le matériel.
WebAssembly convertit le code source écrit en C, C++ et Rust en langage de bas niveau, agissant comme une cible de compilation efficace pour ces langages de programmation. Il ouvre la voie aux applications Web pour exécuter des vitesses quasi natives sur le Web.
Pour comprendre l'image complète, nous devons commencer par JavaScript.
JavaScript est le langage du Web. Il est omniprésent dans toutes les applications Web modernes. Cependant, JavaScript est lent car il s'agit d'un langage à typage dynamique. Pendant l'exécution, des vérifications de type ont lieu et le code est converti dynamiquement en code machine par l'interpréteur V8. Ce n'est qu'après cela que le code machine est exécuté.

L'inclusion de WebAssembly en V8 ouvre la porte au développement et à l'exécution d'applications hautes performances sur le Web. Il permet aux développeurs d'écrire une partie spécifique de leur base de code en C, C++ ou Rust.
Cependant, cela ne signifie pas que vous devez écrire tout le code de votre application dans WebAssembly. Tout ce que vous avez à faire est d'écrire votre application Web pour appeler les API et les fonctions WebAssembly via JavaScript. Frameworks JavaScript peut utiliser WebAssembly pour améliorer les performances des développeurs tout en offrant d'excellentes fonctionnalités prêtes à l'emploi.

Un bon exemple d'utilisation de WebAssembly est l'exécution de FFmpeg, un puissant outil de traitement vidéo, sur un navigateur. Auparavant, vous ne pouviez pas exécuter FFmpeg en utilisant S'inscrire, une chaîne d'outils de compilateur, à WebAssembly.
Cependant, ces derniers temps, il est désormais tout à fait possible d'exécuter FFmpeg dans un navigateur avec le fichier ffmpeg.wasm. Ce port JavaScript/WebAssembly vous permet de découper, découper et dissimuler des vidéos directement dans les navigateurs.
WebAssembly Features
Les fonctionnalités de WebAssembly sont simples et directes. Il est rapide, portable et efficace. Par défaut, WebAssembly tire parti du matériel sous-jacent pour offrir des vitesses d'exécution de type natif. Il est également sécurisé, étant donné qu'il s'exécute dans un environnement sandbox, tout comme JavaScript s'exécute sur un navigateur.

Même si WebAssembly est un langage d'assemblage de bas niveau, il offre toujours une interface débogable avec un format de texte lisible par l'homme. Donc, si vous voulez déboguer le code WASM, vous pouvez ouvrir le code dans le éditeur de texte et déboguer comme n'importe quel autre langage de programmation.
Enfin, le navigateur n'attend pas que tout le code WebAssembly soit téléchargé pour que la compilation démarre. Par exemple, le navigateur commencera à compiler le code WASM dès qu'il le recevra. Ainsi, pour une charge utile WebAssembly de 500 Ko, le navigateur commencera à compiler à partir du tout premier octet qu'il recevra.
Will WebAssembly replace JavaScript?
WebAssembly fonctionne bien dans l'écosystème du web. Ainsi, si vous choisissez d'utiliser WebAssembly, vous n'avez rien à remplacer. WebAssembly fonctionne avec JavaScript pour vous permettre d'écrire des applications Web basées sur les performances.
Lorsque vous travaillez sur votre application Web, vous pouvez appeler la fonction WASM dans votre code JavaScript. Vous ne voudriez utiliser WebAssembly que pour les tâches gourmandes en CPU dans un scénario réel.
De plus, WebAssembly ne peut pas accéder aux objets DOM (Document Object Model) ni les manipuler. Et c'est pourquoi vous avez toujours besoin de JavaScript pour développer des applications Web.
WebAssembly Limitations
WebAssembly comporte certaines limitations. Ces limitations incluent les éléments suivants :
- WASM ne peut pas faire de manipulation d'interface utilisateur ou frontale car il ne peut pas interagir avec DOM. Pour surmonter cela, vous devez utiliser JavaScript.
- WASM n'offre aucun outil de gestion de la mémoire. Cela signifie qu'il ne fournit pas de ramasse-miettes.
- WebAssembly a des problèmes de sécurité, en particulier pour les navigateurs Web. Actuellement, il n'existe aucun outil pour valider le code WASM. Donc, si quelqu'un insère code malveillant, il n'y a aucun moyen de le vérifier.
- Même si WASM offre un format de texte lisible par l'homme pour les programmeurs, il peut toujours être difficile à analyser et à déboguer.
WASM Roadmap and Community-Support
WebAssembly est nouveau et continue de croître. Quatre principaux navigateurs, dont Edge, Chrome, Firefox et WebKit, le prennent actuellement en charge. Ainsi, si vous créez pour le Web, ce n'est toujours pas "encore" un choix idéal, car tous les navigateurs ne prennent pas en charge WASM.
WASM suit les normes Web. La Groupe de travail W3C WebAssembly et Groupe communautaire travaillent avec les principaux fournisseurs de navigateurs pour rendre WASM plus courant.
Pour en savoir plus, consultez leur Roadmap Venez voir des images qui vous inspireront.
Mot de la fin
WebAssembly donne aux développeurs l'outil nécessaire pour créer des applications Web hautes performances. Il offre une exécution spécialisée du code pour une sortie plus rapide. Cependant, il n'en est qu'à ses balbutiements. WASM a encore besoin de temps pour obtenir un soutien à l'échelle de la communauté. A ce jour, seuls quatre grands navigateurs soutenir WASM.
Ensuite, vous pouvez regarder Assemblage Web Partie 2 : Objectifs, concepts clés et cas d'utilisation.