image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Edney Landim
Edney Landim25/01/2023 10:41
Compartilhe
Microsoft 50 Anos - Prompts InteligentesRecomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes

Por que um código escrito em Java pode rodar em qualquer plataforma?

    Bom dia, boa tarde e boa noite. Ao discutir sobre Java você provavelmente já ouviu falar que a linguagem pode ser executada em qualquer plataforma. Esse é o famoso slogan dessa linguagem de programação de alto nível “Escreva uma vez, execute em qualquer lugar”.

    Mas, você já parou para se perguntar como é feita essa proeza? É exatamente isso que veremos no decorrer desse artigo.

    Entendendo o conceito de WORA

    WORA é o acrônimo de “Write once, run anywhere” ou “Escreva uma vez, execute em qualquer lugar” em português. Esse slogan, criado pela Sun MicroSystems – empresa fabricante de computadores e desenvolvedora de linguagem – explica exatamente o que estamos falando aqui: você pode escrever um código Java em qualquer sistema e ele funcionará em qualquer um que esteja habilitado para a linguagem.

    Esse é um dos motivos pelo qual a linguagem teve e ainda tem tanto sucesso. De acordo com o TIOBE index, atualmente, Java é a segunda linguagem mais utilizada por programadores no mundo.

    Uma linguagem independente de plataforma

    Vamos do começo, para entender o que é uma linguagem independente de plataforma é preciso saber primeiramente o que, de fato, é uma plataforma. 

    Uma plataforma, nesse contexto, é a combinação de um sistema operacional com um processador. Por exemplo, o sistema operacional Windows utiliza o processador Intel. Essa junção é o que chamamos de plataforma. Outro exemplo, o sistema operacional Linux pode utilizar o processador AMD. Novamente, essa combinação é o que chamamos de plataforma.

    É necessário lembrar também que as máquinas apenas entendem machine code (código de máquina):

    image

    A linguagem de máquina inclui dígitos binários (0s e 1s), decimais hexadecimais e octal. O que não é nada conveniente para nós, seres humanos, e por isso, não escrevemos código diretamente em linguagem de máquina.

    Antigamente, na maioria das linguagens de programação, como por exemplo C++, é feito o uso de um compilador ou intérprete para gerar um código em linguagem de máquina que será apenas utilizado em uma plataforma específica. Isso acontece por inúmeros fatores e tem muito a ver com o hardware e os componentes internos da máquina, por exemplo; o código de máquina para um processador de 32 bits geralmente não é executado em um processador de 64 bits, mesmo que seja do mesmo fabricante.

    O fato de os conjuntos de instruções dos processadores serem tão diferentes e as chamadas de sistema também serem tão diferentes é uma das razões pelas quais as linguagens independentes de plataforma são tão predominantes, já que estamos no assunto, por exemplo, Java

    Então, ao compilar um programa escrito em C++ em uma máquina com sistema operacional Windows, um arquivo com código-fonte (source code) será gerado, traduzindo o código “humano” para o código de máquina (0s e 1s) mas ele só vai rodar em outras máquinas cuja plataforma é a mesma. 

    Ou seja, se você tentar executar em outra plataforma, que, é claro, tem um hardware diferente e que por consequência entende o código máquina de forma diferente, você receberá uma mensagem de erro e terá de recompilar o código para que ele seja compreendido pelo novo hardware. Essencialmente, você teria que criar várias versões do seu código-fonte para cada plataforma.

    Java Virtual Machine

    Você deve lembrar que para começar a programar em Java precisou fazer o download do JDK, JRE e JVM. Esse JVM é o acrônimo de Java Virtual Machine (Máquina Virtual Java). Ela é a responsável pela independência da plataforma da linguagem.

    Com a JVM, o código “humano” não é convertido diretamente para um código que o hardware consiga entender. Na verdade, ele será convertido para uma forma intermediária de código chamada bytecode. 

    O bytecode é uma ponte entre o texto que o programador consegue manipular, e o código de máquina, que o computador consegue executar. O arquivo bytecode que é gerado é interpretado pela JVM (Máquinas Virtuais Java). 

    image

    Dessa forma, uma vez que o arquivo bytecode for gerado, ele poderá ser executado em qualquer lugar, ou seja, qualquer máquina, que também tenha a JVM. Daí vem o princípio “Escreva uma vez, execute em qualquer lugar”.

    Em outras palavras, se você escreveu um código Java em um sistema operacional Windows, sem que precise reescrevê-lo, ele poderá ser executado por uma máquina com sistema operacional Mac, por exemplo. Já que, quem está interpretando o código não é a máquina com sistema Windows ou Mac diretamente, e sim passado pela Máquina Virtual Java (JVM).

    O bytecode acabou ficando popular com o Java, mais tarde esse mesmo bytecode também foi aderido por outras “linguagens JVM”, como por exemplo, Kotlin, que também tem essa vantagem de poder ser transmitido em plataformas diferentes.

    Conclusão e resumo

    Nesse artigo, vimos que Java é independente de plataforma porque usa uma máquina virtual (JVM). O código escrito usando a linguagem de programação Java será compilado em bytecode, que são independentes de plataforma. A JVM (Máquina Virtual Java) cuida das diferenças entre os bytecodes para as diferentes plataformas.

    Fonte: Cod3r

    Compartilhe
    Recomendados para você
    Microsoft 50 Anos - Prompts Inteligentes
    Microsoft 50 Anos - GitHub Copilot
    Microsoft 50 Anos - Computação em Nuvem com Azure
    Comentários (4)

    AA

    Abner Asel - 25/01/2023 17:44

    nossa, muito interessante!!

    RA

    Rodrigo Assumpção - 25/01/2023 15:40

    Massa !

    José Verçosa
    José Verçosa - 25/01/2023 14:26

    Muito bom, ótimo artigo!!

    Diogo Dantas
    Diogo Dantas - 25/01/2023 13:31

    Muito interessante, obrigado por compartilhar!!

    Recomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes