Tecnología Movil J2ME

TEMAS:
ALMACENAMIENTO DE REGISTROS EN J2ME
EVENTOS DE CONEXION
CLASES DE CONEXION
MANTENIMIENTO EN GESTOR DE BADE DATOS j2me
TECNOLOGIA API EN J2ME
METODOLOGIA MVC

Oracle Database Lite. para utilizar esta capacidad entra el concepto de Record Management System (RMS) Sistema Administrador de Registros.Perst LiteBertiente que mencionaremos en la exposición. que no es más que el objeto que nos provee el almacenamiento y asigna un identificador único. se introdujo una alternativa para el desarrollo de aplicaciones en dispositivos móviles. SimpleOODBMS. escrito completamente en Java y optimizado para J2ME y J2SE. IBM DB2 Everyplace y Microsoft SQL Server Compact Edition. imagen. . algo importante es que un record o registro no es lo mismo que los RMS. array. tales como PointBase Micro.  Con el lanzamiento de J2ME en 1999. SQL Anywhere Studio Ultralite de Anywhere Solutions. Para la administración de datos se han desarrollado diversos SMBD para ambientes móviles como plataformas cliente/servidor y aplicaciones embebidas.INTRODUCCIÒN  El almacenamiento de datos en aplicaciones móviles se pueden almacenar datos. estos datos son almacenados en lo que se llama Records. un Record o registro es un dato individual de cualquier tipo de dato (string.). Por otro lado existen también tres bases de datos para teléfonos móviles en J2MEEstas tres soluciones son: PointBase Micro. etc.

 Esta trabajo tiene como objetivo aprender los conceptos básicos para el manejo de esta base datos. Esta base se denomina Record Management System (RMS) Sistema Administrador de Registros. a través del API que nos ofrece MIDP.-OBJETIVOS  MIDP define una sencilla base de datos orientada a registros que permite almacenar a las aplicaciones datos de forma persistente.ALMACENAMIENTO DE REGISTROS  I.microedition.rms. . Todas las clases relacionadas con RMS están contenidas en el paquete javax.

rms. . En una base de datos RMS. Un registro es la unidad de información más pequeña que puede ser almacenada.II. Para poder utilizar RMS hemos de importar el paquete javax. Cuando almacenamos un registro en el recordStore. RMS es un pequeño sistema de bases de datos muy sencillo. RMS no tiene nada que ver con JDBC debido a las limitaciones de los dispositivos J2ME. el acceso y almacenamiento de la información se hace a mucho más bajo nivel..microedition. Este paquete nos provee de la clase RecordStore y de cuatro interfaces. RMS no puede ser consultado con sentencias SQL ni nada parecido. pero que nos permite añadir información en una memoria no volátil del móvil.ALMACENAMIENTO RMS Un dispositivo móvil (al menos por ahora) no dispone de disco duro donde almacenar información permanentemente. el elemento básico es el registro (record). por lo tanto. J2ME resuelve el problema mediante el RMS (Record Management System). Los registros son almacenados en un recordStore que puede visualizarse como una colección de registros. a éste se le asigna un identificador único que identifica unívocamente al registro.

Los record stores creados por MIDlets en un MIDlet suite.III.. El nombre de un record store consiste en una combinación de hasta 32 caracteres (sensible a las mayúsculas). Los record stores creados por MIDlets de un mismo MIDlet suite están almacenados en el mismo espacio de nombres. no son accesibles para los MIDltes de otros MIDlets suite. y un registro es un byte array de datos de tamaño variable.RECORDSTORE El mecanismo básico de almacenamiento de RMS es denominado record store. El nombre de un record store debe ser único en un MIDlet suite . Un record store está representado por un objeto de la clase RecordStore. Existen reglas importantes sobre los record store: 1. Un record store es un conjunto de registros. 4. 2. y por lo tanto. pueden compartir y ver sus contenidos. 3.

