Cliente/Servidor. Cliente/Servidor em Web. Graça Bressan. Graça Bressan/LARC 2000 1



Documentos relacionados
World Wide Web e Aplicações

O protocolo HTTP. O que é o protocolo HTTP?

UM NOVO CONCEITO EM AUTOMAÇÃO. Série Ponto

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Introdução à Linguagem Java

Desenvolvimento de Aplicações Web

CAPÍTULO 2. Este capítulo tratará :

1.264 Lição 11. Fundamentos da Web

CONCEITOS BÁSICOS DE INTERNET. Disciplina: INFORMÁTICA 1º Semestre Prof. AFONSO MADEIRA

GLOSSÁRIO. ActiveX Controls. É essencialmente uma interface usada para entrada e saída de dados para uma aplicação.

Um pouco do Java. Prof. Eduardo

ESTUDO SOBRE AS LINGUAGENS DE PROGRAMAÇÃO HOSPEDEIRAS SUPORTADAS PELA FERRAMENTA HTML. Aluno: Rodrigo Ristow Orientador: Wilson Pedro Carli

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Rede de Computadores (REC)

WWW - World Wide Web

Desenvolvendo para WEB

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Introdução ao PHP. Prof. Késsia Marchi

Desenvolvimento Web Protocolos da Internet

Linux - Servidor de Redes

HYPERTEXT TRANSFER PROTOCOL

INFORMÁTICA FUNDAMENTOS DE INTERNET. Prof. Marcondes Ribeiro Lima

O sucesso da WWW. Atualização de Hiperdocumentos. Atualização de Hiperdocumentos. Cuidados. Exemplo. Passos. Motivos :

11 - Q34826 ( FCC DPE - SP - Oficial de Defensoria Pública / Noções de Informática / Internet e intranet; )

Conteúdo Programático de PHP

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

Tecnologias Web. Lista de Exercícios AV02. Luiz Leão

ftp://ftp.cr-df.rnp.br/pub/netinfo/training/rnp/kit-bsb/html/guia.zip novembro 1996 Tutorial - Autoria em World Wide Web

SISTEMAS OPERACIONAIS

Desenvolvendo Websites com PHP

UNIVERSIDADE. Sistemas Distribuídos

Programação Web Prof. Wladimir

Guia de Consulta Rápida HTTP. Décio Jr. Novatec Editora.

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Curso Introdução à Educação Digital - Carga Horária: 40 horas (30 presenciais + 10 EaD)

Internet e protocolos web. A Internet é uma rede descentralizada de recursos computacionais. Topologia tem de fornecer caminhos alternativos

Instalando o Internet Information Services no Windows XP

Programação WEB Introdução

Programando em PHP. Conceitos Básicos

PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ MANUAL DE UTILIZAÇÃO DO CVS NO ECLIPSE

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Noções de. Microsoft SQL Server. Microsoft SQL Server

Protocolos de Internet (família TCP/IP e WWW) Primeiro Técnico. Prof. Cesar

Programação para a Web - I. José Humberto da Silva Soares

DWEB. Design para Web. Fundamentos Web I. Curso Superior de Tecnologia em Design Gráfico

Programação para Internet I. 2. O protocolo HTTP. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Felippe Scheidt IFPR Campus Foz do Iguaçu 2014/2

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Orientação a Objetos

Camada de Aplicação. DNS Domain Name System. Redes de Computadores Prof. Leandro C. Pykosz

Considerações no Projeto de Sistemas Cliente/Servidor

O protocolo HTTP. Você aprenderá: O que é e como funciona o protocolo HTTP. Quais são as partes de um pedido HTTP.

Associação Carioca de Ensino Superior Centro Universitário Carioca

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB

Adriano Reine Bueno Rafael Barros Silva

Microsoft Internet Explorer. Browser/navegador/paginador

Aula 03 - Projeto Java Web

Desenvolvimento Web TCC Turma A-1

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

Desenvolvimento Web TCC Turma A-1

Objetivos do Curso. Você será capaz de:

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

