FJ-91 | Arquitetura e Design de Projetos Java
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 de modos diferentes de poder 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, mapeamento objeto relacional, Hibernate, escalabilidade, performance, segurança, arquitetura em camadas, DDD, 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 as três fases dessa cobiçada certificação.
Esse curso foi elaborado pelos autores do livro Arquitetura e Design de Software: uma visão sobre a plataforma Java, criado a partir dessa experiência, que será lançado no final de 2009.
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 , FJ-91
Informações
Carga Horária: 40 horas aula
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.
Próximas Turmas
São Paulo
| Início | Término | Período |
|---|---|---|
| 29/03 | 09/04 | Noturno (19:00 as 23:00) |
| 08/05 | 05/06 | Sabado (9:00 as 17:00) |
Rio de Janeiro
| Início | Término | Período |
|---|---|---|
| 10/05 | 21/05 | Noturno (18:00 as 22:00) |
| 12/06 | 10/07 | Sabado (9:00 as 17:00) |
Brasília
| Início | Término | Período |
|---|---|---|
| 17/05 | 28/05 | Noturno (19:00 as 23:00) |
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