3. Objetivo
Conhecer a plataforma Java Enterprise Edition 5
e entender as principais diferenças desta versão
em relação as versões anteriores
Globalcode Slide 3
4. Agenda
Plataforma Java
Java Enterprise Edition
Principais Tecnologias (APIs)
Java Servlet
JSP
JSF
EJB
JPA
Injeção de Dependência
Segurança
Servidores de Aplicação
Comparativo de Versões
Demo
Perguntas e Respostas
Globalcode Slide 4
5. Palestrante
Rodrigo Cândido da Silva – rcandidosilva@gmail.com
Trabalha: Arquiteto Java / Instrutor
Experiência: 8 anos na área de desenvolvimento de
sistemas, trabalhando com Java desde 2001;
Certificações: SCJA, SCJP, SCWCD, SCBCD, SCEA
Globalcode Slide 5
6. Agenda
Plataforma Java
Java Enterprise Edition
Principais Tecnologias (APIs)
Java Servlet
JSP
JSF
EJB
JPA
Injeção de Dependência
Segurança
Servidores de Aplicação
Comparativo de Versões
Demo
Perguntas e Respostas
Globalcode Slide 6
7. Plataforma Java
• Desenvolvimento de software robusto para diferentes tipos de
dispositivos
PC, celular, palmtop, robôs, etc.
• Software Multiplataforma
“Escreva uma vez e execute em qualquer lugar...”
Código não precisa ser recompilado para executar em outro sistema
operacional
• Máquina Virtual (Java Virtual Machine - JVM)
Responsável por oferecer a flexibilidade de sistema operacional para
um software Java
• Mantida pela comunidade de desenvolvedores por meio do JCP (Java
Community Process)
Globalcode Slide 7
9. Plataforma Java
• A plataforma é dividida em três partes:
Java Standard Edition (Java SE)
Base do Java que contém as principais APIs
Java Enterprise Editon (Java EE)
Versão de Java para desenvolvimento de aplicações Web e enterprise
que rodam em servidores padronizados
Java Micro Edition (Java ME)
Redução da plataforma Standard para dispositivos móveis como PDA e
celulares
Globalcode Slide 9
10. Agenda
Plataforma Java
Java Enterprise Edition
Principais Tecnologias (APIs)
Java Servlet
JSP
JSF
EJB
JPA
Injeção de Dependência
Segurança
Servidores de Aplicação
Comparativo de Versões
Demo
Perguntas e Respostas
Globalcode Slide 10
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
Globalcode Slide 11
17. Java Servlet
• Responsável pela geração de conteúdo dinâmico
• É uma classe Java que estende HttpServlet;
• Tecnologia “mãe” do JSP;
• Deve ser declarado e configurado no web.xml;
• Usado como controladores no padrão MVC
• Servlet vs. JSP:
Servet = mais utilizado para recepção e controle de requisições Web;
JSP = mais utilizado para geração de conteúdo;
Globalcode Slide 17
20. Agenda
Plataforma Java
Java Enterprise Edition
Principais Tecnologias (APIs)
Java Servlet
JSP
JSF
EJB
JPA
Injeção de Dependência
Segurança
Servidores de Aplicação
Comparativo de Versões
Demo
Perguntas e Respostas
Globalcode Slide 20
21. JavaServer Pages (JSP)
• É uma tecnologia Java para geração de conteúdo Web
dinâmico (estático + banco de dados, por exemplo)
mesclando código HTML com código Java:
<html>
<head>
<title>Olá Mundo</title>
</head>
<body>
Código HTML puro <br>
<% for(int x=0;x<100;x++) { %>
<p>Olá Mundo com laço: <%= x %></p>
<%}%>
</body>
</html>
Globalcode Slide 21
22. JavaServer Pages (JSP)
• Parecido com ASP, porém no lugar de Basic utilizamos
Java;
• Robusto, flexível e componentizável;
• Permite a criação de aplicativos simples, inteiramente
escritos dentro dos JSP’s (model one);
• Permite a criação de aplicativos profissionais, utilizando
técnicas avançadas de modelagem como M.V.C.;
• Rápido ;
• É transformado em Servlet antes da sua execução;
Globalcode Slide 22
23. Agenda
Plataforma Java
Java Enterprise Edition
Principais Tecnologias (APIs)
Java Servlet
JSP
JSF
EJB
JPA
Injeção de Dependência
Segurança
Servidores de Aplicação
Comparativo de Versões
Demo
Perguntas e Respostas
Globalcode Slide 23
24. JavaServer Faces (JSF)
• Framework para a implementação de interfaces gráficas das
aplicações Web baseadas no modelo Swing
• Incorpora características de um framework MVC para WEB e de um
modelo de interfaces gráficas baseado em eventos
Separação entre visualização e regras de negócio
Visualização pode ser feita por diferentes renderizadores
• Padrão de Componentes de User Interface
Especificação Java EE, portante exige uma implementação
• Amplo suporte de IDEs (Eclipse, Netbeans,DreamWeaver)
“Toolability = Ferramentabilidade”
• Diversas bibliotecas de componentes de UI de terceiros
Globalcode Slide 24
25. JavaServer Faces (JSF)
J2EE Web Container J2EE EJB
Container
JavaServer Faces
Controller View Model
Servlet Java Custom JavaBeans EJB
Server Tag
Pages
Globalcode Slide 25
29. Agenda
Plataforma Java
Java Enterprise Edition
Principais Tecnologias (APIs)
Java Servlet
JSP
JSF
EJB
JPA
Injeção de Dependência
Segurança
Servidores de Aplicação
Comparativo de Versões
Demo
Perguntas e Respostas
Globalcode Slide 29
30. Enterprise JavaBeans (EJB)
• Componentes de regras de negócio que podem ser acessados
remotamente
Podem ser utilizados em aplicações Web e não Web
• Tem contexto transacional
Servidor pode cuidar processo de commit / rollback automaticamente
• Classificados em:
Session Beans
Message-driven beans
Globalcode Slide 30
31. Enterprise JavaBeans (EJB)
Componentes Negócio Compartilhados
Cliente WS
EJB
Session Bean
Swing
Web Browser Java Web
JVM + Container EE
Rede Local
Globalcode Slide 31
32. Enterprise JavaBeans (EJB)
Infra Estrutura do Container
Controle Transacional EJB
Escalabilidade
Segurança
EJB
Session Bean
Queues Data
Topics Sources
Environment
Entries
Globalcode Slide 32
33. EJB Session Bean
• Representa um processo de negócio (regra de negócio);
• Pode ser do tipo Stateless ou Stateful;
• 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;
Globalcode Slide 33
34. EJB Session Bean
• Stateless (sem estado)
Período que uma instancia do
EJB fica “preso” a um cliente
Globalcode Slide 34
38. EJB Session Bean
• Clientes acessam o Session Bean através de uma
interface Java simples (POJI);
• Métodos (serviços) são publicados através desta
interface;
• A interface deve ser implementada pela classe do Bean;
• 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).
Globalcode Slide 38
40. EJB Message-Driven Bean (MDB)
• EJB que é acionado de forma assíncrona;
• Trabalha totalmente vinculado ao conceito de utilização
de um serviço de mensagens;
• Utiliza a API do Java Message Service (JMS) em conjunto
com Session Beans;
• Facilita a quebra de acoplamento entre o cliente e o
destino;
Globalcode Slide 40
41. EJB Message-Driven Bean (MDB)
• Vejamos o comparativo de uma chamada síncrona, e uma
chamada assíncrona utilizando um serviço de mensagens
Síncrono Assíncrono
Globalcode Slide 41
42. EJB Message-Driven Bean (MDB)
• 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;
Globalcode Slide 42
44. Agenda
Plataforma Java
Java Enterprise Edition
Principais Tecnologias (APIs)
Java Servlet
JSP
JSF
EJB
JPA
Injeção de Dependência
Segurança
Servidores de Aplicação
Comparativo de Versões
Demo
Perguntas e Respostas
Globalcode Slide 44
45. Java Persistence API (JPA)
• 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
Globalcode Slide 45
48. Java Persistence API (JPA)
• EntityManager (javax.persistence)
Gerencia o ciclo de vida das entidades
(B) find / query
(C) persist
(D) clear / serialização
(E) merge
(F) remove
Globalcode Slide 48
49. Java Persistence API (JPA)
• PersistenceContext
Conjunto de objetos “managed” associados a um
EntityManager
EntityManager PersistenceContext
obj5
obj1 obj2 obj3 obj4
NEW / DETACHED
MANAGED MANAGED MANAGED MANAGED
Globalcode Slide 49
50. Java Persistence API (JPA)
• Persistence Unit
Uma unidade de persistência define um contexto de
funcionamento para os EntityManagers
Globalcode Slide 50
52. Agenda
Plataforma Java
Java Enterprise Edition
Principais Tecnologias (APIs)
Java Servlet
JSP
JSF
EJB
JPA
Injeção de Dependência
Segurança
Servidores de Aplicação
Comparativo de Versões
Demo
Perguntas e Respostas
Globalcode Slide 52
53. Injeção de Dependência
• Mecanismo de “injeção” de recursos necessários
a um componente de forma automática
Sem a presença de instruções explícitas para acessar o
recurso
• Exemplo:
O componente de negócios A depende do componente de
negócios B e do pool de conexões C.
B
A
C
Globalcode Slide 53
54. Injeção de Dependência
• Sem injeção de dependência:
Código fonte do componente A contém instruções para
“buscar” o componente B e o recurso C.
lookups
Serviço de Nomes
A
“ejb/componenteB”
“jdbc/dataSourceC”
B
C
Globalcode Slide 54
55. Injeção de Dependência
• Com injeção de dependência
Código do componente A não busca recursos e outros
componentes
Devemos declarar as dependências de componentes e
recursos nos atributos ou métodos setters do componente
A
Container (Java EE) interpreta as dependências
declaradas no componente A e “injeta” os recursos e
componentes necessários
Globalcode Slide 55
56. Injeção de Dependência
class ComponenteA {
@EJB(name=“ejb/componenteB”) InterfaceB b;
@Resource(name=“jdbc/dataSourceC”) DataSource c;
}
injeção
Serviço de Nomes
A
“ejb/componenteB”
“jdbc/dataSourceC”
B
C
Globalcode Slide 56
58. Injeção de Dependência
Quem pode receber injeção ?
EJB, Interceptor
Servlet, Filter, *Listener, JSP Tag Handler
JSF Managed Beans
Endpoints JAX-WS e Handlers
O que pode ser injetado ?
Referências a EJBs e a Web Services
DataSource JDBC
Destination e ConnectionFactory JMS
UserTransaction
EntityManager (JPA)
Globalcode Slide 58
59. Agenda
Plataforma Java
Java Enterprise Edition
Principais Tecnologias (APIs)
Java Servlet
JSP
JSF
EJB
JPA
Injeção de Dependência
Segurança
Servidores de Aplicação
Comparativo de Versões
Demo
Perguntas e Respostas
Globalcode Slide 59
60. Segurança
• Java EE suporta todos os níveis de segurança;
• Utiliza o Java Authentication and Autorization Service (JAAS);
• Consiste no mecanismo de autenticação e autorização de usuários,
baseado em uma identidade e roles (perfil de acesso) associados.
Globalcode Slide 60
61. Segurança
• Exemplo de Verificações de Segurança Declarativa
Globalcode Slide 61
62. Segurança
• Exemplo de Verificações de Segurança Programática
Globalcode Slide 62
66. Servidores de Aplicação
• Web Container
Trabalha em conjunto com um Servidor HTTP para
oferecer suporte aos componentes da camada Web
Tomcat (Apache)
Jetty
JRun (Adobe)
• EJB Container
É o servidor de componentes transacionais EJB
OpenEJB (Apache) *
Containeres específicos dos fabricantes de servidores de
aplicação
Globalcode Slide 66
67. Servidores de Aplicação
• Serviços oferecidos pelos containeres Java EE:
Gestão de memória, ciclo de vida de objetos e estado de
objetos
Conexões, Transações, Serviço de nomes
Segurança
Tolerância a falhas
Integração
WebServices
Clustering
Alta disponibilidade
Confiabilidade...
Globalcode Slide 67
68. Servidores de Aplicação
• Servidores de aplicação Java EE (* gratuitos)
JBoss Application Server (RedHat) *
GlassFish (RI) (Sun) *
Gerônimo (Apache) *
Websphere Application Server (IBM)
WebLogic Server (BEA)
Oracle application Server – OC4J (Oracle)
• A escolha do servidor deve considerar se a versão
escolhida é compatível com o Java EE utilizado (1.4 ou 5)
Servidores certificados são listados em:
http://java.sun.com/javaee/overview/compatibility.jsp
Globalcode Slide 68
69. Agenda
Plataforma Java
Java Enterprise Edition
Principais Tecnologias (APIs)
Java Servlet
JSP
JSF
EJB
JPA
Injeção de Dependência
Segurança
Servidores de Aplicação
Comparativo de Versões
Demo
Perguntas e Respostas
Globalcode Slide 69
70. Comparativo de Versões
• Java EE 1.4
Novembro de 2003
EJB 2.1, Servlet 2.4 e JSP 2.0
Principais problemas
Deployment descriptor
Interfaces
Entity beans
Complexidade de aprendizado e desenvolvimento
• Java EE 5
Maio de 2006
Aumentar a produtividade e facilitar o desenvolvimento
Principais mudanças
Anotações
Enterprise JavaBeans 3.0
Java Persistence API (JPA)
Injeção de dependência
Inclusão de JSF 1.2
Novas versões das APIs existentes
Globalcode Slide 70
71. Comparativo de Versões
• Java EE 6 (O que vem por aí !!!)
Previsão da final specification no 1Q2009;
Futuras mudanças
Java Servlet 3.0;
EJB 3.1;
JPA 2.0;
JSF 2.0;
Web Beans;
Profiles (deployment);
Novas versões das APIs existentes.
Globalcode Slide 71