Máquina Virtual Java (Java Virtual Machine)
Com a linguagem Java, é possível desenvolver aplicações que rodem em 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 explicará o que esse mecanismo faz e o porque de ser um componente tão essencial à linguagem Java.
Parte 2: 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 Vivaolinux.java for compilado, um arquivo chamado Vivaolinux.class deverá ser executado. A imagem a seguir ilustra esse processo:
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 Vivaolinux.java for compilado, um arquivo chamado Vivaolinux.class deverá ser executado. A imagem a seguir ilustra esse processo:
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
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!