Menu

O que é Java? A linguagem, a JVM e onde ela roda

O que Java realmente é, como a JVM permite que um mesmo programa compilado rode em qualquer lugar e os tipos de software que se constroem com Java.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

Java em uma frase

Java é uma linguagem de programação de tipagem estática e orientada a objetos que compila para bytecode e roda na Máquina Virtual Java (JVM). Essa única decisão de projeto -compilar para um formato intermediário neutro e então executá-lo em uma máquina virtual- é a razão pela qual o mesmo programa Java compilado roda sem alterações no Windows, no macOS, no Linux e além.

Aqui está o obrigatório primeiro programa. Você pode executá-lo aqui mesmo:

Há mais cerimônia aqui do que em uma linguagem de script, e isso é proposital: Java prefere estrutura explícita. Vamos destrinchar cada parte disso ao longo das próximas páginas.

Por que a JVM importa

A maioria das linguagens compiladas transforma o código-fonte diretamente em código de máquina para um processador e um sistema operacional específicos. Um programa compilado para Windows não vai rodar em um Mac. Java faz um desvio:

  1. O javac compila seu código-fonte .java em arquivos .class contendo bytecode: instruções para uma máquina imaginária, não para nenhuma CPU real.
  2. A JVM da sua plataforma lê esse bytecode e o executa, traduzindo-o para instruções de máquina nativas conforme avança.

Como cada plataforma tem a sua própria JVM, mas todas entendem o mesmo bytecode, você compila uma vez e executa o resultado em qualquer lugar onde exista uma JVM. Esse é o famoso lema: escreva uma vez, execute em qualquer lugar.

A JVM não apenas interpreta às cegas. Um compilador just-in-time (JIT) observa qual código roda mais e compila esses caminhos quentes para código nativo otimizado, de modo que programas Java de longa duração se aproximam da velocidade de linguagens totalmente compiladas.

De tipagem estática e orientada a objetos

Duas propriedades moldam a aparência e a sensação do código Java.

Tipagem estática significa que cada variável tem um tipo conhecido em tempo de compilação, e o compilador verifica seus tipos antes mesmo de o programa rodar:

count é um int para sempre; atribuir "hello" a ele não compilaria. Isso pega toda uma classe de erros cedo, ao custo de digitar mais no início.

Orientada a objetos significa que Java organiza o código em classes: plantas que agrupam dados e os métodos que atuam sobre eles. Até o ponto de entrada acima vive dentro de uma class Main. Quase tudo que você escreve em Java vive dentro de uma classe.

Para que Java é usada

Java é uma das linguagens mais implantadas do mundo. Você vai encontrá-la em:

  • Sistemas de backend e corporativos: bancos, seguros, grandes serviços web e qualquer coisa que precise rodar de forma confiável por anos.
  • Android: a linguagem original da plataforma, ainda central no runtime do Android mesmo ao lado do Kotlin.
  • Big data: Hadoop, Spark, Kafka e boa parte do ecossistema de engenharia de dados rodam na JVM.
  • Desktop e embarcado: de IDEs (IntelliJ, Eclipse) a terminais de ponto de venda e cartões inteligentes.

Sua reputação é de estabilidade, compatibilidade retroativa e uma vasta biblioteca padrão, em vez de ser a linguagem mais concisa. Código escrito para Java anos atrás geralmente ainda roda hoje.

Java não é JavaScript

Vale dizer claramente porque os nomes causam confusão sem fim: Java e JavaScript são linguagens diferentes e sem relação. Compartilham quatro letras por motivos históricos de marketing e nada mais que importe. Java é compilada, de tipagem estática e roda na JVM; JavaScript é de tipagem dinâmica e roda nos navegadores e no Node.js. Aprender uma não ensina a outra.

Próximo: Instalando o Java

Para escrever e executar Java na sua própria máquina você precisa de um JDK (Java Development Kit): o compilador, mais a JVM, mais a biblioteca padrão. A próxima página orienta a instalação e como confirmar que funciona.

Perguntas frequentes

Para que serve Java?

Java move grandes sistemas de servidor e corporativos, aplicativos Android (por meio do Android SDK e do runtime compartilhado com o Kotlin), ferramentas de big data como Hadoop e Spark, e inúmeras aplicações desktop e embarcadas. Seus pontos fortes são a estabilidade, uma enorme biblioteca padrão e a JVM, que roda o mesmo programa compilado em qualquer sistema operacional.

Java é compilada ou interpretada?

As duas coisas. O compilador Java (javac) transforma seu código-fonte em bytecode independente de plataforma, e a JVM então executa esse bytecode: interpretando-o no início e compilando os caminhos mais usados para código de máquina nativo com um compilador just-in-time (JIT). Ou seja, Java é compilada para bytecode e depois interpretada e compilada via JIT em tempo de execução.

Java é a mesma coisa que JavaScript?

Não: são linguagens sem relação que compartilham um nome por motivos históricos de marketing. Java é uma linguagem compilada e de tipagem estática que roda na JVM; JavaScript é uma linguagem de tipagem dinâmica que roda nos navegadores e no Node.js. Saber uma não significa que você saiba a outra.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR