Universidad de Jaén E.U.P. Linares Dpto. Telecomunicaciones Área de Ingeniería Telemática Sebastián García Galán sgalan@ujaen.es
Connected Limited Device Configuration Introducción Objetivos y requerimientos Diferencias de CLDC con J2SE Seguridad en CLDC Librerías CLDC Compatibilidad Clases heredadas de J2SE Clases propias de CLDC
Introducción La configuración CLDC se encarga de las siguientes áreas: Lenguaje Java y características de la máquina virtual. Librerías del núcleo de Java (java.util.* y java.lang.*). Entrada / Salida. Comunicaciones. Seguridad. Internacionalización.
Objetivos y Requerimientos Una configuración de J2ME especifica un subconjunto de características soportadas por el lenguaje java, un subconjunto de funciones de la configuración para la máquina virtual de Java, el trabajo en red, seguridad, instalación, y posiblemente, otras APIs de programación, todo lo necesario para soportar cierto tipo de productos. CLDC es la base para uno o más perfiles. Un perfil define un conjunto adicional de APIs y características para un mercado concreto, dispositivo determinado o industria.
Objetivos y Requerimientos Objetivos: Extensibilidad: Permitir el uso del lenguaje de programación Java como base para la distribución de contenido dinámico para la próxima generación de dispositivos. Desarrollo de aplicaciones por terceras partes: La especificación CLDC solo deberá incluir librerías de alto nivel que proporcionen suficiente capacidad de programación para desarrollar aplicaciones por terceras partes.
Objetivos y Requerimientos Requerimientos Hardware: 128 KB de memoria no volátil para la JVM y las librerías CLDC. Al menos 32KB de memoria volátil para el entorno de ejecución Java y objetos en memoria. Requerimientos Software: El dispositivo contiene un mínimo S.O.. Este S.O. Debe proporcionar al menos una entidad de planificación para ejecutar el JVM. Requerimientos J2ME: Todas las características incluidas en una configuración deben ser generalmente aplicables a una gran variedad de dispositivos. Una configuración no debe definir ninguna característica opcional. (funcionalidades más específicas deben ser definidas en los perfiles)
Diferencias de CLDC con J2SE No existe soporte para operaciones en coma flotante. No existe finalización de objetos. Limitaciones en el manejo de errores. Java Native Interface (JNI). Cargadores de clase definidos por el usuario. Reflexión. Grupos de threads o daemon threads. Referencias débiles
Seguridad en CLDC Al igual que los applets, los programas se ejecutan en una zona de seguridad denominada sandbox. Según este modelo, sólo se pueden ejecutar algunas acciones que se consideran seguras. De forma que las aplicaciones deben cumplir unas condiciones previas: Los ficheros de clases Java deben ser verificados como aplicaciones Java válidas. Sólo se permite el uso de APIs autorizadas por CLDC. No esta permitido cargar clases definidas por el usuario. Sólo se puede acceder a características nativas que entren dentro del CLDC. Una aplicación ejecutada bajo KVM no debe ser capaz de dañar el dispositivo donde se encuentra
Librerías CLDC Compatibilidad: La mayoría de las clases incluidas en CLDC son un subconjunto de las incluidas en J2SE y J2EE. Sin embargo las dependencias internas hacen muy difícil tomar partes de una librería sin incluir otras. Por lo que algunas librerías se han rediseñado. Por lo tanto, las librerías CLDC se dividen en dos categorías: Clases que son un subconjunto de las librerías de J2SE. Clases específicas de CLDC.
Librerías CLDC Clases heredadas de J2SE Clases de sistema java.lang.class java.lang.object java.lang.runnable java.lang.runtime java.lang.string java.lang.stringbuffer java.lang.system java.lang.thread java.lang.throwable Clases de datos java.lang.boolean java.lang.byte java.lang.character java.lang.integer java.lang.long java.lang.short Clases de E/S java.io.bytearrayinputstream java.io.bytearrayoutputstream java.io.datainput java.io.dataoutput java.io.datainputstream java.io.dataoutputstream java.io.inputstream Clases de utilidades java.util.calendar java.util.date java.util.enumeration java.util.hashtable java.util.random java.util.stack java.util.timezone java.util.vector java.io.inputstreamreader java.io.outputstream java.io.outputstreamwriter java.io.printstream java.io.reader java.io.writer
Librerías CLDC Clases propias de CLDC Estas clases sustituyen a las incluidas en java.io y java.net de J2SE Clases de E/S Connector Connection InputConnection OutputConnection StreamConnection ContentConnection Datagram DatagramConnection StreamConnectionNotifier Incluidas en javax.microedition.io Generic Connection Framework Descripción Puede crear cualquier tipo de conexión Define el tipo de conexión más genérica Define una conexión de streams de entrada Define una conexión de streams de salida Define una conexión basada en stream Extensión de StreamConnection para trabajar con datos Interfaz genérico de datagramas Define una conexión basada en datagramas Notifica una conexión. Permite crear una conexión en el lado del servidor.