View
15.459
Download
4
Category
Preview:
DESCRIPTION
Mini-curso Globalcode / VOfficeMC34 - Tutorial Java EE
Citation preview
Slide 1 Globalcode
Mini-curso Gratuito
Slide 2 Globalcode
Tutorial Java Enterprise Tutorial Java Enterprise Edition Edition ((Java EEJava EE))
Mini-curso Gratuito
Rodrigo Cândido da Silva Instrutor VOffice / Globalcode
Slide 3 Globalcode
Objetivo
Conhecer a plataforma Java Enterprise Edition 5
e entender as principais diferenças desta versão
em relação as versões anteriores
Slide 4 Globalcode
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
Slide 5 Globalcode
Rodrigo Cândido da Silva Rodrigo Cândido da Silva –– rcandidosilvarcandidosilva@@gmailgmail..comcom TrabalhaTrabalha: : Arquiteto Java Arquiteto Java / / InstrutorInstrutor
ExperiênciaExperiência: : 88 anos na anos na áárea de desenvolvimento de rea de desenvolvimento de sistemassistemas, , trabalhando com Java desde trabalhando com Java desde 20012001;;
CertificaCertificaççõesões: : SCJASCJA, , SCJPSCJP, , SCWCDSCWCD, , SCBCDSCBCD, , SCEASCEA
Palestrante
Slide 6 Globalcode
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
Slide 7 Globalcode
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)
Slide 8 Globalcode
Java Community Process (JCP)
Slide 9 Globalcode
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
Slide 10 Globalcode
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
Slide 11 Globalcode
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
Slide 12 Globalcode
Arquitetura Java EE
Slide 13 Globalcode
Arquitetura Java EE
Slide 14 Globalcode
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
Slide 15 Globalcode
Java Servlet
• Aplicações que rodam no servidor e respondem requisições de clientes Web
Slide 16 Globalcode
Java Servlet
Slide 17 Globalcode
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;
Slide 18 Globalcode
package xpto;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class OlaMundo extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
Java Servlet
Slide 19 Globalcode
• 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>
Java Servlet
Slide 20 Globalcode
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
Slide 21 Globalcode
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>
Slide 22 Globalcode
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;
Slide 23 Globalcode
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
Slide 24 Globalcode
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
Slide 25 Globalcode
JavaServer Faces (JSF)
J2EE Web Container
J2EE EJB Container
Controller
Model
View
Servlet
JavaBeans
Java Server Pages
Custom Tag
EJB
JavaServer Faces
Slide 26 Globalcode
JavaServer Faces (JSF)
Slide 27 Globalcode
JavaServer Faces (JSF) P
ágin
a J
SF
face
s-co
nfi
g.x
ml
Man
aged
Bea
n
Slide 28 Globalcode
JavaServer Faces (JSF)
Componentes para JavaServer Faces
• DataGrid;
• Tabbed Panel;
• PanelGrid;
• SelectOneMenu, SelectOneRadio, SelectOneListBox;
• SelectManyMenu, SelectManyRadio, SelectManyListBox;
• FileUpload;
• Auto-complete AJAX;
• Muitos outros…
Slide 29 Globalcode
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
Slide 30 Globalcode
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
Slide 31 Globalcode
Enterprise JavaBeans (EJB)
EJB Session Bean
Java Web
Swing
Cliente WS
Web Browser
JVM + Container EE Rede Local
Componentes Negócio Compartilhados
Slide 32 Globalcode
Enterprise JavaBeans (EJB)
EJB Session Bean
Seg
ura
nça
Co
ntr
ole
Tra
nsa
cio
nal
Esc
alab
ilid
ade
Queues Topics
Data Sources
Environment Entries
EJB
Infra Estrutura do Container
Slide 33 Globalcode
• 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;
EJB Session Bean
Slide 34 Globalcode
EJB Session Bean
• Stateless (sem estado)
Período que uma instancia do EJB fica “preso” a um cliente
Slide 35 Globalcode
EJB Session Bean
• Stateless (sem estado)
Slide 36 Globalcode
EJB Session Bean
• Stateful (com estado)
Período que uma instancia do EJB fica “preso” a um cliente
Slide 37 Globalcode
EJB Session Bean
• Stateful (com estado)
Slide 38 Globalcode
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).
Slide 39 Globalcode
EJB Session Bean
• Local Interface • Remote Interface
Slide 40 Globalcode
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;
Slide 41 Globalcode
• Vejamos o comparativo de uma chamada síncrona, e uma chamada assíncrona utilizando um serviço de mensagens
Síncrono Assíncrono
EJB Message-Driven Bean (MDB)
Slide 42 Globalcode
• 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;
EJB Message-Driven Bean (MDB)
Slide 43 Globalcode
• Exemplo de um MDB
EJB Message-Driven Bean (MDB)
Slide 44 Globalcode
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
Slide 45 Globalcode
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
Slide 46 Globalcode
Java Persistence API (JPA)
Slide 47 Globalcode
Entidade JPA
Slide 48 Globalcode
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
Slide 49 Globalcode
Java Persistence API (JPA)
• PersistenceContext �Conjunto de objetos “managed” associados a um
EntityManager
EntityManager PersistenceContext
obj1 obj4 obj2 obj3 obj5
MANAGED MANAGED MANAGED MANAGED NEW / DETACHED
Slide 50 Globalcode
Java Persistence API (JPA)
• Persistence Unit �Uma unidade de persistência define um contexto de
funcionamento para os EntityManagers
Slide 51 Globalcode
Utilizando JPA
Slide 52 Globalcode
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
Slide 53 Globalcode
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.
A B
C
Slide 54 Globalcode
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.
A
B C
Serviço de Nomes
“ejb/componenteB”
“jdbc/dataSourceC”
lookups
Slide 55 Globalcode
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
Slide 56 Globalcode
Injeção de Dependência
A
B C
Serviço de Nomes
“ejb/componenteB”
“jdbc/dataSourceC”
injeção
class ComponenteA {
@EJB(name=“ejb/componenteB”) InterfaceB b;
@Resource(name=“jdbc/dataSourceC”) DataSource c;
}
Slide 57 Globalcode
Injeção de Dependência
• Exemplo de Utilização
Slide 58 Globalcode
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)
Slide 59 Globalcode
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
Slide 60 Globalcode
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.
Slide 61 Globalcode
Segurança
• Exemplo de Verificações de Segurança Declarativa
Slide 62 Globalcode
Segurança
• Exemplo de Verificações de Segurança Programática
Slide 63 Globalcode
Java Enterprise Edition
• Outras APIs: �JCA (Java Conector Architecture) �JTA (Java Transaction API) �JNDI, RMI-IIOP �JDBC �JMS (Java Messaging Service) �JAXP, JAX-RPC, �JMX �…
Slide 64 Globalcode
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
Slide 65 Globalcode
Servidores de Aplicação
Fonte: Tutorial Java EE da Sun
Slide 66 Globalcode
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
Slide 67 Globalcode
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...
Slide 68 Globalcode
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
Slide 69 Globalcode
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
Slide 70 Globalcode
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
Slide 71 Globalcode
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.
Slide 72 Globalcode
Demo
Slide 73 Globalcode
Perguntas & Respostas
Slide 74 Globalcode
Mini-curso Gratuito
Agradecemos a presença!
http://sites.google.com/site/vofficejava/
Recommended