10/07/2013. Camadas. Principais Aplicações da Internet. Camada de Aplicação. World Wide Web. World Wide Web NOÇÕES DE REDE: CAMADA DE APLICAÇÃO

Figura 01 Kernel de um Sistema Operacional

TECNOLOGIA WEB Aula 1 Evolução da Internet Profa. Rosemary Melo

Cap 03 - Camada de Aplicação Internet (Kurose)

Procedimentos para Reinstalação do Sisloc

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

Web Design. Prof. Felippe

OURO MODERNO Web Designer APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

Capítulo 8 - Aplicações em Redes

Programação de Computadores II TCC Turma A-1

Scriptlets e Formulários

Desenvolvedor Web Docente André Luiz Silva de Moraes

Programação para Internet Flávio de Oliveira Silva, M.Sc.

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto

UFG - Instituto de Informática

Redes de Computadores e a Internet

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

Sistemas Distribuídos

BANCO DE DADOS CONTEÚDO INFORMÁTICA. Prof.: MARCIO HOLLWEG BANCO DE DADOS SGBD TABELA CONCEITOS BÁSICOS

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

18/04/2006 Micropagamento F2b Web Services Web rev 00

Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML simples - bastante pequeno, que não contém objetos incluídos.

Ontologia Navegadores_Codigo-Aberto

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

Java para Desenvolvimento Web

A Linguagem Java. Apresentação. Java. A Linguagem da Internet

Web Design Aula 11: Site na Web

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

PARANÁ GOVERNO DO ESTADO

Transcrição:

Cliente/Servidor Cliente/Servidor em Web Graça Bressan Graça Bressan/LARC 2000 1

Cliente/Servidor Cliente/Servidor e Internet Histórico: Internet - TCP/IP TCP/IP - foi desenvolvido na década de 70 para a rede ARPANET patrocinada pelo Departamento de Defesa (DoD) dos Estados Unidos. O nome correto é DARPA Internet protocol suite. Em meados da década de 80, sob o patrocínio do National Science Foundation e do governo dos EUA, foi desenvolvido e incorporado em uma grande rede Internet. Milhões de computadores ligados na Internet (DARPA ) em 39 países, 7 continentes. O número de usuários tem dobrado a cada ano (estimativa de 56 milhões em novembro de 1996). Internet e a Arquitetura Cliente/Servidor A Internet é o maior sistema Cliente/Servidor. Exemplos de aplicações Cliente/Servidor na Internet: Ftp Email Gopher - entre o ftp e a WWW World Wide Web (WWW) Telnet World Wide Web O WWW é um repositório de informações on-line e distribuído utilizando para buscas e consultas uma aplicação cliente interativa denominada Browser. É considerado um sistema distribuído hipermídia com acesso interativo pois contem, não apenas textos, mas informações em outras representações, tais como imagens fotográficas digitalizadas ou gráficas. Graça Bressan/LARC 2000 2

O CERN (um laboratório de pesquisa europeu) inventou a WWW em 1989, para resolver problemas internos de distribuição de informações. Em 1992, o CERN compartilhou sua invenção com a Internet, e seu uso explodiu desde então. O trabalho de padronização das tecnologias utilizadas na Internet é realizado por um consórcio formado por diversas empresas e entidades : o World Wide Web Consortium (W3C). Alguns dos membros do W3C são: IBM, Microsoft, Silicon Graphics, Digital Equipament Corp, Sun Microsystems, Netscape, Oracle, OSF. Evolução da Tecnnologia WebWorld Wide Web World Wide Web: Arquitetura Graça Bressan/LARC 2000 3

URL - Universal Resource Locators Identifica os objetos endereçáveis na WWW, isto é, permite localizar o computador, a porta do serviço e as páginas a serem endereçadas. Sua forma geral é: O número da porta é opcional. Exemplos: http://www.larc.usp.br/curso.html ftp://ftp.larc.usp.br:2003/palestras/curso.ppt HTTP - HyperText Transfer Protocol Protocolo de transferência de arquivos entre o servidor WWW e o Browser (cliente WWW). Este protocolo está acima do TCP/IP. O protocolo HTTP possui diversos métodos sendo o Get o principal deles. Este método é o que solicita ao servidor Web o envio de um arquivo definido por uma URL. Requisição HTTP Forma geral: <método> <identificação do recurso> <HTTP versão> <crlf> [<header<header> : <valor>] <crlf>... [<header<header> : <valor>] <crlf> Graça Bressan/LARC 2000 4

