Introducción al desarrollo de aplicaciones para teléfonos móviles: J2ME (I)
El nombre real de J2ME es ‘Java Platform, Micro Edition’, aunque J2ME sigue siendo el término más habitual.
J2ME es un subconjunto de Java orientado a dispositivos con recursos limitados, es decir, a un hardware en el que características como la memoria o la velocidad del procesador son muy inferiores a las de un ordenador convencional. Por ejemplo, un teléfono móvil. Desde el año pasado J2ME es Open Source, y el proyecto que se encarga de mantenerlo y desarrollarlo se llama phoneME.
Al igual que ocurre con el J2SE, la principal virtud de J2ME es su habilidad para ejecutarse en distintas plataformas: casi cualquier móvil de hoy en día incorpora soporte Java (las excepciones más significativas son el iPhone y los móviles con Windows Mobile). Sin embargo, no todos los dispositivos tienen el mismo soporte de J2ME. Veamos por qué.
J2ME se divide en configuraciones (configurations), perfiles (profiles) y APIs opcionales. Una configuración define un tipo de dispositivo en función de las características de su hardware: sus limitaciones, sus capacidades… y le asigna una máquina virtual y un conjunto de APIs adecuados a ese hardware. En la actualidad existen dos configuraciones: CDC (Connected Device Configuration), utilizada sobre todo en sistemas de telemetría, automoción o domótica, y CLDC (Connected Limited Device Configuration) que es una versión más limitada y que es la que nos interesa por estar presente en la mayoría de los móviles.
Dentro de una configuración, un perfil nos define ciertas características concretas, como la interfaz de usuario. Existen tres perfiles para la configuración CLDC: MIDP (Mobile Information Device Profile), que es la usada en los teléfonos móviles y por tanto la que nos interesa, IMP (Information Module Profile) que es una versión de la anterior sin interfaz de usuario, y DoJa, destinado a un tipo de móviles japoneses.
Finalmente, cada dispositivo móvil puede incluir soporte para distintas APIs opcionales. Por ejemplo, un dispositivo con Bluetooth puede disponer de la Bluetooth API (JSR 82), o un móvil de gama media/alta quizás venga preparado para leer y procesar información geolocalizada con la Location API (JSR 179). Como estas capacidades varían de dispositivo en dispositivo, hay que acudir a las especificaciones de cada uno para ver qué APIs soportan. Por ejemplo, aquí podéis comprobar los modelos Nokia, aquí los Motorola o aquí los Sony Ericsson. Sun también proporciona una lista de dispositivos de distintos fabricantes.
Ocurre que cada fabricante realiza las implementaciones de las APIs J2ME de sus móviles. Aunque para ello se basan en una implementación de referencia de Sun, en la práctica se pueden encontrar diferencias significativas en el comportamiento de distintos dispositivos para una misma función, fallando en unos móviles lo que funciona en otros. En ocasiones, esto supone la necesidad de desarrollar más de una versión de la misma aplicación.
Recapitulando, para programar móviles usaremos la configuración CLDC con el perfil MIDP. La última versión de CLDC es la 1.1, y la última de MIDP es la 2.0; estos son las versiones que incorporan los móviles recientes, para modelos más antiguos podemos encontrarnos con CLDC 1.0, que por ejemplo no soporta operaciones en punto flotante, y MIDP 1.0, que no da acceso a funciones de sonido o pantalla completa.
Entradas relacionadas:
Introducción al desarrollo de aplicaciones para teléfonos móviles: Symbian
Introducción al desarrollo de aplicaciones para teléfonos móviles: Windows Mobile
Introducción al desarrollo de aplicaciones para teléfonos móviles: J2ME (y II)
Introducción al desarrollo de aplicaciones para teléfonos móviles: BlackBerry

buena la informacion no tenia idea sofre MIDP y sobre su funcion en los dispositivos moviles
kron623
26 \26\UTC octubre \26\UTC 2007 a 1:28
[...] relacionadas: Introducción al desarrollo de aplicaciones para teléfonos móviles: J2ME (I) Introducción al desarrollo de aplicaciones para teléfonos móviles: J2ME (y II) Introducción al [...]
Consejos para programadores J2ME (y BlackBerry) - 1 « hipoqih mobile
7 \07\UTC diciembre \07\UTC 2007 a 14:42
Muy buena intro, la verdad es que acabo de encontrar tu blog y me lo estoy leyendo entero. Muchas gracias por darnos las facilidades de encontrar info tan específica en poco tiempo. Sin duda alguna trataré de seguirte en próximas entregas!
1 saludo
nSxSn
12 \12\UTC diciembre \12\UTC 2007 a 23:43
[...] desarrollar aplicaciones para BlackBerry es JavaME y por lo tanto la mayoría de lo escrito en los artículos correspondientes es aplicable a este, existen una serie de peculiaridades que hacen que valga la [...]
Introducción al desarrollo de aplicaciones para teléfonos móviles: BlackBerry « ipoki mobile
1 \01\UTC enero \01\UTC 2008 a 14:41
[...] queremos que se ejecute en la mayor variedad de teléfonos móviles posible. Como veíamos en la primera parte de este artículo, J2ME no puede garantizar que un mismo código se ejecute correctamente en todos los dispositivos [...]
Introducción al desarrollo de aplicaciones para teléfonos móviles: J2ME (y II) « ipoki mobile
3 \03\UTC mayo \03\UTC 2008 a 22:28
[...] al desarrollo de aplicaciones para teléfonos móviles: Windows Mobile Introducción al desarrollo de aplicaciones para teléfonos móviles: J2ME (I) Introducción al desarrollo de aplicaciones para teléfonos móviles: J2ME (y II) Introducción al [...]
Introducción al desarrollo de aplicaciones para teléfonos móviles: Symbian « ipoki mobile
3 \03\UTC mayo \03\UTC 2008 a 22:30
Hola Javier, ántes que nada felicitarte por que no muchos comparten sus conocimientos, y ese gesto es de reconocerse, muy buena la información que expones en especial con las aplicaciones para moviles, la cual me interesó mucho y no creo ser el único, ojalá y sigas desarrollando más información al respecto, y explicando los ejemplos, ya que hay poca información relacionada.
Hasta pronto…
Rodrigo Callito
9 \09\UTC agosto \09\UTC 2008 a 22:51