Da Primeira Classe à JVM: o Mapa da Jornada em Java

Da Primeira Classe à JVM: o Mapa da Jornada em Java

O mapa do curso de Java: setenta e oito aulas em nove fases e três trilhas, do primeiro programa no terminal a um servidor HTTP feito à mão, e depois API com banco de dados, site, desktop, Android e jogos. Com a ordem dos assuntos, o porquê de cada fase e um ritmo de estudo possível.
Java

• • 15 min de leitura

Antes da primeira linha de código, o plano inteiro: o que você vai aprender, em que ordem e por que cada trecho vem onde está.

Todo curso longo precisa de um mapa, e este tem setenta e oito aulas. Você vai começar escrevendo uma frase no terminal. Ao fim do núcleo do curso, vai ter construído um servidor web inteiro com as próprias mãos, lendo byte a byte o protocolo que o navegador envia. Nas trilhas de extensão, o mesmo conhecimento vira uma API com banco de dados, um site completo, um aplicativo de desktop, um app de celular e um jogo de plataforma. Tudo isso numa linguagem que tem trinta anos, roda em bilhões de dispositivos e nunca esteve tão moderna quanto hoje.

Este artigo não ensina sintaxe. É o guia que você vai reabrir sempre que se perguntar "onde estou e o que vem depois".

Por que Java, e por que agora

Java tem uma reputação ambígua. Para muita gente, é a linguagem "verbosa" e "corporativa" dos sistemas de banco, cheia de cerimônia, que exige três linhas para imprimir uma frase. Essa imagem tinha fundamento há quinze anos. Hoje ela está desatualizada.

Desde 2017 a linguagem ganha uma versão nova a cada seis meses. Nesse período vieram, entre outras coisas, os records (classes de dados em uma linha), o pattern matching, as sealed classes, os text blocks, as virtual threads, que permitem milhões de tarefas simultâneas com código simples, e, no Java 25, um jeito de escrever o primeiro programa sem nenhuma cerimônia. O Java que você vai aprender aqui é esse, o de 2025 em diante, e não o dos livros de 2005.

O que não mudou é o motivo de o Java estar em toda parte. A máquina virtual Java, a JVM, é uma das peças de software mais estudadas e otimizadas já construídas. O ecossistema de bibliotecas é o maior e mais maduro do mundo corporativo. E a compatibilidade é levada a sério: código escrito há vinte anos ainda compila e roda. Aprender Java é aprender a linguagem, mas também uma plataforma inteira que sustenta bancos, governos, sistemas de big data, o Android e até o Minecraft.

Como esta série pensa

Este curso parte do zero. Você não precisa ter programado antes. Se já programou, em C, C# ou qualquer outra linguagem, vai encontrar comparações pontuais que ajudam a situar o que é igual e o que é diferente em Java. Mas nada será pressuposto.

Algumas regras guiam todas as aulas:

  • Cada conceito aparece só depois da base que ele exige. Não vamos usar algo que ainda não foi explicado "porque depois você entende". Quando for inevitável adiantar alguma coisa, isso será dito com todas as letras.
  • Todo código roda. Os exemplos são programas completos, testados no Java 25, e a saída esperada aparece quando ajuda.
  • O porquê importa tanto quanto o como. Cada recurso vem acompanhado do problema que ele resolve, do custo que ele tem e de quando não usá-lo.
  • As aulas conversam entre si. Uma ideia plantada numa aula volta, crescida, dez aulas depois. O curso é uma jornada só, não uma pilha de tópicos soltos.
  • A versão é o Java 25, a versão de suporte longo (LTS) mais recente. Quando um recurso depender de versão, ou ainda estiver em preview, isso será dito.

Cada aula termina com fontes para ir além e cinco exercícios, do mais simples ao mais exigente, cada um com a resposta comentada logo abaixo. Tente resolver antes de ler a resposta. É no exercício que o conhecimento fixa.

O mapa: nove fases e três trilhas

O núcleo do curso tem nove fases e termina no artigo 52, com o projeto final e a retrospectiva. Depois vêm três trilhas de extensão, que levam o Java aos lugares onde ele mais trabalha no mundo real.

Fase 1: Primeiros passos na JVM (01 a 07). De onde o Java veio, como instalá-lo, o que acontece entre o código-fonte e a execução, e os blocos básicos de qualquer programa: valores, operações, decisões, repetições, métodos e arrays.

  1. Uma Linguagem para Torradeiras que Conquistou o Mundo — a História do Java
  2. Do Código ao Bytecode — JDK, javac, JVM e o Primeiro Programa
  3. Cada Valor em sua Caixa — Tipos Primitivos, Variáveis e Conversões
  4. Operadores, Texto e Conversa com o Usuário — Expressões, Strings e Entrada
  5. O Programa que Escolhe e Repete — if, switch e Laços
  6. Dividir para Resolver — Métodos, Parâmetros e Recursão
  7. Muitos Valores sob um Nome — Arrays

Fase 2: Objetos (08 a 15). O coração do Java. Classes e objetos, encapsulamento, herança, interfaces e polimorfismo, e depois os recursos modernos que tornaram a modelagem de dados muito mais concisa: records, enums, sealed classes e pattern matching.

  1. Moldes e Instâncias — Classes, Objetos e Construtores
  2. O que Fica Dentro, o que Fica Fora — Encapsulamento e Modificadores de Acesso
  3. Do Geral ao Específico — Herança e a Classe Object
  4. Contratos sem Implementação — Interfaces e Classes Abstratas
  5. Um Tipo, Várias Formas — Polimorfismo na Prática
  6. Iguais ou o Mesmo? — equals, hashCode e Identidade
  7. Dados sem Cerimônia — Records e Enums de Verdade
  8. Hierarquias Fechadas — Sealed Classes e Pattern Matching

Fase 3: A biblioteca padrão (16 a 22). Genéricos e as coleções que você vai usar todos os dias, o tratamento de erros com exceções, arquivos e as ferramentas certas para datas, dinheiro e padrões de texto.

  1. Escreva uma Vez para Todo Tipo — Genéricos
  2. O Preço da Compatibilidade — Wildcards e Type Erasure
  3. Listas, Conjuntos e Mapas — o Collections Framework
  4. Ordem e Critério — Comparable, Comparator e Coleções Ordenadas
  5. Quando o Contrato se Quebra — Exceções Verificadas e Não Verificadas
  6. Recursos que se Fecham Sozinhos — try-with-resources, Arquivos e NIO.2
  7. Tempo, Dinheiro e Padrões — java.time, BigDecimal e Expressões Regulares

Fase 4: Java funcional (23 a 27). Comportamento tratado como valor. Lambdas, a API de Streams, o Optional, e as anotações e a reflexão, que são o mecanismo por trás de quase todo framework Java.

  1. Comportamento como Valor — Lambdas e Interfaces Funcionais
  2. Pare de Escrever Laços — a API de Streams
  3. Agrupar, Achatar, Reduzir — Collectors e Gatherers
  4. Um Valor que Pode Não Existir — Optional e a Guerra contra o null
  5. O Programa que se Examina — Anotações e Reflexão

Fase 5: Projetos e ferramentas (28 a 32). Do arquivo solto ao projeto profissional: pacotes, JARs, Maven e Gradle, o sistema de módulos e os testes automatizados que permitem mudar o código sem medo.

  1. Do Arquivo Solto ao Projeto — Pacotes, Classpath e JARs
  2. Construção Automatizada — Maven e Gradle
  3. Fronteiras Explícitas — o Sistema de Módulos
  4. Provando que Funciona — Testes com JUnit e AssertJ
  5. Dublês e Disciplina — Mockito e Testes que Não Mentem

Fase 6: Por dentro da JVM (33 a 36). Como a máquina virtual carrega, executa e otimiza o seu código. Como o coletor de lixo trabalha. Como medir desempenho de verdade, e como o Java conversa com código nativo escrito em C.

  1. A Máquina por Trás da Máquina — Class Loading, Pilha, Heap e JIT
  2. Quem Recolhe o Lixo — os Coletores G1 e ZGC
  3. Medir Antes de Otimizar — JFR, Mission Control e JMH
  4. Ponte para o Nativo — a Foreign Function & Memory API