linha em branco <crlf> [corpo da entidade] Exemplo1: GET /caminho/arquivo.html HTTP/1.0 Accept: text/html Accept: audio/x User-agent: MacWeb Exemplo 2: POST /Scripts/internet.dll/SALDOS HTTP/1.0 Referer: http://132.147.160.188/scripts/internet.dll/servicos Connection: Keep-Alive User-Agent: Mozilla/3.0b4 (WinNT; I) Host: 132.147.160.190 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Content-type: application/x-www-form-urlencoded Content-length: 24 CTL=82438260404001&IV=on Resposta HTTP Forma geral: <HTTP versão> <code de retorno> [<explicação>] <crlf> [<header<header> : <valor>] <crlf>... [<header<header> : <valor>] <crlf> linha em branco <crlf> [corpo da entidade] Graça Bressan/LARC 2000 5

Exemplo: HTTP/1.0 200 OK Server: NCSA/1.3 Mime_version:1.0 Content-type: text/html Content-length: 2000 <HTML>... </HTML> Segurança em Web HTTPS Definido pela Netscape e implementa o tratamento de segurança SSL (Secure Socket Layer) Provê: Autenticação do servidor através de certificados (RSA/Verisign - EUA). Interação cliente/servidor com privacidade através de encriptação (DES dentro de uma sessão). Verificação de integridade entre cliente e servidor através de mensagens para evitar "grampeamento". Suportado pelos browsers Netscape Navigator, Internet Explorer 2.0. e utiliza a porta 443. S-HTTP Definido pela EIT Suportado por diversas versões de browser Mosaic (Spry, NCSA, etc). Graça Bressan/LARC 2000 6

HTML - HyperText Markup Language Linguagem de definição do conteúdo das páginas manipuladas pelos browsers. O HTML permite o encadeamento de páginas e a inclusão de objetos hipermídia tais como fotos, audio, animações e vídeo. Os objetos a serem incluídos devem estar em formato MIME (Multipurpose Internet Mail Extension). Exemplos de tipos de objetos: text/html image/gif application/postscript HTML - HyperText Markup Language Os documentos HTML são divididos em: Head - cabeçalho do documento Body - corpo do documento. As ações a serem realizadas pelo Browser durante a apresentação do documento são indicadas através de Tags. O início da ação ou texto sobre o qual a ação será realizada é definido na forma <TAG>, seguido de um texto e em geral finalizado com </TAG> onde TAG é o nome da Tag que determina a ação. Algumas Tags HTML <HTML> e </HTML> - indicam o início e fim do documento HTML. <HEAD> e </HEAD> - delimitam o cabeçalho <BODY> e </BODY> - delimitam o corpo do documento <TITLE> e </TITLE> - delimitam o título do documento <H1> e </H1> - definem sub-títulos de nível 1. São permitidos até seis níveis de subtítulos. <UL> e </UL> - delimitam uma lista. Cada item da lista deve ser precedido de <LI>. <IMG SRC="imagem" ALIGN=middle> - define uma imagem em representação gif a ser inserida na página e o alinhamento, no caso no Graça Bressan/LARC 2000 7

meio da página. <A HREF="URL"> e </A> - especificam uma referência denominada âncora (Anchor) e um texto associado. É o mecanismo que permite a navegação para outra página WWW. <BR> - mudança de linha. OBS.: A aparência da página exibida irá depender do browser utilizado. Exemplo de Texto HTML <HTML> <HEAD> <TITLE> Exemplo de documento HTML </TITLE> </HEAD> <BODY> Início do corpo do documento. <BR> Este é um exemplo HTML. <H1> Este é um sub-título de nível 1 </H1> <BR>Continuação. <UL> Início de uma lista de nomes: <LI> Ana <LI> Carlos <LI> Luis </UL> Continuação do texto <IMG SRC="Figura.gif" ALIGN=middle> Home page do <A Ref="http://www.larc.usp.br"> LARC </A> </BODY> </HTML> Graça Bressan/LARC 2000 8

