170 likes | 256 Views
Introdução ao Java EE. Julio M. Faerman. Recursos. http://jfaerman.googlepages.com/ Apresentações Exemplos Exercícios Tutoriais Links Downloads. Agenda. Evolução da arquitetura de sistemas de informação Servidor de aplicações Contêiner Web Aplicações Web JEE.
E N D
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
Desenvolvimento web com Java Agenda • Evoluçãodaarquitetura de sistemas de informação • Servidor de aplicações • Contêiner Web • Aplicações Web JEE
Evolução das arquiteturas de software Aplicações Monolíticas Interface do Usuário Dados
Evolução das arquiteturas de software Aplicações duas camadas Cliente “Gordo” Banco de Dados
Evolução das arquiteturas de software Aplicações N camadas (tiers)
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
Ambientes de programação distribuída Middlewares
Desenvolvimento web com Java A Lasanha D E V E L O P E R D E P L O Y E R JEE APP Aplicação JSE APP APP Server Transporte APP Maquina Virtual Java Rede SistemaOperacional Enlace Dispositivos Rede Física
Desenvolvimento web com Java AppServerGenérico HTTP RMI App Server Web Container EJB Container J N D I EJBs web-app1.war ejb-app1.jar Data Sources web-app2.war ejb-app1.jar Message Queue Mail Session enterprise-app1.ear Cache enterprise-app2.ear Java EE Classpath (servlet, jp, ejb, persistence, jaxp, jms …) Java SE (JVM + SE Classpath) SistemaOperacional
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
Desenvolvimento web com Java Web Application Típica request HTTPServlet doGet() doPost() doPut() doDelete() Filter //before Chain.doFilter() //after response JSP <html> <% x++; %> </html> HTTPServlet out.println(“<html>”) x++; out.println(“/<html>”) compile request response ServletContextListener HttpSessionListener ServletRequestListener ServletContextAttributeListener HttpSessionAttributeListener ServletRequestAttributeListener HttpSessionActivationListener events
Desenvolvimento web com Java Exercício: App Web JEE • Servlet • Filter • JSP • Tag File • Listener • DeploymentDescriptor
Desenvolvimento web com Java Os problemas class InserePedido extends HttpServlet{ ... doPost(…){ if (! tudoCerto) … Pedidop = new Pedido(); p.setXxx(request.getParameter(“Xxx”)); request.setAttribute(“pedido”,p); out.print(“<htlm>…</html>”) requestDispatcher.forward(“some.jsp”) } } • Duplicação • Duplicação • Problemasortogonais • Validação • Segurança • Transações • Manipulação do HTTP • NegócioxApresentação • Códigoprolixo • … <table> <% for.. %> <tr><td><%= if(pedido.isEspecial()) %> <%= pedido.getValor() * 0.90%>
Desenvolvimento web com Java Web Frameworks • Abstração • Actions • Componentes* • Reuso de apresentação • Componentes** • Templates • Validação • Conversão • Pontos de extensão
Desenvolvimento web com Java Soluções? Spring MVC JATO Freemarker JApple Bishop JPublish JWarp Jacquard Niggle TeaServlet Tapestry JSP JBanana Chiba WingS Genie Folium Canyamo Velocity Servlet Echo Bishop Scope Struts Macaw WebWork Melati Dinamica Wicket Millstone Expresso Verge Warfare GWT JSF Tiles RIFE TeaServlet Jaffa Barracuda JWAA Sitemesh Cocoon SOFIA OXF Maverick Cassandra Bento WebOnSwing Helma jStatemachine Action Frmwk Open Emcee Shocks JFormular JZonic Trubine Groovlets
Desenvolvimento web com Java Dúvidas?