Concatenar

Conectando pessoas, ferramentas e idéias.

 

Execução de uma aplicação no Java - JVM

 java

Antes de explicar sobre como tudo funciona dentro do Java, para facilitar a compreensão se faz necessário entender o que é compilação e o que é interpretação. Fique tranquilo pois não é nada tão complexo, vamos explicar tudo isso de maneira bem simples e objetiva logo abaixo. 

  • Compilador: Utilitário que tem como função transformar um código-fonte que o programador codificou em um código compilado, ou seja, preparado para ser lido pelo computador. Exemplos de linguagens compiladas: C++, C.
  • Interpretador: Utilitário que pega o código-fonte e aos poucos gradativamente vai interpretando e transformando esse código em executável. Exemplos de linguagens interpretadas: JavaScript, PHP. 

Além das linguagens compiladas e interpretadas, existem também linguagens híbridas, que são pré-compiladas e usam máquina virtual (JIT - uma compilação que é mais rápida que a interpretação) para agilizar o processo. Como veremos mais à frente no desenrolar desse artigo.


 

Entendendo melhor como ocorre o processo em linguagens compiladas

Utilizando uma linguagem compilada, caso eu deseje gerar um aplicativo para rodar em várias plataformas como (Windows, Mac, Linux), basicamente o código-fonte que eu criei teria que passar por um compilador específico para cada plataforma, gerando assim um executável para cada sistema operacional. Mesmo utilizando um compilador para traduzir meu código para cada plataforma especificamente, pode ser que ainda haja necessidade de adaptações no meu código-fonte para que seja gerado o executável nessas diferentes plataformas. 

Podemos notar que as linguagens compiladas apresentam problemas quanto a portabilidade, mas como vantagem são linguagens mais rápidas, pois o código gerado é específico e roda diretamente em cima do sistema operacional desejado.  


 

Entendendo melhor como ocorre o processo em linguagens interpretadas

Vamos agora pegar como exemplo a linguagem PHP, que para executar o processo de interpretação distribuí o interpretador especificamente para cada plataforma, permitindo assim que o mesmo código execute em sistemas operacionais diferentes sem necessidade de alteração, a análise do código e interpretação é realizada no momento da execução (JIT - Just in Time).

Linguagem Interpretada

A vantagem é que para executar em plataformas diferentes o mesmo código-fonte, não existe necessidade de alterações e a desvantagem é que esse processo torna os aplicativos mais lentos.

 


 

Resumo - Comparação entre as linguagens compiladas e interpretadas

  • Linguagens Compiladas: Apresentam menos bugs, devido o compilador verificar o todo o código e os tipos utilizados, tornando o código mais confiável e diminuindo a incidência de erros, possuí maior rapidez de execução, mas apresenta problemas de portabilidade.
  • Linguagens Interpretadas: Possui uma verificação mais afrouxada e a verificação da tipagem é mais fraca e isso pode gerar maior vulnerabilidade a erros, como vantagem apresenta maior portabilidade. 

 


 

Linguagens Híbridas - Pré-compiladas + Máquina Virtual

Devido os problemas citados em relação as linguagens compiladas e interpretadas, surgiu as linguagens híbridas, nas quais o código-fonte passa por um pré-compilador, o qual gera um bytecode que é basicamente uma representação intermediária do código compilado e corrigido em sua sintaxe, podendo esse código rodar em cima de uma máquina virtual

O mesmo bytecode compilado apenas uma vez poderá ser executado em qualquer máquina virtual de diferentes plataformas, gerando assim a portabilidade unida com um código já compilado o qual é menos vulnerável a falhas. Exemplos de linguagens híbridas: C# e Java.

Veremos todo esse processo a seguir, na explanação a respeito da execução de uma aplicação no JAVA usando a JVM (Java Virtual Machine)

 


 

Processo de execução da aplicação no JAVA utilizando a Máquina Virtual - JVM

Segue abaixo o exemplo de execução de um código fonte no Java que é considerada uma Linguagem que possuí uma implementação híbrida.

Linguagem Híbrida

Então como explicamos anteriormente o código-fonte passar por um compilador o qual gera o bytecode que é executado sem necessidade de alteração em qualquer máquina virtual, esse processo de executar o bytecode é chamado de compilação JIT - Just in Time, que é muito mais rápida que o processo de interpretação.

O fato de se construir uma aplicação em Java em apenas uma plataforma e essa aplicação poder ser executada em várias outras plataformas é conhecido como uma sigla "WORA" - acrônimo para "Write Once Run Anywhere", que significa, "Escreva uma vez e execute em qualquer lugar". 

No exemplo definimos outras plataformas como (Windows, Mac e Linux), mas esse bytecode também poderá rodar em outros dispositivos como, dispositivos móveis, celulares e relógios inteligentes.