O que é um ambiente de execução (runtime)?
Um ambiente de execução (runtime environment) é o software de que um programa precisa ao seu redor enquanto executa: o motor que roda o código, as bibliotecas padrão que ele chama e os serviços que cuidam da memória, dos erros e do acesso ao sistema operacional. A JVM, o Node.js e o CPython são exemplos.
Atualizado em 24 de setembro de 2026
Execute console.log(typeof process) no Node.js e ele imprime object. Cole a mesma linha no console do Chrome e ele imprime undefined. A linguagem é o mesmo JavaScript nos dois lugares, mas o programa está executando dentro de dois ambientes de execução diferentes, e cada um lhe dá ferramentas 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
O que um ambiente de execução oferece
O seu código só descreve o que fazer. Quando ele executa, se apoia em uma camada de software que foi instalada antes de você escrever uma linha. Essa camada costuma ter cinco partes:
- Um motor de execução. Algo precisa executar o código: um interpretador, uma máquina virtual ou um compilador just-in-time. CPython, a Máquina Virtual Java (JVM) e o V8 são motores de execução.
- Uma biblioteca padrão. Funções prontas para texto, matemática, datas, arquivos e rede, como o módulo
jsondo Python ou o pacotejava.utildo Java. - Gerenciamento de memória. O runtime aloca memória para os seus objetos e, em Python, Java e JavaScript, a libera de novo com um coletor de lixo (garbage collector) quando nada mais a usa.
- Tratamento de erros. Quando algo dá errado, o runtime para o programa de forma controlada e informa onde, como um traceback ou stack trace.
- Acesso ao sistema operacional. Ler arquivos, abrir conexões de rede, ler variáveis de ambiente e argumentos de linha de comando passam pelo runtime, que pede ao sistema operacional em nome do seu programa.
Você pode perguntar ao runtime do Python sobre ele mesmo:
As respostas dependem de onde o código executa. Em um servidor Linux platform.system() retorna 'Linux', em um Mac 'Darwin' e no Windows 'Windows'. O limite de recursão (1000 por padrão no CPython) é uma regra definida pelo runtime, não pela linguagem Python, e as dezenas de módulos já carregados antes da sua primeira linha são o runtime se preparando.
Java: JDK vs JRE vs JVM
O Java deixa as camadas visíveis porque cada uma tem o seu próprio nome:
| Nome | Significa | O que contém | Quem precisa |
|---|---|---|---|
| JVM | Java Virtual Machine (máquina virtual Java) | O motor que executa bytecode (arquivos .class) e gerencia a memória | Faz parte dos dois abaixo |
| JRE | Java Runtime Environment (ambiente de execução Java) | A JVM mais as bibliotecas de classes padrão | Quem só executa programas Java |
| JDK | Java Development Kit (kit de desenvolvimento Java) | O JRE mais ferramentas de desenvolvimento: javac, jar, javadoc, jdb | Quem escreve programas Java |
O fluxo é este: javac Main.java (uma ferramenta do JDK, o compilador) transforma o código-fonte em Main.class, e java Main inicia a JVM, que carrega a classe e a executa com as bibliotecas do ambiente de execução. A JVM é o motivo pelo qual um único arquivo .class executa no Windows, no macOS e no Linux: cada sistema operacional tem a sua própria JVM, e todas entendem o mesmo bytecode.
Desde o Java 11, a Oracle distribui só o JDK, sem um download separado do JRE. Algumas distribuições, como o Eclipse Temurin, ainda publicam um pacote JRE. Se você está aprendendo Java, instale um JDK: ele contém tudo o que o JRE tem. O guia instalar o Java mostra o passo a passo.
JavaScript: o navegador e o Node.js
O JavaScript foi criado para rodar dentro de páginas web, então o seu primeiro ambiente de execução foi o navegador. O runtime do navegador dá ao seu código o document da página, window, timers e fetch para requisições de rede, e bloqueia de propósito o acesso direto aos seus arquivos.
O Node.js tira o motor V8 do Google do navegador e o envolve em outro runtime: sem document, mas com módulos como fs para arquivos, http para servidores e o objeto process para variáveis de ambiente e argumentos. Deno e Bun são runtimes mais novos para a mesma linguagem, com ferramentas próprias. Todos executam o mesmo JavaScript básico; a diferença é o que o envolve. As páginas runtime do Node.js e event loop vão mais fundo.
Python: o CPython e companhia
Quando alguém diz "instalar o Python", quer dizer instalar um ambiente de execução: o interpretador CPython, a biblioteca padrão e o pip para adicionar pacotes. Existem outros runtimes para a mesma linguagem. O PyPy acrescenta um compilador JIT para ganhar velocidade, e o MicroPython é pequeno o bastante para rodar em microcontroladores.
Um ambiente virtual (python3 -m venv .venv) não é um novo runtime. Ele aponta para um interpretador que já existe e dá a um projeto o seu próprio conjunto de pacotes instalados, para que dois projetos possam usar versões diferentes da mesma biblioteca. Veja ambientes virtuais.
Tempo de compilação e tempo de execução
"Runtime" também nomeia um momento: o período em que o programa está executando, em oposição ao tempo de compilação, quando o código-fonte está sendo traduzido. Um erro que o compilador rejeita é um erro de compilação; um que só aparece enquanto o programa executa, como dividir por zero, é um erro de execução. O ambiente de execução é o software presente durante esse segundo período.
Até o C, que compila direto para código de máquina, tem um pequeno runtime. Um programa C começa em um código de inicialização fornecido pelas ferramentas do compilador, e funções como printf e malloc vêm da biblioteca padrão do C (glibc na maioria dos sistemas Linux, o Universal C Runtime no Windows). Só não há máquina virtual nem coletor de lixo.
Equívocos comuns
- "O ambiente de execução é o sistema operacional." O sistema operacional gerencia o hardware para todos os programas. O ambiente de execução é a camada de um programa por cima dele. A JVM é ela mesma um programa que o Windows, o macOS ou o Linux executa; ela não os substitui.
- "O Node.js é uma linguagem ou um framework." O Node.js é um ambiente de execução para JavaScript. Frameworks como o Express são bibliotecas que rodam dentro dele.
- "Instalar uma IDE instala o runtime." O VS Code não inclui Python nem Java. O editor e o ambiente de execução são instalações separadas, embora algumas IDEs, como o IntelliJ IDEA, possam baixar um JDK para você.
- "Mesma linguagem, mesmo comportamento em todo lugar." Os recursos que o runtime oferece, como acesso a arquivos, limites padrão e módulos disponíveis, podem mudar. Um código que roda no Node.js pode falhar em um navegador exatamente por isso.
Para onde ir agora
O motor de execução dentro da maioria dos runtimes é um interpretador, e essa página também o compara com um compilador. Por baixo de todo runtime fica o sistema operacional. Para praticar em um runtime que você ainda não usou, comece o curso de Java ou o curso de JavaScript.
Perguntas frequentes
Qual é um exemplo de ambiente de execução?
O Node.js é um ambiente de execução?
O que runtime significa, afinal?
Devo instalar o JRE ou o JDK?
javac e tudo o que o JRE tem. O JRE sozinho só executa programas Java que já existem. Desde o Java 11, a Oracle distribui apenas o JDK, então nas versões atuais do Java o JDK é a escolha normal.O que significam as siglas JDK, JRE e JVM?
javac.