Menu
Coddy logo textTech

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.

Por Kevin Spektor, Cofundador e CTO

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:

  1. 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.
  2. Uma biblioteca padrão. Funções prontas para texto, matemática, datas, arquivos e rede, como o módulo json do Python ou o pacote java.util do Java.
  3. 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.
  4. Tratamento de erros. Quando algo dá errado, o runtime para o programa de forma controlada e informa onde, como um traceback ou stack trace.
  5. 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:

NomeSignificaO que contémQuem precisa
JVMJava Virtual Machine (máquina virtual Java)O motor que executa bytecode (arquivos .class) e gerencia a memóriaFaz parte dos dois abaixo
JREJava Runtime Environment (ambiente de execução Java)A JVM mais as bibliotecas de classes padrãoQuem só executa programas Java
JDKJava Development Kit (kit de desenvolvimento Java)O JRE mais ferramentas de desenvolvimento: javac, jar, javadoc, jdbQuem 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 Java Runtime Environment (JRE) é o exemplo clássico: a JVM mais as bibliotecas padrão do Java. O Node.js é um ambiente de execução para JavaScript fora do navegador, e o próprio navegador é outro. Em Python, o interpretador CPython com a sua biblioteca padrão é o runtime.
O Node.js é um ambiente de execução?
Sim. O Node.js é um ambiente de execução JavaScript construído sobre o motor V8 do Google. Ele permite executar JavaScript fora do navegador e acrescenta módulos para arquivos, rede e processos. Não é uma linguagem de programação nem um framework; frameworks como o Express rodam dentro dele.
O que runtime significa, afinal?
"Runtime" tem dois significados. É o período em que um programa está executando (tempo de execução), em oposição ao tempo de compilação, e por isso os erros que só aparecem nesse momento são chamados de erros de tempo de execução. Também é a forma curta de ambiente de execução, o software que dá suporte ao programa durante esse período.
Devo instalar o JRE ou o JDK?
Instale o JDK se você escreve Java, porque ele inclui o compilador 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?
JDK significa Java Development Kit (kit de desenvolvimento Java), JRE significa Java Runtime Environment (ambiente de execução Java) e JVM significa Java Virtual Machine (máquina virtual Java). A JVM executa bytecode, o JRE é a JVM mais as bibliotecas padrão, e o JDK é o JRE mais ferramentas de desenvolvimento como o javac.
Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR