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

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
Modifié le 01/06/2018 à 15h36
0
0
Partager l'article :

Les actualités récentes les plus commentées

Renault accuse une perte nette de 141 millions d'euros en 2019
L'Europe s'est équipée de parcs éoliens offshore d'une capacité record de 3,6 GW en 2019
Contre toute attente, les Mac auraient été deux fois plus touchés par les malwares en 2019
Les jeux Activision-Blizzard retirés du service GeForce Now
Volkswagen et E.ON dévoilent un projet de stations de charge rapide pour véhicules électriques
Des températures supérieures à 20 °C enregistrées pour la première fois en Antarctique
Pour les USA, Huawei peut secrètement accéder aux portes dérobées des opérateurs
L'iPhone 11 Pro émet deux fois plus de radiations que la limite recommandée
Citroën devrait dévoiler une voiture électrique particulièrement abordable le 27 février
Le Batman interprété par Robert Pattinson se dévoile en vidéo

Notre charte communautaire

1. Participez aux discussions

Nous encourageons chacun à exprimer ses idées sur les sujets qui l'intéressent, et à faire profiter l'ensemble de la communauté de son expertise sur un sujet particulier.

2. Partagez vos connaissances

Que vous soyez expert ou amateur passionné, partagez vos connaissances aux autres membres de la communauté pour enrichir le niveau d'expertise des articles.

3. Échangez vos idées

Donnez votre opinion en étayant votre propos et soyez ouverts aux idées des autres membres de la communauté, même si elles sont radicalement différentes des vôtres.

4. Faites preuve de tolérance

Qu'il s'agisse de rédacteurs professionnels ou amateurs, de lecteurs experts ou passionnés, vous devez faire preuve de tolérance et vous placer dans une démarche d'entraide.

5. Restez courtois

Particulièrement lorsque vous exprimez votre désaccord, critiquez les idées, pas les personnes. Évitez à tout prix les insultes, les attaques et autres jugements sur la forme des messages.

6. Publiez des messages utiles

Chaque participation a vocation à enrichir la discussion, aussi les partages d'humeurs personnelles ne doivent pas venir gêner le fil des échanges.

7. Soignez votre écriture

Utilisez la ponctuation, prohibez le langage SMS et les majuscules, relisez-vous afin de corriger un peu les fautes de frappe et de français : trop de fautes n’engagent ni à lire le message, ni à répondre à une question.

8. Respectez le cadre légal

Ne publiez pas de contenus irrespectueux, racistes, homophobes, obscènes ou faisant l'apologie de courants radicaux, qu'ils soient politiques ou religieux. N'utilisez pas plusieurs comptes utilisateurs.

9. Ne faites pas de promotion

Ne profitez pas d'une discussion pour faire la publicité d'un produit, d'un service ou même de votre site web personnel.

10. Ne plagiez pas

Exprimez uniquement vos opinions ou partagez des idées en citant vos sources.

Discussions sur le même sujet

scroll top