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
- 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
O curso FJ-21 abriu minha visão para o desenvolvimento web. Agora tenho toda a base para crescer em conhecimento e me destacar no mercado de trabalho.
Thiago Dias Claudino em 27/01/2012
Depoimento: "O curso tem um formato interessante, bem prático e dinâmico. Traz temas profundos sobre a plataforma Java e me deu a impressão que minha forma de programar vai mudar muito".
Arnour Sabino de Souza Junior, de São João de Meriti -RJ,na Caelum Rio em 23/01/2012
Próximas Turmas do FJ-91
| Data | Período | Cidade | Comentário |
|---|---|---|---|
| 12/03 a 23/03 | Noturno (18:00 as 22:00) | Rio de Janeiro | |
| 17/03 a 14/04 | Sábado (9:00 as 17:00) | São Paulo | |
| 09/04 a 20/04 | Noturno (19:00 as 23:00) | Brasília |
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.

