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:
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:
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:
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.
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.
Hola Alejandro, no sé si me puedes echar un cable?
ResponderEliminaryo 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!
Hola Juan Antonio.
ResponderEliminarLa 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.
Hola Alejandro y gracias por la respuesta!
ResponderEliminarEl 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!
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.
ResponderEliminarSaludos.