slides

Propaganda
Introdução à Plataforma
J2EE
Java2 Enterprise Edition
Alex de V. Garcia, Dr.
1
O que é a plataforma J2EE?
• Estende a linguagem Java através de
padrões simples e unificados para
aplicações distribuídas através de um
modelo baseado em componentes.
• J2EE especifica tanto a infra-estrutura para
gerenciar suas aplicações quanto APIs para
contruí-las.
Alex de V. Garcia, Dr.
2
Padronização
• Java Community Process. www.jcp.org
• Participantes: Accenture, Adobe, BEA, Borland,
British Telecom, Bull, Cisco, Compaq, DOD, EDS,
Ericsson, Fujitsu, HP, Hitachi, IBM,
Macromedia, Mitsubishi, Motorola, NEC, Nokia,
Novell, NTT, Oracle, Panasonic, Philips, Rational,
SAP, Sharp, Siemens, Sony, Sun, Sybase,
Telefonica, Texas Instruments, Unisys, Verisign,
Vignette, Vodafone, Xerox, Yamaha,...
Alex de V. Garcia, Dr.
3
Linguagem Java
• A linguagem Java é Orientada a Objetos
• A linguagem é totalmente portável
• A linguagem implementa desalocação
automática de memória
Alex de V. Garcia, Dr.
4
Linguagem Java
• A linguagem Java é Orientada a Objetos
Influenciada diretamente por C++ e Eiffel, a
linguagem segue a grande tendência das
linguagens de programação nas décadas de 80 e
90. Neste período, linguagens como Pascal,
Ada, Lisp e Cobol ganharam versões Orientadas
a Objetos.
Alex de V. Garcia, Dr.
5
Linguagem Java
• A linguagem é totalmente portável
Código
Fonte
.java
Compilador
Código
Bytecode
.class
Máquina
Virtual
Alex de V. Garcia, Dr.
6
Linguagem Java
• A linguagem implementa desalocação
automática de memória (“coleta de lixo”), e não
permite a desalocação manual.
–
–
–
–
Produtividade do programador
Testes
Bugs
Qualidade
Alex de V. Garcia, Dr.
7
Linguagem Java
• A linguagem Java é Orientada a Objetos
• A linguagem é totalmente portável
• A linguagem implementa desalocação
automática de memória
Alex de V. Garcia, Dr.
8
Linguagem Java
• A linguagem Java é Orientada a Objetos
– Custo de ligação dinâmica para implementar o
polimorfismo.
– Custo de indireção para a semântica por referência.
– Alto custo do mecanismo de tratamento de exceções.
Alex de V. Garcia, Dr.
9
Linguagem Java
• A linguagem é totalmente portável
– Custo de interpretação dos bytecodes.
– Custo de interpretação dos tipos primitivos.
Alex de V. Garcia, Dr.
10
Linguagem Java
• A linguagem implementa desalocação
automática de memória.
– Performance.
– Consumo de memória.
Alex de V. Garcia, Dr.
11
Linguagem Java
• Conclusão:
– Java é uma das linguagens mais bem projetadas
desde Ada.
– Java não apresenta performance comparável a
Fortran ou C.
– As decisões de projeto da linguagem são ótimas para
rodar em um servidor Web.
• Portabilidade entre diferentes sistemas operacionais.
• Facilidades de multithreading incluídas na linguagem.
• Baixo custo de desenvolvimento (alta produtividade).
Alex de V. Garcia, Dr.
12
Aplicações Web
• São aplicações cliente-servidor
Interface
?
Lógica
?
Alex de V. Garcia, Dr.
Dados
SGBD
Interface Lógica
Servidor
Cliente
13
Aplicações Web
Servidor
Cliente
XML
Applet
JavaScript
VbScript
ttp
H
Browser
JVM
Html
Servidor BD
Httpd
JVM
?
+ Servlet
SGBD
Alex de V. Garcia, Dr.
14
Java no Cliente
Cliente
Browser
JVM
Applet
Alex de V. Garcia, Dr.
Lógica
JavaScript
VbScript
Interface
Html
XML
15
Exemplo de Servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<HTML><BODY>");
out.println("<BIG> Alô Mundo </BIG>");
out.println("</BODY></HTML>");
}
}
Alex de V. Garcia, Dr.
16
Tratando o Request
<HTML>
<BODY>
<FORM METHOD=GET ACTION=“/Olah”>
Qual é o seu nome?
<INPUT TYPE = TEXT NAME=“nome”><P>
<INPUT TYPE = SUBMIT>
</FORM>
</BODY>
</HTML>
•Cada campo em um formulário HTML representa um parâmetro para
um request do tipo Get ou Post, de acordo com o especificado no
atributo “METHOD”.
Alex de V. Garcia, Dr.
17
Tratando o Request
public class Olah extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
String nome = req.getParameter("nome");
out.println("<HTML>");
out.println("<BODY>");
out.println(”Olá, " + nome);
out.println("</BODY></HTML>");
}
}
Alex de V. Garcia, Dr.
18
Java no Servidor
Servlet
resposta
solicitação Get
solicitação Post
resposta
service ( )
HttpServlet
doGet ( )
service ( )
doPost ( )
Reimplementados
na subclasse
Métodos
executados
Alex de V. Garcia, Dr.
Subclasse de HttpServlet
doGet ( )
doPost ( )
19
Java no Servidor
• Da mesma forma que existe lógica no
cliente, existe apresentação no servidor.
• Como separar a apresentação da lógica?
– Facilitar edição para mudança de layout
– Facilitar mudança de padrão de saída (ex: de
HTML para WML)
– Facilitar manutenção da interface
Alex de V. Garcia, Dr.
20
JSP
JSP
Servlet
---- texto html ------- texto html ------- texto html ---<% código java %>
---- texto html ---<% código java %>
---- texto html ------- texto html ----
out.print(texto html)
out.print(texto html)
out.print(texto html)
-- código java -out.print(texto html)
-- código java -out.print(texto html)
out.print(texto html)
Alex de V. Garcia, Dr.
21
Exemplo de JSP
<HTML>
<HEAD>
<TITLE>Olá</TITLE>
<BODY>
Olá, <%= request.getParameter(”nome”) %>,
a hora é <%= new java.util.Date() %>
<BR>
</BODY>
</HTML>
Alex de V. Garcia, Dr.
22
Java no Servidor
Interface
JSP
Lógica
Servlet
Dados
Alex de V. Garcia, Dr.
23
Exemplo de Java Bean
package br.xpto;
public class UsuarioLogado {
private String id;
private int nivelAcesso;
public String getId() {
return id;
public void setId(String id) {
this.id = id;
}
public int getNivelAcesso() {
return nivelAcesso;
}
public void setNivelAcesso(int nivelAcesso) {
this.nivelAcesso = nivelAcesso;
}
Alex de V. Garcia, Dr.
}
24
Java no Servidor
Interface
JSP
Lógica
Servlet
Dados
Java Beans
Alex de V. Garcia, Dr.
25
Arquitetura MVC
• Padrão Arquitetural da plataforma J2EE
• Model
– Dados de negócio
• View
– Apresentação para o cliente
• Controller
– Lógica de controle
• Onde entra a lógica da aplicação?
Alex de V. Garcia, Dr.
26
EJBs
Web
EJB
Container Container
Cliente
XML
Applet
ttp
H
Browser
JVM
Html
Servidor BD
JSP
JavaScript
VbScript
Servlet
Java
Beans
Alex de V. Garcia, Dr.
EJBs
SGBD
EJBs
27
JDBC
• API padrão para acesso a base de dados
heterogêneas.
• JDBC 2.0: Tipos de dados SQL 3, DataSource
Aplicação
API JDBC
Alex de V. Garcia, Dr.
API SGBD
JDBC Driver
SGBD
28
JNDI
• Acesso a serviços de nome e diretório
independentemente de sua aplicação.
• Ciclo: Conexão, autenticação, busca e
desconexão.
Alex de V. Garcia, Dr.
29
RMI - IIOP
• Protocolo que permite invocar métodos remotos de
objetos escritos em Java.
• Permite passar dados por valor, mediante
serialização.
Aplicação
Objeto
Stub
Skeleton
Camada RMI
Alex de V. Garcia, Dr.
30
Exemplo RMI
import java.rmi.*;
interface HoraI extends Remote {
long getHoraCerta() throws RemoteException;
}
Alex de V. Garcia, Dr.
31
Exemplo RMI
public class Hora extends UnicastRemoteObject implements HoraI {
public long getHoraCerta() throws RemoteException {
return System.currentTimeMillis();
}
public Hora() throws RemoteException { }
public static void main(String[] args) throws Exception {
LocateRegistry.createRegistry(2005);
Hora h = new Hora();
Naming.bind("//200.20.120.166:2005/hora", h);
}
}
Alex de V. Garcia, Dr.
32
Exemplo RMI
public class ClienteHoraCerta {
public static void main(String[] args) throws Exception {
HoraI t = (HoraI)Naming.lookup(
"//200.20.120.166:2005/hora");
for(int i = 0; i < 10; i++)
System.out.println(”Hora Certa = " + t.getHoraCerta());
}
}
Alex de V. Garcia, Dr.
33
Deployment
•
Módulos Web
– Arquivo .war contendo web.xml no diretório
WEB-INF
•
Módulos EJB
– Arquivo .jar contendo ejb-jar.xml no
diretório META-INF
•
Módulos Java
– Arquivo .jar contendo application-client.xml
• Um .ear que contém application.xml no
diretório META-INF
Alex de V. Garcia, Dr.
34
Deployment
DD = Deployment Descriptor
Modulo
EJB
.JAR
Enterprise
Bean
EJB
DD
Alex de V. Garcia, Dr.
Servlet
JSP
Applicação
J2EE
.EAR
Application
DD
Modulo
Web
.WAR
Modulo
Cliente
.JAR
HTML,
GIF, etc.
Web
DD
Client
Class
Client
DD
35
Papéis no desenv. J2EE
• Provedor de Produto
• Desenvolvedor de Componente de
Aplicação
• Montador de aplicação
• Deployer de Aplicação
• Administrador de Sistema
Alex de V. Garcia, Dr.
36
Servidores de Aplicação
• Em 03 de Maio 2003:
– 18 servidores de aplicação certificados em
J2EE1.2
– 15 servidores de aplicação certificados em
J2EE1.3
Alex de V. Garcia, Dr.
37
Performance
• Apesar dos custos de abstração da
linguagem Java. A performance de servlets
é equivalente a de CGI C++.
• Os principais servidores de aplicação
utilizam compiladores just in time - JIT.
• e-bay: 320M page views/dia. 2100
transações/segundo.
Alex de V. Garcia, Dr.
38
Segurança
• Permite segurança como parte do deployment, sem
depender de configuração de ambiente durante a
execução da aplicação.
• Facilita o desenvolvimento ao delegar a
responsabilidade para os “papéis de segurança”.
• Evita misturar código de segurança à lógica do
negócio.
• Permite configurar as políticas de segurança da forma
mais adequada ao ambiente de instalação.
Alex de V. Garcia, Dr.
39
Download