domingo, 29 de agosto de 2010

Nociones basicas J2ME

Nociones J2ME

Podemos comenzar diciendo que Sun Microsystems cuando decidió lanzar su estándar de JAVA creo tres diferentes entornos de desarrollo:

J2EE (Java 2 Enterprise Edition): esta basado en J2SE pero tiene ciertas característica que lo diferencia ya que esta pensado para el desarrollo en entornos empresariales, relativo a redes, acceso de datos, entradas y salidas que necesitan mayor capacidad de proceso, almacenamiento y memoria.

J2SE (Java 2 Standard Edition): es la base principal de JAVA, se permite el desarrollo de applets (aplicaciones que se ejecutan en navegadores web) y aplicaciones independientes.

J2ME(Java 2 Micro Edition): es la plataforma de desarrollo de aplicaciones con características mínimas en cuanto a la parte de hardware y software, esta parte del lenguaje JAVA esta enfocado en el desarrollo de aplicaciones para dispositivos móviles con capacidades restringidas en su parte grafica, memoria y de procesamiento como teléfonos móviles entre otros dispositivos móviles.

Entorno de ejecución

Maquinas virtuales: las maquinas virtuales java (JVM) son maquinas virtuales que se ejecutan en plataformas específicas las cuales interpretan y ejecutan las instrucciones expresadas en un código binario como el “bytecode”, para la plataforma de J2ME se utilizan dos diferentes tipos de maquinas virtuales como la KVM (Kilobyte Virtual Machine) para configuraciones CLDC y la CVM (Compact Virtual Machine) para configuraciones CDC.

· KVM: es la maquina virtual mas pequeña que se desarrollo , su nombre lo recibe de kilobyte ya que hace referencia a la baja ocupación de memoria entre 40Kb y 80Kb esta especialmente diseñada para dispositivos con bajas capacidades de procesamiento y memoria, esta maquina virtual esta escrita en lenguaje C y cuenta con aproximadamente 24.000 líneas de código sus características principales son:

o Pequeña, con una carga de memoria entre los 40Kb y los 80 Kb, dependiendo de la plataforma y las opciones de compilación.

o Alta portabilidad.

o Modulable.

o Lo más completa y rápida posible y sin sacrificar características para las que fue diseñada.

Posee algunas limitaciones debido a su baja ocupación de memoria entre las cuales encontramos

o No hay soporte para tipos en coma flotante. No existen por tanto los tipos double ni float.

o No existe soporte para JNI (Java Native Interface) debido a los recursos limitados de memoria.

o No existen cargadores de clases (class loaders) definidos por el usuario. Sólo existen los predefinidos.

o No se permiten los grupos de hilos o hilos daemon.

o No existe la finalización de instancias de clases. No existe el método Object.finalize().

o No hay referencias débiles.

· CVM: es la maquina virtual de referencia para las configuraciones CDC, esta orientada a dispositivos electrónicos con procesadores de 32bits de gama alta y 2Mb de memoria RAM o mas, sus características son:

o Sistema de memoria avanzado.

o Tiempo de espera bajo para el recolector de basura.

o Separación completa de la VM del sistema de memoria.

o Recolector de basura modularizado.

o Portabilidad.

o Rápida sincronización.

o Ejecución de las clases Java fuera de la memoria de sólo lectura (ROM).

o Soporte nativo de hilos.

o Baja ocupación en memoria de las clases.

o Proporciona soporte e interfaces para servicios en Sistemas Operativos de Tiempo Real.

o Conversión de hilos Java a hilos nativos.

Configuraciones: una configuración es el conjunto mínimo de APIs (Application Programming Interface) JAVA que permiten desarrollar aplicaciones para un conjunto de dispositivos, las APIs definen las características básicas comunes a todos los dispositivos.

Existen dos configuraciones básicas en J2ME como CLDC (Connected Limited Device Configuration) la cual esta enfocada en dispositivos con restricciones de procesamiento y memoria la otra configuración es CDC (Connected Device Configuration) la cual esta enfocada en dispositivos con mayor capacidad de procesamiento y memoria en comparación con CLDC aunque su entorno de ejecución es similar y se compone de:

· Maquina virtual.

· Configuración.

· Perfil.

· Paquetes opcionales.

Configuración de dispositivos limitados con conexión, CLDC (Connected Limited Device Configuration): esta orientado a dispositivos con conexión pero limitados en su parte de capacidad grafica, procesamiento y memoria algunas de sus limitaciones vienen dadas por su maquina virtual cabe a anotar que utiliza la KVM debido a su pequeño tamaño, estos dispositivos deben cumplir con los siguientes requisitos:

· Disponer entre 160 Kb y 512 Kb de memoria total disponible. Como mínimo se debe disponer de 128 Kb de memoria no volátil para la Máquina Virtual Java y las bibliotecas CLDC, y 32 Kb de memoria volátil para la Máquina Virtual en tiempo de ejecución.

