FJ-91 | Arquitetura e Design de Projetos Java
[ 40 horas aula ]
Confuso com tantos design patterns, frameworks e boas práticas? Criar um projeto em Java é um grande desafio: são muitas opções de tecnologia e muitos modos diferentes de fazer as diversas camadas se comunicarem. O objetivo do curso é expor o aluno a uma grande quantidade dessas opções, desde a modelagem e design das classes, até a escolha das tecnologias mais adequadas para formar uma arquitetura robusta.
Conceitos de orientação a objetos são rediscutidos. As diferentes tecnologias e frameworks são abordadas com exemplos práticos, comparações e muita análise de pontos positivos e negativos de cada uma. Há tópicos como SOA, Web Services, REST, mensageria, EJB, Web, DDD, mapeamento objeto relacional, Hibernate, escalabilidade, performance, segurança, arquitetura em camadas, metodologias ágeis e muitos outros.
É um curso que busca formar o Arquiteto Java que o mercado pede e precisa nos dias de hoje. Com discussões aprofundadas, o FJ-91 o ajudará a tomar decisões importantes em seus projetos. O curso é baseado no livro "Introdução a Arquitetura e Design de Software". Todos os alunos do curso recebem um exemplar do livro e uma apostila complementar de exercícios.
Pré-requisitos: Curso FJ-11 e FJ-21 e ou: linguagem Java, orientação a objetos, noções básicas de web, http, html e xml. É necessário certa familiaridade com a plataforma Java EE no geral, como EJB, Servlets, JSF e ter passado pelas dificuldades naturais de médios e grandes projetos em TI.
Posts relacionados no blog
- Java EE versus Spring: retomando a discussão
- Segurança da sua aplicação e os frameworks: o ataque ao GitHub
- Código expressivo e programação funcional em Java com LambdaJ
- Rodando sua aplicação na Amazon do Brasil
- Lançamento do livro Introdução à Arquitetura e Design de Software
- NoSQL – Do teorema CAP para P?(A|C):(C|L)
- Trabalhando com Relacionamentos: bancos de dados baseados em grafos e o Neo4j
- Vivendo no cloud: a infraestrutura externa da Caelum em 11 soluções
- Quando muitos dados passam a atrapalhar: replicação e sharding
- QConSP 2010: como foi o principal evento de arquitetos e desenvolvedores no Brasil
A opinião de quem fez o FJ-91
Gostei bastante do treinamento, muito diferente do estilo de treinamento que encontramos no mercado, voltado a discussões técnicas e fases do próprio pessoal da turma, esse é o diferencial.
Anônimo em 14/04/2012
Além do conteúdo muito bom, o mais interessante é a troca de experiências entre os alunos e o professor no FJ-91.
Anônimo em 17/02/2012
Próximas Turmas do FJ-91
| Data | Período | Cidade | Comentário |
|---|---|---|---|
| 11/06 a 22/06 | Noturno (18:00 as 22:00) | Rio de Janeiro | |
| 18/06 a 22/06 | Integral (9:00 as 17:00) | Rio de Janeiro | |
| 18/06 a 29/06 | Noturno (19:00 as 23:00) | São Paulo | |
| 14/07 a 18/08 | Sábado (9:00 as 17:00) | Rio de Janeiro | |
| 16/07 a 20/07 | Integral (9:00 as 17:00) | Brasília | |
| 23/07 a 27/07 | Integral (9:00 as 17:00) | São Paulo | |
| 01/09 a 29/09 | Sábado (9:00 as 17:00) | São Paulo |
Conteúdo detalhado do FJ-91
Um treinamento sobre arquitetura
- Design e Arquitetura?
- Indo da visão micro para a visão macro e gerenciamento
A Plataforma Java
- Java
- JSRs e o JCP
- Open source e o Java
- Exercícios: explorando o JCP
- Java Virtual Machine
- Implementações da JVM
- Outras plataformas: .Net
- Outras linguagens na JVM
- Exercícios: Scala integrdo com Java
- Exercícios: Scripting API com Rhino
- Para saber mais: Como aprender Scala
JVM: Java Virtual Machine
- A JVM por dentro
- JIT Compiler: compilação em tempo de execução
- Exercícios: Análise de performance de uma aplicação Java com o JIT
- Garbage Collector
- VisualVM, VisualGC e profiling
- System.gc
- finalizer
- Exercícios: Garbage Collector e tuning de memória
- ClassLoaders
- Exercícios: Como funcionam os Classloaders e o Classloader Hell
Tópicos avançados de Orientação a Objetos e Design
- Orientação a objetos
- Fundamentos de OO: Encapsulamento e interfaces de uso
- JavaBeans e getters e setters
- Anemic Domain Model e objetos fantoches
- Exercícios: Boa prática de orientação à objetos - Encapsulamento
- Fundamentos de OO: Polimorfismo
- Herança versus Composição
- Interface versus Implementação
- Exercícios: Cuidados com a herança e a composição com alternativa
- Acoplamento e Coesão
- Acoplamento sintático e acoplamento semântico
- Testes de unidade e TDD
- Testes de integração, Selenium e WebDriver
- Exercícios: Teste de unidade e o acoplamento semântico
- Fluent Interface
- Exercícios: Código mais expressivo e o padrão Builder
- Domain Specific Languages
- Domain Driven Design
- Exercícios opcionais: DSLs em Java e em outras linguagens
- Para saber mais: Imutabilidade
- Exercícios opcionais: Imutabilidade e Flyweight
Separação de responsabilidades e Inversão de Controle
- Gerencie suas dependências através de injeção
- Considere usar um framework de Injeção de Dependências
- Spring, PicoContainer e Guice
- CDI e Java EE 6
- Fábricas e o mito do baixo acoplamento
- Exercícios: Separação de responsabilidades, injeçao de dependências e inversão de controle
- AOP
- Exercício Opcional: Programação Orientada à Aspectos
- Javassist e manipulação de bytecodes
- Exercício Opcional: Manipulação de Bytecode
Arquitetura
- O que é Arquitetura?
- Requisitos não funcionais
- Performance
- Escalabilidade e Disponibilidade
- Confiabilidade
- Extensibilidade e manutenabilidade
- Gerenciabilidade
- Exercícios: Gerenciabilidade
- Segurança
- Exercícios: Evite injeção na Web
- Cliente Servidor
- p2p - Peer to Peer
- Dividindo em camadas: tiers e layers
- MVC - Model View Controller
- Arquitetura contemporânea e o Cloud
Decisões arquiteturais
- Desenvolvimento Web MVC: Actions ou Componentes?
- Domine sua ferramenta de mapeamento objeto relacional
- Exercícios: Boas e más práticas com o Hibernate
- Distribuição de objetos
- RMI
- EJB
- Value Object, Data Transfer Object, Session Façade
- As novidades do Java EE 6
- Comunicação assíncrona
- Mensageria e JMS
- Exercícios: Mensageria assíncrona e o JMS
Integração de sistemas na Web e REST
- Princípios de integração de sistemas na Web
- SOA - Service Oriented Architecture
- Web Services SOAP e WSDL
- Exercícios: Consumo de serviços - WebServices SOAP
- POX: Plain Old XML
- Exercícios: Consumo de serviços - POX (Plain Old XML)
- REST: arquitetura distribuída baseada em hipermídia
- Exercício Opcional: Consumo de serviços - WebServices REST
Apêndice - Catálogo de Design Patterns
- Factory Method
- Exercícios
- Singleton
- Exercícios
- Iterator
- Exercícios
- Observer
- Exercícios
- Visitor
- Decorator
- Exercício
- Composite
- Exercícios
- Template Method
- Exercícios
- Builder
- Prototype
- Adapter
- Bridge
- Façade
- Proxy
- Chain of Responsibility
- Command
- Interpreter
- Mediator
- Memento
- State
- Patterns no DDD: Repository, Entity, VO, Service
- Mau uso de patterns: Singleton versus Injeção de Dependências
- Exercicios
* Os apêndices listados são conteúdos adicionais que não fazem parte do curso regular.

