Introdução ao Java EE
Julio M. Faerman
Desenvolvimento web com Java
Recursos
http://jfaerman.googlepages.com/
• Apresentações
• Exemplos
• Exercícios
• Tutoriais
• Links
• Downloads
#2
Desenvolvimento web com Java
Agenda
• Evolução da arquitetura de sistemas de
informação
• Servidor de aplicações
• Contêiner Web
• Aplicações Web JEE
#3
Evolução das arquiteturas de software
Aplicações Monolíticas
Interface do Usuário
Dados
#4
Evolução das arquiteturas de software
Aplicações duas camadas
Cliente “Gordo”
Banco de
Dados
#5
Evolução das arquiteturas de software
Aplicações N camadas (tiers)
Interface do Usuário
Cliente magro (?) (HTML, WML,...) ou gordo (Swing, SWT,...)
Middleware (N camadas)
JEE, Corba, DCOM, MOM, ESB,...
Banco de dados
Oracle, MySQL, Firebird, DB2, Adabas,...
#6
Benefícios e desafios de aplicações distribuídas
Requisitos não funcionais
• Reusabilidade
• Manutenibilidade
• Desempenho
– Vazão
– Latência
• Escalabilidade
•
•
•
•
Segurança
Disponibilidade
Tolerância a falhas
Balanceamento de
Carga
• Integração
#7
Ambientes de programação distribuída
Middlewares
#8
Desenvolvimento web com Java
APP
Aplicação
APP Server
Transporte
Maquina Virtual Java
Sistema Operacional
Dispositivos
Rede
Rede
Enlace
DEPLOYER
JSE APP
JEE APP
DEVELOPER
A Lasanha
Física
#9
Desenvolvimento web com Java
AppServer Genérico
H
T P
T
R
M
I
Web Container
EJB Container
web-app1.war
ejb-app1.jar
web-app2.war
ejb-app1.jar
App Server
J
N
Data Sources
Message Queue
D
enterprise-app1.ear
enterprise-app2.ear
EJBs
I
Mail Session
Cache
Java EE Classpath (servlet, jp, ejb, persistence, jaxp, jms …)
Java SE (JVM + SE Classpath)
Sistema Operacional
Desenvolvimento web com Java
Web Container (JEE 5)
• Servlets
– Java Server Pages
• Filters
• Listeners
• Tag Libraries
– Tag Handlers
– Tag Files
• Java Server Faces
• Web Services
– SOAP
– REST*
• Container Managed
Authentication
# 11
Desenvolvimento web com Java
Web Application Típica
request
response
request
response
HTTPServlet
doGet()
doPost()
doPut()
doDelete()
Filter
//before
Chain.doFilter()
//after
JSP
<html>
<% x++; %>
</html>
compile
HTTPServlet
out.println(“<html>”)
x++;
out.println(“/<html>”)
ServletContextListener
HttpSessionListener
ServletRequestListener
ServletContextAttribute
Listener
HttpSessionAttributeLi
stener
ServletRequestAttribute
Listener
events
HttpSessionActivationL
istener
Desenvolvimento web com Java
Exercício: App Web JEE
•
•
•
•
•
•
Servlet
Filter
JSP
Tag File
Listener
Deployment
Descriptor
# 13
Desenvolvimento web com Java
Os problemas
class InserePedido extends HttpServlet{
... doPost(…){
if (! tudoCerto) …
Pedido p = new Pedido();
p.setXxx(request.getParameter(“Xxx”));
request.setAttribute(“pedido”,p);
out.print(“<htlm>…</html>”)
requestDispatcher.forward(“some.jsp”)
}
}
<table>
<% for.. %>
<tr><td><%= if(pedido.isEspecial()) %>
<%= pedido.getValor() * 0.90%>
1. Duplicação
2. Duplicação
3. Problemas ortogonais
• Validação
• Segurança
• Transações
4. Manipulação do HTTP
5. Negócio x
Apresentação
6. Código prolixo
7. …
# 14
Desenvolvimento web com Java
Web Frameworks
• Abstração
– Actions
– Componentes*
• Reuso de apresentação
– Componentes**
– Templates
• Validação
• Conversão
• Pontos de extensão
# 15
Desenvolvimento web com Java
Soluções?
Spring
JApple JATO
JPublish JWarp Bishop MVC Freemarker
NiggleTeaServlet Jacquard
Tapestry
JBanana
JSP
Chiba
WingSGenie
CanyamoFolium Velocity
Servlet Echo
Bishop Scope
Struts WebWork
Macaw
Melati
Dinamica
Wicket
Millstone
Expresso
Verge
Warfare
GWT
Tiles RIFE
JSF
TeaServlet Barracuda Jaffa
JWAACocoon
Sitemesh
OXF SOFIA Maverick
Cassandra
WebOnSwing JZonicAction Open Shocks Bento
Helma
jStatemachine
JFormular
Frmwk Emcee
# 16
Trubine
Groovlets
Desenvolvimento web com Java
Dúvidas?
# 17
Download

Slide 1 - cursos