¿Qué es un entorno de ejecución?
Un entorno de ejecución es el software que un programa necesita a su alrededor mientras se ejecuta: el motor que ejecuta su código, las bibliotecas estándar a las que llama y los servicios que gestionan la memoria, los errores y el acceso al sistema operativo. La JVM, Node.js y CPython son ejemplos.
Actualizado el 24 de septiembre de 2026
Ejecuta console.log(typeof process) en Node.js y se imprime object. Pega la misma línea en la consola de Chrome y se imprime undefined. El lenguaje es el mismo JavaScript en los dos sitios, pero el programa se ejecuta dentro de dos entornos de ejecución distintos, y cada uno le da herramientas diferentes.
console.log(typeof process); // "object" in Node.js, "undefined" in a browser
console.log(typeof document); // "undefined" in Node.js, "object" in a browser
Qué aporta un entorno de ejecución
Tu código solo describe qué hay que hacer. Cuando se ejecuta, se apoya en una capa de software que ya estaba instalada antes de que escribieras una sola línea. Esa capa suele tener cinco partes:
- Un motor de ejecución. Algo tiene que ejecutar el código: un intérprete, una máquina virtual o un compilador just-in-time. CPython, la Máquina Virtual de Java (JVM) y V8 son motores de ejecución.
- Una biblioteca estándar. Funciones ya hechas para texto, matemáticas, fechas, archivos y red, como el módulo
jsonde Python o el paquetejava.utilde Java. - Gestión de memoria. El entorno de ejecución reserva memoria para tus objetos y, en Python, Java y JavaScript, la libera con un recolector de basura cuando nada la usa.
- Manejo de errores. Cuando algo sale mal, el entorno de ejecución detiene el programa de forma controlada e indica dónde, con un traceback o un stack trace.
- Acceso al sistema operativo. Leer archivos, abrir conexiones de red, leer variables de entorno y argumentos de línea de comandos pasa por el entorno de ejecución, que se lo pide al sistema operativo en nombre de tu programa.
Puedes preguntarle al entorno de ejecución de Python por sí mismo:
Las respuestas dependen de dónde se ejecute el código. En un servidor Linux platform.system() devuelve 'Linux', en un Mac 'Darwin' y en Windows 'Windows'. El límite de recursión (1000 por defecto en CPython) es una regla del entorno de ejecución, no del lenguaje Python, y las decenas de módulos ya cargados antes de tu primera línea son el entorno de ejecución preparándose.
Java: JDK, JRE y JVM
Java hace visibles las capas porque cada una tiene su propio nombre:
| Nombre | Significa | Qué contiene | Quién lo necesita |
|---|---|---|---|
| JVM | Java Virtual Machine | El motor que ejecuta bytecode (archivos .class) y gestiona la memoria | Forma parte de los dos siguientes |
| JRE | Java Runtime Environment | La JVM más las bibliotecas de clases estándar | Quien solo ejecuta programas Java |
| JDK | Java Development Kit | El JRE más herramientas de desarrollo: javac, jar, javadoc, jdb | Quien escribe programas Java |
El flujo es este: javac Main.java (una herramienta del JDK, el compilador) convierte el código fuente en Main.class, y java Main inicia la JVM, que carga la clase y la ejecuta con las bibliotecas del entorno de ejecución. La JVM es la razón por la que un mismo archivo .class funciona en Windows, macOS y Linux: cada sistema operativo tiene su propia JVM, y todas entienden el mismo bytecode.
Desde Java 11, Oracle distribuye solo el JDK, sin una descarga aparte del JRE. Algunas distribuciones, como Eclipse Temurin, siguen publicando un paquete JRE. Si estás aprendiendo Java, instala un JDK: contiene todo lo que tiene el JRE. La guía instalar Java lo explica paso a paso.
JavaScript: el navegador y Node.js
JavaScript se diseñó para ejecutarse dentro de páginas web, así que su primer entorno de ejecución fue el navegador. El entorno de un navegador da a tu código el document de la página, window, temporizadores y fetch para peticiones de red, y bloquea a propósito el acceso directo a tus archivos.
Node.js saca el motor V8 de Google del navegador y lo envuelve en un entorno de ejecución distinto: sin document, pero con módulos como fs para archivos, http para servidores y el objeto process para variables de entorno y argumentos. Deno y Bun son entornos de ejecución más recientes para el mismo lenguaje, con sus propias herramientas. Todos ejecutan el mismo JavaScript básico; la diferencia está en lo que lo rodea. Las páginas runtime de Node.js y event loop profundizan en ello.
Python: CPython y compañía
Cuando la gente dice "instalar Python" se refiere a instalar un entorno de ejecución: el intérprete CPython, la biblioteca estándar y pip para añadir paquetes. Existen otros entornos de ejecución para el mismo lenguaje. PyPy añade un compilador JIT para ganar velocidad, y MicroPython es lo bastante pequeño para funcionar en microcontroladores.
Un entorno virtual (python3 -m venv .venv) no es un entorno de ejecución nuevo. Apunta a un intérprete existente y da a un proyecto su propio conjunto de paquetes instalados, para que dos proyectos puedan usar versiones distintas de la misma biblioteca. Consulta entornos virtuales.
Tiempo de compilación y tiempo de ejecución
"Runtime" también nombra un momento: el periodo durante el que el programa se está ejecutando, en contraste con el tiempo de compilación, cuando se traduce el código fuente. Un error que el compilador rechaza es un error en tiempo de compilación; uno que solo aparece mientras el programa se ejecuta, como dividir por cero, es un error en tiempo de ejecución. El entorno de ejecución es el software presente durante ese segundo periodo.
Incluso C, que se compila directamente a código máquina, tiene un pequeño entorno de ejecución. Un programa en C arranca en código de inicio que aporta la cadena de herramientas del compilador, y funciones como printf y malloc vienen de la biblioteca estándar de C (glibc en la mayoría de los sistemas Linux, el Universal C Runtime en Windows). Simplemente no hay máquina virtual ni recolector de basura.
Ideas equivocadas frecuentes
- "El entorno de ejecución es el sistema operativo." El sistema operativo gestiona el hardware para todos los programas. El entorno de ejecución es la capa de un programa por encima de él. La JVM es a su vez un programa que ejecutan Windows, macOS o Linux; no los sustituye.
- "Node.js es un lenguaje o un framework." Node.js es un entorno de ejecución para JavaScript. Los frameworks como Express son bibliotecas que se ejecutan dentro de él.
- "Instalar un IDE instala el entorno de ejecución." VS Code no incluye Python ni Java. El editor y el entorno de ejecución se instalan por separado, aunque algunos IDE, como IntelliJ IDEA, pueden descargar un JDK por ti.
- "Mismo lenguaje, mismo comportamiento en todas partes." Lo que aporta el entorno de ejecución, como el acceso a archivos, los límites por defecto y los módulos disponibles, puede cambiar. El código que funciona en Node.js puede fallar en un navegador justo por eso.
Qué leer después
El motor de ejecución de la mayoría de los entornos es un intérprete, y esa página también lo compara con un compilador. Debajo de todo entorno de ejecución está el sistema operativo. Para practicar en un entorno de ejecución que aún no has usado, empieza el curso de Java o el curso de JavaScript.
Preguntas frecuentes
¿Me das un ejemplo de entorno de ejecución?
¿Node.js es un entorno de ejecución?
¿Qué significa realmente runtime?
¿Debo instalar el JRE o el JDK?
javac y todo lo que trae el JRE. El JRE por sí solo únicamente ejecuta programas Java ya hechos. Desde Java 11, Oracle distribuye solo el JDK, así que para las versiones actuales de Java el JDK es la opción normal.¿Qué significan JDK, JRE y JVM?
javac.