Página Exibida pelo Exemplo HTML Exemplo de documento HTML Início do corpo do documento. Este é um exemplo HTML. Este é um sub-título de nível 1 Continuação. Início de uma lista de nomes: Ana Carlos Luis Continuação do texto. Home page do LARC Arquitetura do Browser Arquitetura do Browser Além de HTTP, o Browser pode utilizar outros protocolos tais como Ftp para trazer arquivos do servidor. O Web Browser mantém em cache local as páginas trazidas mais recentemente. Desta forma, antes de trazer uma página através da Graça Bressan/LARC 2000 9

rede/conexão discada, o Browser verifica se a página já está no cache. Alguns Browsers permitem que o cliente ajuste sua política de manipulação do cache, tal como definir um limite de tempo para as páginas do cache. Tipos Básicos de Documentos Web Estático - reside em um arquivo HTML associado com um servidor Web. O seu conteúdo é determinado no instante de sua gravação e não é alterado. Cada requisição traz exatamente o mesmo documento. Dinâmico - Não existe em uma forma pré-determinada. Seu conteúdo é criado no servidor Web através de um programa CGI (Common Gateway Interface) sempre que uma página for requisitada. Ao chegar uma requisição o servidor Web executa uma aplicação CGI que cria o documento. O documento criado é enviado ao browser que fez a requisição. Ativo - o documento ativo consiste inclui um programa que calcula e exibe os valores. Quando o browser requisita um documento ativo, o servidor retorna uma cópia do programa que o browser deve executar localmente. O conteúdo do documento nunca é fixo, podendo mudar a cada execução. Os programas utilizados em documentos ativos podem ser applets Java (outra alternativa é ActiveX da Microsoft). World Wide Web: Documentos Dinâmicos Graça Bressan/LARC 2000 10

World Wide Web: Documentos Ativos Estáticos x Dinâmicos Ativos Vantagens Desvantagens Estáticos Simplicidade, confiabilidade e desempenho. A formatação é direta e permite a exibição rápida pelo browser. A página pode ser mantida em cache agilizando as requisições futuras. Pouco flexível. As mudanças são introduzidas através de alterações do documento original. Dinâmicos Ativos Permitem definir documentos específicos da requisição do cliente, por exemplo, preços de itens, quantidades em estoque, condições meteorológicas, condições de tráfego, etc. Do ponto de vista do cliente não existe diferença entre uma página estática e uma dinâmica. Ambas são HTML. Podem obter e atualizar as informações continuamente. Como executa na própria máquina local, permite a geração de imagens animadas com a velocidade necessária. Custo adicional em gerar e executar o documento. Exige maiores conhecimentos para a programação. Deve ser programado de forma a ser independente do computador. Custo adicional em gerar e executar o documento. Exige maiores conhecimentos para a programação. Deve ser programado de forma a ser independente do computador. Graça Bressan/LARC 2000 11

Implementação Documentos Dinâmicos O Web Server deve ser capaz de executar um programa separado que cria um documento ao chegar cada requisição. Deve ser capaz de capturar a saída do programa e retornar para o Browser. Deve ser escrita uma aplicação para cada documento dinâmico. O servidor deve ser configurado de forma a saber quais URLs correspondem a documentos estáticos e quais a dinâmicos. O padrão CGI - Common Gateway Interface Desenvolvido pelo NCSA ( National center for Supercomputers Applications) para uso com o NCSA Server. Define como o servidor Web interage com o programa CGI que implementa o documento dinâmico. O padrão permite o uso com diferentes linguagens: C, C++, Fortran e linguagens de script tais como Perl, TCL, Unix Shell. O padrão CGI - Common Gateway Interface Saída de um programa CGI Por ser documentos HTML, textos puros ou imagens digitais, entre outros. Existe um header para definir o tipo de saída. O header de saída CGI utiliza o mesmo formato que os servidores Web utilizam para enviar documentos ao Browser: uma ou mais linhas de texto seguidas de uma linha em branco. Graça Bressan/LARC 2000 12

