Ir al contenido principal

Introducción a J2ME

J2ME es la plataforma enfocada a la aplicación de la tecnología Java en dispositivos electrónicos con capacidades computacionales y gráficas muy reducidas, tales como teléfonos móviles, PDAs o electrodomésticos inteligentes. Esta edición tiene unos componentes básicos que la diferencian de las otras versiones, como el uso de una máquina virtual especial (debido a que requiere sólo unos pocos Kilobytes de memoria para funcionar) en vez del uso de la JVM clásica, inclusión de un pequeño y rápido recolector de basura y algunas otras diferencias. Es una buena opción en software libre para movilidad.



Este esquema, puede considerarse un poco simplista, ya que cada plataforma está orientada a distintos ámbitos de aplicación, pero en cualquier caso nos sirve para poder afirmar que J2ME usa hasta 37 clases provenientes de java.lang, java.io y java.util (J2SE). La principal diferencia es aportada por las clases de javax.microedition (que están en J2ME, pero no en J2SE).

Entorno de Ejecución J2ME

La arquitectura externa de un entorno de ejecución J2ME está compuesta por:
  • Sistema Operativo

  • Máquina virtual

  • Configuración

  • Perfiles




Una configuración es el conjunto mínimo de APIs Java que permiten desarrollar aplicaciones para un grupo de dispositivos CLDC (Connected Limited Device Configuration) o CDC (Connected Device Configuration).

La CLDC está orientada a dispositivos dotados de conexión y con limitaciones en cuanto a capacidad gráfica, cómputo y memoria. Un ejemplo de éstos dispositivos son: teléfonos móviles, buscapersonas (pagers), PDAs, organizadores personales, etc. Esta configuración funciona sobre máquinas virtuales Java, Kilo Virtual Machine (KVM).

La CDC está enfocada a dispositivos con más recursos, como decodificadores de TV digital, navegadores GPS, PDAs, etc. Esta configuración funciona sobre máquinas virtuales Java, Compact Virtual Machine (CVM).

Ya hemos dicho que CLDC está orientado a dispositivos con ciertas restricciones. Algunas de éstas restricciones vienen dadas por el uso de la KVM, necesaria al trabajar con la CLDC debido a su pequeño tamaño. La mayoría de teléfonos ya tienen su propia KVM, si bien, nos hemos encontrado algunos problemas para elegir la máquina virtual para PDAs con Windows Mobile. En algunos modelos ya vienen preinstaladas las KVM Esmertec JBED, pero no se comporta bien con algunas librerías. Yo desde la experiencia, recomendaría la IBM J9 CLDC/MIDP. No es gratuita, pero el coste por unidad, si se compran más de 100 licencias, ronda los 9 dólares.

El caso es que yo no desarrollaría aplicaciones CLDC para PDAs, ya que sería desaprovechar la potencia de cálculo que tienen estos dispositivos. Sin embargo, algunas veces debemos hacerlo para conseguir portabilidad con distintas plataformas móviles (RIM-Blackberry, Symbian,...)

Mi experiencia con CDC se reduce a la programación sobre PDAs. Para ello he usado la máquina virtual de IBM J9 CDC, de coste similar a la CLDC. También he tenido resultados satisfactorios con la CrEME (que tampoco es gratuita). Los dispositivos con Windows Mobile no suelen llevar máquina virtual Java CDC instalada de serie.

Los Perfiles se extienden sobre las Configuraciones, y suponen una capa de especificaciones para un conjunto específico de dispositivos del mercado.


Los perfiles entre otras cuestiones se encargan del mantenimiento del ciclo de vida, interfaces de usuario, gráficas, manejo de eventos,...

Para CLDC:
- PDA Profile: PDAs gama muy baja (Palms antiguas).
- Mobile Information Device Profile MIDP: Se encarga de la semántica y control de la aplicación, interfaz de usuario, persistencia, trabajo en red, temporizadores. Aplica a teléfonos móviles, PDAs... Actualmente es el único perfil para CLDC disponible. Las aplicaciones desarrolladas con este perfil reciben el nombre de MIDLET.

Las aplicaciones son visualmente pobres, pero se pueden enriquecer con librerías gráficas sobre este perfil, como Sun LWUIT, o Kuix. Estas librerías ya tendrán su post más adelante, ya que considero que son fundamentales para poder desarrollar aplicaciones atractivas para Blackberry, o Nokia, por ejemplo.
En este tipo de aplicaciones, no se puede usar bases de datos, así que se usan almacenes de datos, llamados RMS.

Para CDC:
- Foundation Profile: Incluye gran parte de J2SE, pero excluye interfaz gráfica AWT y Swing.
- Personal Profile: Soporte gráfico AWT. Requiere Foundation Profile.
- RMI: Requiere Foundation Profile. Subconjunto de J2SE RMI.

La línea de separación entre aplicaciones CDC, y aplicaciones de escritorio de PCs es cada vez más fina. De hecho, nosotros hemos desarrollado aplicaciones para PDAs con SWT como interfaz gráfica, y tan solo cambiando el jar por el apropiado para Windows XP, o Linux, por ejemplo, obtenemos la aplicación análoga para estas plataformas.
En aplicaciones de este tipo se puede hacer uso de bases de datos, como HSQLDB, Apache Derby, DB4o,...

