A linguagem de programação escolhida para o desenvolvimento do protótipo de gerência de documentos deve ter como requisitos:
O paradigma de orientação a objetos, em complemento, facilita a correspondência do modelo de classes do capítulo x com a modelagem das classes da aplicação. Por esse conjunto de razões, optou-se pela linguagem Java. Além de ser orientada a objetos, Java vem se tornando uma das promessas para o futuro da computação baseada em Internet. Java é a linguagem de desenvolvimento da Internet, e foi criada pela Sun Microsystems [SUN 96]. Java possui várias características que coincidem com os requisitos necessários do sistema GDOC, como:
Um programa escrito em linguagem Java pode ser de dois tipos: um applet ou uma aplicação. Os applets são programas executados a partir de uma página HTML, e por isso podem facilmente ser disponibilizados na Internet. As classes que compõem o applet são armazenadas no servidor www e são transferidas para o computador do usuário no momento do acesso a página HTML. Uma vez transferido, o applet inicia a sua execução localmente. Nenhum recurso adicional é necessário localmente para a execução de um applet, uma vez que o browser já provê a máquina virtual responsável pela interpretação do código Java. Ao contrário, as aplicações Java não rodam a partir de páginas HTML, mas sim de maneira isolada através de interpretadores Java. Para rodar uma aplicação, o usuário necessita possuir a classe do programa e o interpretador Java armazenados localmente.
As bibliotecas de Java
java.lang: A biblioteca Java de uso geral
A biblioteca java.lang provê as classes que formam o núcleo da linguagem Java e da máquina virtual. Por exemplo, as classes Object, String, e Thread, que são usadas por quase todos os programas Java são definidas neste pacote. Outros exemplos de classes do pacote java.lang são as classes que definem as exceções e erros que a Máquina Virtual de Java é capaz de tratar. O pacote java.lang provê, além da definição das classes, os métodos que acompanham cada uma dessas classes. Todos os tipos primitivos da linguagem Java e seus métodos são definidos por java.lang, como a classe Integer que provê objetos que contém valores inteiros e o seu método Interger.toString() para representar um valor inteiro em forma de string. O pacote java.lang é importado automaticamente e todos os programas Java, não necessitando que o desenvolvedor faça isso.
java.io: A biblioteca de I/O
A biblioteca java.io fornece um conjunto de classes de filas de entrada e saída de dados usadas para ler e escrever dados em arquivos ou outras fontes de entrada e saída. As filas de entrada e saída de Java são orientadas a bytes, e as classes definidas por esta biblioteca podem ser usadas na implementação de funcionalidades mais sofisticadas de leitura e gravação.
java.util: A biblioteca de utilidades diversas
A biblioteca java.util contém uma coleção de classes de utilidades. Ela também inclui classes que fornecem estruturas de dados genéricas como dicionários, hashtables, pilhas e vetores, assim como classes para manipulação de strings (classe StringTokenizer, para interpretação de tokens), e utilidades para de calendário e datas (classe Date). É nesta classe que são definidas a interface Observer e a classe Observable, que permite que um objeto notifique outro objeto quando ele sofre uma alteração.
java.net: A biblioteca de rede da linguagem Java
A biblioteca java.net contém classes para acesso a rede, que incluem as classes que representam uma URL e uma conexão URL, a classe que implementa uma conexão através de sockets, e a classe que representa um endereço Internet. Através das classes disponíves em java.net, a operação de leitura de um arquivo remoto possui a mesma complexidade da operação de leitura de um arquivo local.
java.awt: A biblioteca de definição de interface gráfica
A biblioteca java.awt (acrônimo para Abstract Window Toolkit) provê os elementos padrão de interface de usuário como botões, listas de seleção, menus e áreas de texto. Ela também inclui containers (componentes da interface que agrupam outros componentes) e componentes de alto nível, como janelas de diálogo para abertura e escrita de arquivos. A AWT contém duas outras bibliotecas: java.awt.image e java.awt.peer.
java.awt.image: A biblioteca AWT para tratamento de imagens
A biblioteca java.awt.image contém classes para processamento de imagens. Estas classes podem ser usadas por programas que necessitam criar ou manipular imagens e cores.
java.awt.peer: A biblioteca AWT para tratamento de
A biblioteca java.awt.peer possui interfaces usadas para mapear os componentes AWT para as suas implementações dependentes do sistema de janelas usado. Essas classes são usadas quando se necessita desenvolver programas Java nos quais os componentes da AWT possuam características específicas de uma plataforma. Um exemplo dito é a tradução dos componentes básicos da AWT para os elementos de interface (widgets) do ambiente operacional Motif.
java.applet: A biblioteca de definição de applets
A biblioteca java.applet contém classes para criação
de applets, que são executados através de páginas
HTML.
Através da utilização deste conjunto básico
de bibliotecas é possível a criação de novas
bibliotecas e novos pacotes que desempenham funções mais
específicas do sistema que se pretende desenvolver. Um exemplo disto
é o que foi feito no desenvolvimento do sistema GDOC, onde as bibliotecas
de acesso a rede e acesso a banco de dados foram combinadas e especializadas
de uma forma a permitir a implementação de classes de acesso
a documentos.
Acesso a Banco de Dados Através de Java: as classes JDBC
Protocolo de Acesso JDBC
As vantagens deste tipo de driver são que ele não necessita de instalações adicionais nos clientes e possui um desempenho superior. Todas as bibliotecas de acesso ao banco de dados necessárias a aplicação são encontradas na forma de classes Java localizadas no servidor da aplicação.
O desempenho do driver, neste caso, é unicamente dependente do desempenho do protocolo de banco de dados escrito em Java pelo fabricante do banco de dados.
Desvantagens do protocolo HTTP
HTTP não é sensível ao formato dos arquivos que
transporta, cada arquivo possui o mesmo tratamento. HTTP é um protocolo
stateless, ou seja, ele não sabe onde o usuário está
no ciclo de processamento. Este controle deve, portanto, ser executado
externamente por meio de programas. O protocolo HTTP é muito simples
e foi criado com a intenção de executar tarefas muito básicas.
Além disso, ele possui uma ineficiência inerente pelo fato
de cada interação resultar em uma nova conexão. Por
outrol lado, o protocolo HTTP é largamente usado, principalmente
pela popularidade da Internet e dos web browsers. Devido a sua arquitetura,
HTTP facilita a centralização de recursos como objetos Java
e documentos HTML.
ARQUITETURA DO SISTEMA GDOC
Arquiteturas distribuídas como a Intranet
(uma rede local baseada no conjunto de protocolos da Internet) têm
sido largamente propostas como base para o desenvolvimento de sistemas
de informação. Nessas arquiteturas, um browser de HTML possivelmente
estendido por programas escritos em linguagem Java ou similares constituem
a camada de software do lado do cliente. No lado do servidor é encontrado
o servidor WWW combinado com a base de dados usada pela aplicação.
As vantagens dessa arquitetura são:
Os componentes são basedos em padrões
abertos (protocolos Internet, Java, SQL). Isto assegura a portabilidade
do sistema que é independente de plataforma.
O browser web, neste caso, é considerado
como a peça de software essencial da rede de computadores. Assim,
é razoável esperar que muitos usuários no futuro serão
acquainted com a utilização de web browsers. Isso reduz o
tempo para introduzir interfaces de aplicação a novos usuários.
A figura acima mostra a arquitetura completa do sistema GDOC. Ela é composta por três componentes principais: no lado do servidor, existe o servidor da base de dados e um servidor HTTP, e no lado do cliente os web browsers estendidos com programas em Java. A comunicação entre os clientes e o servidor segue o padrão descrito a seguir.
A interface para autoria e visualização de documentos é composta por um browser de HTML. Usando este browser, o usuário especifica uma operação (recuperação de um documento, procura por um documento, autoria de um documento de um tipo específico,…) para ser executada. O browser web envia uma solicitação ao servidor HTTP, obtendo o código Java que corresponde a operação a ser executada. O código Java é então executado no lado cliente e comunica com o servidor de banco de dados a fim de enviar ou receber a estrutura lógica do documento e para enviar ou receber o próprio documento. O protocolo usado na comunicação com o servidor da base de dados é o protocolo JDBC (Java Database Connectivity) [JEP 96]. Este é um protocolo aberto que permite a conexão de clientes Java com servidores de banco de dados usando drivers de banco de dados específicos. Alguns exemplos de drivers JDBC disponíves comercialmente são o FastForward, da empresa Connect Software [COM 97], e o DataDirect, da Intersolv [INT 97].
A Política de Distribuição de Aplicações na Rede
A Camada do Cliente, a Camada de Aplicação e a Camada
de Dados (Arquitetura 3-Tier)
Diferenças
Delegações
Comunicação e Troca de Mensagens/Dados
(SQL Direto – abordagem usada no Gdoc – devido ao uso
de Java 1.0.2). Na ocasião do início do desenvolvimento do
protótipo Gdoc, as atuais versões dos browsers Netscape Communicator
e Microsoft Explorer não suportavam a interpretação
de applets compilados na versão 1.1 do Java. Por isso optou-se pela
utilização da versão 1.0.2 do compilador Java na intenção
de se manter a compatibilidade com a tecnologia padrão que se pretendia
usar.
RMI (exemplo de invocação remota, padrão
1.1)
Modelagem de Dados
Modelagem das Classes do Banco de Dados de Documentos
Modelagem do Domínio de Problema
Classe Documento
Classe Esquema
Classe Apresentação