Olá desenvolvedores, JAVA VIRTUAL MACHINE (JVM): INTRODUÇÃO é o nosso assunto de hoje. Anteriormente em “A LINGUAGEM JAVA E SUAS CARACTERÍSTICAS”, falamos das principais características dessa linguagem poderosa, bem como mencionamos algumas curiosidades.
VÍDEO AULA – JVM – JAVA VIRTUAL MACHINE: INTRODUÇÃO
Na referida postagem, apresentamos a que é considerado a missão do Java. E que norteou o desenvolvimento da linguagem ao longo de todo este tempo. WORE – Write Once, Run Everywhere, isto é, escreva uma vez, execute em qualquer lugar. Assim é o Java.
E é devida a JVM que o Java contempla a ampla portabilidade do seu código. Isto é, seja para computadores pessoais, smartphones, Internet das Coisas e uma gama de outros dispositivos e arquiteturas de hardware. E o melhor, sem perdas de quaisquer naturezas.
Entenda o contexto em que a Máquina Virtual do Java foi criada. A definição é da própria Oracle que específica o contexto de criação contando um pouco da história da Máquina Virtual Java.
“A plataforma foi desenvolvida para suportar várias arquiteturas de host e permitir uma entrega segura de componentes de software pela rede. Mas para isso o código compilado precisava sobreviver ao transporte através das redes e operar em qualquer cliente e garantir a este que era seguro executar”. FONTE: ORACLE
Assim, não seria exagero dizer que a JVM é o componente mais importante do Java, visto que é o responsável pela independência da linguagem. E mesmo tendo uma concepção abstrata, ela executa funções como uma máquina real. Como exemplo, a manipulação de várias áreas da memória em tempo de execução.
A JVM, considerada a pedra angular da plataforma garante à linguagem independência de hardware e sistema operacional. Além de prover proteção contra programas maliciosos e não menos importante, gera um pequeno tamanho de código compilado. Fonte Java Magazine.
A JVM – JAVA VIRTUAL MACHINE
Mas na prática como funciona esta Java Virtual Machine? E como se integram todos os aspectos em torno do Java? Como o código escrito pelo programador, a compilação, este tal bytecodes que agora apareceu na história, enfim, como esta estrutura se organiza?
Observe a imagem abaixo:
O primeiro passo obviamente começa com o programador escrevendo códigos em Java e gerando um arquivo (.java). No instante em que executamos o nosso algoritmo, o Java Code, a máquina virtual aciona o compilador – Java compiler ou ainda Javac.
Ao ser compilado será gerado um bytecode, em um arquivo .class, trata-se do mesmo arquivo .java, porém, agora compilado. Kvitk, a editora-chefe da Java Magazine, que apontava como um dos atrativos da JVM a geração de um tamanho pequeno de código.
Pois bem, este código “reduzido” é gerado depois de passar pelo compilador, e existe um motivo para que isso aconteça. E você entenderá mais abaixo.
Seguindo com o acompanhamento do fluxo da JVM. Depois de compilado e depois de gerado o arquivo .class, o código estará pronto para ser executado em qualquer sistema. Seja ele Windows, Linux ou Mac.
A verdade é que quando falamos do poder do Java e do quão popular a linguagem é. O que estamos fazendo, e nada mais justo, é enaltecer a máquina virtual. Aliás, como você pôde observar e espero que já tenha constatado é a peça chave e fundamental. E isso porque é ela que nos possibilita o desenvolvimento de aplicações performáticas, escaláveis e robustas.
Mas o curioso é que a Java Virtual Machine, não gera “código de máquina”. Afinal, a JVM, não entende nada da linguagem de programação Java. O que ela entende e o que ela gera são instruções em um formato binário específico – os bytecodes.
JAVA VIRTUAL MACHINE E OS BYTECODES
O bytecode é um código gerado pelo compilador Java (javac) em um arquivo .class. E é este código que será traduzido pela JVM para o código de cada máquina em questão. Neste caso, não sendo necessário, como na linguagem C, por exemplo, ajustar as bibliotecas em conformidade com as particularidades deste ou daquele sistema e recompilar.
Os bytecodes Java são projetados para serem fáceis de interpretar em qualquer máquina ou converter dinamicamente em código de máquina nativa. Isto possibilita que a mesma versão do seu aplicativo pode ser executada em todas as plataformas. E possuir um código portável para qualquer sistema é uma abordagem extremamente útil nos dias atuais.
Outro aspecto interessante da Máquina Virtual do Java é que ela une o sistema de compilação JIT – Just In Time com a interpretação de código. O benefício é que esta união resulta em uma técnica que cria o que são chamados de “hot-spots”. Em termos gerais, estes “hot-spots” são as áreas de código que são executadas com maior frequência.
Esta verificação é feita runtime – em tempo de execução, e decorre da análise dos bytecodes a medida em que são interpretados pela Virtual Machine. O objetivo desta verificação é a otimização e o consequente aumento de performance. A premissa que guia o hot-spot é que apenas 10% do código é executado em 90% do tempo.
A VANTAGEM DE SER MULTIPLATAFORMA
Como muito bem sabemos, o Java é uma plataforma, é uma linguagem de programação orientada a objetos e multiplataforma. O que nos leva mais uma vez a missão WORE – escreva uma vez, execute em qualquer lugar. Falamos sobre este “lema”, tantas vezes e de tantas formas diferentes, que tenho certeza, é algo a respeito do qual você não tem mais dúvidas.
Assim, na outra extremidade temos que uma das principais vantagens de ser uma linguagem multiplataforma, é justamente voltada para o seu utilizador. Ou seja, para o desenvolvedor que estará livre para se preocupar apenas com as regras de negócio. Em outras palavras, ele se preocupa apenas com o código a ser escrito, com a solução a ser desenvolvida. Isto é, ele se preocupa exclusivamente com o sistema ou a funcionalidade que ele tem que desenvolver.
Ao escolher uma linguagem independente. E isto significa, cujo desenvolvimento e execução não estão atrelados a nenhuma plataforma, arquitetura ou sistema operacional. Ao fazer tal escolha, o programador escolhe ser livre da preocupação de ter que readaptar o código, de ter que fazer alterações, adaptações ou ainda de ter que escrever um segundo código para uma “mesma” aplicação.
No caso do Java, como já mencionamos aqui, tal preocupação fica a cargo da Java Virtual Machine. A partir da compilação do código .java que escrevemos, um bytecodes é gerado em um arquivo.class.
Arquivo este que será interpretado pela JVM e assim poder ser distribuído sem preocupações de quaisquer naturezas. Como por exemplo, se será necessário fazer ajustes ou escrever rotinas específicas para esta ou aquela plataforma. Se será necessário importar tal biblioteca para aquela outra ou adicionar linhas de código extra entre outras tantas preocupações.
EM POUCAS PALAVRAS
Enquanto programador sua única preocupação é escrever códigos limpos e o mais otimizados possível. Todas as outras preocupações você pode deixar a cardo da JVM, cujas inúmeras funções não caberiam em um único texto. Mas em suma, é isso o que ela faz, te deixa livre para se preocupar apenas com o algoritmo que está construindo.
Mas é importante que você saiba e entenda um pouco do que acontece nos bastidores da plataforma. Assim, você teré ciência dos benefícios da plataforma, do poder da ferramenta que tem em mãos e melhor aproveitá-los.
O nosso bate-papo de hoje pode ser resumido da seguinte forma, você escreve o código em um arquivo .java e o executa. Neste instante o compilador é acionado e gera um arquivo .class, um bytecode, que será interpretado pela JVM e executado.
Finalizado este processo seu arquivo estará pronto para ser executado em qualquer arquitetura de hardware ou sistema operacional. Espero que tenham gostado, e que tenha ficado claro de uma vez por todas a importância e o poder da plataforma. Quer aprender mais? Se liga nesta oportunidade imperdível, são 80 aulas gratuitas e mais 12 projetos
Aprenda mais sobre a lógica com Java.
Curso de programação para você
Selecionei os cursos on-line para você se preparar e abrir as portas para as vagas de programação. Conheça cada um dos cursos nos links oficiais abaixo.
🙂
Curso Profissional + Certificado + Acesso Vilatício + Suporte.
Full-Stack Web Java EE
Mais de 900 aulas em PrimeFaces, JSF, Spring, Hibernate, JPA, Ireport, CDI e muitos mais. Se torne Full-Stack Java Web.
Lógica de Programação
Para se tornar um programador e resolver problemas complexos a sua lógica de programação deve ser a melhor de todas..