Iniciativa Globalcode Introdução a AJAX Open-source Education
Palestrantes Jorge Diz [email_address] Melissa Villela [email_address]
Agenda  Histórico O que é AJAX ? Princípios Como funciona? Vantagens e Desvantagens Casos de sucesso Ferramentas Demo
Histórico Web “1.0” (até 2004) Páginas dinâmicas CGI (no servidor) em Perl, C, Korn shell Client-side scripting: JavaScript, VBScript Server pages: ASP, JSP, PHP Aplicações web baseadas em páginas  Frameworks: Struts, JSF, Spring Sites como “silos” de informação.
Histórico Web 2.0 (2005 em diante ) A web como plataforma O software como serviço Desenvolvimento participativo Atualização permanente Empresas de sucesso são mais facilitadoras que controladoras Software--> infoware (foco nos dados) Composição de serviços  Interfaces ricas (AJAX !)
Agenda  Princípios Histórico O Que é AJAX Princípios Como funciona? Vantagens e Desvantagens Casos de sucesso Ferramentas Demo
O que é AJAX? Segundo Jesse James Garrett (inventor do termo) : “ AJAX não é uma tecnologia. São, na verdade, várias tecnologias, [...] juntando-se de maneiras novas e poderosas. AJAX incorpora:” apresentação baseada em padrões utilizando XHTML e CSS; display e interação dinâmicos utilizando o DOM; intercâmbio e manipulação de dados usando XML e XSLT recuperação assíncrona de dados usando XHR; e JavaScript amarrando tudo isso junto”
O que é AJAX? Traduzindo ... AJAX (fev/2005): “Advanced JavaScript, Asynchronous XMLHttpRequest”  AJAX (hoje): “Asynchronous JavaScript and XML” XML: eXtensible Markup Language XHTML: HTML expresso como dialeto de XML  CSS: Cascading Style Sheets - padrão para formatação de documentos (X)HTML DOM: Document Object Model – modelo para manipulação de documentos HTML.
O que é AJAX? ... traduzindo ... Assíncrono: modo de operação de um protocolo em que o solicitante não fica esperando pela resposta. Em vez disso, registra uma função de callback que vai tratar a resposta quando ela chegar. XSLT: eXtensible Stylesheets Language Transformations: padrão para transformação de documentos XML. XHR: XMLHttpRequest: método JavaScript para solicitações HTTP, em formato XML ou texto, podendo operar em modo assíncrono JavaScript: implementação do padrão ECMAScript que contem um DOM HTML.
O que é AJAX? Em outras palavras ... AJAX é um modelo de programação ... …  para aplicações web ricas, baseado em JavaScript executado no browser e em padrões da do W3C ... onde o modelo da página é manipulado via programa ... onde a página é atualizada a qualquer momento com dados vindos do servidor. ... onde alguns eventos de usuário são reportados ao servidor imediatamente.
O que é AJAX ? Princípios O browser hospeda uma aplicação, não apenas “conteúdo” “ Single-Page Application” O servidor entrega dados, não apenas “conteúdo” Data-centric Parte do modelo no browser É viável que a interação do usuário seja fluída e contínua Atualizações assíncronas  UI baseadas em eventos Isto é código de verdade e requer disciplina ! JavaScript Design Patterns Metodologia de desenvolvimento
O que  não  é AJAX? Apenas o uso de HTML dinâmico (DHTML) Apenas o uso de JavaScript Apenas o uso de CSS Apenas o uso de tecnologias baseadas em XML AJAX pressupõe  interação assíncrona entre browser e servidor web
Agenda  O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
Como funciona? Modelo clássico de sistemas web
Como funciona? Utilizando Ajax
Como funciona? Requisições de HTTP assíncronas Mecanismo para ActiveX no IE if (window.ActiveXObject)  request = new ActiveXObject(“Microsoft.XMLHTTP”); } Implementações alternativas nos principais browsers if (window.XMLHttpRequest ) { request = new XMLHttpRequest(); } Podemos utilizar bibliotecas JavaScript que isolam a dependência de browsers (ex: Sarissa)
Como funciona? Requisições de HTTP assíncronas (cont.) Também são utilizadas no ambiente do servidor (para acesso assíncrono a Web Services). As requisições são tratadas por servlets ou equivalentes (para outras tecnologias) O content type utilizado pode ser XML, JSON(*), ou outro formato baseado em texto  (*) JSON =  JavaScript Object Notation – sintaxe para atribuição de conteúdo /   serialização de objetos JavaScript, mais legível e concisa que XML.
Agenda  O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
Vantagens Aplicações com menor tempo de resposta em relação a arquiteturas clássicas Não é necessário trazer uma página inteira a cada interação Aplicações mais próximas de um ambiente de desktop Interatividade maior, modelo de tratadores de eventos Deployment simplificado em relação ao ambiente desktop Vantagem própria de qualquer aplicação Web Roda em qualquer navegador moderno IE, Mozilla, Firefox, Safari, Konqueror, Opera
Vantagens Viabiliza interação com o servidor Dados carregados sob demanda, sem onerar o carregamento inicial da página Regras de negócio são tratadas onde for mais apropriado. Utilização mais eficiente de largura de banda,  (quando bem implementado)
Vantagens Modelo clássico de sistemas web
Vantagens Utilizando Ajax
Vantagens
Desvantagens Um grande número de decisões sobre a definição de arquitetura:  Componentes centrados na plataforma do servidor ou do cliente ? Qual a granularidade das interações entre cliente e servidor ? Quando passar dados e quando conteúdo ? Como dividir o modelo da aplicação entre a camada cliente e a camada de apresentação do lado do servidor ? XML ou JSON ? É necessário conhecer mais tecnologias e conceitos:  JavaScript,  interface-usuário, programação baseada em eventos usabilidade,  componentes,  protocolos,  modelos de objetos, transformações XML  padrões da W3C, ECMA.
Desvantagens Quebra do modelo de navegação da Web Favoritos, Voltar, Cache, Logs: outro modelo de usabilidade Metodologias de desenvolvimento precisam evoluir Como testar?  Como monitorar desempenho?  Quais os patterns/ boas práticas?  Não basta seguir um framework ! Bibliotecas com paradigmas diferentes para partes da solução Diferentes implementações entre browsers Alguém já viu esse filme ?
Agenda  O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Implementação Demo
Implementação 1  var  request; 2  3  function  sendRequest(url) { 4  5  //Inicializa o objeto XMLHttpRequest para o Mozilla 6  if  ( window.XMLHttpRequest ) { 7  request =  new  XMLHttpRequest(); 8  } 9  //Inicializa o objeto XMLHttpRequest para o Internet Explorer 10  else   if  (window.ActiveXObject) { 11  request =  new  ActiveXObject(“Microsoft.XMLHTTP”); 12  } 13  //determina a função para processamento da requisição 14  request.onreadystatechange = processRequest; 15  16  //configura a requisição 17  request.open(“GET”,url, true ); 18  19  //envia a requisição 20  request.send( null ); 21  } 22  23  function  processRequest() { 24  25  //Verifica se a resposta já foi recebida por completo 26  if (request.readyState ==  4 ) { 27  //Verifica se o status é OK 28  if (request.status ==  200 ) { 29  preencheComboCidade(); 30  } 31  } 32  } Incompatiblidade de browsers Função para tratar a resposta assíncrona Código a ser desenvolvido
Implementação 41  function  preencheComboCidade() { 46  //Faz a leitura do documento XML recebido 47  var  response = request.responseXML; 48  var  raiz = response.getElementsByTagName( &quot;cidades&quot; ).item( 0 ); 50  var  cidades = raiz.getElementsByTagName( &quot;cidade&quot; ); 51  52  //Seleciona a caixa de selecao de cidades 53  var  selectNode = document.getElementById( &quot;cidade&quot; ); 54  //Apaga as opções atuais da caixa de seleção 56  selectNode.options.length =  0 ; 57  58  //preenche a caixa de opções com os valores recebidos 59  for ( var  i =  0 ; i < cidades.length; i++) { 60  var  txtCidade = cidades.item(i).firstChild.data; 61  var  option =  new  Option(txtCidade); 62  selectNode.add(option, null ); 63  } 66  } Recupera os dados vindos do servidor Id do elemento HTML (combo cidade) Adiciona os dados ao DOM
Agenda  O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
Ferramentas Lado cliente: JavaScript Bibliotecas de uso geral Bibliotecas de componentes centrados no browser Bibliotecas para remoting de objetos no servidor Lado servidor: Java Geração de código JavaScript a partir de Java Componentes do lado servidor Tratamento de XML Tratamento de JSON Ferramentas de apoio Teste unitário Testes de integração
Casos de sucesso Start.com ( http://www.start.com/3/) Google   Mail Google   Groups Google   Suggest A9.com Basecamp Meebo
Agenda  O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
Casos de sucesso http://www.marcogomes.com/wallpapr/  (Brasileiro) Kiko( http://www.kiko.com ) Planzo( http://www.planzo.com ) Timetracker( http://www.timetracker.com ) Tudu( http://tudu.sourceforge.net ) Voo2doo( http://www.voo2do.com )
Demo

introdução a ajax

  • 1.
    Iniciativa Globalcode Introduçãoa AJAX Open-source Education
  • 2.
    Palestrantes Jorge Diz[email_address] Melissa Villela [email_address]
  • 3.
    Agenda HistóricoO que é AJAX ? Princípios Como funciona? Vantagens e Desvantagens Casos de sucesso Ferramentas Demo
  • 4.
    Histórico Web “1.0”(até 2004) Páginas dinâmicas CGI (no servidor) em Perl, C, Korn shell Client-side scripting: JavaScript, VBScript Server pages: ASP, JSP, PHP Aplicações web baseadas em páginas Frameworks: Struts, JSF, Spring Sites como “silos” de informação.
  • 5.
    Histórico Web 2.0(2005 em diante ) A web como plataforma O software como serviço Desenvolvimento participativo Atualização permanente Empresas de sucesso são mais facilitadoras que controladoras Software--> infoware (foco nos dados) Composição de serviços Interfaces ricas (AJAX !)
  • 6.
    Agenda PrincípiosHistórico O Que é AJAX Princípios Como funciona? Vantagens e Desvantagens Casos de sucesso Ferramentas Demo
  • 7.
    O que éAJAX? Segundo Jesse James Garrett (inventor do termo) : “ AJAX não é uma tecnologia. São, na verdade, várias tecnologias, [...] juntando-se de maneiras novas e poderosas. AJAX incorpora:” apresentação baseada em padrões utilizando XHTML e CSS; display e interação dinâmicos utilizando o DOM; intercâmbio e manipulação de dados usando XML e XSLT recuperação assíncrona de dados usando XHR; e JavaScript amarrando tudo isso junto”
  • 8.
    O que éAJAX? Traduzindo ... AJAX (fev/2005): “Advanced JavaScript, Asynchronous XMLHttpRequest” AJAX (hoje): “Asynchronous JavaScript and XML” XML: eXtensible Markup Language XHTML: HTML expresso como dialeto de XML CSS: Cascading Style Sheets - padrão para formatação de documentos (X)HTML DOM: Document Object Model – modelo para manipulação de documentos HTML.
  • 9.
    O que éAJAX? ... traduzindo ... Assíncrono: modo de operação de um protocolo em que o solicitante não fica esperando pela resposta. Em vez disso, registra uma função de callback que vai tratar a resposta quando ela chegar. XSLT: eXtensible Stylesheets Language Transformations: padrão para transformação de documentos XML. XHR: XMLHttpRequest: método JavaScript para solicitações HTTP, em formato XML ou texto, podendo operar em modo assíncrono JavaScript: implementação do padrão ECMAScript que contem um DOM HTML.
  • 10.
    O que éAJAX? Em outras palavras ... AJAX é um modelo de programação ... … para aplicações web ricas, baseado em JavaScript executado no browser e em padrões da do W3C ... onde o modelo da página é manipulado via programa ... onde a página é atualizada a qualquer momento com dados vindos do servidor. ... onde alguns eventos de usuário são reportados ao servidor imediatamente.
  • 11.
    O que éAJAX ? Princípios O browser hospeda uma aplicação, não apenas “conteúdo” “ Single-Page Application” O servidor entrega dados, não apenas “conteúdo” Data-centric Parte do modelo no browser É viável que a interação do usuário seja fluída e contínua Atualizações assíncronas UI baseadas em eventos Isto é código de verdade e requer disciplina ! JavaScript Design Patterns Metodologia de desenvolvimento
  • 12.
    O que não é AJAX? Apenas o uso de HTML dinâmico (DHTML) Apenas o uso de JavaScript Apenas o uso de CSS Apenas o uso de tecnologias baseadas em XML AJAX pressupõe interação assíncrona entre browser e servidor web
  • 13.
    Agenda Oque é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
  • 14.
    Como funciona? Modeloclássico de sistemas web
  • 15.
  • 16.
    Como funciona? Requisiçõesde HTTP assíncronas Mecanismo para ActiveX no IE if (window.ActiveXObject) request = new ActiveXObject(“Microsoft.XMLHTTP”); } Implementações alternativas nos principais browsers if (window.XMLHttpRequest ) { request = new XMLHttpRequest(); } Podemos utilizar bibliotecas JavaScript que isolam a dependência de browsers (ex: Sarissa)
  • 17.
    Como funciona? Requisiçõesde HTTP assíncronas (cont.) Também são utilizadas no ambiente do servidor (para acesso assíncrono a Web Services). As requisições são tratadas por servlets ou equivalentes (para outras tecnologias) O content type utilizado pode ser XML, JSON(*), ou outro formato baseado em texto (*) JSON = JavaScript Object Notation – sintaxe para atribuição de conteúdo / serialização de objetos JavaScript, mais legível e concisa que XML.
  • 18.
    Agenda Oque é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
  • 19.
    Vantagens Aplicações commenor tempo de resposta em relação a arquiteturas clássicas Não é necessário trazer uma página inteira a cada interação Aplicações mais próximas de um ambiente de desktop Interatividade maior, modelo de tratadores de eventos Deployment simplificado em relação ao ambiente desktop Vantagem própria de qualquer aplicação Web Roda em qualquer navegador moderno IE, Mozilla, Firefox, Safari, Konqueror, Opera
  • 20.
    Vantagens Viabiliza interaçãocom o servidor Dados carregados sob demanda, sem onerar o carregamento inicial da página Regras de negócio são tratadas onde for mais apropriado. Utilização mais eficiente de largura de banda, (quando bem implementado)
  • 21.
  • 22.
  • 23.
  • 24.
    Desvantagens Um grandenúmero de decisões sobre a definição de arquitetura: Componentes centrados na plataforma do servidor ou do cliente ? Qual a granularidade das interações entre cliente e servidor ? Quando passar dados e quando conteúdo ? Como dividir o modelo da aplicação entre a camada cliente e a camada de apresentação do lado do servidor ? XML ou JSON ? É necessário conhecer mais tecnologias e conceitos: JavaScript, interface-usuário, programação baseada em eventos usabilidade, componentes, protocolos, modelos de objetos, transformações XML padrões da W3C, ECMA.
  • 25.
    Desvantagens Quebra domodelo de navegação da Web Favoritos, Voltar, Cache, Logs: outro modelo de usabilidade Metodologias de desenvolvimento precisam evoluir Como testar? Como monitorar desempenho? Quais os patterns/ boas práticas? Não basta seguir um framework ! Bibliotecas com paradigmas diferentes para partes da solução Diferentes implementações entre browsers Alguém já viu esse filme ?
  • 26.
    Agenda Oque é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Implementação Demo
  • 27.
    Implementação 1 var request; 2 3 function sendRequest(url) { 4 5 //Inicializa o objeto XMLHttpRequest para o Mozilla 6 if ( window.XMLHttpRequest ) { 7 request = new XMLHttpRequest(); 8 } 9 //Inicializa o objeto XMLHttpRequest para o Internet Explorer 10 else if (window.ActiveXObject) { 11 request = new ActiveXObject(“Microsoft.XMLHTTP”); 12 } 13 //determina a função para processamento da requisição 14 request.onreadystatechange = processRequest; 15 16 //configura a requisição 17 request.open(“GET”,url, true ); 18 19 //envia a requisição 20 request.send( null ); 21 } 22 23 function processRequest() { 24 25 //Verifica se a resposta já foi recebida por completo 26 if (request.readyState == 4 ) { 27 //Verifica se o status é OK 28 if (request.status == 200 ) { 29 preencheComboCidade(); 30 } 31 } 32 } Incompatiblidade de browsers Função para tratar a resposta assíncrona Código a ser desenvolvido
  • 28.
    Implementação 41 function preencheComboCidade() { 46 //Faz a leitura do documento XML recebido 47 var response = request.responseXML; 48 var raiz = response.getElementsByTagName( &quot;cidades&quot; ).item( 0 ); 50 var cidades = raiz.getElementsByTagName( &quot;cidade&quot; ); 51 52 //Seleciona a caixa de selecao de cidades 53 var selectNode = document.getElementById( &quot;cidade&quot; ); 54 //Apaga as opções atuais da caixa de seleção 56 selectNode.options.length = 0 ; 57 58 //preenche a caixa de opções com os valores recebidos 59 for ( var i = 0 ; i < cidades.length; i++) { 60 var txtCidade = cidades.item(i).firstChild.data; 61 var option = new Option(txtCidade); 62 selectNode.add(option, null ); 63 } 66 } Recupera os dados vindos do servidor Id do elemento HTML (combo cidade) Adiciona os dados ao DOM
  • 29.
    Agenda Oque é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
  • 30.
    Ferramentas Lado cliente:JavaScript Bibliotecas de uso geral Bibliotecas de componentes centrados no browser Bibliotecas para remoting de objetos no servidor Lado servidor: Java Geração de código JavaScript a partir de Java Componentes do lado servidor Tratamento de XML Tratamento de JSON Ferramentas de apoio Teste unitário Testes de integração
  • 31.
    Casos de sucessoStart.com ( http://www.start.com/3/) Google Mail Google Groups Google Suggest A9.com Basecamp Meebo
  • 32.
    Agenda Oque é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
  • 33.
    Casos de sucessohttp://www.marcogomes.com/wallpapr/ (Brasileiro) Kiko( http://www.kiko.com ) Planzo( http://www.planzo.com ) Timetracker( http://www.timetracker.com ) Tudu( http://tudu.sourceforge.net ) Voo2doo( http://www.voo2do.com )
  • 34.