JAVA - Integrando Banco de Dados Via JDBC

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 .