FJ-16 | Laboratório Java com Testes, XML e Design Patterns
[ 20 horas aula ]
O FJ-16 é um laboratório de desenvolvimento em Java focado em boas práticas de programação. Durante o curso, desenvolvemos uma aplicação de análise da bolsa de valores, que busca o histórico de uma base XML e exibe gráficos de indicadores e cotações. Nesse contexto, abordamos testes unitários com JUnit, XML com XStream, gráficos com JFreeChart, interfaces Desktop com Swing e ferramentas de build com Ant e Maven.
Há bastante foco nas boas práticas como refatorações, design patterns, Test Driven Development (TDD) e XP, além de recursos avançados da linguagem Java como reflection.
É indicado para quem acaba de fazer o FJ-11 e deseja aplicar os conceitos aprendidos além de se aprofundar em tópicos mais avançados e práticos.
Esse curso faz parte da Formação Consultor Java junto com o FJ-11 e o FJ-21.
A apostila do FJ-16 está disponível para download no Caelum Alumni para todos os alunos e ex-alunos de qualquer curso da Caelum.
Pré-requisitos: Curso FJ-11 ou equivalente com conhecimento de Orientação a Objetos e Java SE básico.
Posts relacionados no blog
- Lançamento do livro Introdução à Arquitetura e Design de Software
- Trabalhando com coleções aninhadas: Maps de Maps de Lists de Lists
- Como não aprender orientação a objetos: o excesso de ifs
- As três principais teclas de atalho do Eclipse
- Facilitando a manutenção dos testes ao diminuir o acoplamento com o código
- Modelando as classes do FJ-16 em Scala
- Uma introdução a scripts de build
- Arredondamento no Java: do double ao BigDecimal
A opinião de quem fez o FJ-16
Depoimento: "O curso de Laboratório Java com Testes foi ótimo, mesmo para mim com anos de experiência Java. Boas práticas, testes, refactoring são temas que todo desenvolvedor Java precisa saber."
Diego Fernandes da Silva Vasconcellos, Niterói - RJ, na Caelum Rio em 22/12/2011
Ótimos cursos, professores bem capacitados e apostilas de fácil entendimento. Adorei as aulas e logo estarei de volta fazendo outros cursos.
Paulo Tadeu Ribeiro da Silva Junior em 25/11/2011
Próximas Turmas do FJ-16
| Data | Período | Cidade | Comentário |
|---|---|---|---|
| 13/02 a 17/02 | Noturno (19:00 as 23:00) | São Paulo | |
| 25/02 a 10/03 | Sábado (9:00 as 17:00) | Rio de Janeiro | Apenas 2 vagass |
| 27/02 a 02/03 | Noturno (19:00 as 23:00) | São Paulo | |
| 19/03 a 23/03 | Noturno (19:00 as 23:00) | Brasília | |
| 19/03 a 23/03 | Noturno (18:00 as 22:00) | Rio de Janeiro | |
| 24/03 a 07/04 | Sábado (9:00 as 17:00) | Rio de Janeiro | |
| 07/04 a 21/04 | Sábado (9:00 as 17:00) | Brasília | Ultimas vagas |
| 23/04 a 27/04 | Noturno (19:00 as 23:00) | Brasília | |
| 05/05 a 19/05 | Sábado (9:00 as 17:00) | São Paulo | |
| 07/05 a 11/05 | Noturno (18:00 as 22:00) | Rio de Janeiro | |
| 02/06 a 16/06 | Sábado (9:00 as 17:00) | Rio de Janeiro | |
| 30/06 a 14/07 | Sábado (9:00 as 17:00) | Rio de Janeiro | |
| 29/07 a 12/08 | Domingo (9:00 as 17:00) | São Paulo |
Conteúdo detalhado do FJ-16
Download da apostila do FJ-16Tornando-se um desenvolvedor pragmático
- O que é realmente importante?
- A importância dos exercícios
- Tirando dúvidas
- Mais bibliografia
- Para onde ir depois?
O modelo da bolsa de valores, datas e objetos imutáveis
- A bolsa de valores
- Candlesticks: O Japão e o arroz
- O projeto Tail
- O projeto Argentum: modelando o sistema
- Palavra chave final
- Imutabilidade de objetos
- Trabalhando com datas: %%Date%% e %%Calendar%%
- Exercícios: o modelo do Argentum
- Exercícios: fábrica de Candlestick
- Exercícios opcionais
Testes Automatizados
- Nosso código está funcionando corretamente?
- Exercícios: testando nosso modelo sem frameworks
- Definindo melhor o sistema e descobrindo mais bugs
- Testes de Unidade
- JUnit
- Anotações
- JUnit 4 e suas anotações
- Test Driven Development - TDD
- Exercícios: migrando os testes do main para JUnit
- Exercícios: novos testes
- Para saber mais: Import Estático
- Mais exercícios opcionais
- Discussão em aula: testes são importantes?
Trabalhando com XML
- Os dados da bolsa de valores
- XML
- Lendo XML com Java de maneira difícil, o SAX
- XStream
- Exercícios: Lendo o XML
- Exercícios: Separando os candles
- Exercícios opcionais
- Discussão em aula: Onde usar XML e o abuso do mesmo
Interfaces gráficas com Swing
- Interfaces gráficas em Java
- Portabilidade
- Look And Feel
- Componentes
- Começando com Swing - Diálogos
- Exercícios: Escolhendo o XML com JFileChooser
- Componentes: JFrame, JPanel e JButton
- O design pattern Composite: Component e Container
- Tratando eventos
- Classes internas e anônimas
- Exercícios: nossa primeira tela
- JTable
- Implementando um TableModel
- Exercícios: Tabela
- Formatando Datas: DateFormat
- Exercícios: formatação
- Para saber mais
- Discussão em sala de aula: Listeners como classes top level, internas ou anônimas?
Refatoração: os Indicadores da bolsa
- Análise Técnica da bolsa de valores
- Indicadores Técnicos
- As médias móveis
- Exercícios: criando indicadores
- Refatoração
- Exercícios: Primeiras refatorações
- Nossos indicadores e o design pattern Strategy
- Exercícios: refatorando para uma interface e usando bem os testes
- Exercícios opcionais
- Discussão em aula: quando refatorar?
Gráficos com JFreeChart
- JFreeChart
- Utilizando o JFreeChart
- Isolando a API do JFreeChart: baixo acoplamento
- Para saber mais: Design Patterns Factory Method e Builder
- Exercícios: JFreeChart
- Exercícios opcionais
- Indicadores mais Elaborados e o Design Pattern Decorator
- Exercícios: Indicadores mais espertos e o Design Pattern Decorator
- Desafio: Imprimir Candles
- Desafio: Fluent Interface
Mais Swing: layout managers, mais componentes e detalhes
- Gerenciadores de Layout
- Layout managers mais famosos
- Exercícios: usando layout managers
- Integrando JFreeChart
- Exercícios: completando a tela da nossa aplicação
- Input de dados formatados: Datas
- Exercícios opcionais: filtrando por data
- Para saber mais: barra de menu
- Exercícios opcionais: escolher os indicador(es) para o gráfico
- Discussão em sala de aula: uso de IDEs para montar a tela
Reflection e Annotations
- Por que Reflection?
- Reflection: Class, Method
- Usando anotações
- Usar JTables é difícil
- Criando sua própria anotação
- Lendo anotação com Reflection
- TableModel com Reflection
- Exercícios: ReflectionTableModel
- Para saber mais: Formatter, printf e String.format
- Exercícios opcionais
- Discussão em sala de aula: quando usar reflection, anotações e interfaces
Apêndice: O processo de Build: Ant e Maven
- O processo de build
- O Ant
- Exercícios com Ant
- O Maven
- O Project Object Model
- Plugins, goals e phases
- Exercícios: build com o Maven
- Uso dentro do Eclipse
- Discussão em sala de aula: IDE, ant ou Maven?
Apêndice - Swing Avançado
- Dificuldades com Threads e concorrência
- SwingWorker
- Exercícios: resolvendo concorrência com SwingWorker
- Para saber mais: A parte do JFreeChart
Apêndice - Logging com Log4j
- Usando logs - LOG4J
- Níveis de logs
- Appenders e layout
- Exercícios: Adicionando logging com Log4J
- O sl4j
* Os apêndices listados são conteúdos adicionais que não fazem parte do curso regular.

