Trilha prática de projetos desenvolvida para consolidar os fundamentos da linguagem Java de forma progressiva.
O repositório reúne projetos pequenos e independentes, onde cada projeto possui um conceito-alvo principal. A complexidade é introduzida gradualmente, evitando antecipar abstrações, frameworks ou ferramentas que não fazem parte do objetivo daquele estágio.
A proposta não é construir aplicações completas, mas utilizar problemas simples para transformar conceitos da linguagem em prática.
A trilha está organizada em fases, seguindo uma progressão de complexidade.
| Projeto | Tema principal |
|---|---|
| 01 — Conta Bancária | Classes, objetos, construtores e encapsulamento |
| 02 — Biblioteca | Composição |
| 03 — Funcionários | Herança, classe abstrata e polimorfismo |
| 04 — Pagamentos | Interfaces |
| 05 — Pedidos | enum e record |
| Projeto | Tema principal |
|---|---|
| 06 — Catálogo de Produtos | List / ArrayList |
| 07 — Sistema de Participantes | Set / HashSet |
| 08 — Agenda Telefônica | Map / HashMap |
| 09 — Fila de Atendimento | Queue |
| 10 — Histórico de Navegação | Deque |
| Projeto | Tema principal |
|---|---|
| 11 — Ranking de Jogadores | Comparable e Comparator |
| Projeto | Tema principal |
|---|---|
| 12 — Processador de Vendas | Generics, lambdas e functional interfaces |
| 13 — Relatório de Vendas | Stream API |
| 14 — Sistema de Configuração | Optional |
| 15 — Sistema de Reservas | java.time |
| 16 — Sistema Financeiro | BigDecimal |
| Projeto | Tema principal |
|---|---|
| 17 — Caixa Eletrônico | Exceptions customizadas |
| Projeto | Tema principal |
|---|---|
| 18 — Gerenciador de Tarefas | Path e Files |
| 19 — Importador de Dados JSON | Serialização e desserialização JSON |
Cada projeto é mantido como uma unidade independente dentro do monorepo.
java-learning/
├── README.md
├── TODO.md
│
├── projeto-01-conta-bancaria/
│ ├── README.md
│ └── src/
│ └── main/
│ └── java/
│ └── app/
│ ├── Main.java
│ ├── model/
│ ├── service/
│ └── exception/
│
├── projeto-02-biblioteca/
│ ├── README.md
│ └── src/
│ └── ...
│
└── projeto-19-importador-json/
├── README.md
└── src/
└── ...
A estrutura interna segue o mesmo padrão em todos os projetos para evitar que decisões de organização desviem o foco do estudo.
Responsável apenas pela interação com o usuário:
- menu;
- leitura de entrada;
- chamadas aos serviços.
A lógica de negócio não deve ficar no Main.
Contém as classes de domínio do projeto.
As classes devem concentrar seus próprios atributos e comportamentos, sem assumir responsabilidades que pertencem ao serviço.
Contém as regras de negócio que envolvem múltiplos objetos, coleções ou operações do sistema.
Utilizado para exceptions customizadas a partir do Projeto 17, quando fizerem parte do objetivo do projeto.
Os projetos seguem algumas restrições para manter o foco nos conceitos estudados.
- Um projeto possui um único conceito-alvo.
- O escopo de cada projeto é fechado.
- Conceitos secundários aparecem somente quando forem necessários para implementar o conceito-alvo.
- Os projetos são executados pelo terminal utilizando um menu numérico simples.
- Não são utilizados banco de dados, persistência real, frameworks, APIs, GUI ou testes automatizados, salvo quando explicitamente definidos pelo projeto.
- Cada projeto deve permanecer independente dos demais.
- A conclusão é determinada pelo atendimento completo do escopo definido.
- O tempo de desenvolvimento esperado é curto; caso um projeto cresça além do objetivo, seu escopo deve ser revisado em vez de receber novas funcionalidades.
Os primeiros projetos trabalham exclusivamente com dados em memória.
Persistência em arquivo é introduzida somente nos projetos específicos para I/O:
- Projeto 18: arquivos de texto utilizando
PatheFiles. - Projeto 19: leitura e escrita de JSON utilizando uma biblioteca dedicada.
A serialização nativa com Serializable não constitui um projeto da trilha. O conceito será estudado apenas para compreender suas características e limitações.
Um projeto só é considerado concluído quando seu escopo estiver completamente implementado e o conceito-alvo puder ser explicado a partir do próprio código.
A trilha prioriza compreensão e domínio dos fundamentos, não quantidade de funcionalidades.
Depois do Projeto 19, a próxima etapa será um projeto maior que combinará os conceitos estudados em uma aplicação única, introduzindo progressivamente arquitetura em camadas, persistência real, testes e, posteriormente, Spring Boot.
O planejamento completo, incluindo o escopo detalhado, conceitos-alvo, conceitos secundários, restrições e critérios específicos de conclusão de cada projeto, está mantido em:
O TODO.md representa a linha de base da trilha. Os READMEs individuais dos projetos documentam o objetivo e o escopo específico de cada etapa.