Download Error - Universidad de Cádiz

Document related concepts
no text concepts found
Transcript
INTRODUCCIÓN A LA PROGRAMACIÓN DE
DISPOSITIVOS MÓVILES
CONTENIDO:
J2ME. Arquitectura
Conceptos Básicos
APIs Principales
MIDLets
Herramientas de Desarrollo
Ejemplo
BIBLIOGRAFÍA:
[Gal] Java a Tope: J2ME. Gálvez&Ortega. U. de Málaga
[Fro] J2ME: Manual de Usuario y Tutorial. Froufe et al. Ed. Rama.
INTRODUCCIÓN A JAVA2
JAVA2
http://java.sun.com
• J2EE (Java 2 Enterprise Edition)
• J2SE (Java 2 Standard Edition)
• J2ME (Java 2 Mobile Edition)
J2SE vs J2ME
• J2ME no soporta tipos de datos como float ni
doubles.
• La verificación del código en J2SE se hace en
tiempo de ejecución mientras que en J2ME se hace
off-line.
• J2ME añade dos nuevos tipos de ficheros: .jad y
manifiest.mf
• Nueva librería gráfica (javax.microedition.lcuid)
• Inexistencia del método main(), sustituido por el
método startApp().
• Ausencia del recolector de basura de J2SE. La
destrucción de los objetos a de hacerse
manualmente.
ARQUITECTURA J2ME
PERFILES
CONFIGURACIONES
KVM (Kilo Virtual Machine)
SISTEMA OPERATIVO
ARQUITECTURA J2ME
• KVM: Versión de la JVM pensada para dispositivos
de 16 ó 32 bits y memoria de 128 Kb. Mantiene sus
aspectos más importantes.
• CONFIGURACIÓN:
Conjunto
mínimo
de
características de la KVM y librerías para un conjunto
de dispositivos.
• PERFIL: Conjunto de API mínimas sobre una
configuración para una familia de dispositivos.
• PERFIL MIDP:
APIs java para creación de
interfaces, conexiones de red, audio seguridad, etc.
EJERCICIO
¿Cuáles son las principales caracteríticas
de la KVM?
Analice las diferencias ente CDC y CLDC.
Elabore un documento con ellas llamado
cdc_vs_cldc.pdf
Establezca los requisitos principales de
CLDC. Elabora un documento llamado
cld_req.pdf
API CLDC: Paquetes Heredados
java.lang: subconjunto de sus homólogas en
j2se. No incluye Float y Double. Sí incluye
Object, Class, Thread, etc.
java.io: subcojunto de sus homólogas en
j2se.
java.util: subonjunto de sus homólogas en
j2se, incluyendo vector, stack, etc.
API CLDC: Paquetes Específicos
java.microedition.io: clase
Connector.
java.microedition.lcdui: interfaces
gráficas.
java.microedition.midlet: contiene
la clase MIDlet, que implemente las
aplicaciones.
MÁS CONCEPTOS
• MIDlet: Cualquier aplicación realizada en J2ME. Se
agrupan en ficheros jar. Un conjunto de MIDlet son
llamados MIDLetSuite. En J2ME es una clase de la
que hay que heredar forzosamente.
• MANIFIESTO (manifiest.mf): Fichero que describe
el contenido del jar. Contiene información acerca de
su tamaño, recursos que emplea, clase MIDlet que lo
forma, así como el perfil para el que está diseñado el
MIDlet.
• JAVA DESCRIPTOR (jad): Fichero parecido al
manifiesto que proporciona la información necesaria
al Application Management, el cual se encarga de
gestionar las descargas de MIDlet, así como evaluar
su compatibilidad.
CONCEPTOS PREVIOS
• EJEMPLO DE MANIFIESTO
MIDlet-1: prueba, icono.png
MIDlet-Name: prueba
MIDlet-Vendor: Universidad de Cádiz
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
CONCEPTOS PREVIOS
• EJEMPLO DE DESCRIPTOR JAVA
MIDlet-1: prueba, icono.png
ej3MIDlet-Jar-Size: 1691
MIDlet-Jar-URL: http://neptuno.uca.es/prueba.jar
MIDlet-Name: prueba
MIDlet-Vendor: Universidad de Cádiz
MIDlet-Version: 1.0
MIDlet: GENERALIDADES
• MIDlet: Cualquier aplicación realizada en J2ME.
• Es el equivalente a un Applet de Java usando AWT.
• Cualquier MIDlet hereda forzosamente de la clase
MIDlet definida en javax.microedition.midlet.
• Un MIDlet puede estar en tres estados: ACTIVO,
PASIVO y DESTRUIDO. Por defecto un MIDlet está
en estado ACTIVO mientras no se pase a otro
estado.
MIDlet: COMPONENTES
Un MIDlet posee 3 métodos entre otros:
• startApp()
Equivalente a un método main() de una
aplicación cualquiera en J2SE.
Se liberan todos los recursos que
• destroyApp()
hayan sido declarados. Recuérdese que no existen
destructores ni recolector de basura en J2ME.
• pauseApp()
Permite intercambiar de un MIDlet que se
está ejecutando pasándolo de activo a pasivo.
MIDlet: CICLO DE VIDA
PREVERIFICACIÓN
programa.java
compilador
intérprete
programa.class
preverificador
programa.class
programa.class=programa.class+atributos
verificador
HERRAMIENTAS J2ME
OBLIGATORIAS
J2SDK
J2METK (Java 2 ME Wireless Toolkit)
OPCIONALES
JBUILDER + MOBILE SET
SUN ONE STUDIO 4
NETBEANS + WTK
MIDLET “HOLA MUNDO”
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class HolaMIDlet
extends MIDlet implements CommandListener
{
private Form Formulario;
public HolaMIDlet()
{ Formulario = new Form("MIDlet Hola Mundo");
Formulario.append(new StringItem(null, "Hola mundo
cruel...!"));
Formulario.addCommand(new Command("Salir", Command.EXIT, 0));
Formulario.setCommandListener(this);
}
public void startApp() {
Display.getDisplay(this).setCurrent(Formulario); }
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s)
{ notifyDestroyed(); }
}
EJERCICIO
Abrir MIDlet con JCreator
Ejecutar el WTK
Abrir “un nuevo proyecto”
Darle un nombre y establecer el nombre de
la clase que define al MIDlet
Plataforma objetivo: MSA
Guardar el código del MIDlet en la
subcarpeta … src de la carpeta del
proyecto (bajo apps)
OTROS MIDLETS
Descargue EventEx1.java y repita el
proceso
Abra el proyecto PhotoAlbum que
incorpora el WTK, compile y ejecute
Repita lo anterior con el proyecto
AudioAlbum