Introdução a Java Enterprise Edition (Java EE 7)

40h

Descrição

Este curso oferece uma introdução básica essencial às principais especificações da plataforma Java EE 7. Não é um curso que se aprofunda nos detalhes de cada tecnologia mas que introduz cada uma delas através de mini-tutoriais que contam com demonstrações e exercícios práticos realizados em sala de aula. Vários dos temas vistos neste curso podem ser explorados em maiores detalhes nos cursos e tutoriais que abordam tecnologias e frameworks individuais.

Os exemplos e exercícios foram testados no servidor GlassFish 4.1*. São também usados assistentes e ferramentas do NetBeans 8.02, mas todos os exemplos estão configurados em Maven e podem ser usados com outros IDEs.

Ao final deste curso, o aluno terá condições de

  • Descrever os objetivos, arquitetura geral, e identificar componentes e tecnologias do Java EE 7
  • Usar CDI e DI para injetar recursos e componentes em outros componentes Java EE
  • Usar Bean Validation para reaizar validação básica em diferentes componentes Java EE
  • Descrever a arquitetura do JMS e criar produtores e consumidores de mensagens com recebimento síncrono e assíncrono.
  • Descrever a arquitetura e ciclo de vida de componentes EJB, criar Stateless, Singleton e Stateful Session Beans, e configurar a política transacional em componentes e métodos individuais
  • Usar JTA 1.2 para configurar políticas transacionais de forma declarativas em componentes Java EE
  • Usar JPA para configurar mapeamento objeto-relacional de entidades, relacionamentos, componentes embutidos e coleções, configurar a persistência e realizar queries usando JPQL ou Criteria
  • Descrever o ciclo de vida de uma aplicação Web em Java e construir aplicações Web simples consistindo de WebServlets e filtros Web.
  • Usar APIs do Java EE para produzir e consumir dados em JSON
  • Construir um serviço WebSocket e acessá-lo com clientes JavaScript/HTML5 e Java
  • Descrever os principais componentes, arquitetura e ciclo de vida do JSF construir aplicações Web simples usando JavaServer Faces, integradas a dados em resources, serviços EJB ou objetos persistentes
  • Construir clientes e serviços SOAP usando JAX-WS
  • Construir clientes e serviços RESTful usando JAX-RS
  • Configurar aspectos de segurança como roles, autorização de recursos e métodos, autenticação e criptografia de dados em diversos tipos de componentes Java EE.

Este curso é prático e explora cada tópico com exemplos e exercícios em sala de aula, mas devido ao tempo limitado, não é possível aprofundar os temas abordados. Os exemplos são simples e conceituais. A aplicação demonstrada no final do curso também é simples e tem mais finalidade didática que prática, e foco nas tecnologias (e não no melhor design e arquitetura). Para uma abordagem mais detalhada de cada tema, com uma discussão sobre padrões e boas práticas, veja os cursos que exploram tecnologias individuais do Java EE, ou solicite uma proposta de curso customizado abordando os temas que desejar.

Este curso foi elaborado para ser usado com servidores e ambiente de desenvolvimento que suportem Java EE 7 e não funcionará com versões anteriores (o curso pode ser adaptado a versões anteriores do Java EE se necessário).

* Os exemplos e exercícios deste curso poderão funcionar com WildFly 8.2, mas apenas fora testados até o momento com Glassfish 4.1.

Carga-horária

40 horas

Pré-requisitos

Experiência com programação em Java (curso Java para programadores ou equivalente).

Programa resumido

  1. Java Enterprise Edition
  2. CDI - Contexts and Dependency Injection
  3. Bean Validation
  4. JMS - Java Message Service
  5. EJB - Enterprise JavaBeans
  6. Configuração de transações JTA 1.2
  7. Persistência
  8. Servlets
  9. XML e JSON
  10. WebSockets
  11. JavaServer Faces
  12. Serviços Web SOAP/WSDL com JAX-WS
  13. Serviços Web RESTful com JAX-RS
  14. Configuração de segurança
  15. Outros componentes e serviços do Java EE
  16. Estudo de caso: uma aplicação Java EE completa passo-a-passo

