Repositório curado com exemplos práticos, arquitetura limpa e conceitos fundamentais do ecossistema Java. Desenvolvido durante os estudos da Pós-Graduação em Engenharia de Software e transição profissional para o mercado de desenvolvimento backend.
🎯 Objetivo: Demonstrar não apenas a sintaxe da linguagem, mas as nuances profundas que diferenciam um engenheiro de software: ciclo de vida de threads na JVM, atomicidade de instruções no processador, integridade de dados concorrentes, segurança de conexões relacionais e polimorfismo.
Estudos_Java/
├── 01-concorrencia-multithreading/
│ ├── ThreadStatesDemo.java # Ciclo de vida completo dos 6 estados da JVM
│ └── RaceConditionDemo.java # Simulação de perda de dados e correções com Mutex e CAS
│
├── 02-banco-de-dados-jdbc/
│ ├── .env.example # Modelo de variáveis de ambiente (Credenciais seguras)
│ └── DatabaseConnectionDemo.java # Conexão com PostgreSQL, PreparedStatement e Metadados
│
├── 03-io-e-serializacao/
│ ├── Aluno.java # Entidade Serializable (serialVersionUID explícito)
│ ├── SerializacaoObjetosDemo.java # ObjectOutputStream e ObjectInputStream com Try-with-resources
│ └── ArquivosBinariosDataDemo.java# Manipulação de tipos primitivos binários e tratamento de EOF
│
├── 04-programacao-orientada-a-objetos/
│ ├── Conta.java # Classe Abstrata base com regras de negócio encapsuladas
│ ├── ContaCorrente.java # Subclasse com cheque especial e taxas
│ ├── ContaPoupanca.java # Subclasse com rendimento e saque protegido
│ └── BancoAppDemo.java # Demonstração de Despacho Dinâmico (Polimorfismo em runtime)
│
└── 05-colecoes-e-estruturas-dados/
├── ColecoesComparacaoDemo.java # Análise prática: ArrayList vs LinkedList vs HashSet vs TreeSet
└── OrdenacaoComparatorDemo.java # Ordenação customizada com Comparable, Comparator e Iterator
-
Os 6 Estados Oficiais da JVM (
Thread.State): Demonstração em código da transição entreNEW,RUNNABLE,TIMED_WAITING,WAITING,BLOCKEDeTERMINATED. -
Desmistificação de
count++: Análise em nível de Bytecode comprovando que o incremento não é atômico (ILOAD$\rightarrow$ IADD$\rightarrow$ ISTORE), gerando condições de corrida em concorrência desprotegida. -
Soluções Comparadas:
-
synchronized: Exclusão mútua através de Monitor Locks intrínsecos. -
AtomicInteger: Abordagem moderna Lock-Free utilizando instruções diretas da CPU via CAS (Compare-And-Swap).
-
- Segurança em Primeiro Lugar: Isolamento completo de senhas e dados sensíveis via
.env(nunca expostos no repositório). - Prevenção contra SQL Injection: Uso estrito de
PreparedStatementcom parâmetros indexados (?). - Clean Code: Gestão de conexões e cursores com
try-with-resources, eliminando memory leaks e conexões zumbis no banco.
- Serialização Binária: Persistência de grafos de objetos na memória para arquivos físicos utilizando
ObjectOutputStream. - Tratamento Seguro de Streams: Demonstração de fechamento de buffers de I/O e detecção de término de arquivos binários com
EOFException.
- Princípio da Responsabilidade Única (SRP): Separação estrita entre contas e clientes.
- Polimorfismo Real: Execução de listas genéricas
List<Conta>onde cada chamada de saque ou extrato executa a lógica especializada da subclasse em tempo de execução (Dynamic Method Dispatch). - Java Moderno: Uso de Pattern Matching para
instanceof(Java 16+).
-
Trade-offs de Engenharia: Quando escolher busca rápida
$O(1)$ (ArrayList), inserção nas pontas (LinkedList), unicidade com hashing (HashSet) ou ordenação natural$O(\log n)$ com árvore Red-Black (TreeSet). -
Iteração Segura: Prevenção do erro
ConcurrentModificationExceptionutilizandoIterator.remove().
Todos os módulos utilizam apenas a biblioteca padrão do Java (JDK 17+) e podem ser compilados e executados diretamente pelo terminal.
git clone https://github.com/Jklimaitis/Estudos_Java.git
cd Estudos_Java# Ciclo de vida e estados das threads (Execução direta no Java 11+)
java 01-concorrencia-multithreading/ThreadStatesDemo.java
# Simulação de Race Condition na bilheteria
java 01-concorrencia-multithreading/RaceConditionDemo.javajava 02-banco-de-dados-jdbc/DatabaseConnectionDemo.javajavac 03-io-e-serializacao/*.java
java -cp 03-io-e-serializacao SerializacaoObjetosDemo
java 03-io-e-serializacao/ArquivosBinariosDataDemo.javajavac 04-programacao-orientada-a-objetos/*.java
java -cp 04-programacao-orientada-a-objetos BancoAppDemojava 05-colecoes-e-estruturas-dados/ColecoesComparacaoDemo.java
java 05-colecoes-e-estruturas-dados/OrdenacaoComparatorDemo.javaJonas Klimaitis
- Estudante de Pós-Graduação em Engenharia de Software
- Foco: Python, Django, Java, Bancos de Dados Relacionais, Arquitetura de Software e Concorrência.
- GitHub: @Jklimaitis
Licença MIT — Livre para uso e consulta para fins educacionais e profissionais.