· Procesador de 16 o 32 bits con al menos 25 MHz de velocidad.

· Ofrecer bajo consumo, debido a que estos dispositivos trabajan con suministro de energía limitado, normalmente baterías.

· Tener conexión a algún tipo de red, normalmente sin cable, con conexión intermitente y ancho de banda limitado.

Configuración de dispositivos con conexión, CDC (Connected Device Configuration): esta orientado a dispositivos con cierta capacidad de procesamiento y de memoria, entre estos dispositivos podemos encontrar decodificadores de televisión digital, televisión con internet entre algunos electrodomésticos y sistemas de navegación automóvil como GPS, utiliza la maquina virtual CVM, estos dispositivos deben cumplir con los siguientes requisitos:

· Procesador de 32 bits.

· Disponer de 2 Mb o más de memoria total, incluyendo memoria RAM y ROM.

· Poseer la funcionalidad completa de la Máquina Virtual Java2

· Conectividad a algún tipo de red.

Los MIDlets

Son aplicaciones creadas utilizando la especificación MIDP, están diseñados para ser ejecutados en dispositivos con poca capacidad grafica, memoria y de procesamiento, las aplicaciones que se realizan utilizando MIDP reciben su nombre de MIDlets por su simpatía con APPlets, se puede decir que un MIDlet es una aplicación JAVA que operara sobre la configuración CLDC, el programa que se encarga de manejar la descarga y el ciclo de vida de los MIDlets se llama Gestor de Aplicaciones o AMS (Application Management Software).

Un AMS realiza dos grandes funciones:

· Por un lado gestiona el ciclo de vida de los MIDlets.

· Por otro, es el encargado de controlar los estados por los que pasa el MIDlet mientras está en la memoria del dispositivo, es decir, en ejecución.

Un ciclo de vida de un MIDlet tiene etapas por las cuales pasa como descubrimiento, instalación, ejecución, actualización y borrado, durante la etapa de ejecución pasa por 3 estados diferentes, estos tres estados son:

· Activo: El MIDlet está actualmente en ejecución.

· Pausa: El MIDlet no está actualmente en ejecución. En este estado el MIDlet no debe usar ningún recurso compartido. Para volver a pasar a ejecución tiene que cambiar su estado a Activo.

· Destruido: El MIDlet no está en ejecución ni puede transitar a otro estado. Además se liberan todos los recursos ocupados por el MIDlet.

Un MIDlet puede cambiar de estado mediante la llamada a unos métodos como MIDlet.startApp(), MIDlet.pauseApp() o MIDlet.destroyApp(), MIDlet también puede cambiar de estado por si mismo, la estructura básica de un MIDlet es:

import javax.microedition.midlet.*

public class MiMidlet extends MIDlet

public MiMidlet() {

/* Éste es el constructor de clase. Aquí debemos inicializar nuestras variables.

*/

}

public startApp(){

/* Aquí incluiremos el código que queremos que el MIDlet ejecute cuándo se active.

*/

}

public pauseApp(){

/* Aquí incluiremos el código que queremos que el MIDlet ejecute cuándo entre en el estado de pausa

(Opcional)

*/

}

public destroyApp(){

/* Aquí incluiremos el código que queremos que el MIDlet ejecute cuándo sea destruido. Normalmente

aquí se liberaran los recursos ocupados por el MIDlet como memoria, etc. (Opcional)

*/

}

}

Un ejemplo de un MIDlet es el programa de Hola Mundo.

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class HolaMundo extends MIDlet{

private Display pantalla;

private Form formulario = null;

public HolaMundo(){

pantalla = Display.getDisplay(this);

formulario = new Form(“Hola Mundo”);

}

public void startApp(){

pantalla.setCurrent(formulario);

}

public void pauseApp(){

}

public void destroyApp(boolean unconditional){

pantalla = null;

formulario = null;

notifyDestroyed();

}

}

Un MIDlet genera dos archivo como el JAR (Java ARchive) es un archivo comprimido en el cual se encuentran todas las clases compiladas y los recursos del MIDlet, el otro archivo es el JAD (Java Archive Descriptor) es un archivo que contiene la información sobre el MIDlet como nombre, descripción, autor, URL de la descarga, requisitos, iconos, etc.

Las IDE

Las IDE (Integrated Development Environment) son programas que permiten desarrollar cierto tipo de lenguaje, una IDE cumple con la función de verificar la sintaxis del programa y ejecutar el código escrito en una maquina virtual para verificar su correcto funcionamiento, existen varias IDEs como:

NetBeans ( http://www.netbeans.org ) Open-Source

Eclipse ( http://www.eclipse.org ) Open-Source

Sun Java Studio ( http://www.sun.com/software/sundev/jde/index.xml ) de Sun

JBuilder ( http://www.borland.com/jbuilder ) de Borland

WebSphere Studio ( http://www-306.ibm.com/software/awdtools/studiositedev/ ) de IBM

JDeveloper ( http://otn.oracle.com/products/jdev/con