quinta-feira, 23 de setembro de 2010

Finalizando sobre JVM


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 e bom proveito!

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.

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:

Exemplos de utilização de JVM


  • Exemplo 1

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:



  • Exemplo 2

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.


  • Exemplo 3
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.

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".