Chamada de um programa CGI A chamada de um programa CGI pode ser da forma: http://servidor/cgi-bin/exemplo onde exemplo é o nome de um programa CGI. O header de retorno gerado pelo programa CGI inclui linhas como as seguintes Content-type:text/html <linha em branco> Este header indica ao servidor Web que o tipo de retorno é texto HTML. Retorno de um programa CGI No retorno pode exigir uma redireção indicando que o documento está em uma nova localização. Isto é feito quando o programa CGI gera as seguintes linhas como saída: Location:/novo/documento.txt <linha em branco> O servidor ao interpretar este comando localiza o documento http://servidor/novo/documento.txt e retorna para o Browser como se o cliente houvesse pedido este documento. Exemplo de Programa CGI O programa CGI a seguir é escrito em Unix Shell e informa a data e hora: #!bin/sh # Script CGI que imprime a data e a hora # Header do documento com linha em branco echo Content-type:text/plain echo # saída da data Graça Bressan/LARC 2000 13

echo Este documento foi criado em `date` A saída do Script será: Content-type:text/plain <linha em branco> Este documento foi criado em Mon Jun 3 14:19:37 EST 1997 Em cada chamada do documento será retornada a hora atual. Passagem de Parâmetros para o Programa CGI A passagem de parâmetros para o programa CGI é feito na URL de chamada acrescentando "?" Seguido dos parâmetros: http://servidor/cgi-bin/exemplo? Parametros Comunicação com o Programa CGI A comunicação no programa CGI é feita através de variáveis de ambiente ou environment: Nome da variável SERVER_NAME GATEWAY_INTERFAC E SCRIPT_NAME QUERY_STRING REMOTE_ADDR Significado Nome do domínio do computador executando o servidor. Versão do programa CGI que o servidor está utilizando. Caminho no URL após o nome do servidor. Informações seguindo o "?"no URL. Endereço IP do computador executando o Browser. CGI - Informações de Estado O servidor Web não mantém estado entre as requisições. Para cada arquivo requisitado pelo browser é feita uma conexão e ao final da transferência é feita a desconexão. A CGI, por sua vez, pode precisar armazenar informações de estado quando está interagindo com um usuário. Tipos de armazenamento de estado Graça Bressan/LARC 2000 14

De longo prazo - mantidas entre chamadas de browser. De curso prazo - mantidas apenas durante uma chamada Exemplo: CGI com Informações de Estado de Longo Prazo CGI para armazenar em um arquivo o endereço de quem chamou. #!bin/sh FILE=ipaddrs echo Content-type:text/plain echo # Procurar o endereço IP do computador do browser no arquivo ipaddrs if grep -s $REMOTE_ADDR $FILE > /dev/null 2>%1 then echo O computador $REMOTE_ADDR requisitou a URL anteriormente. else # Acrescentar o endereço IP do browser ao arquivo ipaddrs echo $REMOTE_ADDR >> $FILE echo Este é o primeiro contato do computador $REMOTE_ADDR. fi Se o endereço IP do computador do browser é 128.10.2.26, as saídas do CGI serão as seguintes: Na primeira chamada: "Este é o primeiro contato do computador 128.10.2.26." Nas próximas chamadas: "O computador 128.10.2.26 requisitou a URL anteriormente." Neste exemplo, $REMOTE_ADDR é uma variável de ambiente que informa o IP do computador que se conectou. Na linguagem shell as variáveis são precedidas de $. Informações de Estado de Curto Prazo Em uma URL, o que estiver após o caráter "?" serão passadas ao programa CGI como parâmetros. Desta forma, documentos dinâmicos poderão ser gerados de acordo com os parâmetros. Graça Bressan/LARC 2000 15

