Autor: Nelson Naoki
Umeda
Introdução:
Soa irresistível, uma
linguagem simples, orientada a objeto, independente de plataforma,
segura, de alta performance(?) e multi-thread. Ideal para construção
de aplicações na Internet através de programas dinâmicos, interativos
e baixados via rede, que podem rodar dentro de uma página web.
Podem por exemplo:
- incluir sons em tempo
real quando a página é carregada.
- fundo musical na página.
· animação no estilo desenho animado.
- vídeo em tempo real.
- games interativos
com vários jogadores.
- acesso a Banco de
Dados Relacionais.
- etc.
De fato parece irresistível,
todos falam sobre Java, infelizmente poucas pessoas parecem conhecer
o assunto. Assim passamos a estudar o assunto buscando informações,
principalmente na Internet, e da nossa pesquisa elaboramos esta
matéria que esperamos possa ser útil aos leitores do Bate Byte.
O Que é Java:
Java é uma linguagem
de programação orientada a objeto desenvolvida pela Sun Microsystems.
Baseado em C++, a linguagem Java foi desenhada para construção de
programas pequenos, simples e portáveis em várias plataformas e
sistemas operacionais. Os programas Javas são divididos em dois
grupos: Applets e Aplicações. APPLET: Applet é um programa dinâmico
e interativo que pode rodar dentro de uma página web via um browser
compatível com Java, tais como Netscape e Internet Explorer.
Os applets são pequenos
programas que criam animação, apresentação multimídia, games em
tempo real, games com múltiplos jogadores em rede e interatividade
real. Tudo que programas escritos em outras linguagens podem fazer,
java applets também podem.
A desvantagem é que para
criar java applets, precisamos escrever em linguagem Java. Java
é uma linguagem de programação e como tal criar applets é muito
mais complexo do que criar páginas Web usando HTML. Assim, existem
ferramentas e programas que tornam a criação de applets java mais
fácil, como por exemplo o Visual J++ da Microsoft.
Aplicações
Java:
Por sua vez, aplicações
Java não requerem um browser. O Java pode ser usado para criar todo
o tipo de aplicações, tais como aqueles criados usando uma linguagem
de programação convencional. (por exemplo: Centura pode gerar aplicações
em Java ou C++).
Quando queremos executar
um programa Java (applet ou aplicação), roda-se um programa chamado
Interpretador de Bytecode, que executa o programa Java. (dentro
dos browsers tem um interpretador de Byte code).

Bytecodes:
Bytecodes são um conjunto
de instruções que parecem com código de máquina, mas não são específicos
a nenhum processador. Normalmente, quando se compila um programa
escrito em C ou outras linguagens, o compilador converte o programa
em código de máquina ou instruções de processador. Estas instruções
são específicas do processador do computador onde se esta rodando,
por exemplo, se compilar o código no Pentium, o programa resultante
só rodará em um outro Pentium. Se quiser usar o mesmo programa em
outro sistema, temos que recompilar neste novo sistema para gerar
um novo código executável.
Em Java, as coisas acontecem
de forma diferente, o ambiente Java é composto de duas partes: Compilador
Java e Interpretador Java.
Com o compilador Java,
a partir do código fonte geramos os bytecodes que executam em qualquer
plataforma. O interpretador Java é o responsável pela execução dos
applets ou programas escritos em Java.
Assim como arquivos HTML
podem ser lidos em qualquer plataforma, os applets, devido ao seu
bytecode, podem ser executados em qualquer plataforma com um browser
compatível com Java (que tem o interpretador Java). A desvantagem,
por enquanto, é a velocidade de execução visto que o bytecode é
interpretado.
Aplicação
Cliente/Servidor na Internet:
O Java, pela sua natureza
orientada à rede, é também um candidato ideal para a computação
Cliente/Servidor, é uma linguagem de programação para aplicações
distribuídas. Ele não só permite adicionar novos tipos de conteúdos
nas páginas Internet, mas também conteúdo e código necessário para
interagir com este conteúdo.
Antes porém de entrarmos
em mais detalhes acerca de aplicações Java Cliente/Servidor usando
a Internet, vamos analisar um cenário típico de Cliente/Servidor.

Em um cenário típico,
o cliente pede os dados ao Servidor, formata e apresenta. O Servidor
acessa a Base de Dados e responde o pedido. Soa simples, mas a interação
requer que o Cliente e o Servidor troquem múltiplas chamadas SQL
através da rede.
A performance de uma
conversa SQL Cliente/Servidor é dependente da rede (WAN). É ela
quem controla o quão rapidamente o cliente pode pedir mais dados,
por exemplo: um simples pedido de dados via SQL pode requerer 200
ciclos de pedido-resposta (cada vez que a aplicação SQL acessa uma
linha de uma tabela de um Banco usando comandos como SELECT, FETCH,
INSERT e UPDATE, o servidor e o cliente trocam um par de pacotes).
Se o tempo médio de round-trip time (o tempo de ida e vinda de um
pacote) é de 70 milisegundos, este pedido pode levar 14 segundos
para completar a transação (ambiente USA: tipicamente 56Kbits/s
a 1.5 Mbits/s).

