as-microsoft-com:office:office" />

Dados em J2ME

Persistência em dispositivos com RMS e JDBC

Técnicas para gerenciamento de dados usando a API Record Management System do MIDP

O gerenciamento de dados em dispositivos com suporte a J2ME é o tema de nosso artigo nesta edição. Explicaremos o que é RMS (Record Management System), uma importante API do MIDP, mostrando vários exemplos de código. Apresentaremos também, brevemente, a API JDBC da PointBase, um framework de gerenciamento de dados que usa o RMS.

Armazenamento

Atualmente já existem dispositivos móveis, principalmente telefones celulares, que agregam muito mais recursos que um simples dispositivo de comunicação por voz, como transmissão de dados, captura de áudio e vídeo, recursos de assistentes pessoais, conexão com a internet em alta velocidade etc. Com o nível de sofisticação atual, os dispositivos precisam ter acesso à memória para ler ou armazenar dados, como preferências de usuário e cache de informações. Além disso, como a utilização de redes sem fio ainda é cara, se for possível economizar no tráfego de dados e na utilização da rede, diminuindo custos, serviços mais baratos poderão ser disponibilizados.

Existem várias tecnologias para armazenar dados localmente em dispositivos móveis. Em nível de hardware, o cartão flash é a mais comum. O acesso via software também pode ser realizado de diversas maneiras. Sistemas de arquivos ou registros são as soluções mais implementadas.

Normalmente, os dispositivos possuem dois tipos de memória: uma volátil, onde os aplicativos são carregados (quando a aplicação é finalizada ou é desligado o dispositivo, os dados contidos na memória volátil são perdidos); o segundo tipo é a memória persistente, onde são gravadas informações que devem permanecer (persistir) entre diferentes invocações das aplicações, e até depois de se desligar o dispositivo.

MIDP e RMS

O J2ME especifica suporte para um universo de dispositivos com diferentes configurações e perfis. Neste artigo vamos focar no perfil MIDP (Mobile Information Device Profile). No MIDP, a API de armazenamento de dados é o RMS.

Neste texto usaremos muito os termos MIDlets e suite de MIDlets. Vamos recordar um pouco sobre eles. MIDP é um perfil J2ME direcionado a pequenos dispositivos, como telefones celulares e pagers de duas vias. Um MIDlet é uma aplicação MIDP; uma suite de MIDlets é um agrupamento de MIDlets distribuído em um pacote JAR contendo, além dos próprios MIDlets, arquivos de recursos (imagens e propriedades, por exemplo). Associado ao arquivo JAR, existe uma descrição da suite (arquivo JAD) com o nome da aplicação, tamanho, versão e outras informações. MIDlets contidos na mesma suite podem compartilhar informações como arquivos de recursos.

A versão do MIDP que iremos cobrir é a 1.0; algumas novas funcionalidades da versão 2.0 do MIDP (em fase final de especificação) também serão indicadas.

API RMS

O RMS é o mecanismo básico de persistência usado por MIDlets. A API de RMS está localizada no pacote javax.microedition.rms, e possui as seguintes classes e interfaces (excluindo as classes de exceções): RecordStore, RecordEnumeration, RecordComparator, RecordFilter e RecordListener.

Cada suite de MIDlets possui um banco de dados contendo várias tabelas de registros, chamadas RecordStores. O número de RecordStores para uma suite de MIDlets é limitado apenas pela capacidade de armazenamento do dispositivo. Quem os cria é o MIDlet (Figura 1). Um RecordStore contém registros; cada registro guarda um agrupamento de bytes (Figura 2).

 

Figura 1. RecordStores e suites de MIDlets no MIDP

 

Figura 2. RecordStore e registros

A implementação de leitura e gravação é feita de maneira a garantir consistência e integridade dos registros durante o uso normal do dispositivo e em situações como troca de baterias, desligamento, invocações de diferentes MIDlets ao mesmo RecordStore etc. Mas, se uma aplicação usa mais de uma thread para acessar o mesmo RecordStore, é responsabilidade do MIDlet sincronizar a leitura e a gravação para evitar problemas de corrupção de dados.

Veja algumas regras na utilização de RecordStores:

o        Nomes de bancos de dados são sensíveis a maiúsculas e minúsculas; o nome completo deve ter entre 1 e 32 caracteres Unicode; os nomes devem ser diferentes dentro da mesma suite. RecordStores em diferentes suites podem ter o mesmo nome;

o        RecordStores não são compartilhados por MIDlets em suites diferentes. (No MIDP 2.0, os RecordStores podem ter controle de acesso para compartilhamento e leitura/escrita entre suites diferentes, mas o controle é configurado apenas pelo MIDlet que criou o ...

Quer ler esse conteúdo completo? Tenha acesso completo