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.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!