Escolar Documentos
Profissional Documentos
Cultura Documentos
JAVA 10
ndice
10.1.Introduo ........................................................................................................... 2
10.2.Apresentao e execuo das aplicaes ................................................................ 3
J10-1
10.9.Resumo ............................................................................................................. 28
Objetivos
No final deste mdulo voc dever ser capaz de:
comparar as vrias solues de conectividade usando Java e saber
escolher a mais adequada a determinado ambiente.
perceber as vantagens do uso de interfaces e outros mecanismos
orientados a objetos que promovem o reuso de componentes.
10.1.Introduo
A aplicao analisada permite o acesso a um banco de informaes
armazenadas em um arquivo de texto ou em banco de dados relacional,
localizado em um servidor remoto. O acesso pode ser direto ou atravs de uma
das quatro aplicaes intermedirias que interceptam as requisies do cliente.
Essas aplicaes foram construdas para atuar como servidores e realizar a
comunicao usando CORBA, RMI, RMI sobre IIOP ou soquetes TCP
(java.net).
As aplicaes mencionadas acima executam sob o sistema operacional local.
Tambm analisaremos aplicaes que funcionam sob a plataforma Web. So
mais duas verses da aplicao de banco de dados, usando tecnologias Web clientside e server-side. A primeira verso, consiste de uma interface do usurio
proporcionada por um applet Java cuja lgica da aplicao reside no browser. A
segunda aplicao Web utiliza HTML e JavaScript como interface do usurio e
concentra a lgica da aplicao em um servlet Java instalado no servidor.
Copyright 1999, Helder L. S. da Rocha. Todos os direitos reservados. EP:SF-Rio/D99
J10-2
Figura 10-2 Aplicao cliente com interface grfica. (a) durante opes Pesquisar... em arquivo
local; (b) e (c) menus; (d) listando os dados de banco de dados remoto (via RMI/IIOP)
J10-3
J10-4
Figura 10-5 (a) Aparncia geral dos servidores intermedirios (BDProtocol, CORBA, RMI, RMI/IIOP).
(b) Dilogo para conectar com banco de dados em arquivo. (c) Dilogo para conectar em banco de dados relacional atravs de URL JDBC
J10-5
P g ina*H TML
B rowser
Interface**a plica o
sta nda lone*orientada*a*caracter
Interface*Applet*Web
via*browser
Console
D a dosClientUI
D a dosClientTextU I
BancoDados
BancoDados
H TTP
B rowser
P g ina*H TML
S ervidor*H TTP
D a dosA pplet
D a dosS ervlet
BancoDados
BancoDados
implementam/interface/BancoDados
2.*Clientes*e*S ervidores
interm edi rios
TCP Client
a )*Cliente*e*servidor*B DProtocol*
b)*Cliente*e*servidor*RMI
c*)*Cliente*e*servidor*COR B A
R MIClient
B D P rotocol
(a)
R MI
( b)
Corba Client
COR B A
( c)
**protocolo*propriet rio*TCP/IP
usa ndo*S ockets*ja va.net
implementa/interface/BancoDados
BancoDados
BancoDados
BancoDados
B a ncoD adosJ D B C
Connection ResultSet ...
Driver
Statement
implementam/interfaces/JDBC
B a ncoD adosArquivo
(a)
ODBC
Windows*O DB C32*
Da ta *Source*Na me
O D B C *d rive r*fo r*
MS C Acce ss*M D B *file s
( b)
m sqlda dos1/
mSQL
desconh ecido
( c)
bd_ desconhecido
a rquivo
da dos.da t
MS *A ccess
a nuncios.m db
a )*B anco*de*dados*ODB C
b)*B anco*de*dados*MS QL
c)*B anco*de*dados*qua lquer
F ig ura *10 C6 **C *P a rtes*desta c veis*da *a plica o*"ba ncoda dos".*Veja *m a is*deta lhes*sobre*a *estrutura *da *a plica o*no*a pndice*C.
J10-6
t1 ap
t1 prot
t2
t3 ap
t1 ap
t1 prot
t1 web
a rquivo
da dos.da t
R a nd om A ccessF ile
BancoDados
B D P rotocol
TCP Client
BancoDados
D a dosS ervlet
S ervid or=H T T P
H TT P
P g in a =H T ML
B rowse r
t2
t3 ap
t3 web
a rquivo
da dos.da t
R a nd om A ccessF ile
BancoDados
B D P rotocol
TCP Clien t
BancoDados
D a dosClien tU I
A plica o=Windows=servindo
com o=interfa ce=g r fica =
C en rios=testa d os=e
in sta n tes=m ed ido s
A plica o=de=
B a n co=de=D a dos
t1 ap
t1 prot
a rquivo
da dos.da t
BancoDados
B D P rotocol
TCP Clien t
BancoDados
D a dosA pplet
B rowse r
P g in a =H T ML
A pplet=em =browser
MS =N etsca pe=N a vig a tor
t2
t3 ap
t1 local
a rquivo
da dos.da t
R a nd om A ccessF ile
BancoDados
D a dosClien tU I
t2
t3 local
J10-7
runRMIServer.bat
runRMIServer.sh
runRIIOPServer.sh
rmiregistry
runRIIOPServer.bat
e tnameserv
runTCPServer.bat
runTCPServer.sh
TCP/IP
Copyright 1999, Helder L. S. da Rocha. Todos os direitos reservados. EP:SF-Rio/D99
J10-8
runCorbaServer.bat
runCorbaServer.sh
tnameserv
Maiores detalhes sobre a construo das aplicaes esto nos mdulos Java
11, Java 6 e Java 7.
10.4.Construo da aplicao
Este apndice fornece alguns detalhes sobre a estrutura da aplicao descrita na
seo anterior. Maiores detalhes sobre o cdigo em Java podem ser encontrados
no diretrio /jad/apps/ (resultante da expanso dos arquivos do disquete) no
cdigo-fonte, detalhadamente comentado (/jad/apps/bancodados/) e na
documentao em hipertexto, gerada a partir do cdigo-fonte, que descreve
todos os pacotes, classes e mtodos (/jad/apps/docs/).
Este apndice supe que o leitor esteja familiarizado com a linguagem Java,
HTML e JavaScript.
Estrutura da aplicao
A aplicao estudada nos mdulos Java 6 e Java 7 permite o acesso a um
banco de dados contendo registros de anncios. Fornece diversas interfaces do
usurio e opes de servidores intermedirios. O ncleo da aplicao, porm,
consiste apenas de dois tipos Java:
J10-9
bancodados.BancoDados:
J10-10
DadosClientTextUI:
J10-11
Ca m a da s3de3rede
Cliente3rem oto
S ervidor3de3aplica es
ba ncoda dos.user
Ca m a da s3da 3a plica o
(a )
ba ncoda dos
Cam ada3de3apresenta o
(interface3do3usurio)
Cam ada3da3lg ica 3da3aplicao3(dom nio3e3servios)
33 ( a ) 3Cla sses3que3representa m 3conceitos
33333333funda m enta is3da 3a plica o3( dom nio)
33 ( b) 3Cla sses3que3fornecem 3servios
(b)
R ede
A plica o3loca l
ba ncoda dos.user
ba ncoda dos.user
ba ncoda dos
(a )
BD
ba ncoda dos
(a )
ba ncoda dos.tier3.*
(b)
F onte
de3da dos
BD
F onte
de3da dos
Figura 10-9 Arquitetura em camadas e pacotes Java/UML das aplicaes de banco de dados
J10-12
ex tends
ex tends
_ A nuncioS tub
N a oE xisteH elper
D a teH elper
Qua droAvisosH elper
A nuncioH elper
A nuncioA rra yH elper
N a oE xisteH old er
D a teH old er
Q ua droAvisosH old er
A nuncioH old er
ex tends
ex tends
F orm a tos
H elper
E rroES
N a oExiste
_ AnuncioImplBase
implements
implements
B a ncoD a dosJ D B C
ba ncodados.tier2.local
Corba Client
TCP Client
R MIClient
implements
implements
A nuncioIm pl
implements
Anuncio
implements
ex tends
**
ex tends
ex tends
**
java.rmi.server.Rem oteStub
**
A nuncioIm pl_ S kel
**
S ea rchCm d
E xitCm d
A ddR eg Cm d
R em R eg Cm d
L eng thCm d
G etR eg Cm d
BDProtocol
ba ncoda dos.tier3
ex tends
java.la ng.Exception
java.rmi.server.Skeleton
implements
Q ua droAvisosIm pl
implements
QuadroAvisos
ja va .rm i.Remote
A nuncioIm pl
Qua droAvisosIm pl
ex tends
B a ncoD a dosIm pl
ex tends
TCPServer
implements
ja va .lang.Runna ble
Comando
ba ncoda dos.tier3.tcpip
R eg istroInexistente
interfa ce
supercla sse
Cla sse&Concreta
Classe&Abstrata
Interface
pa cote
pa cote.su bpa cote
ja va .io.D a taInputStrea m
cla sse
extends
implements
subcla sse
Leg e nd a
D ia g ra m a &de&Pa cotes&
e &Cla sses&P blica s
F ig u ra &10` 10&&`&D ia g ra m a &de&cla sses&pblica s&da &a plica o&4&"ba n coda dos".&Cla sses&de&uso&loca l,&cla sses&in terna s&e&da &A P I&J a va &fora m &om itida s.&S om ente&a s&rela es&de&hera na &e&polim orfism o&est o&m ostra da s
ErroE S H elper
ErroE S H older
implements
Anuncio
implements
implements
QuadroAvisos
D a dosA pplet
ex tends
java.applet.Applet
D a dosClientTextU I
D a dosClientU I
ex tends
java.awt.Fra me
ex tends
D a dosS ervlet
ex tends
javax.servlet.http.H ttpServlet
XX X&D ia log
ex tends
ja va x.awt.D ia log
D a dosClientP a nel
ex tends
ja va .a wt.Panel
DadosServerFrame
ex tends
ex tends
implements
ja va .a wt.Fra m e
ex tends
BancoDados
ex tends
implements
R eg istro
J10-13
bancoda dos.user
Cliente:e:S ervidor:CO R B A
com :ca m a da :de:a presenta o:"a pplet:Web"
ja va.awt.Fra m e
java.lang.Runnable
DadosServerFrame
ja va.awt.D ialog
P rom ptD ialog
Cliente:Corba
bancoda dos.user
D adosClientPa nel
bancodados.util.corba._ AnuncioImplBase
bancoda dos
ja va.applet.Applet
D adosApplet
S ervidor:Corba
ja va.awt.Panel
bancoda dos.tier3.corba
Reg istro
Qua droAvisosIm pl
BancoDados
bancodados.util.corba.*
org.omg.CORBA.*
org.omg.CosNaming.*
bancoda dos
Reg istro
BancoDados
bancoda dos.tier2.local
1
AnuncioIm pl
bancodados.util.corba._ QuadroAvisosImplBase
B ancoD adosJ D BC
CorbaClient
bancodados.util.corba.*
org.omg.CORBA.*
org.omg.CosNaming.*
L eg enda
ja va.awt.Fra me
java.rmi.Remote
DadosServerFrame
QuadroAvisos
Qua droAvisosImpl
ba ncodados
Figura 10-11 - Diagramas de classes. Cliente e Servidor CORBA com camada de apresentao applet Web.
J10-14
//
//
//
//
//
descritor de arquivo
inicialmente false
relaciona posicao do ponteiro
do RandomAccessFile com registro
Maior nmero de registro
J10-15
Nesta
J10-16
Coluna
Informaes armazenadas
Observaes
codigo
int
integer
data
String
texto
String
autor
String
nmero do anncio
data de postagem do
anncio
texto do anncio
autor do anncio
chave primria
char(24)
char(8192)
char(50)
{
", '"
"', '"
"', '"
"')";
J10-17
J10-18
Subdiretrio
Arquivo-fonte Java
bancodados/user
DadosClientTextUI.java
bancodados/
BancoDados.java
bancodados/
Registro.java
bancodados/tier2/local
BancoDadosArquivo.java
bancodados/tier2/local
BancoDadosJDBC.java
Contedo
interface do usurio
orientada a caracter
interface genrica para o
banco de dados (interface)
representao de um
registro (classe concreta)
implementao de
BancoDados
implementao de
BancoDados
J10-19
J10-20
Aps a leitura da pgina pelo servlet, o browser recebe uma pgina gerada
dinamicamente, com os marcadores <!--links --> e <!--dados --> (em negrito
no cdigo acima e abaixo) substitudos por informaes geradas a partir dos
dados armazenados (veja figura 10-4):
<a href="#100">100</a> | <a href="#101">101</a>
(... vrias linhas removidas ...)
| <a href="#134">134</a> |
</p><table border=0 width=590 bgcolor="#dddddd">
<tr><th>Nmero</th><th>Texto</th><th>Autor</th><th>Data</th></tr>
<tr valign=top><td><a name="100">100</br><a
href="#top"><small>[MENU]</small></a></td><td>Cachimbos, ...
tambm!</td><td>R. Magritte
(magritte@recursive.org)</td><td>21/12/97 18:39</td></tr>
(... vrias linhas removidas ...)
<tr valign=top><td><a name="131">131</br><a
href="#top"><small>[MENU]</small></a></td><td>Vende-se um ... da
Terra.</td><td>G. Galileo (galileo@galilei.lua)</td><td>31/12/98
17:06</td></tr>
<input type=hidden name=tarea value="">
<input type=hidden name=tfld value="">
<input type=hidden name=numero value="0">
(...)
<tr><td width=70> </td><td> </td><td> </td><td>
</td></tr></table><p>
<a href="#100">100</a> | <a href="#101">101</a>
(... vrias linhas removidas ...)
| <a href="#134">134</a> |
</p></div>
Copyright 1999, Helder L. S. da Rocha. Todos os direitos reservados. EP:SF-Rio/D99
J10-21
J10-22
valor dos campos ocultos enquanto uma pgina est sendo exibida, em resposta a
um evento (um aperto de boto, por exemplo).
Usamos campos ocultos, por exemplo, para que o servlet saiba qual o
comando que foi solicitado pelo usurio da aplicao Web, alterando o campo
<input type="hidden" name="comando" value="getReg">
<script>
function remover(entra) {
candidato = prompt("Digite nmero do registro a ser removido","");
if (candidato) {
entra.numero.value = candidato; // muda valor de campo oculto numero
if (confirm("Tem certeza que quer remover o registro " + candidato + "?")) {
entra.comando.value = "remReg"; // muda valor do campo comando
entra.submit();
}
}
}
</script>
J10-23
Para maiores detalhes sobre esta aplicao, consulte o cdigo fonte localizado
no arquivo DadosServlet.java (diretrio jad/apps/bancodados/user).
Os exemplos deste captulo foram testados usando o Servletrunner. Para
executar os servlets, estes precisam ser instalados no Servletrunner. A instalao
realizada atravs de um arquivo de configurao chamado servlet.properties
que vincula o nome do servlet a um arquivo .class e passa quaisquer parmetros
adicionais de inicializao necessrios. Para esta aplicao, o arquivo
servlet.properties dever conter os seguintes dados:
servlet.bdservlet.code=bancodados.user.DadosServlet
servlet.bdservlet.initArgs=\
htmlDados=j:/jad/apps/htdocs/dados.html,\
htmlSelecao=j:/jad/apps/htdocs/selecao.html,\
appHome=j:/jad/apps
J10-24
J10-25
J10-26
J10-27
10.9.Resumo
Este mdulo analisou um exemplo de aplicao Java que utiliza as
tecnologias exploradas em mdulos anteriores. Tambm comparou diferentes
implementaes da camada de apresentao (interface do usurio) de uma mesma
aplicao, que pode rodar como applet, em um browser Web; como aplicao
independente, sob o sistema operacional Windows; ou como servlet, em um
servidor Web gerando pginas dinamicamente para um browser.
3
J10-28
Interface grfica
Tempo de resposta da GUI
(resposta a eventos locais)
Tempo de resposta de
operaes de rede
Protocolos suportados
Formatos que podem ser
exibidos (tipos de dados)
Recursos e APIs Java
suportadas pela aplicao
Segurana
Facilidades de distribuio,
atualizao e instalao
Flexibilidade de
desenvolvimento4
Facilidade de
desenvolvimento6
Quantidade de
modificaes e cdigo
adicional a escrever7
Suporte em JDK 1.2
(Java 2)
Suporte em JDK 1.1
Suporte em JDK 1.0
Cliente Windows
Cliente applet
Qualquer tipo
Qualquer tipo
Todos os recursos
disponveis
Restries definidas pelo
programador
Usurio precisa instalar
(uma vez) e atualizar.
Apenas recursos
disponveis no browser
Restries impostas pelo
browser (-assinados)
Instalao automtica
aps carga pelo browser,
a cada acesso.
Limitada por herana
(precisa estender a classe
Applet).
Mesmo nvel que
aplicao de referncia.
Poucas modificaes (usa
mesma interface grfica).
Cliente HTML +
servlet HTTP
Limitada (interatividade depende
de programao adicional em
JavaScript)
Pior tempo de resposta
(precisa carregar nova pgina)
Tempo adicional devido ao
protocolo HTTP
HTTP
HTML, GIF, JPEG, PNG e
tipos suportados pelo
browser usado
Todos os recursos
disponveis
Restries definidas pelo
programador e servidor
Instalao prvia no servidor
Web. Usurio simplesmente
usa o servio.
Limitada por polimorfismo
(precisa implementar
interface Servlet)5.
Requer conhecimentos de
HTML e HTTP.
Algumas modificaes
(precisa gerar HTML).
java.applet (ncleo)
javax.servlet (extenso)
java.applet (ncleo)
javax.servlet (extenso)
java.applet (ncleo)
No suportado.
Necessidade de seguir regras rgidas, como herana de certas classes, implementao de certos mtodos,
utilizao dentro de certos parmetros. Herana (extenso de classes) bem menos flexvel que polimorfismo sem
herana (implementao de interfaces) uma vez que Java no suporta herana mltipla de implementaes, mas
permite que uma classe implemente vrias interfaces.
5 Tipicamente implementam-se servlets HTTP atravs de herana, estendendo a classe HttpServlet que por sua
vez implementa a interface Servlet (polimorfismo sem herana).
6 Leva em considerao nmero de linhas de cdigo adicionais (em relao aplicao Windows) que precisam ser
escritas, linguagens e tecnologias que devem ser conhecidas (como HTML, HTTP). No leva em conta a
necessidade de se aprender a API especfica para cada tecnologia.
7 Em relao aplicao Windows.
4
J10-29
J10-30