Menu
Coddy logo textTech

Qu'est-ce qu'un environnement d'exécution ?

Un environnement d'exécution est le logiciel dont un programme a besoin autour de lui pendant qu'il s'exécute : le moteur qui exécute son code, les bibliothèques standard qu'il appelle et les services qui gèrent la mémoire, les erreurs et l'accès au système d'exploitation. La JVM, Node.js et CPython en sont des exemples.

Par Kevin Spektor, Cofondateur et CTO

Mis à jour le 24 septembre 2026

Exécute console.log(typeof process) dans Node.js et tu obtiens object. Colle la même ligne dans la console de Chrome et tu obtiens undefined. Le langage est le même JavaScript aux deux endroits, mais le programme s'exécute dans deux environnements d'exécution différents, et chacun lui donne des outils différents.

console.log(typeof process);  // "object" in Node.js, "undefined" in a browser
console.log(typeof document); // "undefined" in Node.js, "object" in a browser

Ce que fournit un environnement d'exécution

Ton code ne fait que décrire ce qu'il faut faire. Quand il s'exécute, il s'appuie sur une couche logicielle installée avant que tu n'écrives la moindre ligne. Cette couche comporte en général cinq parties :

  1. Un moteur d'exécution. Il faut bien que quelque chose exécute le code : un interpréteur, une machine virtuelle ou un compilateur à la volée. CPython, la machine virtuelle Java (JVM) et V8 sont des moteurs d'exécution.
  2. Une bibliothèque standard. Des fonctions prêtes à l'emploi pour le texte, les maths, les dates, les fichiers et le réseau, comme le module json de Python ou le paquet java.util de Java.
  3. La gestion de la mémoire. Le runtime alloue la mémoire pour tes objets et, en Python, Java et JavaScript, la libère ensuite avec un ramasse-miettes (garbage collector) quand plus rien ne les utilise.
  4. La gestion des erreurs. Quand quelque chose tourne mal, le runtime arrête le programme de façon contrôlée et indique où, sous forme de traceback ou de trace de pile.
  5. L'accès au système d'exploitation. Lire des fichiers, ouvrir des connexions réseau, lire des variables d'environnement et des arguments de ligne de commande passe par le runtime, qui le demande au système d'exploitation pour le compte de ton programme.

Tu peux interroger le runtime Python sur lui-même :

Les réponses dépendent de l'endroit où le code s'exécute. Sur un serveur Linux, platform.system() renvoie 'Linux', sur un Mac 'Darwin', et sous Windows 'Windows'. La limite de récursion (1000 par défaut dans CPython) est une règle fixée par le runtime, pas par le langage Python, et les dizaines de modules déjà chargés avant ta première ligne sont le runtime qui se prépare.

Java : JDK, JRE et JVM

Java rend les couches visibles, car chacune porte son propre nom :

NomSignificationCe qu'il contientQui en a besoin
JVMJava Virtual MachineLe moteur qui exécute le bytecode (fichiers .class) et gère la mémoireFait partie des deux suivants
JREJava Runtime EnvironmentLa JVM plus les bibliothèques de classes standardCeux qui se contentent d'exécuter des programmes Java
JDKJava Development KitLe JRE plus des outils de développement : javac, jar, javadoc, jdbCeux qui écrivent des programmes Java

Le déroulement est le suivant : javac Main.java (un outil du JDK, le compilateur) transforme le code source en Main.class, et java Main démarre la JVM, qui charge la classe et l'exécute avec les bibliothèques de l'environnement d'exécution. C'est grâce à la JVM qu'un même fichier .class s'exécute sous Windows, macOS et Linux : chaque système d'exploitation a sa propre JVM, et toutes comprennent le même bytecode.

Depuis Java 11, Oracle ne fournit plus que le JDK, sans téléchargement séparé du JRE. Certaines distributions, comme Eclipse Temurin, publient encore un paquet JRE. Si tu apprends Java, installe un JDK : il contient tout ce que contient le JRE. Le guide installer Java te montre comment faire.

JavaScript : le navigateur et Node.js

JavaScript a été conçu pour s'exécuter dans des pages web, donc son premier environnement d'exécution a été le navigateur. Le runtime d'un navigateur donne à ton code le document de la page, window, des minuteurs et fetch pour les requêtes réseau, et il bloque volontairement l'accès direct à tes fichiers.

Node.js sort le moteur V8 de Google du navigateur et l'enveloppe dans un autre runtime : pas de document, mais des modules comme fs pour les fichiers, http pour les serveurs, et l'objet process pour les variables d'environnement et les arguments. Deno et Bun sont des runtimes plus récents pour le même langage, avec leurs propres outils. Tous exécutent le même JavaScript de base ; la différence tient à ce qui l'entoure. Les pages le runtime Node.js et la boucle d'événements vont plus loin.

