Caelum - Cursos de Java, Scrum, Ruby on Rails


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.

Faça já sua reserva no FJ-91 Entrar em contato Ver conteúdo detalhado

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
DataPeríodoCidadeComentário
13/09 a 17/09 Integral (9:00 as 17:00) São PauloPromoçã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 JaneiroCentro
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

Alguma dúvida? Quer fazer uma reserva? Entre em contato, estamos a disposição para atendê-lo


Conteúdo detalhado do FJ-91

Um treinamento sobre arquitetura

  1. Design e Arquitetura?
  2. Indo da visão micro para a visão macro e gerenciamento

A Plataforma Java

  1. Java
  2. JSRs e o JCP
  3. Open source e o Java
  4. IDEs
  5. As edições do Java
  6. Java EE
  7. Java Virtual Machine
  8. Implementações da JVM
  9. Outras linguagens e plataformas: .Net
  10. Outras linguagens na JVM
  11. Exercícios: explorando o JCP e a API de Scripting
  12. Exercícios opcionais com Ruby

JVM: Java Virtual Machine

  1. A JVM por dentro
  2. Client e Server VM
  3. Exercícios: explorando o JIT
  4. Garbage Collector
  5. System.gc
  6. finalizer
  7. Exercícios: explorando o GC
  8. Para saber mais: WeakReferences
  9. ClassLoader
  10. Exercícios: Classloaders

Tópicos avançados em Orientação a Objetos

  1. Orientação a objetos
  2. Fundamentos de OO: Encapsulamento e interfaces
  3. JavaBeans e getters e setters
  4. Anemic Domain Model e objetos fantoches
  5. Fundamentos de OO: Polimorfismo
  6. Herança versus Composição
  7. Exercícios: getters, setters e herança versus composição
  8. Interface versus Implementação
  9. Imutabilidade e Concorrência
  10. Domain Driven Design
  11. Fluent Interface
  12. DSLs
  13. Exercícios: Interface versus Implementação, Imutabilidade e Fluent Interface
  14. UML: Diagrama de classes
  15. Associação, Agregação e Composição
  16. Outros diagramas e o uso da UML
  17. Exercícios: Modelagem
  18. Introspecção com Reflection
  19. Exercícios: reflection e geração de formulários
  20. Uso de anotações com reflection
  21. Anotações versus XML
  22. Exercícios: Anotações

Separação de responsabilidades e Inversão de Controle

  1. Inversão de controle
  2. Baixo acoplamento, alta coesão
  3. Componentes
  4. Encapsulamento
  5. Objetos
  6. Removendo relacionamentos bidirecionais
  7. Por fim, componentes
  8. Para saber mais: UML - Diagrama de componentes
  9. Injeção de dependências
  10. Passando referências para todos os lados
  11. Injeção por setter
  12. Spring IoC
  13. Injeção via construtor
  14. Injeção via anotações
  15. Guice
  16. Ciclo de vida
  17. Exercícios
  18. Programação Orientada a Aspectos
  19. Manipulação de bytecode
  20. Javassist
  21. Excercícios: AOP e Manipulação de bytecode
  22. Proxies dinâmicos
  23. Exercícios: Proxy dinâmico

Design Patterns

  1. Factory Method
  2. Exercícios
  3. Singleton
  4. Exercícios
  5. Iterator
  6. Exercícios
  7. Observer
  8. Exercícios
  9. Visitor
  10. Decorator
  11. Exercício
  12. Composite
  13. Exercícios
  14. Template Method
  15. Exercícios
  16. Mau uso de patterns: Singleton versus Injeção de Dependências
  17. Exercicios

Arquitetura

  1. O que é Arquitetura?
  2. Requisitos não funcionais
  3. Cliente Servidor
  4. p2p - Peer to Peer
  5. Layers e Tiers
  6. Cloud computing
  7. MVC - Model View Controller
  8. Middleware
  9. O que é um framework?

Desktop e RIA

  1. Java SE
  2. Applets
  3. Java Web Start
  4. Exercícios: Applets e Java Web Start
  5. Adobe Flex
  6. JavaFX
  7. Exercícios opcionais

Banco de Dados

  1. JDBC
  2. Exercícios opcionais
  3. Mapeamento Objeto Relacional
  4. Hibernate 3
  5. Outras tecnologias

Desenvolvimento Web

  1. Servlet, JSP e Servlet Containers
  2. Taglibs, Expression Language e JSTL
  3. Exercícios opcionais
  4. Struts 1.x
  5. Struts 2
  6. Spring MVC
  7. Para saber mais: Velocity e Freemarker
  8. Convenções ao invés de configurações
  9. JSF - Java Server Faces
  10. Exercícios opcionais
  11. Para saber mais: GWT - Google Web Toolkit
  12. Exercícios opcionais
  13. Action-based vs. Component-based
  14. Ajax

Tecnologias de Integração

  1. RMI
  2. Exercícios: RMI
  3. EJB: Session Beans, Entity Beans e EJB containers
  4. Exercícios: EJB2
  5. Value Object, Data Transfer Object, Session Façade
  6. EJB 3 e a revolução
  7. Exercícios: EJB3 e Web Services
  8. Exercícios opcionais
  9. Spring Framework
  10. As novidades do Java EE 6
  11. MOM: Message Oriented Middleware
  12. Mensageria e JMS
  13. Exercícios: JMS
  14. Exercícios opcionais JMS com JBoss e EJB3
  15. Para saber mais: JAAS
  16. Exercícios opcionais JAAS

Arquitetura orientada a serviços

  1. SOA - Service Oriented Architecture
  2. Tickets, FTP e Sockets
  3. RMI, Corba e DCOM
  4. WebServices - SOAP/WSDL, POX, JSon e texto puro
  5. SOAP e WSDL
  6. Exercícios: WSDL e SOAP
  7. Exercícios opcionais
  8. POX: Plain Old XML
  9. Exercícios: POX
  10. JSON
  11. Web Services RESTful
  12. Exercícios opcionais
  13. Para saber mais: Texto Puro e Html Injection por Javascript
  14. Exercícios opcionais: JSON e html scraping
  15. Implementações de SOA no mundo real
  16. Aplicações 100% SOA internamente
  17. Exercícios: sobre uso de Webservices

Apêndice: Desenvolvimento e desenvolvedores

  1. Metodologias ágeis
  2. Testes Unitários
  3. Test Driven Development
  4. Errando o teste
  5. Testes e controle de versão
  6. Testes com dependências
  7. Simuladores ou mocks
  8. Testes de Aceitação
  9. Testes de Aceitação automatizados
  10. Exercícios: Testes
  11. Integração Contínua
  12. A bala de prata?

Apêndice: Bibliografia

    Apêndice: Simulado da parte 1 da SCEA

      Apêndice: Arquitetando um Projeto Java

      1. Introdução
      2. Resultados da primeira análise
      3. Modelo de Classes inicial
      4. Casos de uso
      5. Caso de uso: Novo curso
      6. Caso de uso: Nova turma
      7. Caso de uso: Efetuar Matrícula
      8. Tarefa
      9. Dicas

      Caelum | Ensino e Inovação
      São Paulo:Rua Vergueiro, 3185, cj. 87, próximo ao Metrô Vila Mariana   |   Tel. (11) 5571-2751
      Rio de Janeiro:Rua Senador Dantas, 80, cj. 307/308 - Centro   |   Tel. (21) 2220-4156 ou 2297-0033
      Brasília:SCS Qd. 8 Bl. B-50, Sala 521 - Ed. Venâncio 2000   |   Tel. (61) 3039-4222
      A Caelum roda no cloud