Skip to content

Latest commit

 

History

History
197 lines (155 loc) · 6.51 KB

File metadata and controls

197 lines (155 loc) · 6.51 KB

Java - Aprendizado e Domínio

Objetivo do Aprendizado

Java é uma linguagem orientada a objetos, fortemente tipada e multiplataforma que roda na Java Virtual Machine (JVM). Estou estudando Java com o objetivo de:

  • Desenvolvimento Back-end Robusto: Criar servidores, APIs REST e sistemas distribuídos escaláveis
  • Enterprise Development: Trabalhar em aplicações corporativas de grande escala
  • Arquitetura de Software: Dominar princípios SOLID, design patterns e arquitetura em camadas
  • Spring Boot & Ecossistema: Aproveitar o ecossistema Java moderno com Spring Framework
  • Carreira em Backend: Ser competitivo em posições de desenvolvedor backend/full-stack em empresas
  • Persistência de Dados: Integração com bancos de dados via JPA, Hibernate e SQL

Foco Principal: Backend com Spring Boot, APIs REST, microserviços e persistência de dados


Principais Áreas de Estudo

1. Básico (/basico)

Fundamentos essenciais de Java e conceitos iniciais

Tópicos:

  • Sintaxe básica e estrutura de programa
  • Tipos primitivos (int, long, float, double, boolean, char)
  • Variáveis, constantes e escopo
  • Operadores (aritméticos, lógicos, relacionais)
  • Estruturas de controle (if/else, switch, loops)
  • Arrays e coleções básicas
  • Strings e manipulação de texto
  • Input/Output (I/O) básico
  • Exceções e tratamento de erros
  • Métodos e funções

Aplicação Prática:

  • Escrever programas console simples
  • Automatizar tarefas e scripts
  • Entender fluxo de controle em aplicações
  • Base para desenvolvimento orientado a objetos

2. Estruturas de Dados (/estrutura_de_dados)

Implementação de estruturas clássicas em Java

Tópicos:

  • Arrays e ArrayList
  • LinkedList e listas encadeadas
  • Stacks (pilhas) e Queues (filas)
  • Trees (Binary Trees, BST, AVL, Red-Black Trees)
  • Graphs e algoritmos de traversal (DFS, BFS)
  • Hash tables e HashMap
  • Sets (HashSet, TreeSet)
  • Heap e Priority Queues
  • Algoritmos de ordenação e busca
  • Análise de complexidade (Big O)

Aplicação Prática:

  • Otimizar performance de aplicações Java
  • Implementar caches eficientes
  • Resolver problemas complexos de dados
  • Preparação para entrevistas técnicas
  • Base para algoritmos em sistemas distribuídos

3. Programação Orientada a Objetos (OOP) (/oop)

Princípios OOP aplicados em Java (donde Java nasce)

Tópicos:

  • Classes, atributos e métodos
  • Construtores e inicialização
  • Herança e polimorfismo
  • Encapsulamento (public, private, protected)
  • Interfaces e classes abstratas
  • Packages e modularização
  • Static vs instance members
  • Composição vs herança
  • Design Patterns (Singleton, Factory, Observer, Strategy, Decorator, etc.)
  • SOLID Principles

Aplicação Prática:

  • Arquitetar aplicações escaláveis e mantíveis
  • Criar frameworks e bibliotecas reutilizáveis
  • Facilitar refatoração e testes
  • Implementar padrões de design em produção

4. Spring Boot & Frameworks (/framework/springboot)

Framework principal para desenvolvimento backend em Java

Tópicos:

  • Configuração e setup do projeto
  • Dependency Injection (DI) e Inversion of Control (IoC)
  • Spring MVC e controladores
  • REST APIs com Spring Web
  • Spring Data JPA para persistência
  • Spring Security para autenticação e autorização
  • Spring Boot Actuator para monitoramento
  • Properties e profiles de ambiente
  • Exception handling global
  • Validação de dados
  • Logging e debugging
  • Testing (JUnit, Mockito)
  • Docker e containerização
  • Deployment em produção

Aplicação Prática:

  • Criar APIs REST escaláveis
  • Implementar autenticação e autorização
  • Integração com bancos de dados
  • Monitoramento e logging de aplicações
  • Deploy em nuvem (AWS, GCP, Azure)

Relacionamento com Outras Linguagens

Java → TypeScript/JavaScript (Conceitual)

Java (Backend, Enterprise)
         ↓
    TypeScript (Frontend, Node.js Backend)
  • Similitude: Ambas são OOP, mas JavaScript é dinamicamente tipado
  • Full-stack: Java no backend + TypeScript/React no frontend
  • APIs: Java backend fornece APIs REST que JavaScript consome

Java ↔ Python (Alternativas)

  • Java para sistemas críticos, performance e escala
  • Python para scripting, data science e prototipagem rápida
  • Java é mais verbose, Python é mais conciso

Java → SQL (Integração Obrigatória)

  • JPA/Hibernate mapeia objetos Java para tabelas SQL
  • Spring Data simplifica queries
  • Conhecimento de SQL é essencial em Java backend

Java ↔ Rust (Performance Crítica)

  • Java é interpretado (JVM), Rust é compilado
  • Para sistemas ultra-críticos em performance, usa-se Rust
  • Java é mais produtivo, Rust tem controle maior sobre recursos

Motivação Pessoal

Estou estudando Java porque:

  1. Demanda de Mercado: Java continua sendo a linguagem mais usada em empresas grandes e sistemas legados
  2. Enterprise Scale: Java domina em sistemas distribuídos, microserviços e arquitetura corporativa
  3. Spring Boot: Framework moderno que torna Java desenvolvimento ágil e produtivo
  4. Estabilidade e Performance: JVM oferece excelente performance, garbage collection automático e segurança
  5. Carreira Sólida: Desenvolvedor Java backend é sempre demandado e bem remunerado
  6. Ecosistema Maduro: Bibliotecas e frameworks consolidados para qualquer caso de uso
  7. Full-stack Possibilities: Java backend + TypeScript frontend para desenvolvedor completo
  8. Conhecimento Transferível: Princípios OOP aprendidos em Java aplicam-se a todas linguagens

Meta: Dominar Spring Boot, desenvolvimento de APIs REST profissionais e arquitetura de sistemas escaláveis em Java.


Estrutura de Pastas

Java/
├── README.md (este arquivo)
├── basico/
│   ├── README.md
│   └── introducao/
│       └── README.md
├── estrutura_de_dados/
│   └── (implementações de estruturas clássicas)
├── oop/
│   └── (princípios e padrões OOP)
└── framework/
    └── springboot/
        ├── (projetos Spring Boot)
        ├── (APIs REST)
        ├── (persistência JPA)
        └── (autenticação e segurança)

Recursos Úteis