Propaganda

A Java Virtual Machine (JVM) é um conta-gotas de nome real quando você está programando em Java. Ao contrário do que o nome indica, a Java Virtual Machine também pode ser encontrada em relação a outras linguagens de programação.

Em geral, não é necessário saber o que é a Java Virtual Machine, ou mesmo o que faz, para poder programar em Java. Por outro lado, familiarizar-se com o funcionamento interno de uma máquina ajuda a aumentar sua compreensão e percepção geral.

Este artigo aborda a idéia da Java Virtual Machine, o que ela faz por você e alguns dos prós e contras mais importantes. Embora eu tenha tentado simplificar as coisas, e definitivamente haja literatura mais avançada sobre o assunto, é esperado um entendimento rudimentar de Java e programação.

Idiomas de alto nível

A semântica de uma linguagem de programação é projetada para se aproximar da linguagem natural, mantendo-se concisa e fácil de interpretar para uma máquina. Como você provavelmente sabe, a linguagem de programação é totalmente diferente do código da máquina, o conjunto de instruções que um computador usa para construir e executar um programa. A isso chamamos

instagram viewer
idiomas de alto nível; um ou vários níveis de abstração do código da máquina.

Antes de poder executar, o código de alto nível deve primeiro ser interpretado. Muitas interfaces de programação são compiladas com antecedência (Compilação AOT) para uma plataforma específica. Isso torna o programa mais eficiente em tempo de execução, mas muito menos compatível com diferentes plataformas. Java, por outro lado, trabalha com uma linguagem intermediária chamada Bytecode Java e a Máquina Virtual JAVA.

Bytecode JVM e Java

Quando seu projeto Java é desenvolvido, ele converte o código-fonte (contido em *.Java arquivos de origem) para bytecode Java (geralmente contidos em arquivos * .class). Isso leva seu código de alto nível um passo mais perto do código da máquina, mas ainda não chegou lá. Este bytecode é uma coleção de instruções compactas; mais fácil para uma máquina interpretar, mas menos legível.

Quando você executa um aplicativo Java no seu computador, telefone celular ou qualquer outra plataforma habilitada para Java, passa essencialmente esse bytecode Java para a Java Virtual Machine. O intérprete na Java Virtual Machine geralmente começa a compilar todo o bytecode em tempo de execução, seguindo os princípios da chamada compilação just-in-time. Isso cria um atraso típico, embora geralmente leve, ao abrir um aplicativo Java, mas geralmente melhora o desempenho do programa em comparação com o compilação interpretada.

Máquina Virtual JAVA

A principal vantagem desse sistema é a maior compatibilidade. Como seus aplicativos são executados em uma máquina virtual em vez de diretamente no seu hardware, o desenvolvedor pode programar e construir seu aplicativo uma vez, que pode ser executado em todos os dispositivos com uma implementação do Java Virtual Máquina. Este princípio deu origem ao slogan de Java: “Escreva uma vez, corra em qualquer lugar.”

Pro: Compatibilidade e Maior Segurança

Além da compatibilidade de código, a Java Virtual Machine oferece outros benefícios. Uma das mais importantes é a segurança relativa dos programas Java como resultado da Java Virtual Machine. Segurança, o que significa que um programa em execução em uma máquina virtual tem muito menos probabilidade de interromper o sistema operacional do usuário ou corromper arquivos de dados, se ocorrerem erros.

Con: Implementações e depuração diferentes da JVM

Uma das principais críticas contra a compatibilidade de código e a Java Virtual Machine é devido às muitas implementações diferentes desta última. Veja bem, a Java Virtual Machine não é um software. A Oracle, proprietária do Java, tem sua implementação da Java Virtual Machine, mas outras pessoas podem fazer a sua, se atender a várias reivindicações práticas e contratuais.

Essas implementações diferentes significam que seu código pode funcionar sem problemas em uma Java Virtual Machine, mas travar e gravar em outra. Embora, na prática, você possa escrever seu código uma vez e executá-lo em qualquer lugar, às vezes um código mais complexo ainda precisa ser depurado em diferentes implementações da Java Virtual Machine para garantir a operação correta.

Você tem alguma experiência em trabalhar com a Java Virtual Machine? Em caso afirmativo, há algo que eu perdi aqui que deva ser mencionado?

Crédito de imagem: Michaelaw, Dcoetzee

Sou escritor e estudante de ciências da computação na Bélgica. Você sempre pode me fazer um favor com uma boa ideia de artigo, recomendação de livro ou ideia de receita.