Introducción A RMS
Introducción A RMS
Introducción A RMS
1. Cada RecordStore puede estár compuesto por ningún, uno o más registros.
2. Los nombres de RecordStore son sensibles a mayúsculas y minúsculas y están
formado por un máximo de 32 caracteres con codificación Unicode.
3. Dentro de una suite no puede existir más de un RecordStore con el mismo
nombre.
4. Si una suite de MIDlets es borrada del dispositivo MID, se borrarán todos los
RecordStore pertenecientes a esa suite.
5. Un MIDlet puede acceder a un RecordStore creado por otra suite, siempre que
ésta de permiso para ello.
La API de RMS cuenta tan solo con apenas diez componentes, incluyendo clases e
interfaces, que se agrupan en el paquete javax.microedition.rms.
1. Nombre: El nombre único que los RecordStore tienen asociados dentro de cada
suite puede obtenerse con el método getName().
2. Versión: El número de versión (un entero positivo) que tiene asociado un
RecordStore, se actualiza con cada operación de modificación realizada sobre él.
Este valor cobra una importancia especial en entornos donde varios MIDlet de la
misma suite accedan a un mismo RecordStore, y tengan que saber si se han
producido o no modificaciones. El acceso al número de versión se realiza con el
método getVersion().
3. Fecha y hora de la última modificación: La propiedad que almacena la fecha y
hora de la última modificación del RecordStore, está en formato de entero largo
(milisegundos transcurridos desde el 1 de enero de 1970) y es accesible mediante
el método getLastModified().
4. Tamaño: El número de bytes del espacio de almacenamiento ocupados por el
RecordStore incluye tanto el espacio ocupado por los registros como por las
estructuras de datos asociadas, y se obtiene mediante el método getSize().
5. Espacio libre: El espacio libre disponible en bytes para añadir más registros al
RecordStore se obtiene mediante una llamada a getSizeAvailable().
La utilidad principal de un
RecordStore consiste en las posibilidades que ofrece para almacenar y gestionar registros
de información. Las operaciones que proporciona incluyen la inserción y eliminación de
registros, su modificación y su lectura.
Hay que tener en cuenta las siguientes observaciones al trabajar con registros:
Los métodos más importantes son los que permiten manejar los registros directamente,
usando vectores de bytes para almacenar información.
Resulta más conveniente trabajar con la clase Stream en lugar de usar vectores de bytes.
Esta clase se encarga de la conversión de los formatos, permitiendo al programador
trabajar directamente con los tipos de datos utilizados originalmente por el programa
(string, int, long...).
Esta es la más potente de las funcionalidades que proporciona el RMS. Para ello, la
especificación tiene definida la interfaz RecordEnumeration cuyos métodos proporcionan
facilidades para moverse por los registros de un RecordStore.
ACTIVIDAD:
Utilizando la interfaz de alto nivel, crea una suite con 2 MIDlets, de forma que una de ellas
solicite ciertos datos (por ejemplo el nombre) al usuario y los guarde en un RecordSet,
mientras que la otra MIDLET busca esos datos y los muestra en pantalla si existen. Haz el
ejercicio en pareja de forma que cada persona se encargue de hacer una MIDlet de forma
independiente, y al final corregir juntos si surge algún problema de compatibilidad.
Publicad el resultado final de la actividad en gplanet y compartidlo en vuestra zona de
gplanet.
Hay que destacar dos problemas que hacen dificil la tarea de proporcionar conectividad
en un entorno de recursos tan limitados como son los dispositivos con configuración
CLDC:
A esto hay que añadir además ciertas restricciones propias de la filosofía de diseño de
J2ME, como son la definición de interfaces de programación sencillas y estables y la
supresión de ambigüedades que abran la puerta a incompatibilidades entre programas. El
resultado final fue la definición de una nueva API, el Marco Genérico de Conexión,
también conocido como Generic Connection Framework (GCF), basado en:
1. Una abstracción del concepto de conexión, que oculta al programador los detalles
concretos de los distintos protocolos, en lugar de múltiples clases adaptadas a
diferentes protocolos y mecanismos de comunicación.
2. Localización del núcleo del GCF en la capa de configuración y su composición de
elementos genéricos, sin sugerir ni proporcionar protocolos de comunicación
específicos. Los perfiles son quienes extienden el GCF con interfaces adicionales y
proporcionan implementaciones concretas de protocolos.
Esta llamada hace que la clase Connector devuelva un objeto que implementa una de las
interfaces genéricas de conexión definidas en el GCF, con capacidad de manejar el
protocolo seleccionado.