Está en la página 1de 27

J2ME

Tecnología java para dispositivos con recursos limitados


Java 2 Micro Edition
J2ME es una versión de la plataforma J2SE adaptada a las limitaciones
de los móviles, PDA’s y muchos dispositivos con capacidad limitada.
Limitaciones de los dispositivos

 Memoria Reducida (entre 128Kb y 2Mb aprox.)

 Poca potencia computacional (processadores


de 16 o 32 bits)

 Pantallas pequeñas (mínimo de 97 x 54 pixels)


Arquitectura de J2ME

Perfiles
MIDP PDAP FP PBP PP
JSR 37 JSR 75 JSR 46 JSR 129 JSR 62

Configuraciones CLDC CDC


JSR 30 JSR 36

Máquina
KVM CVM
Virtual
Kilobyte virtual machine Compact virtual machine

SO
Depende del dispositivo
Configuraciones

Las configuraciones proveen la base funcional para un rango


de dispositivos con características similares.

Especifican los siguientes aspectos:

- El subconjunto del lenguaje java que puede ser usado.

- El subconjunto de funciones de la Máquina Virtual Java.

- Las APIs fundamentales para este tipo de desarrollo.

- Los requerimientos de hardware de los dispositivos


enfocados a ésta.
Configuraciones

Actualmente existen dos configuraciones:

 Connected Limited Device Configuration (CLDC):


Está diseñada para dispositivos con conexión intermitente,
poco procesador, y memoria limitada como los teléfonos
móviles y PDA´s (procesador de 16-32 bits y memorias de
128Kb como mínimo).

 Connected Device Configuration (CDC):


Está diseñada para equipos con más memoria, procesadores
más rápidos y conexiones de mayor ancho de banda, sistemas
telemáticos de vehículos o computadores de mano de gran
capacidad (procesador de 32 bits y memoria de 2Mb o más).
Perfiles
Un perfil define un conjunto de APIs características
comunes para un conjunto de dispositivos.
Mobile Information Device Profile

MIDP es un perfil diseñado para desarrollar aplicaciones


enfocadas a móviles, PDA’s y dispositivos soportados por
la configuración CLDC.

Se encarga de las siguientes funcionalidades:

- Interfaz de usuario (javax.microedition.lcdui)

- Funciones de red (añade funciones a


javax.microedition.io)

- Almacenamiento persisitente (javax.microedition.rms)


MIDP 1.0 y 2.0
La versión más reciente es la 2.0 (sobre CLDC 1.1), sin
embargo, la mayor parte de dispositivos que hay en el
mercado actual funcionan sobre MIDP 1.0 (CLDC 1.0).

MIDP 2.0
MIDP 1.0
CLDC
Java.io
Javax.microedition.media Javax.microedition.lcdui Java.util
Javax.microedition.lcdui.game Javax.microedition.midlet Java.lang
Javax.microedition.pki Javax.microedition.rms Javax.microedition.io
Diferencias entre MIDP y J2SE

 Tipos de datos: CLDC no soporta los tipos float y double (son


muy costosos).

 Preverificación: J2SE verifica el código en tiempo de ejecución.


En J2ME una parte se verifica antes (fuera del dispositivo)
reduciendo así la carga de la máquina.

 Descriptor y manifiesto: Cada aplicación incluye archivos


adicionales con información referente a las aplicaciones.

 No hay recolector de basura: Hay que eliminar de forma


explícita los elementos que no vayan a usarse más.

 La máquina virtual: La KVM es una versión reducida de la JVM


diseñada para dispositivos limitados.

 No hay “main”: El equivalente sería la función startApp().


Javax.microedition.midlet
Las aplicaciones midp heredan de la la classe MIDLet. Ésta
es la encargada de gestionar el ciclo de vida de la aplicación,
mediante las funciones startApp, pauseApp y destroyApp.
Javax.microedition.lcdui
Este paquete contiene las clases necesarias para
implementar la interficie de usuario.
Javax.microedition.lcdui

 Por cada MIDlet tenemos una instancia de


la clase Display.

 La aplicación llama al método getDisplay()


desde la constructora para poder referenciar
a dicha instancia.

 Los Displayable se emplazan en la display


mediante la función setCurrent(Displayable)
Javax.microedition.lcdui

La calse Displayable tiene dos descendientes:

- Canvas: Permite el control total de la pantalla a


bajo nivel. Se usa en aplicaciones que capturan
eventos y realizan llamadas gráficas. Llama al
método paint(Graphics) para dibujar en la pantalla.

- Screen: Ofrece estructuras predefinidas (Form,


Alert, TextBox, List). No accede a las características
nativas del dispositivo. Permite un mayor grado de
portabilidad.
Javax.microedition.lcdui

El manejo de eventos utiliza dos componentes:

- Command: Es un generador de eventos que


podemos asociar a un displayable mediante el
método addCommand(Command).

- CommandListener: Es una interfaz que permite


escuchar eventos generados por Commands al
objeto que la implemeta. Se invoca al método
CommandAction(Command,Displayable) cada vez
que se produce un nuevo evento. Se asocia a un
Displayable con el método de esta clase
setCommandListener(CommandListener).
Javax.microedition.lcdui.game

 MIDP 2.0 incorpora


este paquete diseñado
especialmente para el
desarrollo de juegos.

 Ofrece una subclase de


Canvas que permite
trabajar con layers o
capas y controlar
colisones entre éstas.
Javax.microedition.lcdui.game
 GameCanvas: Canvas con capacidades adicionales.
- Los métodos getGraphics() y flushGraphics(g) nos
permiten trabajar off-screen.
- El método getKeyState() permite trabajar por encuesta o
polling y consultar en todo momento la tecla pulsada.

 LayerManager:Permite la gestión de los layers.


- Mediante el método append(Layer) le asignamos layers.
- setViewWindow(x,y,width,height) define la región de la
pantalla donde seran visibles los layers asignados.

 Layer: Clase abstracta que representa un elemento


visual de la aplicación.
- Todas sus subclases deben implementar el método
paint(Graphics).
Javax.microedition.lcdui.game
 Sprite: Consiste en un layer formado por una
secuencia de imágenes para realizar animaciones.

- Sprite(Image,width,height) crea el Sprite a partir de la


imagen y el tamaño de sus secciones.
- Ofrece métodos para controlar colisiones con otros layers.
Javax.microediton.lcdui.game

 TiledLayer: Esta compuesto por una parrilla de tiles


en la que a cada uno podemos asignarle secciones de
una imagen.
- tiledLayer(cols,rows,img,width,height)
-Permite crear tiles animados llamando al método
int createAnimatedTile(tileIndex) i modificarlo mediante
setAnimatedTile(animatedTileIndex,staticTileIndex)
Imágenes

 MIDP sólo acepta el formato png.

 Hay varias maneras de mostrar imágenes:


- Un archivo incluido en el MIDlet.
- Un array de bytes:
- Almacenado en memoria persistente
- Descargado de un servidor
- Incluído en el propio programa

 El método createImage de la classe Image


ofrece todas estas possibilades.
Javax.microedition.rms
Este paquete proporciona una
clase (RecordStore) y varias
interfaces para el almacenamiento
persistente.

Consiste en un mecanismo simple


orientado a registros que permite
guardar datos, salir de la aplicación
y recuperarlos en una ejecución
posterior.

La clase RecordStore es una colección


de registros en la que cada uno se
identifica por un entero (Record ID).
Javax.microedition.rms
 La interface RecordListener permite
monitorizar los cambios en un RecordStore.

 Cuando se modifica un RecordStore se lanza


un evento al RecordListener asociado.

 Hay 3 tipos de eventos:

 recordAdded(RecordStore rs,int recordId)


 recordChanged(RecordStore rs,int recordId)
 recordDeleted(RecordStore rs,int recordId)
Javax.microedition.io

 Contiene varias interfaces que ofrecen


distintas posibilidades de comunicación.

 La clase connector permite crear las


conexiones:
Connection connector.open(String url)
url = [protocol] : [dirección]

 Valores de protocol
 http
 Datagram
 Comm
 File
 Socket
Estructura básica de una aplicación
import java.lang.*; // Packetes cldc, midp y opcionales

public class NetClientMIDlet extends MIDlet implements CommandListener {

private Display display; // Interficie de usuario


private Form form; // Objeto Displayable
private Command exit; // Commando

public NetClientMIDlet() {
display = Display.getDisplay(this); // Inicialización de la interficie
…}
Public void startApp(){
form.setCommandListener(this); // Gestor de eventos
display.setCurrent(form); // Asignación de la pantalla
…}
public void pauseApp() {
…}
public void destroyApp() {
…}
public void commandAction(Command c, Displayable d) {
if (c == exit) destroyApp(); // Tratamiento de eventos
…}
Instalación de las aplicaciones
Cuando compilamos una aplicación con el Wireless
toolkit se generan 2 ficheros:

- JAR: Contiene todas las clases e imágenes que usa la


aplicación y un fichero llamado manifiesto con información
sobre su contenido (versión, midlets, etc…)

- JAD: Es igual que el manifiesto y adicionalmente incluye


una entrada con la url donde se encuentra el jar y otra
con su tamaño. Solo hace falta este fichero para instalar
la aplicación ya que durante la instalación se descarga
automaticamente el jar de la url especificada.
Herramientas para el desarrollo

 Java 2 SDK versión 1.4 o superior

 J2ME Wireless Toolkit

 Entorno de Desarrollo Visual (IDE)


Opcional. SunONE, JBuilder (Mobile Set),
NetBeans.
Bibliografia
 Toda la información usada para desarrollar este
documento ha sido obtenida en las siguientes
direcciones:

- http://java.sun.com/j2me/

- http://www.forum.nokia.com

- http://www.microjava.com

También podría gustarte