Qu'est-ce que Chrome V8 ?

Chrome V8 exécute le code JavaScript. Node.js et est un environnement d'exécution largement utilisé pour les fonctions JavaScript serverless qui utilise le moteur virtuel Chrome V8. Cependant, exécuter les fonctions directement dans V8 présente des avantages.

Share facebook icon linkedin icon twitter icon email icon

Chrome V8

Objectifs d’apprentissage

Après avoir lu cet article, vous pourrez :

  • Donner la définition du moteur JavaScript
  • En savoir plus sur Chrome V8 et Node.js
  • Comprendre le rôle que Chrome V8 peut jouer dans les architectures serverless

Qu'est-ce que Chrome V8 ?

Chrome V8 est un moteur JavaScript, ce qui signifie qu'il exécute du code JavaScript. À l'origine, JavaScript a été écrit pour être exécuté par les navigateurs web. Chrome V8, ou simplement V8, peut exécuter du code JavaScript dans un navigateur ou en dehors de celui-ci, ce qui rend possible l'écriture de scripts côté serveur.

Comme un moteur de voiture V8 (huit cylindres), le moteur V8 de Chrome est rapide et puissant. V8 traduit le code JavaScript directement en code machine* afin que les ordinateurs puissent le comprendre, puis il exécute le code traduit, ou compilé. V8 optimise également l'exécution de JavaScript.

*Le code machine est un langage que les processeurs (CPU) peuvent comprendre. Il est purement numérique, c'est-à-dire composé de chiffres.

Que veut dire « compiler » ?

La compilation est un processus qui traduit le code d'un langage de programmation dans un autre langage. Généralement, un compilateur traduit le code d'un niveau d'abstraction supérieur à un niveau d'abstraction inférieur des langages utilisables par l'homme comme JavaScript en code lisible par la machine.

Chrome V8 effectue ce que l'on appelle une compilation à la volée ou traduction dynamique. Au lieu de compiler JavaScript à l'avance, il compile le code en même temps qu'il est exécuté.

Qu'est-ce que le principe du sandboxing ?

Sandboxing de Chrome V8

Un « sandbox », littéralement bac à sable, est un environnement permettant d'exécuter un logiciel qui est isolé et séparé des autres environnements, même de ceux qui se trouvent sur la même machine.

Le sandboxing est une fonctionnalité essentielle de Chrome V8. Chaque processus est sandboxé, ce qui garantit que les fonctions JavaScript s'y exécutent séparément et que l'exécution d'une partie de code n'affecte aucun autre partie de code. (Contrairement à de nombreux produits de sandboxing pour entreprises, qui ouvrent et exécutent des fichiers exécutables dans des machines virtuelles isolées, le sandboxing V8 ne ralentit pas les performances.)

Qu'est-ce que Node.js ?

Node.js est un environnement d'exécution* pour le code JavaScript basé sur le moteur Chrome V8. Il est asynchrone, ce qui signifie qu'il n'est pas nécessaire d'attendre la fin d'un processus pour en lancer un autre. Comme V8, Node.js est gratuit et open source. Contrairement à V8, il n'a pas de fonctionnalité sandboxing intégrée.

(Les habitués de JavaScript auront remarqué l'extension de fichier « .js ». Il s'agit simplement d'un choix purement esthétique pour que le nom de l'environnement d'exécution indique son association avec JavaScript et ne signifie pas que Node.js est un fichier JavaScript.)

*Un environnement d'exécution est un environnement logiciel dans lequel le code est exécuté.

Pourquoi V8 et Node.js sont-ils importants en matière d'informatique serverless ?

Les fonctions serverless doivent pouvoir s'exécuter lorsqu'elles sont lancées. Certains fournisseurs d'informatique serverless proposent Node.js comme environnement d'exécution pour les fonctions JavaScript serverless (d'autres environnements d'exécution sont utilisés pour d'autres langues).

Cloudflare Workers, cependant, utilise directement V8, et ce pour plusieurs raisons. Citons entre autres la rapidité d'exécution des fonctions qui n'ont pas été utilisées récemment. Les démarrages à froid posent problème dans l'informatique serverless, mais l'exécution de fonctions sur V8 signifie que les fonctions peuvent être généralement « lancées » et exécutées dans un délai de 5 ms ou moins. (Node.js consomme plus de ressources et met généralement quelques millisecondes de plus.) Une autre raison tient au fait que V8 sandboxe automatiquement les fonctions JavaScript, ce qui renforce la sécurité.