Java ME

    Java es un lenguaje de programación orientado a objetos creado por Sun Microsystems. Su principal aliciente, y la característica que lo convirtió en uno de los lenguajes más populares hasta hoy, fue la posibilidad de crear aplicaciones independientes a la plataforma donde van a ser ejecutadas, siguiendo el axioma write once, run anywhere

 

   Java ofrece la oportunidad de crear aplicaciones tanto de escritorio como empresariales, incluyendo por supuesto a los dispositivos móviles. Esta portabilidad viene dada por la máquina virtual de Java o JVM (Java Virtual Machine). Al compilar un fichero fuente en Java no se crea un binario directamente ejecutable, sino un código intermedio llamado bytecode en ficheros cuya extensión es .class. Para cada hardware debe haber una JVM específica, ya sea un teléfono móvil, un ordenador con Windows, o un microondas. Cada máquina virtual conoce el conjunto de instrucciones de la plataforma sobre la que está instalada, y puede traducir el bytecode, común para todas las máquinas, al código nativo que es capaz de entender el hardware en cuestión de dicha plataforma.


 

  Ediciones de Java 2:

 

   La revolución tecnológica acaecida en los últimos años propiciaron que los responsables de Java ofrecieran soluciones personalizadas a cada ámbito tecnológico. Sun decidió crear una edición distinta de Java según las necesidades del entorno y la tecnología utilizada:

 

      -> Java Enterprise Edition (Java EE), orientada al entorno empresarial.

 

      -> Java Standard Edition (Java SE), orientada al desarrollo con independencia de la plataforma.

 

      -> Java Micro Edition (Java ME), orientada a dispositivos con capacidades restringidas.

 

         -> Java Card, orientada a tarjetas inteligentes ("smart cards"). 
 

    Todas las ediciones comparten un conjunto más o menos amplio de las API básicas de Java, agrupadas principalmente en los paquetes java.lang y java.io. A día de hoy, Java EE representa un superconjunto de Java SE, pues contiene toda la funcionalidad de éste y más características, así como Java ME es un subconjunto de Java SE (excepto por el paquete javax.microedition). Por lo tanto, Java Micro Edition es una versión muy específica del lenguaje Java, creado para desarrollar, instalar y ejecutar software escrito en Java en aparatos electrónicos de baja capacidad, como electrodomésticos, PDA, teléfonos móviles u ordenadores de bolsillo.



  Arquitectura de Java ME

 

    Una aplicación Java ME típica está formada por un archivo JAR, que es el que contiene a la aplicación en sí, y un archivo opcional JAD (Java Archive Descriptor) que contiene diversa información sobre la aplicación. Antes de desarrollar una aplicación en Java ME, es necesario tomar una serie de decisiones según el dispositivo a utilizar y las necesidades requeridas. No todos los desarrollos realizados en Java ME utilizan los mismos componentes. En concreto, una aplicación en Java ME se desarrolla a partir de una combinación de:

 

     -> Máquina virtual: Existen dos máquinas virtuales de Java ME con diferentes requisitos, cada una pensada para tipos distintos de pequeños dispositivos: KVM (Kilobyte Virtual Machine) y CVM (Compact Virtual Machine).

    

     -> Configuración: Una configuración consiste en un conjunto de clases básicas destinadas a conformar el corazón de la aplicación. En concreto, dentro de Java ME existe dos configuraciones: CLDC (Connected Limited Device Configuration) y CDC (Connected Device Configuration).

 

     -> Perfil: Bibliotecas de clases específicas, orientadas a implementar funcionalidades de más alto nivel para familias específicas de dispositivos.

 

    Cada una de las dos configuraciones mencionadas requiere en realidad de una determinada máquina virtual. De esta forma, si es escoge la configuración CLDC, será necesario utiliza la máquina virtual denominada KVM; si, por el contrario, se decide utilizar la configuración CDC, la máquina virtual necesaria es la conocida como CVM.

 

   Con la elección de perfiles, se da una situación similar. Existen unos perfiles que se utilizan sobre la configuración CDC (Foundation Profile, Personal ProfilePersonal Basis Specification) y otros que lo hacen sobre CLDC (Mobile Information Device Profile, conocido como MIDP,y Information Module Profile).
 
    Las aplicaciones en Java ME que se realizan utilizando el perfil MIDP reciben el nombre de MIDlets. Se dice así que un MIDlet es una "aplicación Java ME realizada con el perfil MIDP", sobre la configuración CLDC, y usando la máquina virtual KVM. Desde un punto de vista práctico, MIDP es el único perfil actualmente disponible.
 


 

   Librerías

 

   Al desarrollar una aplicación en Java ME bajo el perfil MIDP, el programador puede hacer uso, entro otras, de las siguientes bibliotecas:

 


