La sortie d’une version béta de Google Chrome, le nouveau navigateur Internet développé par le géant de la recherche en ligne, n’est pas passé inaperçue dans les médias. Cette sortie a été presque simultanée avec la sortie de la version béta 2 d’Internet Explorer 8, publiée par Microsoft, l’annonce de la version béta de Mozilla Firefox 3.1 pour la fin du mois de Septembre et la mise à disposition de la deuxième version de test de Safari 4.
Cette compétition pour la nouvelle génération des navigateurs Internet a introduit plusieurs nouvelles technologies qui résultent de l’évolution de l’utilisation des navigateurs. En effet, les navigateurs servent aujourd’hui de plateforme autant à des applications en ligne, multimédias ou interactives, qu’à l’affichage de simples pages Webs. Alors que de nombreux services utilisent ces capacités, les navigateurs ont assez peu évolués pour s’adapter à ces nouveaux usages, et se trouvent en décalage par rapport aux besoins.
Les applications web nécessitent souvent des capacités pour le multimédia et de dessin, de la manipulation des objets, des interactions poussées avec l’utilisateur, des personnalisations de l’affichage et un affichage dynamique. Pour y parvenir, elles utilisent un ensemble de technologies, dont notamment des plugins (tels que Flash), des communications asynchrones (AJAX), des manipulations d’objets dans les pages (DOM) et un langage de script exécuté sur les postes clients (JavaScript).
Le support des nouveaux standards du web, la réactivité des scripts applicatifs et la bonne gestion des plugins sont donc devenus les nouveaux nerfs de la compétition. La réactivité des applications dans un navigateur dépend essentiellement de la vitesse de l’interpréteur du code JavaScript. Ainsi, Google Chrome, Firefox 3.1 et Safari 4 introduisent des interpréteurs JavaScript complètement nouveaux. Nommés respectivement V8, TraceMonkey et squirellfish, ils utilisent des méthodes de compilation en temps réel par tracing (Trace-Based JIT Compilation), qui permettent d’approcher les performances de celles de langages compilés après une première analyse. Les méthodes utilisées dans ces moteurs JavaScript sont hérités de la recherche sur les machines virtuelles et les exécutions en temps réels de Bytecode.
D’autre part, les applications web se complexifiant et la navigation par onglets étant la norme, il devient inacceptable qu’un site web arrête et bloque inopinément toutes les pages ouvertes. En effet, perdre des modifications lors de l’édition de documents en ligne se révèle plus dommageable que lors d’une simple consultation web. Pour résoudre ce problème, il faut que chaque onglet soit suffisamment indépendant pour que son exécution ne perturbe pas les autres.
La solution mise en place par Google consiste au lancement d’un processus par onglet. Cela se comporte exactement comme si plusieurs instances du navigateur se lançaient chacune s’occupant d’un onglet. Ainsi, le plantage dû à un site web n’influence pas les autres, et la mémoire est intégralement libérée lorsqu’un onglet est fermé. La solution de Microsoft dans Internet Explorer 8 est similaire, car elle utilise plusieurs threads indépendants, mais n’a pas la correspondance stricte entre un processus et un onglet que l’on trouve dans Google Chrome. Le problème principal de cette approche dans ces deux nouveaux navigateurs se trouve dans une consommation mémoire plus importante, puisque le partage entre onglets est presque nul, et que les moteurs de rendus sont dupliqués en mémoire. Cependant, ces duplications ne sont visibles qu’en mémoire virtuelle, puisque la plupart des systèmes d’exploitation modernes implémentent les méthodes de "Copy-on-Write" qui font qu’une page mémoire n’est recopiée en mémoire physique que lorsqu’elle est modifiée.
Enfin, tous ces navigateurs renforcent leur compatibilité avec les standards du Web (notamment HTML5, CSS2 et CSS3). Même Internet Explorer, qui a toujours été le mauvais élève pour la conformité aux standards, a amélioré énormément sa compatibilité aux standards.
Source :
– Google Chrome Comic Book : https://www.google.com/googlebooks/chrome/
– Tracing the Web, Andreas Gal, 22 Aout 2008 : https://andreasgal.com/2008/08/22/tracing-the-web/
– Official Internet Explorer Blog: https://blogs.msdn.com/ie/
Rédacteur :
Jean-Baptiste Kempf