Posteado por: fzapataramirez | Lunes, diciembre 1, 2008

Introducción a J2ME

Una de las tecnologías que se puede utilizar para desarrollar aplicaciones es la que nos brinda sun con su edición reducida de java J2ME (Java 2 Micro Edition).

El J2ME, es un subconjunto de packages, clases, interfaces, etc. del java que se conoce normalmente para desarrollar aplicaciones de escritorio o web, y tiene un tamaño bastante pequeño lo cual permite ejecutarse en dispositivos con capacidad limitada de procesamiento y/o almacenamiento.

Como lo mencione en un post anterior, para desarrollar aplicaciones móviles en J2ME debemos tener en cuenta los perfiles y las configuraciones. Por parte de las configuraciones tenemos las opciones CLDC o CDC y por parte de los perfiles contamos con el MIDP.

Una configuración puede entenderse como un agrupamiento de paquetes y clases. Así, se tendrá una base común para todos los dispositivos que soporten determinada configuración. La configuración CLDC (Connected Limited Device Configuration) es la configuración que menos clases tiene, ya que está pensada para dispositivos con una capacidad de procesamiento y de memoria bastante bajos, como por ejemplo los celulares y PDA. La configuración CDC Connected Device Configuration está pensada para dispositivos con mejores capacidades de procesamiento como televisores, controles remotos, etc.

Por lo anterior, sobra decir que la configuración que se debe utilizar para desarrollar aplicaciones para dispositivos como PDA y celulares es la CLDC, la cual usa una versión reducida de la maquina virtual conocida como KVM (Kilo Virtual Machine, el “kilo” se debe a su diminuto peso).

Por otro lado, los perfiles son clases de alto nivel que complementan a las configuraciones, con el fin de dotar al dispositivo de un entorno de ejecución completo para las aplicaciones. Para dispositivos como celulares y PDAS se debe usar el perfil MIDP (Mobile Information Device Profile), que contiene gran parte de clases de Interfaz de usuario.

En la actualidad contamos con varias versiones de cada configuración y perfil. Así, para la configuración CLDC tenemos la versión 1.0 y la versión 1.1, siendo la principal diferencia entre ellas, el que la versión 1.0 no trabaja con valores de punto flotante, mientras la segunda sí. Esto se traduce en que CLDC 1.0 no admite valores de punto flotante, es decir, que los teléfonos que tengan la versión 1.0 de la configuración CLDC no pueden trabajar con tipos de datos como double, float. Por esta razón, si nuestra aplicación necesita trabajar con datos numéricos que contengan decimales, el primer requisito que debemos tener en cuenta para el dispositivo que ejecutara la aplicación es que tenga la versión 1.1 de CLDC.

Por el lado del perfil MIDP, contamos actualmente con 3 versiones 1.0, 2.0 y 2.1, siendo la más utilizada ahora la 2.0 ya que la 2.1 solo la traen los teléfonos de última generación.

El primer paso a dar a la hora de comenzar con el desarrollo de una aplicación móvil, es elegir la plataforma de desarrollo. Personalmente me he inclinado por Netbeans ya que ofrece una gran facilidad a la hora de diseñar la parte visual de nuestra aplicación. También he escuchado que eclipse ha progresado bastante en cuanto a eso pero nunca lo he probado, por lo que a continuación indicaré a grandes rasgos que se necesita para desarrollar una aplicación j2ME en Netbeans.

Netbeans cuenta con varias “distribuciones”, según el tipo de aplicación que tengamos pensado desarrollar. Para desarrollar aplicaciones móviles, necesitamos descargar la versión “All” que podremos encontrar en la página http://www.netbeans.org/downloads/index.html. Esta es la versión ideal ya que trae incorporado todo lo necesario para el desarrollo de aplicaciones móviles. Sin embargo, si y ase cuenta con una versión diferente de netbeans instalada, se puede descargar la última versión del Wireless Toolkit para adicionarle el soporte para j2me.

El primer requisito para instalar Netbeans, es tener instalado el JDk en la maquina, el cual se puede descargar gratuitamente de la pagina de sun. Es recomendable tener la última versión del JDK, incluyendo los updates ya que así podremos acceder a las correcciones de bugs detectadas y/o nuevas funcionalidades.

Una vez instalado el Netbeans, solo tenemos que abrir el IDE, hacer clic en File > New Project y seleccionar la opción MIDP Application que se encuentra en la categoría Mobility, tal y como se muestra a continuación.

 

 

 

netbeans

Luego debemos seleccionar la versión del MIDP y del CLDC que deseamos utilizar en nuestro proyecto. Es importante tener en cuenta este dato antes de comenzar el proyecto ya que una mala elección de estas versiones podría dejar inutilizable la aplicación en los dispositivos reales.