Fase 7: Concorrência (37 a 43). Fazer várias coisas ao mesmo tempo sem corromper dados. Das threads clássicas e do modelo de memória até as virtual threads e a concorrência estruturada, que mudaram a forma de escrever servidores em Java.

  1. Fazendo Duas Coisas ao Mesmo Tempo — Threads
  2. O Cadeado e a Memória — synchronized, volatile e o Java Memory Model
  3. Não Crie Threads, Entregue Tarefas — ExecutorService e Futures
  4. Ferramentas de Precisão — Locks, Atomics e Coleções Concorrentes
  5. Encadeando o que Ainda Não Aconteceu — CompletableFuture
  6. Um Milhão de Threads — Virtual Threads
  7. Tarefas em Família — Structured Concurrency e Scoped Values

Fase 8: Qualidade e distribuição (44 a 46). O que a comunidade aprendeu em trinta anos sobre escrever Java bom, e como entregar um programa pronto para quem nem tem Java instalado.

  1. Lições de Quem Veio Antes — Effective Java, Código Limpo e Padrões
  2. Contratos à Vista — Imutabilidade, Programação Defensiva e JSpecify
  3. Do JAR ao Executável — jlink, jpackage e GraalVM Native Image

Fase 9: O projeto final (47 a 52). Um servidor HTTP construído do zero, sem nenhuma biblioteca externa: sockets, leitura do protocolo à mão, records e sealed types para modelar requisições e respostas, virtual threads para atender milhares de conexões, arquivos servidos com NIO, testes e empacotamento. Cada fase anterior entra como uma pedra da construção. Termina com a retrospectiva do ano.

  1. O Projeto Final Começa — Arquitetando um Servidor HTTP sobre Sockets
  2. A Primeira Pedra — ServerSocket e a Leitura do HTTP/1.1
  3. A Segunda Pedra — Requisições e Respostas como Tipos: Records, Sealed e Rotas
  4. A Terceira Pedra — Mil Conexões ao Mesmo Tempo: Virtual Threads e Keep-Alive
  5. A Pedra de Acabamento — Arquivos Estáticos, Testes e Empacotamento
  6. A Jornada Completa — Retrospectiva de Um Ano de Java

Trilha de extensão A: Web, API e bancos de dados (53 a 66). Depois de construir um servidor à mão, você vai entender de verdade o que os frameworks fazem por você. Esta trilha tem um projeto próprio, as Trilhas da Ilha, um catálogo de trilhas de caminhada. Ele passa por SQLite, PostgreSQL, MySQL e MongoDB, vira uma API REST com autenticação e termina como um site completo, publicado num servidor.

  1. Extensão — Java no Servidor: Servlets, Jakarta EE, Spring e Quarkus
  2. Extensão — Dados que Sobrevivem: SQL Essencial e JDBC com SQLite
  3. Extensão — Spring Boot pela Primeira Vez: Injeção de Dependência
  4. Extensão — Objetos no Banco: JPA e Hibernate
  5. Extensão — O Banco que Evolui: Spring Data e Migrations com Flyway
  6. Extensão — PostgreSQL: o Banco Servidor, JSONB e Arrays
  7. Extensão — MySQL: Driver, Dialeto e as Diferenças que Importam
  8. Extensão — MongoDB: Documentos, Agregações e Quando Escolher Cada Modelo
  9. Extensão — A API das Trilhas: REST, Validação, Erros e OpenAPI
  10. Extensão — Quem É Você? Spring Security e JWT
  11. Extensão — Bancos de Verdade nos Testes: Testcontainers
  12. Extensão — Páginas Dinâmicas: Thymeleaf e Formulários
  13. Extensão — O Site Completo: htmx, Login, Área Administrativa e Upload
  14. Extensão — Do Laptop ao Servidor: Docker, nginx e Deploy

Trilha de extensão B: Desktop e Android (67 a 70). Interfaces gráficas em Java, do Swing ao JavaFX, um aplicativo de desktop que consome a API das Trilhas e uma introdução honesta ao Android, onde o Java divide espaço com o Kotlin.

  1. Extensão — Janelas em Java: AWT, Swing e JavaFX
  2. Extensão — JavaFX: Cenas, Controles e FXML
  3. Extensão — Um App Desktop que Consome a API (MVVM)
  4. Extensão — Java no Android: o que Mudou com o Kotlin e um App que Consome a API

Trilha de extensão C: Jogos com libGDX (71 a 77). O que torna um jogo diferente de qualquer outro programa: o game loop. Um primeiro jogo de naves, física com Box2D, mapas de blocos e um jogo de plataforma completo, com atenção especial a não produzir lixo dentro do loop, uma lição que vem direto da Fase 6.

  1. Um Novo Território — Java nos Jogos, o Game Loop e o Caso Minecraft
  2. O Primeiro Sprite — Janela, Desenho e Input com libGDX
  3. Quando as Coisas se Tocam — Colisão e o Primeiro Jogo: Asteroids
  4. Gravidade de Verdade — Física com Box2D
  5. Mundos em Blocos — Mapas de Tiles e um Jogo de Plataforma
  6. Sem Lixo no Loop — Pools, ECS e o Coletor nos Jogos
  7. O Capstone dos Jogos — o Plataforma Completo e Exportado

O encerramento (78). O Destino e o Novo Começo — Encerrando a Jornada Completa. Um olhar sobre tudo o que foi construído, núcleo e trilhas, e os caminhos que se abrem depois de um ano de Java.

Uma palavra sobre o percurso

As fases não têm o mesmo peso. A Fase 1 vai parecer fácil para quem já programou, e é bom que pareça: ela cria a base de vocabulário. A Fase 2 é onde o Java começa a ser Java, e vale a pena ir devagar nela. As Fases 6 e 7 são as mais exigentes do curso. Elas tratam do que acontece por baixo do código e de programas que fazem várias coisas ao mesmo tempo, e muita gente trabalha anos com Java sem nunca entender esses assuntos direito. Não pule nenhuma delas. O servidor da Fase 9 depende de cada uma.

As trilhas de extensão podem ser feitas na ordem que você quiser depois do núcleo. A trilha A é a mais próxima do mercado de trabalho. A trilha C é a mais divertida. A trilha B depende da API construída na trilha A.

Como estudar cada aula

Setenta e oito aulas em um ano dão cerca de uma aula e meia por semana. É um ritmo confortável para quem estuda algumas horas por semana, mas o ritmo certo é o que você sustenta sem pular os exercícios. Constância vale mais que velocidade.

Três hábitos fazem diferença. Primeiro, digite o código em vez de copiar e colar: os erros de digitação e as mensagens do compilador ensinam tanto quanto o texto. Segundo, quebre o código de propósito: apague uma linha, troque um tipo e leia o que o compilador responde. Terceiro, mantenha uma pasta por aula (aula-01, aula-02...), porque os exemplos antigos vão reaparecer e você vai querer revê-los.

Você não precisa instalar nada hoje. A instalação é o tema de "Do Código ao Bytecode". Basta ter um computador com Windows, macOS ou Linux.

Fontes e leituras recomendadas

  • Dev.java — Learn Java: https://dev.java/learn/. É o portal oficial de aprendizado mantido pela equipe do Java na Oracle, com tutoriais atualizados para as versões modernas da linguagem.
  • Documentação da API do Java SE 25: https://docs.oracle.com/en/java/javase/25/docs/api/. É a referência de todas as classes da biblioteca padrão e será consultada em quase toda aula.
  • Joshua Bloch, Effective Java, 3ª edição (Addison-Wesley, 2018): o livro mais respeitado sobre como escrever Java bom. Não é para iniciantes, mas vale ter por perto a partir da Fase 2.
  • OpenJDK — JEPs: https://openjdk.org/jeps/0. Todas as mudanças na plataforma são propostas e discutidas em público como JEPs (JDK Enhancement Proposals). É onde você acompanha a linguagem sendo desenhada.
  • Inside.java: https://inside.java/. Notícias, artigos e podcasts escritos pelas pessoas que desenvolvem o Java.

