
Configuración CLDC
Esta configuración está diseñada para dispositivos con conexiones de red intermitentes, procesadores lentos y memoria limitada como son teléfonos móviles, asistentes personales (PDAs), etc. Está orientado a dispositivos que cumplan las siguientes características:La especificación CLDC se ha desarrollado dentro del Java Community Process[sm] (JCP[sm]) junto con 500 partners que representan a las industrias de fabricantes de dispositivos wireless, proveedores de servicios y terminales de venta.
- Procesador:16 bit/16 MHz o más
- Memoria: 160-512 KB de memoria total disponible para la plataforma Java
- Alimentación: Alimentación limitada, a menudo basada en batería
- Trabajo en red: Conectividad a algún tipo de red, con ancho de banda limitado habitualmente
Sun proporciona la implementación de referencia de CLDC (CLDC Reference implementation, CLDC RI) que incluye la máquina virtual K (K Virtual Machine, KVM). Sun también proporciona la implementación del CLDC HotSpotTM, disponible para usos comerciales bajo licencia.
Esta máquina virtual está orientada a la nueva generación de dispositivos con una cantidad de memoria disponible mayor. La CLDC RI es adecuada para dispositivos que cumplan las siguientes características:La máquina virtual K toma la K de Kilobyte, haciendo referencia al poco tamaño que ocupa la plataforma, un mínimo de 70 KB
- Procesador:32 bits
- Memoria: 512 KB/1 MB de memoria total disponible para la plataforma Java
- Alimentación: Alimentación limitada, a menudo basada en batería
- Trabajo en red: Conectividad a algún tipo de red, con ancho de banda limitado habitualmente
Existen tres versiones de CLDC:Características de las JVM que soportan CLDC
- CLDC 1.1 (JSR 139): CLDC 1.1 es una revisión de la especificación CLDC 1.0 e incluye nuevas características como son punto flotante o soporte a referencias débil, junto con otras mejoras. CLDC 1.1 es compatible con versiones anteriores y sigue soportando dispositivos pequeños o con recursos limitados.
Existen implementaciones de referencia.- CLDC 1.0 (JSR 30)
- CLDC HotSpot ImplementationTM: Es una máquina virtual muy optimizada que presenta una diferencia de rendimiento muy alta frente a la KVM. Incluye características que soportan una ejecución más rápida de aplicaciones y una gestión de recursos más eficientes, manteniendo los requisitos en cuanto a plataforma de ejecución
La máquina virtual para CLDC soporta un subconjunto de funcionalidad de J2SE además de incorporar una funcionalidad propia tal y como detalla el siguiente diagrama:
A continuación detallamos las características entre una JVM que soporta J2SE y J2ME:
- CLDC no soporta el punto flotante (en la versión CLDC 1.0)
- No soporta la finalización de instancias de clases
- El soporte a la gestión de errores es limitado, debido a las exigencias que impone en los dispositivos a nivel de memoria, y a que la recuperación de errores es dependiente de los dispositivos.
- Por motivos de seguridad se eliminan las siguientes características:
- Java Native Interface (JNI)
- Cargadores de clase definidos por el usuario
- Reflection (Reflexión)
- Grupos de subprocesos (Thread groups) y subprocesos demonio (daemon threads)
- Finalización
- Referencias débiles
- Soporta un conjunto limitado de propiedades:
- microedition.platform Nombre de la plataforma, con valor predeterminado null
- microedition.encodingDefault Codificación predeterminada, con valor predeterminado "ISO8859_1"
- microedition.configuration Nombre y versión de configuración soportada, con valor predeterminado "CLDC-1.0"
- microedition.profiles Nombre de perfiles soportados, con valor predeterminado null
- Bibliotecas de función soportadas:
- Clases subconjunto del las bibliotecas estándar J2SE, localizadas en los paquetes java.lang.*, java.util.* y java.io.*:
Clases de sistema:
- java.lang.Object
- java.lang.Class
- java.lang.Runtime
- java.lang.System
- java.lang.Thread
- java.lang.Runnable (interfaz)
- java.lang.String
- java.lang.StringBuffer
- java.lang.Throwable
Tipos de datos:
- java.lang.Boolean
- java.lang.Byte
- java.lang.Short
- java.lang.Integer
- java.lang.Long
- java.lang.Character
Clases de colección
- java.util.Vector
- java.util.Stack
- java.util.Hashtable
- java.util.Enumeration (interfaz)
Clases de entrada/salida
- java.io.InputStream
- java.io.OutputStream
- java.io.ByteArrayInputStream
- java.io.ByteArrayOutputStream
- java.io.DataInput (interface)
- java.io.DataOutput (interface)
- java.io.DataInputStream
- java.io.DataOutputStream
- java.io.Reader
- java.io.Writer
- java.io.InputStreamReader
- java.io.OutputStreamWriter
- java.io.PrintStream
Clases de calendario y fecha
- java.util.Calendar
- java.util.Date
- java.util.TimeZone
Clases de excepción
- java.lang.Exception
- java.lang.ClassNotFoundException
- java.lang.IllegalAccessException
- java.lang.InstantiationException
- java.lang.InterruptedException
- java.lang.RuntimeException
- java.lang.ArithmeticException
- java.lang.ArrayStoreException
- java.lang.ClassCastException
- java.lang.IllegalArgumentException
- java.lang.IllegalThreadStateException
- java.lang.NumberFormatException
- java.lang.IllegalMonitorStateException
- java.lang.IndexOutOfBoundsException
- java.lang.ArrayIndexOutOfBoundsException
- java.lang.StringIndexOutOfBoundsException
- java.lang.NegativeArraySizeException
- java.lang.NullPointerException
- java.lang.SecurityException
- java.util.EmptyStackException
- java.util.NoSuchElementException
- java.io.EOFException
- java.io.IOException
- java.io.InterruptedIOException
- java.io.UnsupportedEncodingException
- java.io.UTFDataFormatException
Clases de error
- java.lang.Error
- java.lang.VirtualMachineError
- java.lang.OutOfMemoryError
- Clases específcias a CLDC (pero que se pueden asociar a J2SE), localizadas en los paquetes javax.microedition.*:
Se definen seis interfaces básicos de conectividad:
- Un dispositivo básico de entrada serie
- Un dispositivo básico de salida serie
- Un dispositivo de comunicaciones orientadas a datagrama
- Un dispositivo de comunicaciones orientadas a circuito (TCP, etc)
- Un mecanismo de notificación para informar a un servidor de conexiones cliente servidor
- Una conexión básica a un servidor Web
El siguiente diagrama muestra la jerarquía de interfaces:
![]()
Diferencias entre la CLDC 1.0 y CLDC 1.1
- Se añade soporte para operaciones en punto flotante, permitiendo el uso de todos los byte codes asociados al mismo.
- Se añaden las clases Float y Double.
- Se añaden métodos para la gestión de operaciones en punto flotante a otras librerías.
- Se añade soporte para referencias débiles
- Se han rediseñado las clases Calendar, Date y TimeZone para adecuarse mejor a J2SE
- La gestion de error se ha mejorado y se ha añadido una nueva clase de error, NoClassDefFoundError
- En CLDC 1.1, los objetos Thread tienen nombre con los subprocesos en J2SE. Se ha introducido el método Thread.getName() y la clase Threadclass incorpora nuevos constructores heredados de J2SE.
- Se han cambiado bibliotecas y se han corregido algunos defectos, entre los que se incluyen los siguientes métodos y campos:
- Boolean.TRUE y Boolean.FALSE
- Date.toString()
- Random.nextInt(int n)
- String.intern()
- String.equalsIgnoreCase()
- Thread.interrupt()
- Se ha elevado el mínimo de memoria necesaria de 160 a 192 KB, debido principalmente a la adición de funcionalidad de punto flotante.
- Se ha mejorado y actualizado la especificación.
- Se ha detallado la especificiación del verificador de byte code para CLDC (CLDC Byte Code Typechecker Specification)
Documentación de referencia
Documentación de referencia para J2ME:
Connected, Limited Device Configuration Specification Version 1.0a
Connected Limited Device Configuration Specification Version 1.1
Para acceder al detalle de los distintos elementos de la arquitectura J2ME:
Más información sobre tecnología móvil en nuestras páginas: