Compilação é o termo utilizado para descrever o processo que realiza a tradução
da linguagem de programação para a linguagem de máquina. O produto final da compilação é o software (programa executável). O processo de compilação é sempre complexo, pois depende de hardware, de software, de interpretações, de verificações, de junções e de otimizações nos elementos que compreendem o código-fonte da linguagem de programação levando em conta sua lógica, bibliotecas e as partes da plataforma onde o software será concebido.
Interpretação é o termo utilizado para descrever o processo onde programas de
computador leem um código-fonte de uma linguagem de programação e o executam sem necessariamente convertê-lo em um software, em outras palavras, o processo funciona como se alguém lesse um arquivo e pedisse para o computador ir fazendo. O interpretador, software que faz a interpretação, pode ler o código-fonte linha-a-linha e pedir para o computador ir executando o programa ou pode ler o código-fonte inteiro para depois realizar sua execução passo-a-passo.
Bytecode (ou “código em bytes”) é o termo utilizado para descrever compilação
para um software, normalmente de máquina virtual. Descrevendo um pouco mais, a compilação gera como resultado um programa que pode ser executado pelo sistema operacional e a esse programa dá-se o nome de programa executável, todavia um bytecode apesar de ser compilado não é imediatamente executável, pois sua execução ocorre através da interpretação de software que normalmente é uma máquina virtual, em outras palavras, ele é um programa executável que roda somente em um software. A principal vantagem do bytecode em relação aos outros modos está na dualidade entre a portabilidade - o bytecode irá produzir o mesmo resultado em qualquer dispositivo - e a ausência da necessidade do pré-processamento típico dos compiladores - o bytecode é encarado como um produto final, cuja validação da sintaxe e tipos de dados (entre outras funções dos compiladores) é desnecessária. Como exemplo de plataformas que geram bytecode, temos a plataforma Java e a plataforma .NET (lê-se ponto net).