Links patrocinados


Untitled Document

Aumentar tamanho do texto   Diminuir tamanho do texto

:: Software

Máquina Virtual Java (Java Virtual Machine)

Introdução

Com a linguagem de programação Java, você pode, por exemplo, criar um aplicativo que rode tanto no Linux quanto no Windows. Mas a linguagem Java não se limita a esses sistemas operacionais. É possível desenvolver aplicações para uma infinidade de plataformas. Para isso, basta que elas tenham uma Java Virtual Machine (JVM) ou, em português, Máquina Virtual Java. Este artigo é voltado a iniciantes e explica o que esse mecanismo faz e o porquê de ser um componente tão essencial à linguagem Java.

O que é Máquina Virtual Java

Você já deve ter usado Java antes e não sabe. Por exemplo, em uma fila de banco, onde você fica jogando em seu telefone celular enquanto aguarda a sua vez. Os aplicativos feitos em Java estão presentes em uma infinidade de dispositivos, desde relógios até mainframes. Tudo isso graças a Máquina Virtual Java, que passaremos a chamar simplesmente de JVM a partir deste ponto.

A JVM é, em poucas palavras, um mecanismo que permite executar código em Java em qualquer plataforma. Segundo a definição da Sun, a principal responsável pela criação da linguagem Java, a JVM pode ser entendida como "uma máquina imaginária implementada via software ou hardware que executa instruções vindas de bytecodes". Os bytecodes são explicados mais à frente.

Para servir de exemplo, suponha que você desenvolveu um aplicativo para um telefone celular. Com poucas modificações, você poderá rodar esse mesmo aplicativo em um palmtop, como mostra a imagem abaixo (tirada do site http://www.msmobile.com):

O mesmo jogo rodando  em um celular  e em um palmtop

Outro exemplo: um fabricante de geladeiras constatou que é mais confiável controlar a temperatura desse eletrodoméstico por software. Assim, seus engenheiros criaram um programa para esse fim e ele foi feito em Java. Para executá-lo, eles criaram uma JVM para essa moderna geladeira.

Imagine agora que um fabricante de aparelhos de som desenvolveu um software em Java para permitir que um de seus produtos fosse compatível com músicas no formato MP3. Meses depois, a empresa lançou um outro aparelho e aproveitou esse mesmo recurso nele. Tudo isso, graças a JVM desenvolvida para os aparelhos.

Os exemplos acima deixam claro que praticamente todo dispositivo pode rodar aplicações em Java. Basta que ele tenha uma JVM. A implementação de uma JVM pode ser feita em hardware, como em chips, ou em software, como a JVM existente para o Linux.

Como a JVM funciona

Quando você faz um programa em Java e o compila, se tudo estiver certo, o compilador gerará bytecodes desse programa. Bytecode é uma espécie de codificação que traduz tudo o que foi escrito no programa para um formato que a JVM entenda e seja capaz de executar. Assim, se você fizer um programa em Java no Linux, ele será capaz de rodar no Windows ou em qualquer outro sistema operacional que tenha JVM. Isso ocorre porque não existe bytecodes diferentes, isto é, os bytecodes dos programas em Java compilados no Windows são constituídos da mesma forma que bytecodes gerados se a compilação fosse feita em Mac OS, por exemplo. De certo que, podem haver algumas diferenças, que dependem da implementação da JVM e claro, do compilador.

Quando um código em Java é compilado, um arquivo com a extensão .class é gerado. Esse tipo de arquivo é o bytecode. Assim, quando o programa Infowester.java for compilado, um arquivo chamado Infowester.class deverá ser executado. A imagem a seguir ilustra esse processo:

Esquema de funcionamento da JVM

JVM e a questão da segurança

A linguagem Java, desde sua criação, sempre considerou com seriedade a questão da segurança. Por isso, é praticamente impossível criar programas em Java para fins maliciosos. Quando um programa em Java é executado, seu bytecode precisa passar pelos requisitos de segurança presentes na JVM, que impede a execução se o código tiver alguma irregularidade. Assim, se, por exemplo, no programa houver instruções para acessar áreas restritas da memória ou acessar recursos de hardware, a JVM não aprovará o código.

Outras linguagens, como C, são executadas diretamente pelo sistema operacional. Com isso, é possível criar programas que acessem recursos críticos do sistema. No caso da linguagem Java, a JVM atua como uma espécie de intermediária entre o programa e o sistema. Sendo assim, até mesmo o acesso a recursos de entrada e saída só é feito por meio da JVM.

Finalizando

.: Livros sugeridos :.
Pesquisa de preçosBuscapé
:: JAVA - Como programar
:: Use a cabeça - Java

Devido as características vistas anteriormente (e outras que não foram citadas neste artigo), a linguagem Java tem sido cada vez mais utilizada. O fato de se tratar de uma linguagem multi-plataforma, permite o desenvolvido de aplicativos e soluções para os mais diversos fins. E um dos grandes responsáveis por isso são as JVMs. Até mesmo você pode desenvolver uma JVM para um dispositivo qualquer, desde que tenha conhecimentos sólidos para isso. Sim, pois construir uma JVM não é fácil. Ela envolve uma série de conceitos complexos, como instruções equivalentes a de processadores, controle de acesso à memória, registradores, etc. Isso pode até parecer estranho, mas é necessário entender que as JVMs atuam, de fato, como uma máquina.

Mesmo que você não seja um desenvolvedor em Java, é interessante ter uma JVM em seu computador. Certamente você usará algum programa que usa recursos da linguagem Java. Portanto, procure pela JVM desenvolvida para seu sistema operacional no site da Sun (http://java.sun.com) e bom proveito!

Escrito por Emerson Alecrim - Publicado em 22/08/2004 - Atualizado em 23/01/2005


Versão para imprimir      Indicar por e-mail      Página anterior Página inicial      Página anterior Voltar      del.icio.us

 

 
Várias marcas registradas aparecem nas páginas deste site. O InfoWester declara estar utilizando tais nomes apenas para fins
informativos, em benefício exclusivo do dono da marca registrada, sem intenção de infringir as regras e leis de sua utilização.
Artigos disponíveis sob uma Licença Creative Commons - Política de privacidade - Condições de uso do site
InfoWester 2008 - Propagando conhecimento - Responsável: Emerson Alecrim