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.
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 :
- 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.
- 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
jsonde Python ou le paquetjava.utilde Java. - 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.
- 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.
- 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 :
| Nom | Signification | Ce qu'il contient | Qui en a besoin |
|---|---|---|---|
| JVM | Java Virtual Machine | Le moteur qui exécute le bytecode (fichiers .class) et gère la mémoire | Fait partie des deux suivants |
| JRE | Java Runtime Environment | La JVM plus les bibliothèques de classes standard | Ceux qui se contentent d'exécuter des programmes Java |
| JDK | Java Development Kit | Le JRE plus des outils de développement : javac, jar, javadoc, jdb | Ceux 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 ?
Node.js est-il un environnement d'exécution ?
Que veut dire runtime exactement ?
Faut-il installer le JRE ou le JDK ?
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 ?
javac.