jueves, 1 de marzo de 2012

[DISPOSITIVOS MÓVILES] J2ME

La plataforma Java Micro Edition (Java ME), o anteriormente Java 2 Micro Edition (J2ME), es una especificación de un subconjunto de la plataforma Java orientada a proveer una colección certificada de APIs de desarrollo de software para dispositivos con recursos restringidos.
Un poco de historia detras de J2ME

La plataforma J2ME es una familia de especificaciones que definen varias versiones minimizadas de la plataforma Java 2; estas versiones minimizadas pueden ser usadas para programar en dispositivos electrónicos; desde teléfonos celulares, en PDAs, hasta en tarjetas inteligentes, etc. Estos dispositivos presentan en común que no disponen de abundante memoria ni mucha potencia en el procesamiento, ni tampoco necesitan de todo el soporte que brinda el J2SE, (la plataforma estándar de Java usada en sistemas de escritorio y servidor).

Al principio de los 90, Sun Microsystems creó un nuevo lenguaje de programación llamado Oak como parte de un proyecto de investigación para construir productos electrónicos que dependan principalmente del software.

A pesar de que Oak era un lenguaje fuerte, no se desarrolló como la empresa esperaba, ningún dispositivo  basado en Oak salió al mercado.

Con la llegada del internet al público y el uso más constante de nuevos navegadores, Sun Microsystems encontró una oportunidad y renombró su lenguaje Oak a Java, desarrolló un navegador HotJava multiplataforma. Despues se introdujeron los Java applets.

En un par de años, las capacidades multiplataforma del lenguaje de programación Java y su potencia como plataforma de desarrollo para aplicaciones que podían ser escritas una vez y ejecutadas en diversos sistemas Windows y Unix, había despertado el interés de usuarios finales, porque vieron en ella una manera de reducir los costos del desarrollo de software.

Irónicamente, mientras Sun Microsystems estaba desarrollando Java para Internet y para la programación comercial, la demanda empezó a crecer en los dispositivos pequeños e incluso en tarjetas inteligentes, retornando Java a sus raíces.

Sun Microsystems respondió a esta demanda creando varias plataformas Java con funcionalidades reducidas, cada una hecha a la medida de un segmento vertical y específico del mercado.

Estas plataformas reducidas están todas basadas en el JDK 1.1, el predecesor de la plataforma Java 2, y cada una tiene una estrategia diferente al problema de reducir la plataforma para acomodarla a los recursos disponibles. Por lo tanto, cada una de estas plataformas de funcionalidad reducida representan una solución ad hoc al problema. Por ello es que aparece la plataforma J2ME, para reemplazar todas esas plataformas reducidas basadas en el JDK 1.1 y crear una sola solución basada en Java 2.

J2ME

J2ME es la versión de Java orientada a los dispositivos móviles. Debido a que los dispositivos móviles tienen una potencia de cálculo baja e interfaces de usuario pobres, es necesaria una versión específica de Java destinada a estos dispositivos, ya que el resto de versiones de Java, J2SE o J2EE, no encajan dentro de este esquema. J2ME es por tanto, una versión “reducida” de J2SE.

La mayoría de las aplicaciones J2ME para móviles son generalmente minijuegos, poco menos de la mitad se tratan de aplicaciones de utilidad laboral. sin embargo, siendo que se trata de aplicaciones para dispositivos de bajo rendimiento, cualquier aplicación J2ME reduce drásticamente la duración de batería, así como se puede notar mucha lentitud.



Generalmente los dispositivos que utilizan esta tecnología son llamados moviles java, y comprenden las generaciones 1G, 2G y parte de la 3G de móviles, aunque de estos últimos la mayoría pretende implementar sus propias tecnologías, o versiones de su maquina virtual de Java. Un ejemplo son los dispositivos Android, que aunque se programan en Java, estos tienen su propio interprete (Dalvik).

Existen emuldores de la plataforma J2ME para distintos sitemas operativos como Linux, Windows y Android, que permiten hacer tests de las aplicaciones, o bien para instalarlas como apps nativas que corren bajo el emulador.

MicroEmulator es un emulador para las tipicas J2ME implementado en Java SE, independiente de la plataforma, ya sea Linux, Windows, Mac OS X, inclusive Android.

Configuraciones

J2ME presenta dos configuraciones: CLDC y CDC. La primera se dedica a dispositivos con estrictas limitaciones de memoria, capacidad de cálculo, consumo y conectividad de red. Por otro lado, CDC se encarga de dispositivos con más potencia.


Generalmente las configuraciones CLDC son destinadas para dispositivos con las siguientes características.

  • De 160 a 512 Kbytes de memoria disponible para el entorno de Java.
  • Un procesador de 16 o 32 bits.
  • Consumo de energía bajo (generalmente utilizan baterías).
  • Permiten algún tipo de conectividad a una red (lo normal, es una conexión intermitente, con un ancho de banda bajo -sobre 9600 bps- y a menudo inalámbrica.
La configuración CDC se ha desarrollado para dispositivos con 2 MB o más de memoria disponible para la plataforma, incluyendo RAM y memoria flash o ROM. Estos dispositivos requieren todas las características y funcionalidades de la JVM e incluyen teléfonos móviles de última generación, asistentes personales (PDAs), terminales de punto de venta (TPVs), etc y permiten tanto redes con conexión intermitente o de alta velocidad, sin cablear (wireless) o cableadas. 

La CDC incorpora el perfil Foundation (Foundation Profile), aunque están disponibles los perfiles Personal y Personal Basis para aplicación que requieren una interfaz gráfica de usuario compleja o Web. 

La plataforma CDC para J2ME incorpora:

  • Una máquina virtual Java (Java Virtual Machine, JVM) completa compatible con J2SE 1.3.1.
  • Las bibliotecas de clase y APIs mínimas para que el sistema funcione.
  • Soporte completo para carga de clases, gestión de subprocesos (threads) y mecanismos de seguridad.
La mayoría de las aplicaciones J2ME no interactúan con el móvil, se ejecutan como una cosa aparte de lo que el sistema operativo ofrece, aveces tomando algunas cosas prestadas como el tipo de fuente o el estilo de la interfaz gráfica, pero nunca tomando funciones importantes del sistema operativo como la capacidad de cambiar una configuración predeterminada del móvil, ya que estas aplicaciones no cuentan con los permisos necesarios. De esta manera, si el dispositivo no cuenta con la capacidad de reproducir un mp3 por falta de los codecs, una aplicacion destinada a reproducir estos archivos simplemente no funcionaría.

Por el contrario, estas aplicaciones brindan de funciones no disponibles en móviles antiguos, como la capacidad de identificar y decodificar códigos QR, o edición de imágenes vía móvil, siempre y cuando estas nuevas funciones no involucren configuraciones predeterminadas.

Con la llegada de las nuevas tecnologías móviles, estas aplicaciones están quedando atrás, ya que la demanda está más orientada hacia los nuevos dispositivos, sinembargo, Oracle sigue dando soporte a estas plataformas, ya que no solo se encuentran en móviles, podemos encontrarlas en otros dispositivos que como se mencionaba, esta plataforma se centra en cualquier dispositivo con recursos restringidos.

1 comentario: