FJ-91 | Arquitetura e Design de Projetos Java
[ 40 horas aula ]
Confuso com tantos design patterns, padrões, frameworks e boas práticas? Criar um projeto em Java é atualmente grande desafio: são centenas de opções de tecnologias 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, com exercícios não apenas teóricos e de discussão, mas que também apresentam o código e propõem mudanças e melhorias.
Conceitos de orientação a objetos são revistos e rediscutidos. Os Design Patterns são apresentados de maneira prática dentro de uma aplicação real, e exemplos dentro do Java SE e Java EE. 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, frameworks 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. Durante o curso, muitos tópicos da certificação de arquiteto Java (SCEA) serão tratados, formando uma boa base para todas suas três fases.
Pré-requisitos: Curso FJ-11 ou: linguagem Java, variáveis primitivas e orientação a objetos, tratamento de erro, conhecimentos fundamentais de Java SE, entrada e saída, coleções, básico de multi-threading em Java. Conhecimento de desenvolvimento para web, noções básicas de 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.
A opinião de quem fez o FJ-91
A necessidade de me aprofundar em Arquitetura Java, surgiu da minha participação como Coordenador Técnico no desenvolvimento de um novo sistema Core para a Elektro construindo em plataforma Java. O treinamento além de esclarecer uma série de dúvidas, me mostrou o quão ampro é este mundo e como principal vantagem, me proporcionou o caminho para que eu possa me aprofundar.
Cesar Estevam, Coordenador Técnico, Elektro
Próximas Turmas do FJ-91
| Data | Período | Cidade | Comentário |
|---|---|---|---|
| 13/09 a 17/09 | Integral (9:00 as 17:00) | São Paulo | Promoção: desconto de até 18% para participantes QCon |
| 16/10 a 13/11 | Sábado (9:00 as 17:00) | Brasília | |
| 18/10 a 29/10 | Noturno (18:00 as 22:00) | Rio de Janeiro | Centro |
| 20/11 a 18/12 | Sábado (9:00 as 17:00) | São Paulo | |
| 29/11 a 10/12 | 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
- IDEs
- As edições do Java
- Java EE
- Java Virtual Machine
- Implementações da JVM
- Outras linguagens e plataformas: .Net
- Outras linguagens na JVM
- Exercícios: explorando o JCP e a API de Scripting
- Exercícios opcionais com Ruby
JVM: Java Virtual Machine
- A JVM por dentro
- Client e Server VM
- Exercícios: explorando o JIT
- Garbage Collector
- System.gc
- finalizer
- Exercícios: explorando o GC
- Para saber mais: WeakReferences
- ClassLoader
- Exercícios: Classloaders
Tópicos avançados em Orientação a Objetos
- Orientação a objetos
- Fundamentos de OO: Encapsulamento e interfaces
- JavaBeans e getters e setters
- Anemic Domain Model e objetos fantoches
- Fundamentos de OO: Polimorfismo
- Herança versus Composição
- Exercícios: getters, setters e herança versus composição
- Interface versus Implementação
- Imutabilidade e Concorrência
- Domain Driven Design
- Fluent Interface
- DSLs
- Exercícios: Interface versus Implementação, Imutabilidade e Fluent Interface
- UML: Diagrama de classes
- Associação, Agregação e Composição
- Outros diagramas e o uso da UML
- Exercícios: Modelagem
- Introspecção com Reflection
- Exercícios: reflection e geração de formulários
- Uso de anotações com reflection
- Anotações versus XML
- Exercícios: Anotações
Separação de responsabilidades e Inversão de Controle
- Inversão de controle
- Baixo acoplamento, alta coesão
- Componentes
- Encapsulamento
- Objetos
- Removendo relacionamentos bidirecionais
- Por fim, componentes
- Para saber mais: UML - Diagrama de componentes
- Injeção de dependências
- Passando referências para todos os lados
- Injeção por setter
- Spring IoC
- Injeção via construtor
- Injeção via anotações
- Guice
- Ciclo de vida
- Exercícios
- Programação Orientada a Aspectos
- Manipulação de bytecode
- Javassist
- Excercícios: AOP e Manipulação de bytecode
- Proxies dinâmicos
- Exercícios: Proxy dinâmico
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
- Mau uso de patterns: Singleton versus Injeção de Dependências
- Exercicios
Arquitetura
- O que é Arquitetura?
- Requisitos não funcionais
- Cliente Servidor
- p2p - Peer to Peer
- Layers e Tiers
- Cloud computing
- MVC - Model View Controller
- Middleware
- O que é um framework?
Desktop e RIA
- Java SE
- Applets
- Java Web Start
- Exercícios: Applets e Java Web Start
- Adobe Flex
- JavaFX
- Exercícios opcionais
Banco de Dados
- JDBC
- Exercícios opcionais
- Mapeamento Objeto Relacional
- Hibernate 3
- Outras tecnologias
Desenvolvimento Web
- Servlet, JSP e Servlet Containers
- Taglibs, Expression Language e JSTL
- Exercícios opcionais
- Struts 1.x
- Struts 2
- Spring MVC
- Para saber mais: Velocity e Freemarker
- Convenções ao invés de configurações
- JSF - Java Server Faces
- Exercícios opcionais
- Para saber mais: GWT - Google Web Toolkit
- Exercícios opcionais
- Action-based vs. Component-based
- Ajax
Tecnologias de Integração
- RMI
- Exercícios: RMI
- EJB: Session Beans, Entity Beans e EJB containers
- Exercícios: EJB2
- Value Object, Data Transfer Object, Session Façade
- EJB 3 e a revolução
- Exercícios: EJB3 e Web Services
- Exercícios opcionais
- Spring Framework
- As novidades do Java EE 6
- MOM: Message Oriented Middleware
- Mensageria e JMS
- Exercícios: JMS
- Exercícios opcionais JMS com JBoss e EJB3
- Para saber mais: JAAS
- Exercícios opcionais JAAS
Arquitetura orientada a serviços
- SOA - Service Oriented Architecture
- Tickets, FTP e Sockets
- RMI, Corba e DCOM
- WebServices - SOAP/WSDL, POX, JSon e texto puro
- SOAP e WSDL
- Exercícios: WSDL e SOAP
- Exercícios opcionais
- POX: Plain Old XML
- Exercícios: POX
- JSON
- Web Services RESTful
- Exercícios opcionais
- Para saber mais: Texto Puro e Html Injection por Javascript
- Exercícios opcionais: JSON e html scraping
- Implementações de SOA no mundo real
- Aplicações 100% SOA internamente
- Exercícios: sobre uso de Webservices
Apêndice: Desenvolvimento e desenvolvedores
- Metodologias ágeis
- Testes Unitários
- Test Driven Development
- Errando o teste
- Testes e controle de versão
- Testes com dependências
- Simuladores ou mocks
- Testes de Aceitação
- Testes de Aceitação automatizados
- Exercícios: Testes
- Integração Contínua
- A bala de prata?
Apêndice: Bibliografia
Apêndice: Simulado da parte 1 da SCEA
Apêndice: Arquitetando um Projeto Java
- Introdução
- Resultados da primeira análise
- Modelo de Classes inicial
- Casos de uso
- Caso de uso: Novo curso
- Caso de uso: Nova turma
- Caso de uso: Efetuar Matrícula
- Tarefa
- Dicas

