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:
- O
javaccompila seu código-fonte.javaem arquivos.classcontendo bytecode: instruções para uma máquina imaginária, não para nenhuma CPU real. - 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.