Repositório contendo todos os códigos, exercícios e projetos desenvolvidos durante o curso Maratona Java - Virado no Jiraya do canal DevDojo Academy.
Este é um dos cursos de Java mais completos disponíveis gratuitamente em português, criado pelo professor William Suane do canal DevDojo. O curso aborda desde os fundamentos básicos da linguagem até conceitos avançados de programação.
Duração: +200 aulas (aproximadamente 26 horas)
Nível: Iniciante a Avançado
Idioma: Português (BR)
Dominar a linguagem Java através de uma abordagem prática e completa, construindo uma base sólida para desenvolvimento de aplicações robustas e preparação para o mercado de trabalho.
-
Introdução à Linguagem Java
- História e características do Java
- JVM, JRE e JDK
- Primeiro programa em Java
- Comentários e convenções de código
-
Tipos Primitivos
- byte, short, int, long
- float, double
- char e boolean
- Casting e conversão de tipos
-
Operadores
- Aritméticos (+, -, *, /, %)
- Relacionais (==, !=, <, >, <=, >=)
- Lógicos (&&, ||, !)
- Atribuição e incremento
-
Estruturas Condicionais
- if, else if, else
- switch case
- Operador ternário
-
Estruturas de Repetição
- while
- do-while
- for
- for-each (enhanced for)
- break e continue
-
Classes e Objetos
- Definição de classes
- Atributos e métodos
- Construtores
- Sobrecarga de métodos e construtores
- This e referências
-
Modificadores de Acesso
- public, private, protected
- default (package-private)
- Encapsulamento
-
Métodos
- Passagem de parâmetros
- Return
- Métodos estáticos
- Varargs
-
Associação de Classes
- Associação unidirecional e bidirecional
- Agregação
- Composição
-
Herança
- Extends
- Super
- Sobrescrita de métodos (@Override)
- Modificador final
-
Polimorfismo
- Polimorfismo de sobrescrita
- Polimorfismo de sobrecarga
- Casting de objetos
-
Classes Abstratas
- Métodos abstratos
- Classes abstratas vs concretas
-
Interfaces
- Implementação de interfaces
- Métodos default e static (Java 8+)
- Interfaces funcionais
-
String
- Imutabilidade
- Métodos principais
- StringBuilder e StringBuffer
- Expressões regulares
-
Wrappers
- Integer, Double, Boolean, etc.
- Autoboxing e Unboxing
-
Datas
- Date e Calendar (legado)
- LocalDate, LocalTime, LocalDateTime
- ZonedDateTime
- Formatação e parsing
-
Formatação
- NumberFormat
- DateTimeFormatter
- Locale
-
Arrays
- Arrays unidimensionais e multidimensionais
- Classe Arrays
- Ordenação e busca
-
List
- ArrayList
- LinkedList
- Vector
- Métodos principais
-
Set
- HashSet
- LinkedHashSet
- TreeSet
-
Map
- HashMap
- LinkedHashMap
- TreeMap
- Hashtable
-
Queue e Deque
- PriorityQueue
- ArrayDeque
-
Iterators
- Iterator
- ListIterator
-
Comparators e Comparable
- Ordenação customizada
- Comparator vs Comparable
-
Tipos de Exceções
- Checked exceptions
- Unchecked exceptions
- Errors
-
Tratamento de Exceções
- try-catch-finally
- try-with-resources
- Multi-catch
-
Exceções Customizadas
- Criação de exceções próprias
- Boas práticas
-
Throw e Throws
- Lançamento de exceções
- Propagação de exceções
- Inner Classes
- Nested classes
- Local classes
- Anonymous classes
- Static nested classes
-
Introdução a Generics
- Type parameters
- Generic classes
- Generic methods
-
Bounded Types
- Upper bounded wildcards
- Lower bounded wildcards
- Unbounded wildcards
-
Type Erasure
- Como funciona
- Limitações
-
File
- Manipulação de arquivos e diretórios
- FileWriter e FileReader
- BufferedWriter e BufferedReader
-
Streams de Bytes
- FileInputStream e FileOutputStream
- BufferedInputStream e BufferedOutputStream
-
Serialização
- ObjectOutputStream
- ObjectInputStream
- Serializable interface
-
NIO (New I/O)
- Path e Paths
- Files
- DirectoryStream
-
Introdução ao JDBC
- Drivers JDBC
- Conexão com banco de dados
- DriverManager
-
Operações CRUD
- Statement
- PreparedStatement
- CallableStatement
-
ResultSet
- Navegação em resultados
- Tipos de ResultSet
- Atualização através do ResultSet
-
Transações
- Commit e Rollback
- Controle de transações
-
Connection Pool
- Boas práticas
-
Conceitos Básicos
- Criação de threads
- Thread class vs Runnable interface
- Estados de uma thread
-
Sincronização
- synchronized
- volatile
- Deadlock
-
Métodos de Controle
- sleep()
- join()
- yield()
- wait(), notify(), notifyAll()
-
Variáveis Atômicas
- AtomicInteger, AtomicLong, etc.
- Operações atômicas
-
Locks
- ReentrantLock
- ReadWriteLock
- Conditions
-
Coleções Concorrentes
- ConcurrentHashMap
- CopyOnWriteArrayList
- BlockingQueue
-
Executor Framework
- ExecutorService
- ThreadPoolExecutor
- ScheduledExecutorService
- Optional
- Criação e uso
- Métodos principais
- Boas práticas
-
Expressões Lambda
- Sintaxe
- Interfaces funcionais
- Method references
-
Stream API
- Criação de streams
- Operações intermediárias (filter, map, sorted, etc.)
- Operações terminais (collect, forEach, reduce, etc.)
- Streams paralelos
-
Collectors
- toList, toSet, toMap
- groupingBy
- partitioningBy
- joining
- Java: JDK 17+ (LTS)
- IDE: IntelliJ IDEA / Eclipse / VS Code
- Build Tool: Maven (opcional)
- Banco de Dados: MySQL (para módulos de JDBC)
- Controle de Versão: Git
Antes de começar, você precisa ter instalado:
- JDK 17+
- IntelliJ IDEA ou Eclipse
- Git
- MySQL (opcional, para exercícios de JDBC)
git clone https://github.com/DiegoLimaInCode/CursoDevDojo_Java.git
cd CursoDevDojo_Java- IntelliJ IDEA: File → Open → Selecione a pasta do projeto
- Eclipse: File → Import → Existing Projects into Workspace
Navegue até a pasta src e execute as classes principais de cada módulo.
CursoDevDojo_Java/
│
├── pasta/ # Recursos e arquivos auxiliares
├── src/ # Código-fonte das aulas
│ ├── fundamentos/ # Módulo 1: Fundamentos
│ ├── orientacaoaobjetos/ # Módulo 2: OO
│ ├── classesutilitarias/ # Módulo 3: Classes Utilitárias
│ ├── collections/ # Módulo 4: Collections
│ ├── excecoes/ # Módulo 5: Exceções
│ ├── classesinternas/ # Módulo 6: Inner Classes
│ ├── generics/ # Módulo 7: Generics
│ ├── io/ # Módulo 8: I/O
│ ├── jdbc/ # Módulo 9: JDBC
│ ├── threads/ # Módulo 10: Threads
│ ├── concorrencia/ # Módulo 11: Concorrência
│ └── lambdas/ # Módulo 13: Lambdas e Streams
│
├── .gitignore
├── CursoDevDojo_Java.iml
├── file.txt
└── README.md
- Pratique regularmente: Código não se aprende apenas assistindo, é preciso praticar
- Faça seus próprios projetos: Aplique o conhecimento em projetos pessoais
- Leia código de outros: Analise código de projetos open source
- Participe de comunidades: Faça perguntas e ajude outros desenvolvedores
- Mantenha-se atualizado: Java está sempre evoluindo, acompanhe as novidades
Contribuições são sempre bem-vindas! Se você encontrou algum erro ou quer adicionar algum exemplo:
- Faça um Fork do projeto
- Crie uma Branch para sua feature (
git checkout -b feature/NovaFeature) - Commit suas mudanças (
git commit -m 'Adiciona nova feature') - Push para a Branch (
git push origin feature/NovaFeature) - Abra um Pull Request
Este projeto foi desenvolvido para fins educacionais, seguindo o conteúdo do curso gratuito Maratona Java - Virado no Jiraya do DevDojo Academy.
Diego Lima
- GitHub: @DiegoLimaInCode
- William Suane e toda equipe DevDojo Academy pela disponibilização gratuita de conteúdo de altíssima qualidade
- Comunidade Java brasileira pela constante troca de conhecimento
Desenvolvido com ☕ durante o Curso DevDojo - Maratona Java