Na revisão da aula 01 tem a seguinte frase: o Bytecode é independente do sistema operacional.
Isto é verdade? Eu achei que o código .java fosse independente do sistema operacional, e que o Bytecode (.class) gerado seria especifico para aquele OS.
Na revisão da aula 01 tem a seguinte frase: o Bytecode é independente do sistema operacional.
Isto é verdade? Eu achei que o código .java fosse independente do sistema operacional, e que o Bytecode (.class) gerado seria especifico para aquele OS.
Ola Giseli, o código Java realmente pode ser independente do OS. Vamos pensar no caso de uma linguagem de programação que tenha acesso direta a memória de um computador, por exemplo linguagem C, quando compilamos esse código ele é convertido para a linguagem da maquina em questão (com Mac ou Windows ou Linux) então o seu código fica travado para aquele OS especifico.
No Java o ByteCode é essa linguagem de maquina, que não é interpretada pela maquina física e sim pela maquina virtual do Java, essa sim tem as compilações especificas para cada OS, mas o ByteCode so precisa ser compreendido pela JVM (Java Virtual Machine) ou seja, não importa o OS a entrada da JVM é sempre a "mesma" é o ByteCode, não importando o OS.
Oi, Allan!
Acho que compreendi. Então tanto o código fonte e o bytecode ficam dentro do "ambiente" java, e a Virtual Machine fará a parte de adaptar a linguagem de máquina (bytecode) para aquele OS específico? Que código a JVM gera daí? O Bytecode é uma linguagem de máquina virtual, uma linguagem parcial?
Acreditava que por linguagem de máquina ficaria travado para aquele OS, conforme teu exemplo em C.
Então, o código fonte, o arquivo .java
não tem utilidade nenhuma para a JVM, o que ela se importa é com o arquivo .class
tanto que quando você empacota para distribuir seu aplicativo, ele pergunta se quer colocar os fontes ou não.
A JVM em si a partir do seu ByteCode gera o código "Assembler" do OS em questão.
Entendi! Muito obrigada pelo seu tempo e explicação!