Uma maneira de minimizar
o tráfego na rede é usando Stored Procedure, que pode reduzir dúzias
de ciclos de pacotes. Outra alternativa: para aplicações corporativas
em WAN, tem se usado WEB Servers e Browsers para acessar Base de
Dados via SQL. (A revista Data Communications International de agosto
de 1996, na reportagem WAN Design with Client-Server in Mind, coloca
como uma alternativa inteligente o uso da WEB: "Using Web Servers
to link clients to a server can cut down on WAN traffic dramatically
by replacing chatty SQL calls with efficient HTTP conversations...",
Web Browsers e Servidores se tornarão importantes opções para acesso
a Base de Dados...). Neste cenário, um Web Server é o "site"
central que recebe o comando SQL via HTTP e atua como GATEWAY para
usuários remotos. Diferente de SQL, o HTTP (HyperText Transport
Protocol) é mais eficiente na rede.
Empresas como Netscape
Communications Corp, Oracle Corp, têm produtos que se conectam a
Banco de Dados Relacionais Back-End através de interface proprietária
ou padrão baseado em CGI-Common Gateway Interface. É a solução que
implementamos na Celepar, via CGI (www_sql, uma interface genérica
criada na Celepar para acessar base de dados SYBASE e ADABAS no
Mainframe) onde temos rodando os sistemas da Biblioteca, Detran
e Municípios. (Figura acima)
Este cenário, onde tem
os uma aplicação rodando
sobre Internet baseado em CGI, com o advento do JAVA, tende a tornar-se
obsoleto à medida que os principais vendedores de Banco de Dados
Relacionais passem a endossar e disponibilizar Drivers para banco
de dados escritos em Java. É o novo cenário que se apresenta.

Integrando
Banco de Dados Com JDBC
Em um ambiente computacional
Cliente/Servidor é essencial o acesso a Banco de Dados, e se desejamos
utilizar programas escritos em Java para acessar Banco de Dados,
a linguagem deve permitir de alguma forma que tal aconteça.
A JAVASOFT (Braço da
Sun responsável pelo desenvolvimento do JAVA) está desenvolvendo
uma interface de acesso a Banco de Dados padrão SQL, o JDBC API
que vem a ser JAVA Database Conectivity, independente de DBMS, baseado
em X/Open SQL CLI (Call Level Interface) conforme ODBC. Esta API
irá fornecer aos programadores uma interface uniforme para um "range"
extenso de Banco de Dados Relacionais, e irá prover uma base comum
na qual ferramentas de alto nível e interfaces poderão ser construídas.
As APIs JDBC definem classes Java para representar conexões a Banco
de Dados, Statements SQL, Result Sets, database Metadata etc. Enfim,
permite ao programador emitir comando SQL e processar os resultados.
As APIs JDBC são implementadas
via um gerenciador de driver que pode suportar conexões a diferentes
banco de dados. O Driver JDBC pode ser escrito completamente em
JAVA de forma que possa ser baixado como parte de um applet ou pode
ser implementado usando métodos nativos que criariam uma espécie
de ponte para as bibliotecas existentes de acesso a banco de dados.
A idéia do JDBC é: O
cliente com o seu browser chama uma página web, contendo um applet
que permite entrada de dados, o qual é carregado junto com a página
a partir do Servidor Web e executado localmente dentro da página.
Este applet tem uma chamada à interface JDBC Driver que permite
a conversa com o Banco de Dados Relacional em um Servidor Remoto,
permitindo a troca de dados entre o Cliente e o Servidor. Assim,
o applet é o responsável pelo acesso ao Banco de Dados e pela formatação
e apresentação dos dados. A vantagem é que estamos usando um padrão
aberto, não precisamos nos preocupar com distribuição de versões,
a manutenção se dá apenas no Servidor Web e principalmente, é independente
de plataforma.

O JDBC está ainda em
um estágio germinativo. Os frutos aparecerão provavelmente no final
deste ano, quando surgirem drivers em Java. Tudo depende do interesse
e esforço dos vendedores de Banco de Dados em disponibilizar produtos
Java. Os produtos atualmente disponíveis na Internet, são versões
Beta.
Para avaliação dos produtos,
carregamos o JDK versão 1.0.2, o JDBC versão 1.0.1, o JDBC Driver
(ODBC Bridge Driver da Intersolv) e instalamos o ODBC para MSSQL
Server. Todas estas versões são para Windows 95. Também instalamos
a versão beta do Visual J++, um construtor de aplicações Java. Construímos
alguns programas em Java (applets) acessando o SQL Server (SELECT,
INSERT, UPDATE...). Tudo funcionou bem, mas ainda não podemos dizer
que é um produto ou uma solução estável e definitiva, visto que
tudo ainda está na fase de especificação e homologação. A solução
JDBC é grande na teoria, porém, existem alguns problemas como a
disponibilidade de Driver JDBC (não existe correntemente nenhum
Driver JDBC disponível). O que temos atualmente é a solução via
Bridge da INTERSOLV, sem contar a concorrência da Microsoft com
o ActiveX .
umeda@lepus.celepar.br

|