Nombre

Descripción


java.io

Operaciones de E/S básicas


java.lang

Operaciones de la máquina virtual


java.util

Utilidades estándar


javax.microedition.midlet

Marco de ejecución para las aplicaciones


javax.microedition.lcdui

Interfaces de usuario


javax.microedition.rms

Almacenamiento persistente en el dispositivo


javax.microedition.io

Conexión genérica


 

     A través de la configuración CLDC, se obtienen un conjunto de clases heredadas de la edición Java SE. Aproximadamente, unas 37 clases derivadas de los paquetes java.lang, java.util y java.io. Cada clase es un subconjunto de la correspondiente en Java SE.

   Los paquetes java.io y java.net, son los encargados en Java SE de las operaciones de E/S. Debido a las limitaciones de CLDC, no fue posible incluir todas y cada una de las clases de estos paquetes. Tampoco se incluyeron la clase java.net, encargada de las comunicaciones TCP/IP. En su lugar, MIDP añade el paquete javax.microedtion.io que suple de forma genérica las necesidades en cuestiones de comunicación. Además de los ya mencionados, MIDP incluye también un paquete que posibilita la creación de interfaces de usuario: javax.microedition.lcdui. Las clases contenidas en este paquete pueden dividirse en dos grandes grupos:

 

     -> Elementos de interfaz de usuario de alto nivel: Esta interfaz usa componentes tales como cajas de texto, alertas, listas, etc. Estos elementos son implementados por cada dispositivo y la finalidad de usar las APIs de alto nivel es su portabilidad.

 

     -> Elementos de interfaz de usuario de bajo nivel: Se tiene un control total sobre los recursos, pero se puede perder la portabilidad ya que dependerá mucho del dispositivo destino. Generalmente, se utiliza en juegos.

 

   El paquete javax.microedition.rms proporciona un mecanismo a los MIDlets para poder almacenar información de forma persistente en el dispositivo, utilizando para ello una base de datos basada en registros llamada Record Management System o RMS. Los registros se convierten así en la unidad básica de información en un MIDlet, permitiendo al dispositivo crear, leer, modificar y borrar cualquier registro de datos.


 

  Comunicaciones en MIDlets

 

   Anteriormente se ha mencionado que el paquete javax.microedition.io contiene las clases que dan soporte a las comunicaciones en una aplicación MIDP. De hecho, este paquete pretende sustituir, de una forma más breve y concisa, al paquete java.net de Java SE. Sin embargo, en una comunicación el MIDlet no utiliza únicamente este paquete, sino que también usará java.io, añadido por la configuración CLDC. Mientras que el paquete javax.microedtion.io tiene como misión crear y manejar diferentes conexiones de red (por HTTP, datagramas, sockets), el paquete java.io lo que posibilita a través de su declaración de clases es poder leer y escribir en estas conexiones de red. Debido a las limitaciones ya conocidas de un dispositivo basado en MIDP, es del todo imposible contener en él la implementación de cada protocolo de comunicación existente.

    Lo que proporciona  javax.microedition.io es una única clase, llamada Connector, que esconde todos los detalles de la conexión. Dicho en otras palabras, una misma clase Connector sirve tanto para leer archivos, como abrir una conexión por HTTP o mediante sockets.

Subpages (1): Java ME
Comments