Java - Questões básicas

1. Todo programa em Java exige uma máquina virtual Java instalada no computador da aplicação?

2. Digamos que eu tenha visto um software qualquer na internet, por exemplo um browser, feito em Java e disponível para download. Pergunto: aquele arquivo que eu vou baixar já está compilado para a minha plataforma, certo? E, se o arquivo de instalação do programa escrito em java já está no formato da minha plataforma, pra que serve o ByteCode? E como é essa tal interpretação do bytecode? Ela (a interpretação) é feita por quem e em quais circunstâncias?

1. Não necessariamente, o compilador GCJ (http://gcc.gnu.org/java/), por exemplo, pode gerar diretamente código de máquina, a partir de código Java ou bytecode JVM (Java Virtual Machine), para uma variedade de plataformas. Neste caso, o binário será dependente de plataforma (não necessitará de uma máquina virtual Java). Mas isto não é comum, o mais comum é o código Java ser compilado para bytecode JVM.

2. Se o software tiver sido compilado para bytecode JVM ele executará em uma máquina virtual Java, portanto o bytecode JVM poderá ser executado em qualquer plataforma onde houver uma JVM instalada. O bytecode JVM é, portanto, um código binário intermediário, o qual será interpretado pela máquina virtual Java ao invés de diretamente pelo processador da plataforma.

Então, sempre quem faz a interpretação do bytecode é a máquina virtual java. Aliás, só há INTERPRETAÇÃO quando se trata de código compilado em binário intermediário, certo? Ou programas já compilados para uma determinada arquitetura (compilados em código de máquina para Windows, por exemplo) podem também ser interpretados?

* Se o código não estiver em código nativo da arquitetura então tem que, de alguma forma, ser interpretado. * Códigos nativos de alguma arquitetura podem ser executados em outras através de um programa comumente chamado de emulador. Neste caso, um programa pode ser executado em uma plataforma diferente daquela que foi originalmente concebido. Ao invés de o processador executar diretamente o programa, o emulador interpreta o código do programa. Assim, teoricamente, qualquer código pode ser executado em um emulador apropriado. De acordo com http://en.wikipedia.org/wiki/Interpreter_(computing): "In computer science the term interpreter is sometimes used instead of the term emulator".

Comentários

Postagens mais visitadas deste blog

Redação Ti Nota 10 - Klauss

Prova Discursiva nota 10 - Banca Cespe

Portugues - Orações