CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament d’Arquitectura de Computadors
Introducción a J2ME
(Seminaris de CASO)
Autors
Bruno Rodríguez Rodríguez
Pau Baiget Arasanz
¿Què es?
Es una versión reducida de J2SE dado que tiene
unas ciertas limitaciones o diferencias respecto a
éste.
 Java2 Micro Edition ha sido creado para
adaptarse a las características de los nuevos
dispositivos inalámbricos tales como teléfonos
móviles y PDAs.

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
2
Limitaciones y diferencias respecto a J2SE
• Tipos de datos
• Preverificación
• Descriptor y Manifesto
• Librería gráfica
• Desaparición del main
• Ausencia del Garbage Collector
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
3
Tipos de datos soportados
J2ME no soporta los tipos de datos double y
float dado que los procesadores empleados en
los móviles no disponen de unidad de coma
flotante.
 Emular estos tipos de datos (p.ej. Con enteros)
es una operacion muy costosa.

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
4
Preverificación

Durante la compilación se comprueban qué
excepciones pueden producirse en el lugar de
comprobarlas en tiempo de ejecución.
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
5
Descriptor y Manifesto (1)

Los programas en J2ME no son “fichero.class”,
se denominan MIDLETs y van comprimidos en
paquetes “jar” con todos los ficheros que forman
parte de la aplicación (Manifesto, Descriptor,
imágenes, etc…).

La finalidad del Manifesto es describir el
contenido del fichero .JAR con información tal
como el nombre, versión, vendedor, etc ..
también se incluye en este fichero una entrada
por cada MIDlet que lo compone.
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
6
Descriptor y Manifesto (2)

El objetivo del Descriptor es proporcionar la
información requerida por el Application
Management Software (programa que gestiona
las descargas de aplicaciones entre otras cosas)
y comprobar si podemos ejecutar el programa en
la máquina local.
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
7
Librería gráfica

Mediante el paquete javax.microedition.lcdui,
J2ME define un nuevo conjunto de clases para
la creación de interfaces gráficas.

Estas clases están adaptadas a dispositivos con
memorias muy limitadas y pantallas de tamaño
reducido.
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
8
Desaparición del main.
Las aplicaciones en J2ME empiezan en el
metodo start app.
 Diagrama de estados de un MIDLET:

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
9
Ausencia de Garbage Collector

En J2ME no existe el Garbage Collector, que
sirve para liberar automaticamente las regiones
de memoria que no van a volver a ser
referenciadas.

Es una medida para reducir la utilización de
memoria.

Por lo tanto hay que liberar explicítamente la
memoria.
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
10
Como funciona J2ME por dentro?

Tecnología
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
11
Tecnología: Perfiles

A nivel de programación los perfiles determinan
para que tipo de dispositivo estaremos
programando, siendo un programa realizado
sobre un perfil determinado válido para todos los
dispositivos que lo soporten.

Actualmente el mas utilizado es el MIDP (Mobile
Information Device Profile)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
12
Tecnología: Librerias CLDC

javax.microediton.lcdui proporciona los
mecanismos para desarrollar un interface de
usuario.
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
13
Tecnología: K Virtual Machine

La KVM difiere de la estándar de Java en que
está preparada para dispositivos de poca
memoria (128 KB), con conectividad y con las
funcionalidades básicas del lenguaje java.

La KVM oculta si la plataforma es de 16 o 32 bits
y otros aspectos hardware relevantes.
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
14
Tecnología: Sistema Operativo

Hay que tener en cuenta que el SO de la
màquina está empotrado en una memoria (ROM
o EEPROM) con todo lo que ello conlleva
(dificultad de actualización).
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
15
Principales paquetes de J2ME (1)
javax.microediton.lcdui
 Paquete que proporciona los mecanismos para
desarrollar un interface de usuario.
javax.microediton.midlet
 Toda aplicación que quiere utilizar el perfil MIDP
debe heredar de MIDLET.
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
16
Principales paquetes de J2ME (2)
javax.microediton.rms
 J2ME MIDP define una simple base de datos de
registros llamada RMS (Record Management
System) con el objetivo de poder almacenar
información una vez que el MIDLET finalice.
javax.microediton.io
 Este paquete proporciona conectividad para
poder acceder a datos remotos y redes
corporativas, es decir, Internet.
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
17
Mecanismos de comunicación en J2ME
HTTP
 Sockets (TCP)
 Datagramas (UDP)
 Puerto serie (Cable al dispositivo)
 Fichero

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
18
Ejemplo: HolaMundo.java (1)
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HolaMundo extends MIDlet implements CommandListener{
private Command exitCommand;
private Display display;
private Form screen;
public HolaMundo() {
display=Display.getDisplay(this);
exitCommand = new Command(”Salir",Command.EXIT,2);
screen = new Form("Hola");
StringItem strItem = new StringItem(" ","Hola mundo");
screen.append(strItem);
screen.addCommand(exitCommand);
screen.setCommandListener(this);
}
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
19
Ejemplo: HolaMundo.java (2)
public void startApp() throws MIDletStateChangeException{
display.setCurrent(screen);
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional){
}
public void commandAction (Command c, Displayable s){
if(c==exitCommand){
destroyApp(false);
notifyDestroyed();
}
}
}
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
20
Ejemplo: HolaMundo.java (3)

Resultado de la ejecución:
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
21
Bibliografia
 J2ME: Un primer vistazo
Tutorial de la Universidad Carlos III de Madrid
http://www.it.uc3m.es/pervasive/documentos/Intro_J2ME.pdf

Tutoriales de la web oficial de J2ME
http://java.sun.com/j2me/index.jsp
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
22
Descargar

Principales paquetes de J2ME