Trilha de estudo
Trilha Java: tudo o que estudar, tópico por tópico
Avaliação abrangente de Java cobrindo fundamentos da linguagem, APIs principais, concorrência, internos da JVM, frameworks e recursos modernos do Java.
Resposta curta
Para aprender Java, percorra 6 módulos e 33 tópicos na ordem em que um apoia o próximo. Comece por Fundamentos da Linguagem e siga para Java Essencial e Concorrência. Use o mapa como checklist, ou meça seu nível e estude só o que falta.
O que você vai estudar
Os tópicos estão agrupados por módulo. Abra um para ver os objetivos e os conceitos-chave.
1 · Fundamentos da Linguagem5 tópicos
Tipos e Operadores
Tipos primitivos, classes wrapper, autoboxing, promoção de tipos e precedência de operadores
Objetivos
- Distinguir tipos primitivos de classes wrapper
- Prever promoção de tipos e comportamento de autoboxing
Conceitos-chave
- tipos primitivos
- classes wrapper
- autoboxing
- promoção de tipos
- precedência de operadores
- palavra-chave var
Fluxo de Controle
If/else, switch expressions, loops, enhanced for, pattern matching e labeled breaks
Objetivos
- Utilizar switch expressions modernos corretamente
- Prever o fluxo de execução de loops e ramificações
Conceitos-chave
- switch expressions
- pattern matching
- enhanced for
- labeled break
- avaliação de curto-circuito
Fundamentos de OOP
Classes, interfaces, herança, polimorfismo, sealed classes e records
Objetivos
- Aplicar herança e polimorfismo corretamente
- Escolher entre interfaces, classes abstratas e records
Conceitos-chave
- herança
- polimorfismo
- interfaces
- classes abstratas
- sealed classes
- records
- encapsulamento
Tratamento de Exceções
Exceções checked vs unchecked, try-with-resources, exceções personalizadas e boas práticas
Objetivos
- Distinguir exceções checked de unchecked
- Utilizar try-with-resources para gerenciamento seguro de recursos
Conceitos-chave
- exceções checked
- exceções unchecked
- try-with-resources
- exceções personalizadas
- encadeamento de exceções
- AutoCloseable
Documentação
Sintaxe Javadoc, tags, package-info, geração de documentação HTML e exemplos de código na documentação
Objetivos
- Escrever Javadoc completo com tags apropriadas para APIs públicas
- Gerar e navegar documentação HTML a partir do código-fonte
Conceitos-chave
- sintaxe Javadoc
- tag @param
- tag @return
- tag @throws
- package-info.java
- geração de documentação HTML
- exemplos de código na documentação
- @see e @link
2 · Java Essencial5 tópicos
Framework de Collections
Implementações de List, Set e Map, iteração, Comparable/Comparator e utilitário Collections
Objetivos
- Escolher a coleção correta para um determinado cenário
- Compreender a complexidade de tempo das operações comuns
Conceitos-chave
- ArrayList
- LinkedList
- HashMap
- TreeMap
- HashSet
- Comparable
- Comparator
- utilitário Collections
Generics
Parâmetros de tipo, tipos limitados, wildcards, erasure de tipos e métodos genéricos
Objetivos
- Aplicar PECS para uso de wildcards
- Explicar as implicações do erasure de tipos
Conceitos-chave
- parâmetros de tipo
- tipos limitados
- wildcards upper/lower
- erasure de tipos
- métodos genéricos
- princípio PECS
I/O e NIO
Streams, readers/writers, Path API, channels, buffers e monitoramento de arquivos
Objetivos
- Escolher entre IO e NIO para diferentes casos de uso
- Utilizar a Path API para operações modernas com arquivos
Conceitos-chave
- InputStream/OutputStream
- Reader/Writer
- BufferedReader
- Classe Files (NIO)
- Path API
- Channels e Buffers
- try-with-resources
- serialização
Strings e Texto
Imutabilidade de String, StringBuilder, text blocks, String pool e formatação
Objetivos
- Explicar a imutabilidade de String e o comportamento do pool
- Escolher entre String e StringBuilder
Conceitos-chave
- imutabilidade de String
- String pool
- StringBuilder
- text blocks
- String.format
- intern()
Programação Funcional
Expressões lambda, Stream API, interfaces funcionais, referências a métodos e Optional
Objetivos
- Escrever pipelines de Stream fluentes com operações terminais adequadas
- Escolher entre estilo imperativo e funcional para legibilidade e desempenho
Conceitos-chave
- expressões lambda
- Stream API
- interfaces funcionais
- referências a métodos
- classe Optional
- Collectors
- streams paralelos
- funções puras
3 · Concorrência4 tópicos
Fundamentos de Threads
Ciclo de vida de threads, Runnable, Callable, ExecutorService e pools de threads
Objetivos
- Criar e gerenciar threads usando ExecutorService
- Explicar os estados do ciclo de vida de threads
Conceitos-chave
- ciclo de vida de threads
- Runnable
- Callable
- ExecutorService
- pools de threads
- Future
Synchronized e Locks
Palavra-chave synchronized, ReentrantLock, ReadWriteLock, prevenção de deadlock e volatile
Objetivos
- Identificar e prevenir cenários de deadlock
- Escolher entre synchronized e locks explícitos
Conceitos-chave
- synchronized
- ReentrantLock
- ReadWriteLock
- volatile
- deadlock
- ordenação de locks
- happens-before
Coleções Concorrentes
ConcurrentHashMap, CopyOnWriteArrayList, BlockingQueue e variáveis atômicas
Objetivos
- Selecionar a coleção concorrente correta para um cenário
- Explicar CAS e abordagens lock-free
Conceitos-chave
- ConcurrentHashMap
- CopyOnWriteArrayList
- BlockingQueue
- AtomicInteger
- operações CAS
- algoritmos lock-free
CompletableFuture
Composição assíncrona, thenApply/thenCompose, tratamento de exceções e combinação de futures
Objetivos
- Compor pipelines assíncronos com CompletableFuture
- Tratar erros em cadeias assíncronas
Conceitos-chave
- CompletableFuture
- thenApply
- thenCompose
- allOf
- exceptionally
- pipelines assíncronos
4 · JVM e Desempenho4 tópicos
Modelo de Memória da JVM
Heap, stack, metaspace, áreas de memória, JMM happens-before e vazamentos de memória
Objetivos
- Descrever as áreas de memória da JVM e suas funções
- Identificar causas comuns de vazamentos de memória
Conceitos-chave
- heap
- stack
- metaspace
- geração young/old
- JMM
- happens-before
- vazamentos de memória
Coleta de Lixo
Algoritmos de GC, G1, ZGC, Shenandoah, flags de tuning e análise de logs de GC
Objetivos
- Escolher um algoritmo de GC para diferentes cargas de trabalho
- Interpretar logs de GC para diagnosticar problemas
Conceitos-chave
- Serial GC
- Parallel GC
- G1
- ZGC
- Shenandoah
- flags de tuning de GC
- análise de logs de GC
Profiling e Otimização
JFR, async-profiler, heap dumps, thread dumps e micro-benchmarking com JMH
Objetivos
- Utilizar ferramentas de profiling para encontrar gargalos de desempenho
- Escrever benchmarks JMH corretos
Conceitos-chave
- JFR
- async-profiler
- heap dump
- thread dump
- JMH
- flame graphs
- profiling de alocação
Carregamento de Classes
Hierarquia de ClassLoader, modelo de delegação, loaders personalizados e sistema de módulos (JPMS)
Objetivos
- Explicar o modelo de delegação do classloader
- Compreender os limites de módulos do JPMS
Conceitos-chave
- bootstrap classloader
- application classloader
- modelo de delegação
- classloader personalizado
- módulos JPMS
- classpath vs modulepath
5 · Frameworks e Ferramentas5 tópicos
Spring Boot
Autoconfiguração, injeção de dependência, ciclo de vida de beans, profiles e actuator
Objetivos
- Explicar a mecânica de autoconfiguração do Spring Boot
- Configurar beans e profiles corretamente
Conceitos-chave
- autoconfiguração
- injeção de dependência
- ciclo de vida de beans
- profiles
- actuator
- starters
- @Configuration
JPA e Hibernate
Mapeamento de entidades, relacionamentos, JPQL, problema N+1, níveis de cache e lazy loading
Objetivos
- Prevenir problemas de consulta N+1
- Configurar relacionamentos de entidades corretamente
Conceitos-chave
- mapeamento de entidades
- @OneToMany/@ManyToOne
- JPQL
- problema N+1
- cache de primeiro/segundo nível
- lazy vs eager
- dirty checking
Testes e JUnit
JUnit 5, Mockito, test slices, testes de integração e práticas de TDD
Objetivos
- Escrever testes unitários e de integração eficazes
- Utilizar test slices para testes Spring rápidos
Conceitos-chave
- JUnit 5
- Mockito
- @SpringBootTest
- test slices
- Testcontainers
- TDD
- bibliotecas de asserção
Ferramentas de Build
Maven, Gradle, gerenciamento de dependências, projetos multimódulo e integração CI/CD
Objetivos
- Configurar builds multimódulo corretamente
- Gerenciar conflitos de dependências de forma eficaz
Conceitos-chave
- ciclo de vida do Maven
- estrutura do pom.xml
- scripts de build Gradle
- Gradle vs Maven
- gerenciamento de dependências
- plugins
- projetos multimódulo
- fundamentos de Bazel
Logging
Fachada SLF4J, configuração de Logback e Log4j2, níveis de logging, MDC e logging estruturado
Objetivos
- Configurar frameworks de logging com níveis e appenders apropriados
- Utilizar MDC e logging estruturado para observabilidade em produção
Conceitos-chave
- fachada SLF4J
- configuração do Logback
- Log4j2
- níveis de logging
- contexto MDC
- logging estruturado
- rotação de logs
- impacto no desempenho
6 · Java Especialista10 tópicos
Internos da JVM
Bytecode, compilação JIT, inlining, análise de escape e intrinsics
Objetivos
- Explicar os níveis de compilação JIT e otimizações
- Prever quando a análise de escape se aplica
Conceitos-chave
- bytecode
- compilação JIT
- compiladores C1/C2
- inlining
- análise de escape
- intrinsics
- compilação em camadas
Padrões de Microsserviços
Circuit breaker, saga, API gateway, service mesh e observabilidade em ecossistemas Java
Objetivos
- Projetar microsserviços resilientes com padrões adequados
- Implementar rastreamento distribuído e observabilidade
Conceitos-chave
- circuit breaker
- padrão saga
- API gateway
- service mesh
- rastreamento distribuído
- Resilience4j
- Micrometer
Virtual Threads
Project Loom, virtual threads vs platform threads, concorrência estruturada e pinning
Objetivos
- Explicar o agendamento de virtual threads e pinning
- Migrar código bloqueante para virtual threads
Conceitos-chave
- virtual threads
- concorrência estruturada
- carrier threads
- pinning
- thread-per-request
- StructuredTaskScope
GraalVM e Native Image
Compilador GraalVM, native image, substrate VM, configuração de reflection e otimização de startup
Objetivos
- Construir native images e lidar com limitações de reflection
- Comparar trade-offs entre AOT e JIT
Conceitos-chave
- GraalVM
- native image
- substrate VM
- configuração de reflection
- compilação AOT
- closed-world assumption
- tempo de startup
Internos da JVM e Tuning de GC
Compreensão do modelo de memória da JVM, coletores de lixo (G1, ZGC, Shenandoah) e tuning para cargas de trabalho em produção
Objetivos
- Ajustar regiões de heap do G1GC e metas de pausa para serviços sensíveis a latência
- Interpretar saída de logs de GC para diagnosticar picos de pausa
Conceitos-chave
- regiões de heap
- G1GC
- ZGC
- Shenandoah
- tuning de pausas de GC
- safepoints
- análise de logs de GC
- flags -XX
Concorrência Estruturada e ScopedValues
Uso das APIs de concorrência estruturada do Java 21 (StructuredTaskScope) e ScopedValue para propagação de contexto em ambientes de virtual threads
Objetivos
- Utilizar StructuredTaskScope.ShutdownOnFailure para distribuir subtarefas com segurança
- Substituir variáveis thread-local por ScopedValue em código com virtual threads
Conceitos-chave
- StructuredTaskScope
- ShutdownOnFailure
- ShutdownOnSuccess
- ScopedValue
- propagação de contexto
- tempo de vida da árvore de tarefas
- semântica de cancelamento
Modelo de Memória Java e Happens-Before
Compreensão do Modelo de Memória Java, relacionamentos happens-before, semântica de volatile e padrões de publicação segura
Objetivos
- Explicar a garantia happens-before para blocos synchronized e escritas volatile
- Identificar condições de corrida de dados e aplicar padrões corretos de publicação segura
Conceitos-chave
- happens-before
- volatile
- synchronized
- campos final
- publicação segura
- visibilidade de memória
- JSR-133
- AtomicXxx
Programação Reativa com Project Reactor
Construção de streams reativos com Project Reactor (Flux/Mono), backpressure, schedulers e tratamento de erros
Objetivos
- Implementar um pipeline de dados reativo com tratamento de erros e backpressure
- Escolher entre flatMap, concatMap e switchMap para diferentes casos de uso
Conceitos-chave
- Flux
- Mono
- backpressure
- schedulers
- flatMap vs concatMap
- hot vs cold publishers
- StepVerifier
- WebFlux
Manipulação de Bytecode (ASM/ByteBuddy)
Instrumentação de aplicações Java em nível de bytecode usando ASM ou ByteBuddy para agentes APM e proxies dinâmicos
Objetivos
- Instrumentar um método com ASM para registrar métricas de invocação
- Construir um JavaAgent usando ByteBuddy Advice para interceptar chamadas de métodos
Conceitos-chave
- ClassVisitor
- MethodVisitor
- ByteBuddy
- java.lang.instrument
- Advice
- proxy dinâmico
- retransformação de classes
Arquitetura de Segurança Java
Security manager do Java, JAAS, APIs de criptografia JCA/JCE, práticas de codificação segura e hardening de desserialização
Objetivos
- Fortalecer a desserialização Java com ObjectInputFilter/SerialFilter
- Utilizar APIs JCA/JCE corretamente para criptografia, assinatura e gerenciamento de chaves
Conceitos-chave
- SecurityManager
- JAAS
- JCA/JCE
- KeyStore
- gadgets de desserialização
- SerialFilter
- injeção JNDI
- secure random
Níveis: Júnior, Pleno, Sênior e Especialista
Explique com suas palavras
Corrigido por IA · sem cadastro · 1 perguntaSem alternativas para chutar: você escreve, a IA corrige com a rubrica do tópico e diz em que nível sua resposta está.
Já estuda Java?
A avaliação mede tópico por tópico, e o plano pula o que você já sabe.
Aberto para ler. A conta só é necessária para ser medido.
Perguntas frequentes
Por onde começar a estudar Java?
Comece por Fundamentos da Linguagem: Tipos e Operadores, Fluxo de Controle e Fundamentos de OOP. O mapa ordena os tópicos pelo que depende de quê, então cada um prepara o seguinte.
Quanto tempo leva uma avaliação completa de Java?
Uma avaliação completa desta trilha leva cerca de 45 minutos. O tempo de estudo depende de onde você começa; o diagnóstico mostra quais tópicos você pode pular.
Preciso de conta para usar esta página?
Não. O mapa, os objetivos e os conceitos-chave são abertos. A conta só é necessária para ser medido, ver seu gap por tópico e receber um plano.