Venha conhecer as principais tecnologias disponibilizadas para o desenvolvimento de aplicações Web utilizando a plataforma Java Enterprise.
Neste mini-curso serão demonstrados conceitos e exemplos das bibliotecas para o desenvolvimento Java EE, como: JSF, JPA, CDI EJB, JAX-RS, dentre outras.
5. Porque Java?
68% das novas aplicações são em Java
Java substituiu o C++ como a competência mais
procurada em profissionais
2 milhões de novos profissionais de TI são
necessários a cada ano
Java é executado em múltiplas plataformas
Java é executado em ampla gama de
dispositivos, de Smart Cards aos servidores dos
grandes Data Centers
11. Java Enterprise Edition
Suporte ao desenvolvimento de aplicações
“enterprise”
Aplicações distribuídas, seguras, escaláveis, de alta
disponibilidade e com baixo custo de manutenção
Plataforma para desenvolvimento de software de
pequeno, médio e grande porte em múltiplas
camadas de componentes
Componentes “rodam” em um servidor Java EE
13. Java Enterprise Edition
Serviços oferecidos pelos containeres Java EE:
Gestão de memória, ciclo de vida de objetos
Conexões, Transações, Serviço de nomes
Segurança
Tolerância a falhas
Integração
WebServices
Clustering
Alta disponibilidade
Confiabilidade...
14. Java EE Timeline
J2EE 1.3
CMP,
Connector
Architecture
J2EE 1.4
Web
Services
Mgmt,
Deployment,
Async
Connector
Java EE 5
Ease of
Development,
EJB 3, JPA,
JSF, JAXB,
JAX-WS,
StAX, SAAJ
Java EE 6
Pruning,
Extensibility
Ease of Dev,
CDI, JAX-RS
Web
Profile
Servlet 3,
EJB 3.1 Lite
Java EE 7
JMS 2,
Batch, TX,
Concurrency,
Interceptor,
WebSocket,
JSON
JAX-RPC, CMP/
BMP, JSR 88
Web
Profile
JAX-RS 2
15. Java EE Overview
Managed Beans 1.0 EJB 3.2
Connector
1.6
Servlet 3.1
Portable
Extensions
JSF 2.2 JAX-RS
2.0
Bean Validation 1.1
EL 3.0
JPA 2.1 JTA 1.2
JMS 2.0
JSP 2.2
Interceptors 1.1 CDI 1.1
Common
Annotations
1.1
Major Updated
Release
New
Concurrency Utilities
(JSR 236)
Batch Applications
(JSR 352)
Java API for JSON
(JSR 353)
Java API for WebSocket
(JSR 356)
16. Exercício
Criando um projeto Java EE
https://github.com/gujavasc/minicurso-javaee
19. MVC - Dividir e conquistar
Beleza vs Funcionamento
Código Organizado
Manutenção Fácil
Sabe aonde achar o erro
20. Principais Componentes
J2EE Web Container J2EE EJB
Container
JSF e J2EE
Controller
Model
View
Java
Server
Pages
Servlet
JavaBeans
Custom
Tag
EJB
javax.faces
21. Página JSF
Tags: JSF HTML
Tags: JSF Core
Request
Managed
Bean
Session
Managed
Bean
Application
Managed
Bean
Links, formulários, imagens,
combo-box, tabelas, etc…
Expression Language: EL
Através destas tags adicionamos
validação, conversão de dados,
listeners
Dados para popular as tabelas,
combo-box, textos.
Páginas JSF
28. Java Persistence API
Primeira especificação (padrão) de mapeamento de objetos
Java para base de dados relacional
Integração com outros frameworks
Hibernate é uma implementação de JPA
TopLink Essencials é uma implementação de JPA (RI)
POJO (Plain Old Java Objects) à Entidades
Mapeamento via metadados (annotation Java 5)
Pode ser utilizado fora de containeres EJBs (ligthweigth
container)
Uso de injeção de dependência ao invés de lookups JNDI
35. Enterprise Java Beans
Plataforma para criação de aplicações de negócio
portáveis, robustas e reutilizáveis usando a linguagem de
programação Java;
Componente para construir aplicações sem precisar
reinventar uma série de recursos e serviços (transações,
segurança, persistência);
Modelo de alto nível para objetos distribuídos (computação
distribuída);
Pode ser utilizado em soluções Web e não Web;
36. Enterprise Java Beans
EJB
Componentes Negócio Compartilhados
Session Bean
Java Web
Swing
Cliente WS
Web Browser
JVM + Container EE
Rede Local
37. Enterprise Java Beans
EJB
Session Bean
Segurança
Controle Transacional
Escalabilidade
Queues
Topics
Data
Sources
Environment
Entries
EJB
Infra Estrutura do Container
38. Enterprise Java Beans
Tipos de EJB:
Session Bean
Representa um processo de negócio
Message-Driven Bean
Trabalha de forma assíncrona
Singleton Bean
EJB introduzido na versão 3.1
Entity Bean
Representa um objeto persistente
Definido pela especificação JPA
39. Session Bean
Representa um processo de negócio (regra de negócio);
@Stateless
Não mantém estado de conversão com o cliente;
Não tem compromisso de manter uma sessão;
Não devemos utilizar atributos de negócio, somente atributos técnicos
em cache;
É um EJB econômico;
@Stateful
Mantém estado de conversão com o cliente;
Cada cliente terá uma instancia do EJB exclusiva, desde a criação até a
remoção;
Podemos ter atributos de negócio com métodos getters e setters;
40. Session Bean
Podem ou não definir interface de acesso
@LocalBean define EJBs sem interfaces
Tipos de Interfaces
Local (@Local)
Somente acesso local (mesma JVM);
Cliente pode ser um componente Web ou outro EJB;
Localização não é transparente (não suporta clusterização).
Remota (@Remote)
Suporta acesso remoto (fora da JVM);
Cliente pode ser um componente Web, outro EJB ou aplicação desktop;
Transparência de localização (suporta clusterização).
41. Enterprise Java Beans
• EJB Lite
ü Sub-conjunto de funcionalidades direcionadas para deploy dos EJBs no
container Java EE Web Profile (.war)
EJB Lite EJB Full
• Local Session Beans
• CMT / BMT
• Segurança Declarativa
• Interceptors
• Message-Driven Beans (MDB)
• Web Service Endpoints
• 2.x / 3.x Remove View
• Inter-operabilidade com RMI-IIOP
• Timer service
• Chamada assíncrona à metodos
• 2.x Local View
• CMP / BMP Entity Beans
42. Enterprise Java Beans
Empacotamento Simplificado
Possibilita o deploy de componentes EJBs através de um .war
Somente disponível para os EJB Lite
ejb-jar.xml não é mais necessário
Java EE 5
Java EE 6
44. Message-Driven Bean
Existem dois tipos de destinos JMS
Point-to-point (queue): uma mensagem enviada para a fila será
consumida apenas por um cliente;
Publish-subscriber (topic): uma mensagem pode ser recepcionada por
múltiplos clientes;
47. CDI (JSR-299)
CDI = Context Dependency Injection
Novo modelo para gerenciamento de beans e
injeção de dependência
Nova definição para escopos de aplicação
Também conhecido como “Web Beans”
Integra as camadas web e negócio da aplicação
Facilita a implementação das aplicações que utilizam
tecnologias como JSF e EJB (Java EE)
48. CDI (JSR-299)
Gerenciamento de ciclo de vida de componentes
statefull
Provê um mecanismo de DI typesafe
Disponibiliza mecanismo de eventos facilitando o
desenvolvimento com baixo acoplamento
Tem um mecanismo de Interceptors e Decorators
Possibilita a criação de extensões portáveis para
qualquer implementação
Integração com EL
50. CDI Managed Beans
Nova definição para
“beans
Instâncias são
gerenciadas pelo
container
Serviços disponíveis
Injeção de Dependência
Ciclo de vida
Interceptors
Events
54. O que pode ser injetado
CDI Managed Beans (POJO)
Objetos retornados por @Produces
EJB Session Bean (local ou remoto)
Java EE Resources (DataSource, JMS)
JTA UserTransaction
EntityManager (JPA)
Bean Validation Factory
Destination e ConnectionFactory JMS
55. Principais Recursos
Injection Points
Qualifiers
Alternatives
EL Names
Producer Methods
Java EE Resources
Scopes and Contexts
Interceptors
Stereotypes
Events
56. Exercício
Integrando as camadas da aplicação com CDI
https://github.com/gujavasc/minicurso-javaee