Introdução ao Java EE Julio M. Faerman. Recursos Apresentações Exemplos Exercícios Tutoriais...

17
Introdução ao Java EE Julio M. Faerman

Transcript of Introdução ao Java EE Julio M. Faerman. Recursos Apresentações Exemplos Exercícios Tutoriais...

Introdução ao Java EE

Julio M. Faerman

Recursoshttp://jfaerman.googlepages.com/

• Apresentações• Exemplos• Exercícios• Tutoriais• Links• Downloads

Desenvolvimento web com Java

# 2

Agenda• Evolução da arquitetura de sistemas

de informação• Servidor de aplicações• Contêiner Web• Aplicações Web JEE

Desenvolvimento web com Java

# 3

Aplicações MonolíticasEvolução das arquiteturas de software

# 4

Interface do Usuário

Dados

Evolução das arquiteturas de software

# 5

Aplicações duas camadas

Banco deDados

Cliente “Gordo”

Aplicações N camadas (tiers)Evolução das arquiteturas de software

# 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

A LasanhaDesenvolvimento web com Java

# 9

APP Server

Maquina Virtual Java

Sistema Operacional

Dispositivos Rede

APP

JSE APP

JEE APP

D E

V E

L O

P E

R

D E P L O Y E R

Aplicação

Transporte

Rede

Enlace

Física

AppServer GenéricoDesenvolvimento web com Java

Sistema OperacionalJava SE (JVM + SE Classpath)

App Server

Web Container EJB Container

Java EE Classpath (servlet, jp, ejb, persistence, jaxp, jms …)

web-app1.war

web-app2.war

ejb-app1.jar

ejb-app1.jar

enterprise-app1.earenterprise-app2.ear

J N D I

EJBs

Data Sources

Message Queue

Mail Session

Cache

HTTP

RMI

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

Desenvolvimento web com Java

# 11

Web Application TípicaDesenvolvimento web com Java

HTTPServletdoGet()doPost()doPut()doDelete()

JSP<html> <% x++; %></html>

HTTPServletout.println(“<html>”) x++;out.println(“/<html>”)

request

response

Filter//beforeChain.doFilter()//after

request

response

compile

ServletContextListener

ServletContextAttributeListener

HttpSessionListener

HttpSessionAttributeListener

HttpSessionActivationListener

ServletRequestListener

ServletRequestAttributeListener

events

Exercício: App Web JEE• Servlet• Filter• JSP• Tag File• Listener• Deployment

Descriptor

Desenvolvimento web com Java

# 13

Os problemasDesenvolvimento web com Java

# 14

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ção2. Duplicação3. Problemas ortogonais

• Validação• Segurança• Transações

4. Manipulação do HTTP5. Negócio x

Apresentação6. Código prolixo7. …

Web Frameworks• Abstração

– Actions– Componentes*

• Reuso de apresentação– Componentes**– Templates

• Validação• Conversão• Pontos de extensão

Desenvolvimento web com Java

# 15

Soluções?Desenvolvimento web com Java

# 16

JSP

ServletStruts

Sitemesh

WebWork

Tapestry

GWT

Velocity

Cocoon

EchoCanyamo

Millstone

OXF

RIFE

TeaServlet

Shocks

Folium

JZonic

JPublishJATO

MaverickSOFIABarracuda

Bishop

Niggle

Verge

Bento

WingS

jStatemachine

Expresso

ActionFrmwk

TeaServlet

Jacquard

Jaffa JWAA

Warfare

Scope

OpenEmcee

Macaw

Chiba JBanana

JWarp

Cassandra WebOnSwing

Dinamica

Helma

JApple

JFormular

Melati

Genie

JSF

BishopSpringMVC

Tiles

Trubine Groovlets

Freemarker

Wicket

Desenvolvimento web com Java

# 17

Dúvidas?