Apresentando o JavaDB
Durante o FISL 8.0, percebi que uma das tecnologias em ascensão dentro da esfera do Java, que estava muito presente no evento, foi o JavaDB. Resolvi então dar uma olhada com um pouco mais de calma no assunto para tirar minhas próprias conclusões e compartilhá-las aqui. Lidar com bancos de dados, seja programando ou administrado, é uma das área que mais gosto, portanto, mais uma motivação para escrever este artigo.

Não posso deixar de dizer que outro fator decisivo para escrita deste artigo foi que ganhei no FISL 8.0 uma camisa do JavaDB/Sun. Como eu poderia vestir uma camisa sabendo apenas superficialmente sobre o assunto que nela está estampado? E se for ruim?
Vamos começar então.
O JavaDB é um banco de dados relacional escrito totalmente em Java. Explicando melhor: sempre que uma aplicação precisava de uma forma mais séria, escalável e com mais recursos de pesquisa e indexação, invariavelmente utilizando um servidor de bancos de dados, que é uma outra aplicação, como o MySQL e o PostgreSQL. Serão eles que armazenarão os dados do nosso aplicativo, porém, a solução como um todo fica fragmentada, principalmente se estivermos falando de uma aplicação standalone/desktop, como as feitas em Java usando Swing.
Ou seja, quando você está criando um software que precisa realizar a persistência de informações (armazená-las para uso posterior) mais complicadas do que recursos como arquivos de texto, binários e serialização de objetos podem lhe fornecer, e não se deseja utilizar um banco de dados externo, você acaba caindo em uma situação complicada. O problema pode ser resolvido utilizando XML e os recursos de parsing e leitura da linguagem que está utilizando. Todas elas, atualmente, tem um bom suporte a leitura, busca e escrita transparente em arquivos XML, mas este artigo trata de uma nova opção para este ambiente.
O JavaDB não se restringe apenas ao caso descrito acima, mas por ser muito comum, resolvi citá-lo por utilizar um dos features importantes que o JavaDB cobre: ele pode ser utilizado como “embedded database”, ou seja, fará parte da própria aplicação, levando consigo muitos recursos que só os sistemas de gerenciamento de bancos de dados (SGBD) mais avançados trariam.
Fica a dica para quem quiser desenvolver um sistema de gerenciamento de cartas de Magic e construção de decks, open source e portável (para vários sistemas operacionais), escrito em Java.
O JavaDB com certeza vai acelerar muito o desenvolvimento das funcionalidades de busca e inserção. Deve-se observar que o JavaDB também é portável, já que herda esta característica pelo fato de ser escrito em Java.
O JavaDB seria a distribuição suportada pela Sun do Apache Derby. O sistema tem suporte à transações, integridade referencial, unicode, cursores, triggers e stored procedures (que são escritas em Java). Como poder ser visto, são muitos recursos.
As APIs para programação suportadas são JDBC e SQL. Quanto ao tamanho, são necessários apenas 2 MB para a “database engine” e para o driver JDBC embutido (é ele que possibilita o feature de “embedded database”), sendo que ele também pode atuar como os bancos de dados tradicionais, usando a arquitetura cliente/servidor, utilizando a rede como canal de comunicação.
Dentre outras possibilidades de uso, se comenta muito que o JavaDB possa ser utilizado em navegadores para dar suporte à aplicações web off-line. Além desse caso, também há uma vertente de uso juntamente com o J2ME, o framework para desenvolvimento de aplicações Java para dispositivos móveis, aproveitando que o adicional seria apenas de 2 MB e que os sistemas embarcados estão cada vez mais potentes e com crescente capacidade de armazenamento.
O JavaDB também pode ser utilizado em conjunto com os mais conhecidos servidores de aplicações, como GlassFish, Tomcat, dentre outros. Ele também já está integrado em várias IDEs, como o Netbeans e o Java Studio Enterprise. O JavaDB está integrado também ao JDK 6.
Agora iremos para a parte prática, ver se tudo isso funciona realmente. Existem muitos tutoriais na Internet sobre como integrar o JavaDB à sua IDE favorita. Especificamente, vi o caso do Netbeans, que permite controlar todos os aspectos das bases de dados graficamente, o que é muito interessante quando se está desenvolvendo interfaces gráficas para aplicações desktop utilizando os recursos do Matisse, no Netbeans.
Não abordarei uso de IDE neste artigo. Faremos a instalação e a configuração do ambiento manualmente, em modo texto, entendendo o que está acontecendo em cada passo. Estou utilizando o sistema operacional Debian GNU/Linux com o JRE e JDK do Java 5.0 instalado através dos pacotes da distribuição. Se você não os tem, instale pelo aptitude:
# aptitude install sun-java5-jdk
O primeiro passo é baixar o JavaDB do site da Sun. É preciso ter um cadastro lá para baixar. Procure pelo arquivo javadb-10_2_2_0-linux.bin, que é o self-extractor para Linux da versão que utilizei ao escrever este artigo. Atribua a este arquivo a permissão de execução e execute-o:
$ chmod +x javadb-10_2_2_0-linux.bin
$./javadb-10_2_2_0-linux.bin
Agora é necessário configurar algumas variáveis de ambiente. A configuração feita aqui serve apenas para esta sessão de execução de testes inicial. Caso esteja instalando em um servidor, o processo de configuração permanente das variáveis é outro. Primeiro começaremos com a variável que define onde está o caminho do diretório de instalação do JavaDB, que é a pasta que foi criada quando você executou o arquivo baixado. Primeiro entra na pasta e depois execute o comando:
$ export DERBY_HOME=`pwd`
Este comando irá criar a variável de ambiente e atribuir a ela o caminho de onde você está, que deverá ser o local da pasta criada pelo instalador. Mais uma variável de ambiente é necessária, a CLASSPATH, que é utilizada pela máquina virtual para buscar classes adicionais, necessárias para a execução. O JavaDB está empacotado no arquito derby.jar. Para indicar o caminho até este arquivo para a máquina virtual, altere o valor da variável de ambiente para:
$ export CLASSPATH=$DERBY_HOME/lib/derby.jar:.
Agora viria um programa, mas dando uma olhada nas ferramentas que acompanham o JavaDB, vi que existe uma para acessar o banco interativamente, como as ferramentas clientes de acesso remoto dos outros SGDBs. É a ij e está na pasta bin da sua instalação. Vamos acessá-la:
$ $DERBY_HOME/bin/ij
Se tudo estiver configurado corretamente, o prompt da linha de comando mudará para ij> simbolizando que agora somente os comandos do ij serão aceitos, além de SQL. Vamos agora criar a base de dados e nos conectar a ela:
ij> connect ‘jdbc:derby:equipeTI;create=true’;
Este comando diz para o ij criar uma base de dados equipeTI, caso não exista. Todos os arquivos relacionados a ela estarão no diretório que você estava ao executar o ij. Dentro da base de dados é que ficarão armazenados nossos dados. Vamos agora cria uma tabela:
ij> create table editores(nome varchar(40),email varchar(30));
Agora vamos inserir alguns dados, para depois resgatá-los:
ij> insert into editores values (’Lius’,'lius at equipeti.info’);
ij> insert into editores values (’Raphael’,'raphael at equipeti.info’);
ij> insert into editores values (’Cesar’,'cesar at equipeti.info’);
Agora vamos resgatar os dados:
ij> select * from editores;
NOME |EMAIL
———————————————————————–
Lius |lius at equipeti.info
Raphael |raphael at equipeti.info
Cesar |cesar at equipeti.info
3 linhas selecionadas
E por fim, excluiremos a tabela:
ij> drop table editores;
Agora saia do ij usando o comando exit; . Até aqui já deve ter dado uma boa idéia do funcionamento do JavaDB, que é bem semelhante a outros SGBDs. Fiz também um programa que faz a mesma coisa que fizemos no terminal interativo, desta vez numa aplicação Java. Para baixar o código fonte do programa, clique aqui.
Procurei fazer este programa o mais simples possível, sem muita orientação a objetos e tratamentos de exceções. No final, obtive apenas 60 linhas, incluindo conexão, criação da base de dados, da tabela, inserção dos dados, recuperação, remoção da tabela e da base de dados e desconexão. É só para ter uma idéia de como fazer.
Espero que o artigo tenha sido útil para quem estava querendo começar a desenvolver com o JavaDB e tenha esclarecido seu uso no modo embedded, que leva o banco de dado junto da aplicação. Quanto a instalação era poderia ter sido bastante simplificada em outras distribuições como o Ubuntu, que já traz o JavaDB em um pacote específico, do conjunto do Java 6.0. Bastaria fazer um “apt-get install sun-java6-javadb”, porém, resolvi fazer assim para mostrar como é o processo manual, pois uma vez entendido desta forma, você não ficará perdido com processos automatizados.
Este artigo também foi postado no EquipeTI.info, onde você pode encontrar mais informações sobre diversas areas. Até o próximo artigo!
Artigos Relacionados:
Sobre este artigo
You’re currently reading “Apresentando o JavaDB,” an entry on Hypercast
- Published:
- 04.28.07 / 1pm
- Category:
- Desenvolvimento
4 Comments
Jump to comment form | comments rss [?] | trackback uri [?]