0. datos.. 4.2. Cuando terminamos de utilizar el recordStore.1. El parámetro crear. si tiene su valor a true.length). try { int id = recordStore.IV.int offset..Añadir registros Una vez abierto nuestro recordStore podemos comenzar a añadir registros con el método addRecord(). hemos de cerrarlo: RecordStore. El offset es la posición a partir de la cual (dentro del array) se va a almacenar el dato. creará la base de datos si no existe. } catch (RecordStoreException e) {} . El método retorna el identificador que el RMS ha asignado al registro. Finalmente.. public int addRecord(byte[] dato. sólo puede ser accedido desde la suite de MIDlets que la creó. int numBytes) El primer parámetro es el dato que queremos almacenar. bolean crear) El parámetro nombre es el nombre de la base de datos.closeRecordStore(). numBytes es el número de bytes que se van a almacenar. Cuando creamos un recordStore. static RecordStore openRecordStore(String nombre.Abrir y cerrar un recordStore Antes de poder almacenar un registro hemos de abrir un recordStore con el método openRecordStore(). por lo tanto hemos de capturarla. Es un array de bytes.TRABAJANDO CON RMS 4. El nombre puede tener un tamaño de 32 caracteres.addRecord (datos. El método addRecord puede lanzar la excepción RecordStoreException.

public byte[] getRecord(int Id) No es necesario que almacenemos y mantengamos una lista con todos los identificadores de los registros. } catch (RecordStoreException e) {} .Borrar registros El borrado de registros se realiza con el método deleteRecord().4.. siempre que conozcamos su identificador. Al igual que con el método addRecord().deleteRecord(id).Leer registros El método getRecord() permite acceder al registro que deseemos. hemos de capturar la excepción RecordStoreException. try { recordStore.4. Un poco más adelante veremos el método recordEnumeration que nos permitirá conocer el identificador de cada registro. try { dato = recordStore.getRecord(id). byte[] dato = null.3. public void deleteRecord(int recordId) Al igual que con la escritura y lectura de registros hemos de tener en cuenta que puede provocar la excepción RecorStoreException.. } catch (RecordStoreException e) {} 4.

las interfaces son las siguientes:  Connection – Una conexión básica que sólo puede ser abierta y cerrada  ContentConnection – Un flujo (stream) de conexión que proporciona acceso a datos web  DatagramConnection – Una conexión para manejar comunicaciones orientadas a paquetes  InputConnection – Una conexión de entrada para las comunicaciones del dispositivo J2ME – Manuel J.. que es usada para esperar que se establezca una conexión .microedition.CLASES DE CONEXIÓN A REDES  Todas estas clases e interfaces están dentro del paquete javax. Tal y como vimos anteriormente.VIII.io. Prieto (Abril 2003)  OutputConnection – Una conexión de salida para las comunicaciones del dispositivo  StreamConnection – Una conexión en ambas direcciones para las comunicaciones del dispositivo o StreamConnectionNotifier – Una conexión especial para notificaciones.

. Oracle Database Lite. se introdujo una alternativa para el desarrollo de aplicaciones en dispositivos móviles. lo cual ha obligado a las organizaciones a implementar cambios en su infraestructura tanto de redes como de hardware y software.IX. IBM DB2 Everyplace y Microsoft SQL Server Compact Edition. SQL Anywhere Studio Ultralite de Anywhere Solutions. Con el lanzamiento de J2ME en 1999.MANTENIMIENTO EN GESTOR DE BADE DATOS J2ME  La computación móvil ha permitido a las personas acceder a la información en cualquier momento y lugar mediante el uso de dispositivos móviles. . Para la administración de datos se han desarrollado diversos SMBD para ambientes móviles como plataformas cliente/servidor y aplicaciones embebidas. tales como PointBase Micro. escrito completamente en Java y optimizado para J2ME y J2SE.

smartphones.  B. tuplas. Características  RMS es una interfaz de programación empleada para almacenar y manipular datos dentro de aplicaciones J2ME para dispositivos móviles. Limitaciones  RMS no está basado en el modelo relacional y. handhelds. . por consiguiente. de tal manera que no es posible utilizar instrucciones de SQL (Structured Query Language) para interactuar con los datos. Permite insertar. no organiza la información utilizando bases de datos. A. leer. Actualmente es utilizado en dispositivos como teléfonos celulares. manipular y eliminar información empleando recordstores. ni atributos. buscar. PDAs. tablas. ordenar. entre otros.

Y nos centraremos en estas tres porque. que aún no soportan muchos móviles. no se podía operar con números en punto flotante. La razón principal es que casi todas las bases de datos orientadas a objetos dependen de características de Java que son limitadas o no existen en la plataforma J2ME. Estas tres soluciones son: . ). Tengamos en cuenta que hasta la aparición de la configuración CLDC(Connected Limited Device Configuration) define un conjunto base de librerías en Java ME junto a la máquina virtual reducida para equipos móviles. y los beneficios que prometen las bases de datos orientadas a objetos. En concreto estudiaremos las características de tres bases de datos para teléfonos móviles en J2ME. tampoco hay muchas más donde elegir. A pesar de lo que hemos investigado. sobre todo para dispositivos móviles. son contadas las soluciones que han aparecido para J2ME.  Para intentar encontrar la solución que más se ajusta a nuestras necesidades vamos a realizar un análisis y comparación entre las soluciones más prometedoras. de hecho.

Aunque no entraremos en detalle en materia técnica. T-Tree.5. y cuya virtud radica también en la pequeña cantidad de memoria física.2.-PointBase Micro  PointBase Micro es un gestor de base de datos relacional y que soporta SQL como lenguaje para realizar consultas. muchos a uno y muchos a muchos.5. . ✔ Acceso secuencial y aleatorio mediante Indices ✔ Implementaión de algoritmos eficientes para estructuras.-Perst Lite  Esta es la solución que más se acerca a lo que se necesita (y puede soportar) un teléfono móvil. ✔ Open Source. ✔ Relaciones uno a uno.  9. Esta es una implementación en Código Abierto para J2ME de una base de datos orientada a objetos. las principales ventajas que nos puede aportar el uso de esta DB son las siguientes:   ✔ Persistencia transparente y heredada ✔ Carga recursiva de objetos. B+Tree.5.  9. Se trata de una solución comercial y su licencia no da acceso al código fuente.3.Bertiente SimpleOODBMS  En Bertiente se ha desarrollado y una base de datos orientada a objetos que es muy rápida para el modelo de datos para el que fue concebida. 9. uno a muchos.. RTree para búsquedas geoespaciales ✔ Posibilidad de búsquedas por valores exactos o rangos inclusivos o exclusivos ✔ Implementación de índices espaciales para búsquedas en objetos geoespaciales.1.

0. Proporciona una serie de clases que permiten construir juegos rico en contenidos para dispositivos móviles.0 . No presente en MIDP 1.game): Este es la parte del API dedicada a juegos. . El API se compone de las clases y paquete heredados de CLDC y de otra serie de paquetes situados en la jerarquía javax. se compone de los siguientes paquetes:  Paquete de Ciclo de vida de las Aplicaciones (javax.midlet): Este paquete permite a las aplicaciones MIDP (midlets) interactuar con el entorno. Proporciona un conjunto de características para la implementación de interfaces en MIDP.El API de MIDP  Para realizar nuestro midlets además de CLDC tendremos que conocer el API que nos proporciona MIDP ( API significa interfaz de programación de aplicaciones).microedition.  Paquete de Interfaz (javax.microedition  El API de MIDP 2.microedition.lcdui): Este es la parte del API dedicada al interfaz de usuario (UI -User Interfaz).  Paquete de Juegos (javax.lcdui. sobre el cual la aplicación se está ejecutando.microedition.

 javax. Paquete de Red (javax. No presente en MIDP 1.  Paquete de Clave Pública (javax.util (CLDC): Las clases de utilidades incluidas en el perfil provenientes de J2SE. simple y ligero.microedition. MMAPI extiende la funcionalidad de J2ME proporcionando audio. Es un paquete opcional.  Paquete de Persistencia (javax.0 es un bloque directamente compatible con la especificación Mobile Media API (MMAPI).microedition. No presente en MIDP 1.microedition.0.control: Este paquete define los tipos de control específicos que pueden ser usados en el reproductor (Player) de la API Media.media: El API Media de MIDP 2.rms): MIDP proporciona este mecanismo para que los midlets guarden persistentemente datos y posteriormente puedan recuperarlos. .  Sonido:  javax.No presente en MIDP 1.lang (CLDC): Las clases del lenguaje incluidas en el perfil provenientes de J2SE.pki): Certificados usados para autentificar información proveniente de conexiones seguras.  java. que también permite acceder a los servicios multimedia nativos de nuestro dispositivo móvil (como las cámara de fotos de los móviles).0 .  Paquetes principales:  java.0. video y otras características multimedia.microedition.microedition.io): MIDP proporciona soporte de red basándose en CLDC.media.

IMÁGENES DE ARQUITECTURA Y FLUJOS DE DATOS PARA CONECTAR A UN DISPOSITIVO MOVIL .

La arquitectura general de este sistema se muestra en la siguiente figura. .

La siguiente figura (Figura 2) muestra el flujo de datos para interconectar un dispositivo móvil a un Servidor Web convencional. .