Creo que entender correctamente estos conceptos es imprescindible para aquel que quiera adentrarse en el mundo de la Java Movilidad J2ME, tanto para poder realizar propuestas técnicas-económicas, como para consultorías, o desarrollos.

Comentarios

  1. Hola Alejandro, no sé si me puedes echar un cable?
    yo estoy también en Sevilla currando (de profe y de desarrollador en j2ee) y tengo gran interés en programación ágil, tdd, maven, ejb3, jsf ...
    me ha sorprendido saber de alguien en sevilla con estas preferencias porque no suele ser muy común no?
    te escribo para saber si tienes alguna idea de dónde puedo encontrar información práctica de j2me...
    gracias y saludos!
    PD: enjava.blogspot.com es mi blog... por si quieres echarle un ojo!

    ResponderEliminar
  2. Hola Juan Antonio.

    La verdad que lo menos común en Sevilla es encontrar a gente con experiencia en J2ME. Hay poquísima. La mayoría de personas que responde a nuestras ofertas en Infojobs, solo ha hecho algún jueguecito como Proyecto Fin de Carrera o similar.

    Tampoco hay muchos blogs en español que se puedan considerar referencia para J2ME. En inglés, te recomiendo los que hay en este mismo post.

    Un saludo.

    ResponderEliminar
  3. Hola Alejandro y gracias por la respuesta!
    El otro día me enteré que en Sevilla hay un centro de excelencia Java, y fui (está en el CICA) a echar un vistazo a ver que se podía aprender o investigar o por lo menos echar un vistazo a la biblioteca pero la persona que podía atender no estaba en ese momento...
    ¿tú sabes algo de como funciona este centro?
    Me gustaría enterarme de cómo y qué se investiga relacionado con java...
    saludos!

    ResponderEliminar
  4. Juan Antonio, el Centro de Excelencia Java ha colaborado en la elaboración de MADEJA (Marco de Desarrollo de la Junta de Andalucía), sobretodo en la elección de tecnologías y frameworks a usar, que se respeta solo hasta cierto punto, y cambia bastante a menudo.

    Saludos.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Métrica v3 vs Metodologías Ágiles

Métrica v3: Metodología de Planificación, Desarrollo y Mantenimiento de sistemas de información que propone el Ministerio de Administraciones Públicas. Cualquier defensor de la técnicas, metodologías y herramienta ágiles sostendrá que Métrica v3 es un sistema demasiado pesado, tanto en su implementación, como en sus procesos de mantenimiento. Yo lo corroboraría, pero sin demonizarla. Estoy acostumbrado a que en este mundo de la informática se creen auténticos "dogmas de fe", que acarrean sus propias "guerras religiosas". Algunos ejemplos podrían ser: Software privativo vs Software libre, Windows vs Linux, Web Services vs Rest, Oracle vs MySQL, Explorer vs Firefox, Apache vs IIS, Eclipse vs Netbeans, y así podríamos seguir con un largo etcétera. En vez de buscar la mejor solución, o soluciones universales, yo propongo realizar un intenso análisis, y respondernos ciertas preguntas. Por regla general, no hay una solución que valga "para todo". La pregunta que

Lenguajes: Pasado, Presente y Futuro

Escribo este post al hilo del artículo que he leido en dosideas.com. En él, se habla de las habilidades que debería tener un programador para tener un currículum relevante en los próximos cinco años: 1. Uno de los "3 Grandes" (Java, .NET, PHP) 2. Aplicaciones Ricas de Internet (RIA - Rich Internet Applications) 3. Desarrollo web 4. Servicios web 5. Habilidades humanas 6. Un lenguaje de programación dinámico y/o funcional 7. Metodologías ágiles 8. Conocimiento de dominio 9. "Higiene" de desarrollo 10. Desarrollo móvil A partir de este artículo, estuve debatiendo con algunos compañeros y saqué algunas conclusiones que quiero plasmar aquí. Pienso que el artículo es un poco mejorable, dada la arbitrariedad con la que se han escogido los conocimientos a adquirir. De hecho, muchas de esas habilidades hay que tenerlas en el presente (yo cumpliría de 9 a 10). Me voy a centrar en el punto 1, uno de los "3 Grandes" (Java, .NET, PHP). Antes de hablar de "gran

¿Por qué Yii Framework?

En Soltel presumimos de tener una actitud innovadora, que nos obliga a probar las distintas tecnologías que van llegando al mercado, y que ajustándose a nuestro stack, puedan mejorar en algo nuestros desarrollos. Una vez analizado el framework o librería, lo probamos en proyectos internos que nos permitan conocer con más detalle sus características. En este trabajo de campo es donde realmente se decide si es interesante o no añadir el framework a nuestro stack, y con ello ofrecerlo en los desarrollos que realizamos para nuestros clientes. En este proceso, llevábamos bastante tiempo buscando un framework PHP que realmente aportara valor y se adecuara en tiempos de desarrollo, rendimiento y arquitectura a lo que necesitamos ofrecer en nuestros proyectos. Ya habíamos descartado frameworks como Prado, por ser bastante pesado y tener una arquitectura demasiado compleja. Con Yii, sin embargo, nos hemos llevado una agradable sorpresa. Yii es un framework PHP, libre (licencia BSD), basado en