Exercícios

Exercício 1

Crie a pasta onde você vai guardar o curso inteiro e, dentro dela, as subpastas das três primeiras aulas. Anote o caminho completo.

Ver resposta

✓ Resposta: Não há resposta única. Uma estrutura como ~/cursos/java/aula-01, aula-02, aula-03 funciona bem. O importante é o caminho ter só letras, números e hífens, sem espaços e sem acentos. Espaços e acentos em caminhos ainda causam problemas pontuais em ferramentas de linha de comando, e não vale a pena gastar energia com isso agora. Esse caminho será usado em "Do Código ao Bytecode".

Exercício 2

Das nove fases e três trilhas do mapa, escolha a que mais te atrai e a que mais te intimida. Escreva uma frase sobre cada uma.

Ver resposta

✓ Resposta: É um exercício de reflexão, sem gabarito. É comum que os jogos ou o site completo sejam os mais atraentes, e que a concorrência ou "Por dentro da JVM" sejam os mais intimidantes. Registrar isso agora ajuda a manter o foco quando a fase difícil chegar. Ela é difícil de propósito, porque sustenta tudo o que vem depois.

Exercício 3

Calcule quantas aulas por semana você precisa fazer para concluir o núcleo (aulas 01 a 52) em 12 meses e em 6 meses, e o curso inteiro (01 a 78) nos mesmos prazos.

Ver resposta

✓ Resposta: Considerando 52 semanas no ano: o núcleo em 12 meses dá 52 ÷ 52 = 1 aula por semana, e em 6 meses (26 semanas) dá 52 ÷ 26 = 2 por semana. O curso inteiro em 12 meses dá 78 ÷ 52 = 1,5 aula por semana, ou três a cada duas semanas. Em 6 meses, 78 ÷ 26 = 3 por semana. Um caminho razoável é fazer o núcleo em ritmo de uma por semana e acelerar nas trilhas, que dependem menos de maturação.

Exercício 4

O projeto final do núcleo é um servidor HTTP. Sem pesquisar, descreva com suas palavras o que acontece quando você digita um endereço no navegador e aperta Enter. Guarde a resposta.

Ver resposta

✓ Resposta: Uma descrição razoável: o navegador descobre o endereço do computador que hospeda o site, abre uma conexão com ele, envia um pedido dizendo qual página quer, e o servidor responde com o conteúdo, que o navegador desenha na tela. Não importa se a sua descrição tem lacunas. Guarde-a e compare com o que você vai saber em "O Projeto Final Começa". A diferença entre as duas versões é uma boa medida do que o curso te ensinou.

Exercício 5

Pesquise e anote um sistema, jogo ou serviço que você usa no dia a dia e que foi feito, ao menos em parte, em Java.

Ver resposta

✓ Resposta: Há muitas respostas possíveis. O Minecraft, em sua edição original, é escrito em Java. Grande parte dos aplicativos Android foi escrita em Java. No Brasil, o programa da declaração do Imposto de Renda da Receita Federal é feito em Java. Serviços como a Netflix e o LinkedIn usam Java intensamente nos seus servidores. A próxima aula, "Uma Linguagem para Torradeiras que Conquistou o Mundo", conta como a linguagem chegou a todos esses lugares.

Comentários

Mais em Java

Comportamento como Valor — Lambdas e Interfaces Funcionais
Comportamento como Valor — Lambdas e Interfaces Funcionais

Como passar comportamento como argumento com expressões lambda em Java…

Ordem e Critério — Comparable, Comparator e Coleções Ordenadas
Ordem e Critério — Comparable, Comparator e Coleções Ordenadas

Ordenação em Java: Comparable e a ordem natural, o perigo de comparar…

Do Arquivo Solto ao Projeto — Pacotes, Classpath e JARs
Do Arquivo Solto ao Projeto — Pacotes, Classpath e JARs

Como organizar código Java em pacotes, usar import, compilar com javac -d…