Os parâmetros passados na URL são obtidos pelo CGI através da variável de ambiente QUERY_STRING. Exemplo: Informações de Estado de Curto Prazo #!bin/sh echo Content-type:text/html echo N=$QUERY_STRING echo "<HTML>" case "x$n" in x) N=1 echo "Esta é a primeira vez que esta página foi carregada.<br><br>" ;; x[0-9]*) N= expr $N + 1 echo "Esta página foi recarregada $N vezes.<br><br>" ;; *) echo "Esta URL que voce usou é inválida.</html>" exit 0 ;; esac echo "<AREF=\"http://$SERVER_NAME$SCRIPT_NAME?$N\">" echo "Clique aqui para recarregar a página.</a></html>" A primeira chamada desta CGI é da forma : http://www.dominio.com/cgi/exerc4 O CGI mandará ao browser a página HTML: Content-type:text/html <HTML> Esta é a primeira vez que esta página foi carregada.<br><br> <AREF="http://www.dominio.com/cgi/exerc4?1> Graça Bressan/LARC 2000 16

Clique aqui para recarregar a página.</a></html> O browser mostrará na tela Esta é a primeira vez que esta página foi carregada. Clique aqui para recarregar a página. Clicando no lugar indicado, haverá uma nova chamada da CGI com parâmetro 1. O CGI mandará ao browser a página HTML: Content-type:text/html <HTML> Esta página foi recarregada 1 vezes.<br><br> <AREF="http://www.dominio.com/cgi/exerc4?2> Clique aqui para recarregar a página.</a></html> O browser mostrará na tela Esta página foi recarregada 1 vezes. Clique aqui para recarregar a página. Formulários e Interação O HTML permite que um documento seja um formulário contendo botões e itens que o usuário deve fornecer. As informações fornecidas pelo usuário são codificadas como parâmetros na URL para transmissão a um documento. Exemplo: Considere o seguinte formulário Que animal voce gostaria de ter? Gato Cavalo Cachorro Sim Não Talvez Se o usuário digitou sim, não e talvez para cada uma das caixas de texto, então o browser acrescentará à URL a cadeia:?gato=sim,cavalo=não,cachorro=talvez Graça Bressan/LARC 2000 17

Documentos WEB Ativos Documentos dinâmicos não atendem a todas necessidades pois a informação contida no documento se torna fixa após o envio ao browser. As informações não podem ser atualizadas na tela como é exigido por aplicações de animação. Técnicas para atualização da tela do usuário: Server push - o servidor envia periodicamente cópias atualizadas para a tela do usuário. Desvantagens: Para cada cliente pode ser necessária a geração de uma cópia atualizada. O envio da cópia consome capacidade dos canais e estão sujeitos a atrasos. Documentos ativos - o browser envia um programa que será executado localmente pelo browser. Quando o browser requisita um documento dinâmico, o servidor envia um programa que será executado pelo browser localmente. As atualizações são feitas localmente e como o documento ativo não muda e sim o que é apresentado na tela, o documento ativo pode ser armazenado em cache e em forma comprimida. JAVA É uma linguagem orientada a objeto e também é um ambiente operacional portável. É um primeiro passo na criação da Object Web. O termo Applet denomina em Java os programas de documentos ativos. O compilador Java, ao compilar os Applets, produz um código intermediário, bytecode, que é interpretado na máquina cliente. Esta característica é responsável pela portabilidade do sistema, a custo de um pior desempenho. Graça Bressan/LARC 2000 18

Documentos Ativos JAVA JAVA Histórico da Linguagem Java 1991 - Eletrônica de Consumo: Confiabilidade Recursos de sistema limitados Custo Flexibilidade de CPUs Após tentativas com C++, surge a Linguagem Oak 1993 - TV Interativa 1995 - Internet/WWW Componentes do Java Java Virtual Machine: Interpretador Java. Interpreta os applets em bytecode. "Sistema Operacional Java": Linguagem Java: threads, monitores, gerenciamento de memória, arquivos seguros. Bibliotecas Java: Java.applet, Java.net, JDBC, Java.io, Java.util. Componentes de serviço: Java ORBlets, Java IDL, Applets, Plug-ins. Java Beans. Graça Bressan/LARC 2000 19