Programa detalhado

  1. Java Enterprise Edition
    • Objetivos
    • Especificações
    • Arquitetura
    • Componentes Java EE: WAR, EJB-JAR, EAR, RAR
    • Preparação do ambiente
  2. CDI - Contexts and Dependency Injection
    • JNDI
    • Portable global JNDI
    • Injeção de dependências
    • Configuração do CDI
    • Pontos de injeção
    • Injeção estática e dinâmica
    • Interceptadores
    • Decoradores
    • Escopos e contextos
    • Estereótipos
    • Eventos e callbacks
    • Beans nativos
  3. Bean Validation
    • Restrições nativas
    • Grupos de validação
    • Restrições em parâmetros
    • Como criar uma restrição customizada
  4. JMS - Java Message Service
    • Arquitetura do JMS
    • Envio de mensagens
    • Recebimento síncrono
    • Recebimento assíncrono
    • Tipos de mensagens
    • Configuração do serviço
    • Canais temporários
  5. EJB - Enterprise JavaBeans
    • Stateful Session Beans
    • Stateless Session Beans
    • Singleton Session Beans
    • Message-Driven Beans
    • Ciclo de vida e callbacks
    • Timers
  6. Configuração de transações JTA 1.2
    • Tipos de transações
    • Transações em EJB
    • User transactions
    • Container-managed transactions
    • Atributos transacionais
    • CDI @TransactionScoped
  7. Persistência
    • Mapeamento de uma entidade
    • Configuração da persistência
    • Serviço CRUD de uma entidade
    • Mapeamento de relacionamentos
    • Mapeamento de componentes e coleções
    • Mapeamento de herança
    • Queries JPQL
    • Queries Criteria
    • Locks, caches e outros recursos
  8. Servlets
    • Arquitetura Web
    • Componentes Web
    • WebServlets
    • Contexto e ciclo de vida
    • Requisição, Resposta, Sessão e escopo
    • Filtros
    • Resources
    • Upload de arquivos
    • Arquitetura MVC
  9. XML e JSON
    • Fundamentos de XML, XPath e XSD
    • Fundamentos de JSON
    • APIs para processamento XML
    • APIs para processamento JSON
    • Produzindo JSON
    • Consumindo JSON
    • XML (e JSON) binding com JAXB
  10. WebSockets
    • HTML5 WebSockets: arquitetura
    • Endpoint servidor
    • Cliente JavaScript
    • Endpoint cliente Java
    • Encoders e decoders
  11. JavaServer Faces
    • JavaServer Faces: arquitetura e ciclo de vida
    • Introdução a facelets
    • Expression language
    • Objetos gerenciados e integração com EJB e JPA
    • HTTP e Ajax
    • Conversores, validadores e listeners
    • Navegação e fluxo
    • Resources
    • Passthrough e suporte HTML5
    • Componente de File Upload
    • Usando uma biblioteca de componentes
  12. Serviços Web SOAP/WSDL com JAX-WS
    • Introdução a Web Services
    • Consumindo um serviço SOAP
    • Oferecendo um serviço SOAP
    • WSDL
    • Usando WSDL para criar um cliente SOAP
    • Usando WSDL para criar um serviço SOAP
    • Faults e handlers
  13. Serviços Web RESTful com JAX-RS
    • Fundamentos da arquitetura REST
    • Criando resources com JAX-RS
    • Usando um cliente JavaScript
    • Contextos e injeção de parâmetros
    • Produzindo e consumindo texto, XML e JSON
    • Integração com entidades (JPA/JAXB)
    • Lidando com respostas e erros HTTP
    • Clientes JAX-RS com Jersey
  14. Configuração de segurança
    • Segurança em Java EE
    • Segurança declarativa e programática
    • Mapeamento de roles
    • Autenticação
    • Autorização
    • Segurança em componentes EJB
    • Segurança em serviços Web e WebSockets
    • Segurança em serviços SOAP
    • Segurança em serviços RESTful
  15. Outros componentes e serviços do Java EE
    • Aplicações batch
    • Utilitários de concorrência
    • JavaMail
    • JMX
    • JCA
    • JSP, JSTL e taglibs
  16. Estudo de caso: uma aplicação Java EE completa passo-a-passo

Distribuição

Em 10 aulas de 4 horas cada:

  • Aula 1: Introdução (1) e CDI (2)
  • Aula 2: Bean Validation (3) e JMS (4)
  • Aula 3: EJB (5) e JTA (6)
  • Aula 4: JPA (7)
  • Aula 5: WebServlets (8)
  • Aula 6: XML+JSON (9) e WebSockets (10)
  • Aula 7: JSF (11)
  • Aula 8: JAX-WS (12) e JAX-RS (13)
  • Aula 9: Segurança (14) e Outros serviços (15)
  • Aula 10: Aplicação Java EE completa (16)