- Conceitos básicos de programação
- Variáveis, tipos de dados e operadores
- Estruturas de controle (if/else, switch, loops)
- Funções/métodos
- Manipulação de strings
- Projeto prático: gerenciador de tarefas CLI
- Orientação a Objetos (OOP)
- Classes e objetos
- Encapsulamento, herança e polimorfismo
- Abstração
- Interfaces
- Projeto prático: Sistema simples (ex.: biblioteca com livros)
- Escolha um IDE/Editor
- IntelliJ IDEA (recomendado)
- Eclipse
- Visual Studio Code com extensão para Java
- Gerenciamento de Projetos
- aprenda Maven (foco inicial)
- conheça o Gradle (opcional)
- Controle de Versão
- Git e GitHub/GitLab/Bitbucket
- Fluxos como Git Flow
- Prática: Crie um repositório para seus projetos
- Aprenda a sintaxe moderna
- Recursos de Java 17 e Java 21 (LTS)
- Switch Expressions
- Text Blocks
- Record Classes
- Prática: Refatore projetos com esses recursos
- APIs principais
- Coleções (List, Set, Map)
- Streams e Lambdas
- Exceções (try-catch, custom exceptions)
- Prática: Programa com listas (ex.: ranking de filmes)
- Introdução à concorrência
- Threads básicas
- ExecutorService
- Boas práticas
- Código limpo
- Princípios SOLID
- Prática: Exercícios em HackerRank ou LeetCode
- Manipulação de arquivos e I/O
- File, BufferedReader, BufferedWriter
- NIO (Java 7+)
- Projeto prático: Programa que lê/escreve CSV ou TXT
- Serialização e deserialização
- JSON (com Jackson ou Gson)
- XML (opcional)
- Prática: Converta objetos em JSON
- Testes unitários
- JUnit 5
- Mockito
- Prática: Teste seus projetos anteriores
- Banco de dados básico
- JDBC
- Conexão com MySQL ou PostgreSQL
- Projeto prático: CRUD simples (ex.: cadastro de usuários)
- Desenvolvimento Web
- Spring Framework (Core, MVC, Boot)
- Quarkus ou Micronaut (após Spring)
- Jakarta EE (opcional, para legados)
- Projeto prático: API REST (ex.: blog ou e-commerce)
- Banco de Dados
- JPA e Hibernate
- Flyway ou Liquibase (migrações)
- Segurança
- Spring Security
- OAuth2 e JWT
- Configuração de HTTPS
- Prática: Adicione autenticação à API
- APIs
- RESTful APIs com Spring Boot
- OpenAPI/Swagger
- Prática: Documente sua API
- Testes
- JUnit 5 (avançado)
- Mockito
- Testcontainers
- Prática: Teste sua API completa
- Ambientes de containerização
- Docker
- Kubernetes (básico)
- Prática: Deploy de API em Docker
- CI/CD
- GitHub Actions
- Jenkins (opcional)
- Prática: Pipeline para sua aplicação
- Build e Deploy
- Cloud (AWS, GCP, Azure)
- Heroku ou Render
- Projeto prático: Publique sua API online
- Monitoramento
- Prometheus e Grafana
- Elastic Stack (opcional)
- Prática: Monitore sua API
- Design Patterns
- Singleton, Factory, Builder, Observer
- Prática: Aplique em projetos
- Arquitetura
- Monolitos x Microserviços
- Event-Driven Architecture
- DDD (Domain-Driven Design)
- Projeto prático: Refatore para microserviços
- Ferramentas de produtividade
- Lombok
- MapStruct
- Soft skills
- Comunicação em code reviews
- Leitura/reporte de bugs
- Prática: Contribua em projetos open-source
- Reactive Programming
- Project Reactor
- Spring WebFlux
- Projeto prático: API reativa
- Concorrência avançada
- CompletableFuture
- Parallel Streams
- Projeto Loom (se disponível)
- Desempenho e tuning
- JProfiler ou VisualVM
- Ajustes do JVM
- Prática: Analise desempenho
- Exploração de nichos
- Deep Java Library (DJL)
- Apache Spark com Java
-
Documentação oficial
-
Livros
- Effective Java (Joshua Bloch)
- Java Concurrency in Practice (Brian Goetz)
- Java: Como Programar (Deitel)
- Head First Java, 3rd Edition (O’Reilly)
- OCP Java SE 17 Study Guide (Exam 1Z0-829)
- OCP Java SE 17 Practice Tests (Exam 1Z0-829)
-
Comunidades
- Discord da comunidade
- GUJ
- Reddit: r/java
-
Cursos e plataformas
- Baeldung (tutoriais)
- Udemy, Pluralsight, Coursera
- HackerRank, LeetCode, Exercism
Pratique com projetos reais: Cada etapa deve incluir um projeto prático para consolidar o aprendizado.
Comece simples: Foque em Spring Boot para web e APIs, que domina o mercado.
Atualize-se: Acompanhe Java 23+ e tendências em blogs como InfoQ.
Networking: Participe de comunidades e eventos para aprender com outros devs.
Portfólio: Crie um GitHub com seus projetos para mostrar ao mercado.