Ambiente de aplicação Java Browser Hot Java, Serviços CORBA. Linguagem Java É de alto nível e de propósito geral, isto é, pode ser utilizada em programação que não seja applet. Semelhante ao C++ mas possui características que a tornam mais segura. Orientada a objeto. Dinâmica: instâncias de objetos são criadas dinamicamente. Fortemente tipada: todo dado deve ser declarado com um tipo e operações não são permitidas com dados de tipos diferentes daquele a que a operação se destina. Tipos são checados estaticamente: a verificação de tipos é feita durante a compilação. Concorrente: permite o projeto de programas com múltiplos threads que executar concorrentemente. Semelhanças com C++ Sintaxe e semântica semelhantes Muitos dos comandos em C++ existem em Java. O mecanismo de tipos utiliza hierarquia de classes. Diferenças Menos comandos que C++ Não possui as características que costumam levar a erros. Ex.: não existem sobrecarga de operadores, herança múltipla ou extensiva coerção de dados. Algumas características estão presentes, mas com restrição de uso. Ambiente de Execução Java Execução interpretada: embora possa ser compilada em código para computadores específicos, foi projetada para ser interpretada. O compilador traduz programas Java em uma notação binária independente de máquina denominada Java bytecode representation. Um interpretador lê o bytecode e executa. Graça Bressan/LARC 2000 20

Garbage collection automático: em lugar de utilizar rotinas tais como malloc e free, as rotinas de tempo de execução realizam a recuperação de memória alocada aos objetos e que não está sendo utilizada. Execução multithread: provê suporte a execução concorrente de threads, com recursos de escalação e chaveamento de contexto através dos recursos de um microkernel. Acesso Internet: inclui biblioteca de sockets para o desenvolvimento de aplicações cliente/servidor utilizando TCP ou UDP. Suporte gráfico: permite a aplicações cliente e a applets a criação de janelas contendo textos ou gráficos. Independência de Máquina e Portabilidade Pelo fato de ser compilada na representação bytecode, pode ser portada para diferentes arquiteturas através do porte do interpretador de bytecode. A portabilidade e independência de máquina é essencial para o desenvolvimento de applets pois o browser pode realizar o download do applet em diferentes arquiteturas. O documento ativo não é diferenciado em relação à arquitetura da máquina onde será carregado. Biblioteca Java Possui mais de 2000 métodos. Exemplos: Manipulação gráfica: permite o controle sobre o vídeo, possuindo recursos para apresentar textos, gráficos, imagens, caixas de diálogo, etc. E/S de rede: biblioteca de sockets. Interação com servidor WEB: permitem o acesso a documentos estáticos e dinâmicos através de URL s. Acesso ao sistema de tempo de execução: permite criar threads, por exemplo. E/S de arquivos locais e remotos. Estruturas de dados convencionais. Captura de eventos tais como cliques de mouse e digitação. Manipulação de exceções. Graça Bressan/LARC 2000 21

Ferramentas Gráficas O conjunto de ferramentas gráficas do sistema Java possui: Recursos de alto-nível para interfaces gráficas fornecidos pela biblioteca Java. Suporte dentro do ambiente de tempo de execução para manipulação da tela de vídeo. O conjunto de ferramentas gráficas é denominado Abstract Window Toolkit (AWT). Os applets necessitam interagir com documentos estáticos de forma análoga a browsers. Para isso o AWT inclui classes tais como, dada uma URL, obter e exibir um documento HTML estático ou imagens e áudio. Java DataBase Connection - JDBC Especificação da Sun desenvolvida em conjunto com Oracle, Sybase, Informix, entre outros. É um conjunto de classes Java que provêm um serviço de acesso a SQL de forma análoga ao ODBC. Consiste de: JDBC Driver Manager que é a API para uso de aplicações Java. Driver para o DBMS específico (Oracle, Informix,...). Compilando um Programa Java O ambiente Java inclui um compilador que é denominado javac. Os programas fonte possuem a extensão.java. O javac converte um programa fonte em Java na representação de bytecode que é armazenado em em arquivo com extensão.class. Um item que é declarado public é exportado para outros applets enquanto um item private não pode ser referenciado externamente. O programa fonte deve possuir exatamente uma classe pública com o mesmo nome do arquivo fonte do programa Java. Exemplo: um arquivo aaa.java pode possuir as declarações public class aaa{... } class bbb {... } Graça Bressan/LARC 2000 22