En este paso, también debemos elegir el dispositivo (device) con el que queremos ejecutar la aplicación. Esta opción es para indicarle a Netbeans que cada que nosotros ejecutemos nuestra aplicación con el comando ejecutar de netbeans, abra automáticamente el emulador del dispositivo seleccionado. Esta elección no afecta para nada la aplicación final ni implica que la aplicación solo podrá ejecutarse en dicho dispositivo, únicamente es una elección para emular el comportamiento de la misma en tiempo de desarrollo.

Por defecto, Netbeans trae instalados unos emuladores básicos con los que podemos probar el funcionamiento de nuestras aplicaciones. Sin embargo, cada fabricante de dispositivos, provee emuladores más específicos para poder emular la ejecución de la aplicación en un entorno más real. Así por ejemplo si la aplicación está siendo desarrollada para celulares Nokia 6100, tenemos la posibilidad de descargar un emulador de dicha plataforma para tener una ejecución mucho más realista.

Aquí vamos entendiendo que eso de la portabilidad de java no deja de ser pura teoría, porque la misma aplicación puede comportarse de manera diferente en distintos dispositivos. Para que necesito yo una aplicación que se pueda instalar y ejecutar en cualquier dispositivo con CLDC 1.1, si funcionalmente es inservible en algunos? A lo que me refiero es a que es probable que la aplicación si instale en todos los dispositivos CLDC 1.1, pero que solo funcione correctamente en los Nokia.

Esto se debe, porque además de la configuración y el perfil que soporte cada dispositivo, debemos tener en cuenta los JSR (Java Specification Request) con los que este equipado, y peor aún, cada fabricante de dispositivos puede implementar de manera diferente los JSR.

 Los JSR son un conjunto de clases que complementan las librerías bases ofrecidas por la configuración. Para que quede más claro, recordemos que todos los dispositivos que soporten la misma versión de CLDC van a tener las mismas librerías o clases bases. Pero si somos realistas, cada teléfono es diferente, algunos pueden tener bluetooth, otros pueden tener capacidad de acceso a Internet mientras que otros no. Cada JSR ataca funcionalidades especificas, por lo que podremos encontrar un jsr que se encarga de la funcionalidad del bluetooth, otro JSR que se encarga de las peticiones HTTP y SOAP (clientes de servicios web), etc.

Por lo anterior, es necesario verificar que librerías adicionales estamos utilizando (JSR) estamos utilizando ya que eso será un requisito mas para el dispositivo que ejecute la aplicación. Por ejemplo, si la aplicación móvil consume un web service, estamos utilizando el JSR 172 y será requisito indispensable que el dispositivo cuente con la implementación de dicho jsr ya que de lo contrario la aplicación no funcionara correctamente.

A manera de conclusión entonces, tenemos que las aplicaciones móviles desarrolladas en Java no son tan portables como dice la teoría ya que el correcto funcionamiento de la misma en diferentes teléfonos depende de las librerías que implemente cada celular.

Por ejemplo, supongamos que en la aplicación se implementa un control Tabla con la funcionalidad de scroll horizontal y vertical, el cual se utiliza para mostrar información tabulada. Es posible (y casi certero) que la misma tabla funcione correctamente en unos dispositivos mientras que en otros no funcione el scroll vertical y en otros no funcione ningún tipo de scroll. Esto se debe a que como lo comente anteriormente, cada fabricante puede implementar de manera diferente cada API de java. En este caso especifico, pudiera deberse a que los fabricantes de los dispositivos implementan de manera diferente el método encargado del LAYOUT o “distribución de controles en pantalla”.

Por tal motivo es recomendable:

1. Entender, que en pocas ocasiones la misma aplicación sirve en diferentes tipos de dispositivos.

2. Analizar que versión de CLDC y MIDP se va a utilizar, teniendo en cuenta que eso será requisito para el dispositivo en que se ejecutara la aplicación.

3. Analizar que JSR se están utilizando para incluirlos como requisito del dispositivo que ejecuten.

4. Probar la aplicación inicialmente en el emulador genérico de Netbeans, luego descargar el emulador del dispositivo específico en el que se ejecutara l aplicación (Nokia, Motorola, Blackberry, Sony Ericsson, etc.)

5 Finalmente desplegar la aplicación a los dispositivos reales, estando dispuesto a sorpresitas poco deseadas, porque recuerda, con J2ME, Write Anywhere, Run Once.

 

Suerte !!!

 

 

 

 


Responses

  1. Muy buen articulo, excelente, solo una acotacion,
    me parece que es : Write Once, Run Anywhere.

    • Hola ralf16.

      Tienes toda la razon. El slogan de sun original es tal como lo dices. Sin embargo en mi post me refiero al slogan de esa manera porque es una critica al mismo. Te invito que leas este post para que entiendas de que se trata la crtitica. https://developmania.wordpress.com/2008/07/04/comenzando-moviles/. Tal vez me falta poner ah el enlace para que quede un poco mas claro.

      Saludos


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: