Tempo de Binding |
Como funciona |
Tempo de codificação |
- Codifição simples sem sequer separação procedural
|
Tempo de compilação |
- Separação padrão em procedimentos/funções
- As chamadas são amarradas (bound) a uma implementação em tempo de compilação
|
Tempo de link-edição |
- Unidades separadas de compilação com interfaces (ex. "protótipos" em C)
declaradas separadamente das implementações
- As chamadas são compiladas usando as interfaces
- As chamadas são amarradas (bound) a uma implementação em tempo de link-edição para
gerar um único módulo executável
|
Ligação dinâmica |
- Unidades separadas de compilação que não precisam se link-editadas num único módulo
executável para permitir a execução
- Um módulo compilado (DLL) pode ser linkado dinamicamente a um sistema que esteja
executando
- As chamadas são compiladas usando as interfaces
- As chamadas são amarradas (bound) a uma implementação em tempo de execução
- A implementação é carregada em tempo de execução
- Java é assim (DLL é o arquivo .class ou .jar)
|
Reflexivo |
- Chamadas não são compiladas com interfaces em tempo de compilação
- Em tempo de execução, tem-se informação suficiente sobre as interfaces disponíveis
- Em tempo de execução, as chamadas são feitas a tais interfaces usando
"reflexão"
- O binding é obviamente dinâmico
- Normalmente, os nomes das chamadas são contidas em strings; os nomes das chamadas podem
ser montadas dinamicamente e executadas
- Java usa reflexão
|