Python : CPython et les autres

Quand on dit « installer Python », on veut dire installer un environnement d'exécution : l'interpréteur CPython, la bibliothèque standard et pip pour ajouter des paquets. D'autres runtimes existent pour le même langage. PyPy ajoute un compilateur JIT pour la vitesse, et MicroPython est assez léger pour tourner sur des microcontrôleurs.

Un environnement virtuel (python3 -m venv .venv) n'est pas un nouveau runtime. Il pointe vers un interpréteur existant et donne à un projet son propre ensemble de paquets installés, pour que deux projets puissent utiliser des versions différentes d'une même bibliothèque. Voir environnements virtuels.

Compilation et exécution

« Runtime » désigne aussi un moment : la période pendant laquelle le programme s'exécute, par opposition à la compilation, quand le code source est traduit. Une erreur que le compilateur rejette est une erreur de compilation ; une erreur qui n'apparaît que pendant l'exécution, comme une division par zéro, est une erreur d'exécution. L'environnement d'exécution est le logiciel présent pendant cette seconde période.

Même C, qui compile directement en code machine, a un petit runtime. Un programme C démarre dans un code de démarrage fourni par la chaîne de compilation, et des fonctions comme printf et malloc viennent de la bibliothèque standard C (glibc sur la plupart des systèmes Linux, l'Universal C Runtime sous Windows). Il n'y a simplement ni machine virtuelle ni ramasse-miettes.

Idées reçues

  • « L'environnement d'exécution, c'est le système d'exploitation. » Le système d'exploitation gère le matériel pour tous les programmes. L'environnement d'exécution est la couche propre à un programme, posée par-dessus. La JVM est elle-même un programme que Windows, macOS ou Linux exécute ; elle ne les remplace pas.
  • « Node.js est un langage ou un framework. » Node.js est un environnement d'exécution pour JavaScript. Les frameworks comme Express sont des bibliothèques qui s'exécutent à l'intérieur.
  • « Installer un IDE installe le runtime. » VS Code n'inclut ni Python ni Java. L'éditeur et l'environnement d'exécution s'installent séparément, même si certains IDE, comme IntelliJ IDEA, peuvent télécharger un JDK pour toi.
  • « Même langage, même comportement partout. » Ce que fournit le runtime, comme l'accès aux fichiers, les limites par défaut et les modules disponibles, peut varier. Du code qui fonctionne dans Node.js peut échouer dans un navigateur exactement pour cette raison.

Pour aller plus loin

Le moteur d'exécution de la plupart des runtimes est un interpréteur, et cette page le compare aussi à un compilateur. Sous chaque runtime se trouve le système d'exploitation. Pour pratiquer dans un runtime que tu n'as pas encore utilisé, commence le cours Java ou le cours JavaScript.

Questions fréquentes

Peux-tu donner un exemple d'environnement d'exécution ?
Le Java Runtime Environment (JRE) est l'exemple classique : la JVM plus les bibliothèques standard de Java. Node.js est un environnement d'exécution pour JavaScript en dehors du navigateur, et le navigateur lui-même en est un autre. Pour Python, l'interpréteur CPython avec sa bibliothèque standard constitue le runtime.
Node.js est-il un environnement d'exécution ?
Oui. Node.js est un environnement d'exécution JavaScript construit sur le moteur V8 de Google. Il permet d'exécuter JavaScript en dehors d'un navigateur et ajoute des modules pour les fichiers, le réseau et les processus. Ce n'est ni un langage de programmation ni un framework ; des frameworks comme Express s'exécutent à l'intérieur.
Que veut dire runtime exactement ?
« Runtime » a deux sens. C'est la période pendant laquelle un programme s'exécute, par opposition au moment de la compilation, d'où le nom d'erreurs d'exécution pour celles qui n'apparaissent qu'à ce moment. C'est aussi l'abréviation de runtime environment, l'environnement d'exécution, le logiciel qui soutient un programme pendant cette période.
Faut-il installer le JRE ou le JDK ?
Installe le JDK si tu écris du Java, parce qu'il contient le compilateur javac et tout ce que contient le JRE. Le JRE seul ne fait qu'exécuter des programmes Java existants. Depuis Java 11, Oracle ne distribue plus que le JDK, donc pour les versions actuelles de Java le JDK est le choix normal.
Que signifient les sigles JDK, JRE et JVM ?
JDK signifie Java Development Kit, JRE Java Runtime Environment et JVM Java Virtual Machine (machine virtuelle Java). La JVM exécute le bytecode, le JRE est la JVM plus les bibliothèques standard, et le JDK est le JRE plus des outils de développement comme javac.
Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER