Globalcode open4education 2 Introduo Conceitos bsicos de Web Desafios no desenvolvimento Web Histrico do desenvolvimento para Internet Plataforma Java Enterprise Edition Arquiteturas Web com JavaEE Agenda Parte terica Globalcode open4education 3 Instalao de um servidor Web Java Criando um aplicativo Web Java Server Pages Java Servlet Demonstrao Agenda Parte prtica Globalcode open4education 4 Parte terica Globalcode open4education 5 Introduo Conceitos bsicos de Web Desafios no desenvolvimento Web Histrico do desenvolvimento para Internet Plataforma Java Enterprise Edition Arquiteturas Web com JavaEE Agenda Parte terica Globalcode open4education 6 Introduo A primeira arquitetura popular foi a arquitetura mono-camada / monoltica Com o downsizing, aplicativos passaram a ser desenvolvidos em duas camadas: client-server Globalcode open4education 7 Introduo A partir da dcada de 90, aplicativos passaram a ser desenvolvidos em mltiplas camadas (3, 4 ou mais): Globalcode open4education 8 Introduo A forma mais popular atualmente para desenvolvimento em trs camadas, utilizando um servidor Web: Thin-client Pequenas validaes Terminal burro colorido Servidor Web Regras de negcio Regras de apresentao Database Server Regras de armazenamento Regras de negcio Globalcode open4education 9 Introduo A arquitetura Web muito dinmica para mudanas, pois no temos um aplicativo cliente nas mquinas dos usurios A arquitetura Web acessvel, pois pode ser disponibilizada na Internet Arquiteturas Web podem atender a grandes demandas Podemos acessar um aplicativo Web com diferentes computadores e dispositivos: celular, PDAs wireless, PCs, Apple, Unix, Torradeiras (TORRADEIRAS?!?!?) Globalcode open4education 10 Introduo Conceitos bsicos de Web Desafios no desenvolvimento Web Histrico do desenvolvimento para Internet Plataforma Java Enterprise Edition Arquiteturas Web com JavaEE Agenda Parte terica Globalcode open4education 11 Conceitos Web Comunicao client-server ocorre atravs do protocolo HTTP (HyperText Transfer Protocol); HTTP um protocolo de alto nvel baseado no TCP/IP; Tipicamente trafegamos arquivos / contedo HTML (Hyper Text Markup Language) HTTP HTML Globalcode open4education 12 HTTP O protocolo HTTP foi criado para interligar universidades americanas Podemos enviar dados (formulrios e arquivos) por um browser atravs de HTTP Podemos receber dados de um servidor HTTP Podemos receber dados em diferentes formatos: HTML, TXT, PDF, Excel, GIF, JPG, BMP, etc. Globalcode open4education 13 HTML uma linguagem de marcao interpretada por browsers Com as tags de marcao podemos criar pginas com textos, tabelas, imagens e hyperlinks Pginas HTML so documentos texto que contm cdigo HTML, com a extenso .html ou .htm HTML pode ser utilizado para construo de pginas estticas ou em conjunto com outra linguagem (JSP, ASP, PHP, entre outras) para construo de pginas dinmicas. Globalcode open4education 14 Exemplo: exemploHTML.html <HTML> <HEAD> <TITLE>Exemplo documento HTML</TITLE> </HEAD> <BODY> Tabela de preos <br><br> <TABLE border="1"> <TR> <TD> Televiso </TD><TD> R$ 400,00 </TD> </TR> <TR> <TD> Coca-cola </TD><TD> R$ 2,00 </TD> </TR> </TABLE><BR><BR> <A HREF="http://www.globalcode.com.br">Globalcode</A> </BODY> </HTML> HTML Globalcode open4education 15 CSS Cascade Style Sheet Quando utilizamos HTML, todas as configuraes (como fontes, cores e tabelas) so colocadas dentro da pgina HTML. Em aplicaes com muitas pginas HTML, a alterao de estilos tende a ser muito trabalhosa O CSS utilizado para retirar estas configuraes de dentro das pginas HTML, colocando-as dentro de um arquivo com a extenso .css Globalcode open4education 16 CSS Podemos redefinir as tags existentes no HTML, como a tag para hyper link, tabelas entre outros, ou podemos definir nossas prprias tags Vamos analisar o exemplo exemplo.css que altera a tag para hyper link a { text-decoration: none; font-family: Arial, Helvetica, sans-serif; font-weight: bold; color: #FFCC33 } Globalcode open4education 17 Exemplo: exemploHTML.html <HTML> <HEAD> <LINK rel="stylesheet type="text/css href="exemplo.css" /> <TITLE> Exemplo documento HTML</TITLE> </HEAD> <BODY> Tabela de preos <br><br> <TABLE border="1"> <TR><TD> Televiso </TD><TD> R$ 400,00 </TD></TR> <TR><TD> Coca-cola </TD><TD> R$ 2,00 </TD></TR> </TABLE> <BR><BR> <A HREF="http://www.globalcode.com.br">Globalcode </A> </BODY> </HTML> CSS Globalcode open4education 18 JavaScript JavaScript uma linguagem propriamente dita e possui tipos de dados, condicionais, loops e funes O JavaScript foi desenvolvido pela Netscape JavaScript diferente de Java conceitualmente JavaScript tem uma sintaxe muito semelhante sintaxe de cdigo Java Globalcode open4education 19 JavaScript JavaScript utilizada em muitas pginas Web para: melhorar o design das pginas fazer validao de campos em formulrios esconder e exibir campos identificar qual o browser est sendo utilizado entre outras coisas Globalcode open4education 20 JavaScript O cdigo JavaScript pode ser colocado dentro do HTML ou em um arquivo separado com a extenso .js Exemplo testeJS.html Vamos analisar o cdigo do testeJS <SCRIPT type="text/javascript"> function validate(){ if (document.form1.nome.value.length < 1){ alert("Por favor digite seu nome!"); return false; } else return true; } </SCRIPT> Globalcode open4education 21 <BODY> <FORM name="form1" action="exemploHTML.html" onsubmit="return validate()"> Nome <INPUT type="text" name="nome" > <INPUT type="submit" value="Enviar"> </FORM> </BODY> JavaScript Globalcode open4education 22 XML eXtensible Markup Language um documento texto, assim como HTML,demarcado por tags; a evoluo do documento texto, pois inclui no s o dado texto, mas tambm o que significa aquele dado Suporte a mltiplos idiomas Pode ser validado por um documento de regras de formatao (DTD Data Type Definition) Globalcode open4education 23 XML Tipicamente utilizado para troca de documentos entre instituies (governo com bancos) documentos de configurao de aplicativos gerao de PDFs, entre outros. Contm dado e meta-dado: <extrato> <numeroConta>1234</numeroConta> <nomeCliente>Bill Joy</nomeCliente> <saldoAtual>12.32</saldoAtual> </extrato> Metadado Dado Globalcode open4education 24 Introduo Conceitos bsicos de Web Desafios no desenvolvimento Web Histrico do desenvolvimento para Internet Plataforma Java Enterprise Edition Arquiteturas Web com JavaEE Agenda Parte terica Globalcode open4education 25 Desafios da Web Mescla de tecnologias: Java, JavaScript, CSS, HTML, JSP, SQL, HTTP, XML, etc As telas no browser so pouco dinmicas O protocolo HTTP sessionless, ou seja, no mantm conexo TCP/IP ativa O cliente tem que requisitar dados para o servidor HTTP O servidor HTTP no pode empurrar dados para o cliente sem que ele pea Globalcode open4education 26 Desafios da Web Telas com muito dinamismo exigem muito JavaScript, que por sua vez, tm problemas de compatibilidade entre os diversos navegadores do mercado Concluso melhor adotar mais de uma tecnologia para quando a tela for complexa (tela de pedido...) As alternativas para interfaces Web ricas (RIA - Rich Internet Application) so: Java Applet / Java Swing Flash Ajax Globalcode open4education 27 Introduo Conceitos bsicos de Web Desafios no desenvolvimento Web Histrico do desenvolvimento para Internet Plataforma Java Enterprise Edition Arquiteturas Web com JavaEE Agenda Parte terica Globalcode open4education 28 Histrico O protocolo HTTP foi especificado para trabalhar com arquivos estticos, ou seja, atua como um protocolo de transferncia de arquivos Para aplicativos, tipicamente precisamos de contedo HTML com contedo dinmico fornecido por um banco de dados Foi adaptado para servir dados de aplicativos Globalcode open4education 29 Histrico Para servir arquivos por HTTP, o seguinte processo executado: arquivo.html Humm... Sei que extenso HTML um arquivo e no programa.... Vou ler o arquivo do hard-disk e entreg-lo para o usurio... Globalcode open4education 30 Histrico Para servir arquivos por HTTP, o seguinte processo executado: Humm... Sei que extenso EXE um programa.... 1.Vou executar este programa por aqui... 2.Vou devolver como resposta o contedo que este programa imprimir na tela Globalcode open4education 31 Histrico Esta tcnica chamada de CGI Common Gateway Interface Foi a primeira tcnica utilizada no desenvolvimento de aplicativos Web O seu problema que os programas no so residentes, ou seja: A cada solicitao, o programa carregado e em seguida descarregado Globalcode open4education 32 Histrico Com Java, o mesmo conceito utilizado porm os programas (mquina virtual + classes) ficam residentes na memria do servidor em questo Podemos concluir que a arquitetura inicial oferece um menor desempenho e consome mais hardware que Java Globalcode open4education 33 Histrico Com Java podemos criar programas que so executados no servidor HTTP atravs de JavaServlet e JavaServer Page Tambm podemos atender uma demanda maior consumindo menor quantidade de recursos se comparado com CGIs puros Globalcode open4education 34 Introduo Conceitos bsicos de Web Desafios no desenvolvimento Web Histrico do desenvolvimento para Internet Plataforma Java Enterprise Edition Arquiteturas Web com JavaEE Agenda Parte terica Globalcode open4education 35 JavaEE para Web a plataforma Java para desenvolvimento Web Tomcat, Websphere, Weblogic, JRun so servidores Web compatveis com JavaEE Para quem trabalha com Microsoft: o IIS do Java Podemos adaptar o Internet Information Server para adicionar suporta Java na plataforma Microsoft Globalcode open4education 36 JavaEE para Web A plataforma JavaEE para Web consagrada e de baixo risco Muitos casos de sucesso Ebay Amazon Instituies bancrias Grandes redes de supermercados... Entre outros Globalcode open4education 37 JavaEE para Web Desenvolvemos aplicativos Web com Java e JavaEE atravs de: Classes Java comunicam com banco de dados Classes Java que representam as entidades em objetos Classes Java que processam dados das entidades Arquivos Web: HTML / CSS / JavaScript Pginas JSPs Componentes JavaServet (classes Java que podem ser acionadas por HTTP) Arquivo de configurao XML Um aplicativo Web pode ser compactado em um nico arquivo com extenso .war Globalcode open4education 38 Introduo Conceitos bsicos de Web Desafios no desenvolvimento Web Histrico do desenvolvimento para Internet Plataforma Java Enterprise Edition Arquiteturas Web com JavaEE Agenda Parte terica Globalcode open4education 39 Arquiteturas Web Podemos trabalhar com arquiteturas simples, onde codificamos tudo em pginas JSPs Podemos trabalhar arquiteturas que dividem as responsabilidades da soluo em diversas classes Uma forma tradicional de dividir responsabilidades conhecida por M.V.C. (Model View and Controller) Com MVC podemos reaproveitar uma entidade em diferentes visualizaes / telas Globalcode open4education 40 Parte prtica Globalcode open4education 41 Instalao de um servidor Web Java Criando um aplicativo Web Java Server Pages Java Servlet Demonstrao Agenda Parte prtica Globalcode open4education 42 Instalao Antes de instalar um servidor Web Java, precisamos instalar o JDK Standard Edition Download a partir da URL: http://java.sun.com/javase/downloads/index.jsp Pode ser feito o download com o Netbeans No Windows um executvel installshield A instalao simples, Next at Finish... Globalcode open4education 43 Diretrio de instalao padro Compilador, mquina virtual, documentador etc.. Aplicativos de exemplo Ambiente de execuo (Java Runtime Environment) Arquivos .h para integrao cdigo nativo Instalao do JDK Globalcode open4education 44 Instalao do JDK JAVA_HOME & PATH Devemos criar uma varivel de ambiente chamada JAVA_HOME, indicando o local de instalao do Kit Esta varivel utilizada para que aplicativos que dependem de Java possam localizar a mquina virtual Para facilitar o uso do compilador e interpretador, recomendamos colocar o diretrio %JAVA_HOME%\bin no PATH Globalcode open4education 45 1. Clicar com boto direito no Meu Computador, em seguida clique em propriedades: Instalao do JDK Globalcode open4education 46 2. Clique em Avanado / Advanced 3. Clique em Variveis de Ambiente / Environment Variables Instalao do JDK Globalcode open4education 47 4. Clique em New / Novo 5. Preencha os campos com os seguintes valores: Ateno: no colocar \bin Instalao do JDK Globalcode open4education 48 6. Clique em PATH, em seguida Edit / Editar 7. Preencha os campos com os seguintes valores: Se voc instalou em um diretrio diferente do default, indique-o aqui! Instalao do JDK Globalcode open4education 49 Instalao do Web Server Temos diversos servidores Web para Java: Apache Tomcat (gratuito / referncia) WebSphere JRun WebLogic Oracle OC4J Jetty Sybase Application Server Sun Application Server E mais n opes... Vamos utilizar Tomcat tudo que funciona no Tomcat funciona em qualquer servidor Web Java Globalcode open4education 50 Instalao do Web Server Download do Tomcat pode ser feito atravs da URL http://tomcat.apache.org/ Recomendamos o uso da verso 5.x, evitar beta Windows uma verso EXE com installshield; Outras plataformas um arquivo ZIP No esquecer do pr-requisito de instalar o JDK Standard Edition... Globalcode open4education 51 1. Ao disparar a instalao ... 2. License Agreeme nt 3. Tipo da instalao 4. Local da instalao Instalao do Web Server Globalcode open4education 52 5. Senha de administr ador 6. Local do JDK 7. Instalao concluida Instalao do Web Server Globalcode open4education 53 Instalao do Web Server Para iniciar o Tomcat utilize os servios do Windows: Globalcode open4education 54 Por padro o Tomcat utiliza a porta 8080, portanto para testarmos se est funcionando, acesse a URL: http://localhost:8080 Instalao do Web Server Globalcode open4education 55 Na URL: http://localhost:8080/admin voc pode administrar e configurar caractersticas do Tomcat Instalao do Web Server Globalcode open4education 56 Instalao de um servidor Web Java Criando um aplicativo Web Java Server Pages Java Servlet Demonstrao Agenda Parte prtica Globalcode open4education 57 As aplicaes so instaladas (por padro) no diretrio webapps do Tomcat Cada sub-diretrio representa um aplicativo Web Criando um aplicativo Web Globalcode open4education 58 Criando um aplicativo Web Para criar um novo aplicativo, criar a seguinte estrutura de diretrios: Diretrio do aplicativo onde colocaremos Web File JSPs, HTMLs, GIFs, CSS, etc. Diretrio especial de configurao e classes Java,, conter um arquivo chamado web.xml. Configura o aplicativo web. Colocaremos as classes Java de processamento, acesso a banco de dados, servlets, etc. Globalcode open4education 59 Criando um aplicativo Web Vamos colocar um arquivo index.html que servir como pgina de entrada: index.html <html> <body> <p>Meu primeiro aplicativo Web Java </p> </body> </html> Globalcode open4education 60 Criando um aplicativo Web Agora podemos acessar nosso aplicativo atravs da URL: http://localhost:8080/MeuAplicativoWeb Globalcode open4education 61 Instalao de um servidor Web Java Criando um aplicativo Web Java Server Pages Java Servlet Demonstrao Agenda Parte prtica Globalcode open4education 62 Java Server Pages uma tecnologia Java para gerao de contedo Web dinmico (esttico + banco de dados, por exemplo) Permite mesclar cdigo HTML com cdigo Java: <html> <head> <title>Ol Mundo</title> </head> <body> Cdigo HTML puro <br> <% for(int x=0;x<100;x++) { %> <p>Ol Mundo com lao: <%= x %></p> <%}%> </body> </html> Globalcode open4education 63 Java Server Pages Parecido com ASP, porm no lugar de Basic utilizamos Java Robusto, flexvel e componentizvel Permite a criao de aplicativos simples, inteiramente escritos dentro dos JSPs (model one) Permite a criao de aplicativos profissionais, utilizando tcnicas avanadas de modelagem como M.V.C. Rpido transformado em Servlet antes da sua execuo Globalcode open4education 64 Instalao de um servidor Web Java Criando um aplicativo Web Java Server Pages Java Servlet Demonstrao Agenda Parte prtica Globalcode open4education 65 Java Servlet Tecnologia que me do JSP Todo JSP transformado em um Servlet uma classe Java que estende HttpServlet Deve ser declarado e configurado no web.xml Servlet Vs. JSP: Servet = mais utilizado para recepo/controle de requisies Web JSP = mais utilizado para gerao de contedo Globalcode open4education 66 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 Globalcode open4education 67 Java Servlet Globalcode open4education 68 Instalao de um servidor Web Java Criando um aplicativo Web Java Server Pages Java Servlet Demonstrao Agenda Parte prtica Globalcode open4education 69 Demonstrao Globalcode open4education 70 Alguns links Minicursos: http://www.globalcode.com.br/gratuitos/miniCursos Vdeo-palestras do Profisso Java: http://www.profissaojava.com.br/edicoes/2010/videos The Developers Conference (TDC): http://www.thedevelopersconference.com.br/tdc/2010/sp/videos/ Globalcoders: http://blog.globalcode.com.br/ EletronLivre: http://www.eletronlivre.com.br/