class ccc {... } Após compilar este programa o javac irá gerar o arquivo aaa.class. Exemplo de Applet Java import java.applet.*; import java.awt.*; public class contaclique extends Applet { } int contador; TextField f; public void init() { contador = 0; add (new Button("Clique aqui")); f = new TextField("O botão ainda não foi clicado."); f.seteditable(false); add(f); } public boolean action (Event e, Object arg) { } if (((Button) e.target).getlabel() == "Clique aqui") { contador += 1; f.settext("o botão foi clicado "+ contador + " vezes."); } return true; Exemplo de Applet Java O comando import java.applet.*; indica que o compilador deve importar todas as classes com nomes que começam com java.applet. O exemplo define uma subclasse do tipo Applet denominada contaclique. E a classe contaclique redefine os métodos init e action. Quando o browser chama a referência ao applet, o objeto contaclique é criado. Dois itens são definidos em contaclique: o inteiro contador e o Graça Bressan/LARC 2000 23

TextField f. Na criação do objeto, é chamado o método init de inicialização do objeto que, entre outras ações, cria o botão e a caixa de texto. O método action é responsável por incrementar o contador cada vez que o botão for clicado, alterando o texto da caixa de texto. Todo este processamento é local à máquina cliente. Chamando um Applet Uma forma de chamada é através da especificação da URL. Por exemplo, se a máquina www.servweb.br possui o applet bbb.class armazenado no diretório exemplo, a URL será: http://www.servweb.br/exemplo/bbb.class Outra forma é utilizar uma tag applet que permite especificar a máquina e caminho em codebase e o código que em code. No caso acima, a tag será: <applet codebase="www.serweb.br/exemplo" code="bbb.class"> Exemplo de Interação com Browser import java.applet.*; import java.net.*; import java.awt.*; public class botao extends Applet { public void init () { } add (new button ("Usp")); add (new button ("Larc")); public boolean action (Event e, Object arg) { if (((Button) e.target). getlabel() == "Usp") { try { Graça Bressan/LARC 2000 24

getappletcontext ().showdocument ( new URL("http://www.usp.br/escolas")); } catch ( Exception ex ) { // Incluir aqui o código para tratar a exceção // } } else if (((Button) e.target).getlabel() == "Larc") { try { getappletcontext ().showdocument ( new URL("http://www.larc.usp.br/cursos")); } catch ( Exception ex ) { // Incluir aqui o código para tratar a exceção // } } return true; } } Exemplo de Interação com Browser Quando o browser inicializa o applet, chama o método init que, entre outras coisas, cria os botões Usp e Larc. A interação com o browser está no método action que ao ocorrer o evento de clicar um dos botões, trará um documento contido na URL especificada. Por exemplo, ao clicar o botão Larc, o browser trará o documento cursos, especificado pelo comando: new URL("http://www.larc.usp.br/cursos")) O comando que solicita ao interpretador HTML exibir a página é: getappletcontext ().showdocument Graça Bressan/LARC 2000 25

Arquitetura Microsoft para Web Internet Explorer: browser incorporado aos SOs Windows. Active X: de forma simplificada é um Objeto OLE que equivale ao conceito de Applet Java, Microsoft Internet Studio: Ambiente que permite o desenvolvimento aplicações Web, inclusive Active X. Microsoft Internet Information Server: servidor Web. Outras ferramentas: Active server pages, Media Server para vídeo via internet, etc. Fim do Módulo Cliente/Servidor em Web Graça Bressan/LARC 2000 26