Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

WebAssembly pour les débutants - Partie 1 : Une introduction à WASM

web-assembly-banner-1
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

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é.

Navigateur de travail du moteur V8
Moteur V8 dans le navigateur Web

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.

2-2
Interaction WebAssembly avec JS, CSS et HTML

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.

webassembly-fonctionnalités-1
Fonctionnalités WebAssembly

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.

Merci à nos commanditaires
Plus de bonnes lectures sur le développement
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder