WebAssembly : Apple, Google, Microsoft et Mozilla transforment le Javascript en binaire

Guillaume Belfiore
Lead Software Chronicler
20 mars 2016 à 17h02
0
Comment accélérer le chargement des JavaScript au sein des pages Web sans pour autant affecter les performances du navigateur ? Le créateur du Javascript s'est associé à Microsoft, Google et Mozilla pour présenter WebAssembly.

Alors que les applications Web deviennent de plus en plus riches et que les connexions haut-débit se démocratisent jusqu'au smartphone, certains perçoivent plusieurs problèmes dans la nature du langage Web actuel, notamment au niveau du JavaScript. Avec WebAssembly, l'objectif est de l'optimiser pour que le code se comporte comme celui d'un véritable logiciel.

Cette semaine, les principaux éditeurs de navigateurs ont commencé à implémenter la technologie. Pour illustrer ces efforts, ils ont notamment conçu un portage du jeu AngryBots de Unity. Pour le tester il faudra télécharger la dernière version de Chrome Canary et activer la fonctionnalité chrome://flags/#enable-webassembly. WebAssembly est également intégré au sein des dernières builds de Firefox Nightly. Après avoir saisi about:config il faudra paramétrer l'option javascript.options.wasm sur la valeur true.

Microsoft n'est pas en reste et présente une prise en charge expérimentale au sein du moteur Chakracore désormais publié en open source. Ci-dessous l'éditeur partage une courte vidéo de démonstration au sein du navigateur Edge :



Enfin de son coté Apple explique être aussi entrain d'intégrer les premiers composants au sein du moteur de WebKit.

Du Web au natif

Plusieurs efforts ont déjà été effectués en la matière. En 2011, Google présentait notamment Native Client, un kit de développement composé d'une série d'interfaces de programmation ainsi que d'une documentation visant à permettre la mise au point de modules écrits en C ou en C++ . Ces derniers sont alors capables de communiquer avec des éléments HTML ou JavaScript exécutés au sein du navigateur. Le code est ensuite exécuté au sein d'un bac à sable (sandbox), censé garantir la sécurité de la machine hôte.

En portant le moteur graphique Unreal Engine sur le Web, Mozilla présentait pour sa part en 2013 asm.js, un sous-ensemble de JavaScript pouvant être exécuté à bas niveau et compilé en langage natif C/C++ avec Emscripten avant exécution.

0226000008079426-photo-javascript.jpg


Javascript ne meurt pas mais évolue

Mais alors pourquoi continuer à utiliser JavaScript si celui-ci n'est pas optimisé et s'il existe des environnements alternatifs de type .NET ?

D'une part, le JavaScript est actuellement très répandu, d'autre part, il est agnostique et fonctionnera aussi bien sur les architectures ARM ou x86. Enfin, les scripts restent confinés aux navigateurs et, à moins que ces derniers, ou un de leurs plugins, ne présentent une faille, ils n'affecteront pas le système.

Aussi plusieurs technologies en réflexion au W3C se sont greffées autour de JavaScript, comme WebGL, pour communiquer avec les pilotes des GPU. Plusieurs interfaces de programmation ont vu le jour pour qu'une page Web puisse prendre le contrôle de la webcam ou des microphones. Par ailleurs, si d'autres langages ont été conçus pour optimiser le JavaScript, par exemple au niveau de la syntaxe, ils requièrent tout de même sa prise en charge par le navigateur. C'est par exemple le cas de TypeScript conçu par Microsoft.

0226000008079432-photo-brendan-eich.jpg

Brendan Eich


WebAssembly : le bytecode du Web

En partant des travaux portés sur asm.js, Brendan Eich, créateur du langage JavaScript et brièvement ex-PDG de Mozilla, présente WebAssembly, un bytecode pour le Web ou un code intermédiaire entre l'application Web et les instructions machines. WebAssembly rassemble Google, Microsoft, Apple et Mozilla.

Avec WebAssembly, l'exécution d'un JavaScript classique serait 20 fois plus rapide. Il faut dire que le bytecode permet de véritablement cibler les instructions Javascript vers les composants de la machine nécessaires à les exécuter.

Si asm.js a été strictement pensé pour optimiser les performances de JavaScript, WebAssembly a pour objectif d'en faire un standard et, à terme, de se transformer en bytecode pour n'importe quel autre langage Web. Enfin, puisqu'il se présente comme un bytecode agnostique du langage, WebAssembly serait davantage optimisé au niveau de la décompression.

De toute évidence, si les plus grands acteurs de la Toile soutiennent le projet, le Web devrait bel et bien continuer de s'enrichir et le JavaScript est loin d'être enterré. Reste à savoir quand Internet Explorer, Firefox, Chrome ou Safari seront compatibles avec ce nouveau bytecode.

  • Les développeurs retrouveront davantage d'informations sur cette page.

A lire également :

Article initialement publié le 18/06/2015

Guillaume Belfiore

Lead Software Chronicler

Lead Software Chronicler

Je suis rédacteur en chef adjoint de Clubic, et plus précisément, je suis responsable du développement éditorial sur la partie Logiciels et Services Web.

Lire d'autres articles

Je suis rédacteur en chef adjoint de Clubic, et plus précisément, je suis responsable du développement éditorial sur la partie Logiciels et Services Web.

Lire d'autres articles
Vous êtes un utilisateur de Google Actualités ou de WhatsApp ? Suivez-nous pour ne rien rater de l'actu tech !
google-news

A découvrir en vidéo

Rejoignez la communauté Clubic S'inscrire

Rejoignez la communauté des passionnés de nouvelles technologies. Venez partager votre passion et débattre de l’actualité avec nos membres qui s’entraident et partagent leur expertise quotidiennement.

S'inscrire

Commentaires

Haut de page

Sur le même sujet