O que é Runtime?
Tempo de execução refere-se ao período de tempo em que um programa é efetivamente executado no processador e na memória do computador após a fase de compilação, e à infraestrutura de software (Runtime Environment) que possibilita essa execução.
1. Dois significados básicos do conceito de tempo de execução
Na engenharia de software, a palavra “Tempo de execução” refere-se a dois conceitos diferentes dependendo do contexto:
- Como Fase Temporal (Tempo de Execução): Após a fase em que o código é escrito (autoria) e passado pelo compilador (tempo de compilação), é o período que vai do momento em que o usuário final inicia o programa até o momento em que ele o fecha.
- Como Camada de Execução (Ambiente de Execução): É o conjunto de bibliotecas, gerenciadores de memória, coletores de lixo e máquinas virtuais necessários para que o código escrito rode diretamente no sistema operacional e hardware. Por exemplo, Node.js, JVM (Java Virtual Machine) ou Go Runtime são ambientes de execução.
2. Diferença entre tempo de compilação e tempo de execução
- Tempo de compilação: análise de sintaxe, verificações de tipo estático e conversão em código de máquina são realizadas antes da execução do código. Erros de erro de sintaxe e incompatibilidade de tipo são detectados nesta fase.
- Tempo de execução: a alocação de memória, as chamadas do sistema e o loop de eventos são gerenciados enquanto o usuário realmente executa o programa. Erros NullPointerException, Segmentation Fault (SIGSEGV) e Stack Overflow ocorrem durante esta fase.
3. Tempos de execução gerenciados versus não gerenciados
- Não gerenciado (C, C++, Rust, Zig): Converte diretamente em código de máquina nativo; Nenhuma máquina virtual pesada ou coletor de lixo em execução em segundo plano, apenas uma biblioteca C padrão leve (libc) é suficiente. Oferece velocidade máxima e atraso zero.
- Gerenciado (Java, C#, Go, JavaScript, Python): Executa na proteção de uma máquina virtual (JVM, CLR) ou tempo de execução. Inclui compiladores JIT, coletores de lixo automáticos e um agendador integrado que gerencia goroutines, como no Go.
4. Guerras modernas de tempo de execução de JavaScript: Node.js vs Deno vs Bun
- Node.js (2009): Padrão da indústria que combina o mecanismo Google V8 com o loop de eventos de E/S assíncrona libuv baseado em C++.
- Deno (2018): Plataforma moderna que combina o motor V8 com a infraestrutura Rust e Tokio, possui TypeScript integrado e sandbox de permissão segura.
- Bun (2023): É um ambiente de trabalho de nova geração que usa o mecanismo JavaScriptCore do Apple WebKit e é escrito inteiramente do zero na linguagem Zig, oferecendo E/S de arquivo/rede muitas vezes mais rápido que o Node.js.
Perguntas e respostas
O que significa tempo de execução, qual é o seu equivalente turco?
Em turco, é chamado de "tempo de execução" ou "ambiente de execução". Ele descreve o período de tempo em que um programa deixa seu código-fonte e realmente é executado no hardware do computador e na camada de software que dá suporte a esse trabalho.
O que é erro de tempo de execução?
É um erro que passa com sucesso na fase de compilação, mas faz com que o aplicativo trave repentinamente devido a uma situação inesperada (divisão por zero, acesso a um objeto vazio, RAM insuficiente) durante a execução do programa.
O Node.js é uma linguagem de programação ou um tempo de execução?
Node.js não é uma linguagem; É um tempo de execução JavaScript de código aberto que permite que o código JavaScript seja executado em servidores e computadores sem a necessidade de um navegador.
Como funciona o JIT (Just-In-Time) durante o tempo de execução da compilação?
O compilador JIT detecta instantaneamente blocos de código usados com frequência ("hot paths") enquanto o programa está em execução e converte esses blocos em código de máquina nativo em tempo de execução, aumentando o desempenho do aplicativo.
Termos relacionados
Ferramentas relacionadas
Esta explicação foi escrita em linguagem simples para a TreScout com IA e traduzida automaticamente do original em turco · a versão turca é a que vale. Se algo parecer errado ou faltando, escreva para hello@trescout.com. Ler em turco →