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
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
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
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
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
Java Community Process (JCP)
Globalcode Slide 8
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
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
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
Arquitetura Java EE
Globalcode Slide 12
Arquitetura Java EE
Globalcode Slide 13
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 14
Java Servlet
• Aplicações que rodam no servidor e respondem requisições de
clientes Web
Globalcode Slide 15
Java Servlet
Globalcode Slide 16
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
Java Servlet
• Exemplo de configuração no arquivo web.xml
<servlet>
<servlet-name>OlaMundo</servlet-name>
<servlet-class>exemplo01.OlaMundo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>OlaMundo</servlet-name>
<url-pattern>/OlaMundo</url-pattern>
</servlet-mapping>
Globalcode Slide 19
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
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
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
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
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
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
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
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
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
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
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
EJB Session Bean
• Stateless (sem estado)
Período que uma instancia do
EJB fica “preso” a um cliente
Globalcode Slide 34
EJB Session Bean
• Stateless (sem estado)
Globalcode Slide 35
EJB Session Bean
• Stateful (com estado)
Período que uma
instancia do EJB fica
“preso” a um cliente
Globalcode Slide 36
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
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
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
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
EJB Message-Driven Bean (MDB)
• Exemplo de um MDB
Globalcode Slide 43
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
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
Java Persistence API (JPA)
Globalcode Slide 46
Entidade JPA
Globalcode Slide 47
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
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
Java Persistence API (JPA)
• Persistence Unit
Uma unidade de persistência define um contexto de
funcionamento para os EntityManagers
Globalcode Slide 50
Utilizando JPA
Globalcode Slide 51
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
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
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
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
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
Injeção de Dependência
• Exemplo de Utilização
Globalcode Slide 57
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
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
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
Segurança
• Exemplo de Verificações de Segurança Declarativa
Globalcode Slide 61
Segurança
• Exemplo de Verificações de Segurança Programática
Globalcode Slide 62
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 64
Servidores de Aplicação
Fonte: Tutorial Java EE da Sun
Globalcode Slide 65
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
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
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
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
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
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
Demo
Globalcode Slide 72
Perguntas & Respostas
Globalcode Slide 73
Mini-curso Gratuito
Agradecemos a presença!
http://sites.google.com/site/vofficejava/
Globalcode Slide 74
0 comments
Post a comment