Transcript J2ME

DESARROLLO DE SOLUCIONES
EMPRESARIALES MOVILES
USANDO TECNOLOGIA SUN
APLICACIONES MOVILES
CON J2ME
Ing. Ronald Criollo
AGENDA
J2ME
 SISTEMA OPERATIVO
 MAQUINA VIRTUAL
 CONFIGURACIONES
 PERFILES
 MIDLET

J2ME

Es una versión reducida de J2SE creada para poder desarrollar en
dispositivos limitados como son los teléfonos móviles.
CARACTERISTICAS J2ME

Las diferentes tecnologías de Java comparten un
conjunto amplio de APIs básicas del lenguaje,
agrupadas principalmente en los paquetes
java.lang y java.io.

J2ME contiene una mínima parte de las APIs de
Java, siendo un total de 37 clases de la
plataforma J2SE provenientes de los paquetes
java.lang, java.io, java.util.
DIFERENCIAS ENTRE J2ME Y J2SE

Tipos de datos: J2ME no soporta los tipos float y double (son muy
costosos y no disponen de una FPU Unidad de Coma Flotante ).

Preverificación: J2SE verifica el código en tiempo de ejecución
mientras que en J2ME una parte se verifica antes (fuera del
dispositivo) reduciendo así la carga de la máquina (Durante la
compilación se comprueban que excepciones pueden producirse
en lugar de comprobarlas en tiempo de ejecución).

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().
ENTORNO DE EJECUCIÓN DE J2ME

Un entorno de ejecución de J2ME se compone
de:
Perfiles.
 Configuraciones.
 Máquina virtual.
 Sistema Operativo

J2ME
SISTEMA OPERATIVO





Symbian OS.
Blackberry OS.
Windows Mobile.
Android.
Iphone OS
Máquina Virtual KVM

J2ME a diferencia de J2SE utiliza una máquina
virtual distinta de la clásica JVM denominada
KVM (Kilobyte Virtual Machine).

Esta KVM tiene unas restricciones que hacen que
no posea todas las capacidades incluidas en la
JVM. J2ME es un subconjunto de J2SE (excepto
por el paquete javax.microedition).
CONFIGURACIONES J2ME

Las configuraciones son un conjunto de clases básicas
orientadas a conformar el corazón de las implementaciones
para dispositivos de características específicas.

Existen 2 configuraciones definidas en J2ME:

Connected Limited Device Configuration (CLDC) enfocada a
dispositivos con restricciones de procesamiento y memoria.
La VM (Virtual Machine) de la configuración CLDC se
denomina KVM.
CONFIGURACIONES J2ME

Connected Device Configuration (CDC) enfocada a
dispositivos con más recursos. La VM (Virtual
Machine) de la CDC se denomina CVM (Compact
Virtual Machine).
CONFIGURACIONES J2ME
CONFIGURACIONES J2ME
NOMBRE DE PAQUETE CDC
java.io
java.lang
java.lang.ref
java.lang.reflect
java.math
java.net
java.security
java.security.cert
java.text
java.util
java.util.jar
java.util.zip
javax.microedition.io
NOMBRE DE PAQUETE CLDC
java.io
java.lang
java.util
javax.microedition.io
DESCRIPCION
Clases de interfaces estándar de E/S.
Clases básicas del lenguaje.
Clases de referencia.
Clases e interfaces de reflection.
Paquete de matemáticas.
Clases e interfaces de red.
Clases e interfaces de seguridad.
Clases de certificados de seguridad.
Paquete de texto.
Clases de utilidades estándar.
Clases y utilidades para archivos .JAR.
Clases y utilidades para archivos ZIP y comprimidos.
Clases e interfaces para conexión genérica CDC.
DESCRIPCION
Clases y paquetes estándar de E/S. Subconjunto de J2SE.
Clases e interfaces de la Máquina Virtual. Subconjunto de J2SE.
Clases, interfaces y utilidades estándar. Subconjunto de J2SE.
Clases e interfaces de conexión genérica CLDC.
PERFILES J2ME

Los perfiles determinan para que tipos de dispositivos
estaremos
programando
como
por
ejemplo
(electrodomésticos, teléfonos móviles, etc.) y el tipo de
aplicaciones que se ejecutarán en ellos.

Las librerías de la interfaz gráfica son un componente
muy importante en la definición de un perfil. Aquí nos
podemos encontrar grandes diferencias entre interfaces,
desde el menú textual de los teléfonos móviles hasta los
táctiles de los PDAs.
PERFILES J2ME

Para la configuración CDC tenemos los siguientes
perfiles:




Foundation Profile.
Personal Profile.
RMI Profile.
Para la configuración CLDC tenemos los siguientes:


PDA Profile.
Mobile Information Device Profile (MIDP).
PERFILES J2ME
PERFILES J2ME
PAQUETES DEL FOUNDATION PROFILE
java. Lang
java.util
java.net
java.io
java.text
java.security
DESCRIPCION
Soporte del lenguaje.
Añade soporte completo para zip y otras funcionalidades (java.util.Timer)
Incluye sockets TCP/IP y conexiones HTTP.
Clases Reader y Writer de J2SE.
Incluye soporte para internacionalización.
Incluye códigos y certificados.
PAQUETES DEL PERSONAL PROFILE
java. applet
java.awt
java.awt.datatransfer
java.awt.event
java.awt.font
java.awt.im
java.awt.im.spi
java.awt.image
java.beans
javax.midlet.xlet
DESCRIPCION
Clases necesitadas para crear applets o que son usadas por ello.
Clases para crear GUIs con AWT.
Clases e interfaces para transmitir datos entre aplicaciones.
Clases e interfaces para manejar eventos AWT.
Clases e interfaces para manipulación de fuentes.
Clases e interfaces para definir métodos editores de entrada.
Interfaces que añaden el desarrollo de métodos editores de entrada.
Clases para crear y modificar imágenes.
Clases que soportan JavaBeans .
Interfaces que usan el Personal Profile para la comunicación.
PERFILES J2ME
PAQUETES DEL MIDP
javax.microedition.Icdui
javax.microedition.rms
javax.microedition.midlet
javax.microedition.io
java.io
java.lang
java.util
DESCRIPCION
Clases e interfaces para GUIs.
Soporte para el almacenamiento persistente del dispositivo.
Clases de definición de la aplicación.
Clases e interfaces de conexión genérica.
Clases e interfaces de E/S básica.
Clases e interfaces de la Máquina Virtual.
Clases e intefaces de utilidades estándar.
MIDLET

Es una aplicación MIDP diseñada para dispositivos
móviles.

Como se ejecuta??



No tiene Main
Ni las configuraciones ni los perfiles poseen Main
Se encarga el AMS (Application Management System) de
ejecutarlo.
MIDLET: AMS

¿Que es el AMS?
 Application Management System.
 Programa pre-instalado dependiente del dispositivo y de
la implementación del JME del fabricante.

Funcionalidad
 Gestiona la descarga de los MIDLET
 Gestiona la ejecución de los MIDLET
 Controla el acceso a los recursos del dispositivo
MIDLET: CICLO DE VIDA

El AMS llama a los siguientes métodos para controlar la
vida de un Midlet
 starApp
 pauseApp
 destroyApp
MIDLET

Las aplicaciones MIDP deben implementar los métodos
antes mencionados:

startApp (): Este método es utilizado para la ejecución del
MIDlet. Su objetivo es ejecutar la aplicación y solicitar
recursos.

pauseApp (): Este método es invocado por el sistema para
solicitarle al MIDlet que haga una pausa. Libera los
recursos adquiridos por el método starApp ().
MIDLET

destroyApp (boolean unconditional): Este método es
llamado por el sistema antes de que sea destruido el
MIDlet. Además libera todos los recursos adquiridos.

Los MIDlets son empaquetados en carpetas .JAR junto a
imágenes, logos, para formar una MIDlet suite.
JAR


Cada archivo .JAR lleva asociado un archivo .JAD (Java
Application Descriptor, Descriptor de Aplicación Java) que
es utilizado para gestionar la instalación.
Los MIDlets tienen atributos obligatorios y opcionales
ATRIBUTOS OBLIGATORIOS
MIDlet-Name
MIDlet-Versión
MIDlet-Vendor
MIDlet-<n> (name, icon, class)
MicroEdition-Profile
MicroEdition-Configuration
ATRIBUTOS OPCIONALES
MIDlet-Description
MIDlet-Icon
MIDlet-Info-URL
MIDlet-Data-Size
PROCESO INSTALACION
J2ME
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class hola extends MIDlet {
private Display pantalla;
private Form formulario = null;
public hola() {
pantalla = Display.getDisplay(this);
formulario = new Form("Hola Mundo");
}
J2ME
public void startApp(){
pantalla.setCurrent(formulario);
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional){
pantalla = null;
formulario = null;
notifyDestroyed();
}}
J2ME

La clase Display representa el manejador de la pantalla y
los dispositivos de entrada.

Todo MIDlet debe poseer por lo menos un objeto Display.

En este objeto Display podemos incluir tantos objetos
Displayable como queramos.
J2ME

La clase Display puede obtener información sobre las
características de la pantalla del dispositivo donde se ejecute
el MIDlet, además de ser capaz de mostrar los objetos que
componen nuestras interfaces.

Todo MIDlet debe poseer al menos una instancia del objeto
Display. Para obtenerla se utiliza:

Display pantalla = Display.getDisplay(this)
J2ME

Dentro del método startApp tendremos que hacer referencia
a la pantalla que queramos que esté activa haciendo uso del
método: setCurrent()

Hay que tener en cuenta que cada vez que salimos del
método pauseApp, entramos en el método startApp, por lo
que la construcción de las pantallas y demás elementos que
formarán parte de nuestro MIDlet la tendremos que hacer en
el método constructor.
MIDLET: JERARQUÍA DE CLASES

Las clases Específicas de JME son las
siguientes
MIDLET: API Y JSR

JME esta compuesto por varias APIs o JSRs (Java
Specification Request)
 API Alto Nivel
 API Bajo Nivel
 RMS
 LWUIT
 Bluetooth
 MMAPI
 …
JME: INTRODUCCIÓN A LA INTERFAZ DE ALTO
NIVEL
 Introducción
 Elementos
List
 Alert
 TextBox
 Form

Alto Nivel
GUI Alto Nivel: List


Mediante la clase List podemos crear listas de elementos seleccionables.
Tipos:
 EXCLUSIVE - Sólo se puede seleccionar un elemento
 IMPLICIT - Se selecciona el elemento que tiene el foco
 MULTIPLE - Permite la selección múltiple
GUI ALTO NIVEL: ALERT


Permiten mostrar una pantalla durante un tiempo o hasta que se
produzca un comando de tipo OK. Se utiliza para mostrar errores u otro
tipo de mensajes al usuario.
Tipos





ALARM
CONFIRMATION
ERROR
INFO
WARNING
GUI ALTO NIVEL: TEXTBOX


La clase TextBox permite introducir y editar texto a pantalla completa.
Es como un pequeño editor de textos.
Las limitaciones pueden ser alguna de los siguientes:
 ANY - Sin limitación
 EMAILADDR - Sólo una dirección de email
 NUMERIC - Sólo se permiten números
 PASSWORD - Los caracteres no serán visibles
 PHONENUMBER - Sólo números de teléfono
 URL - Sólo direcciones URL
GUI ALTO NIVEL: FORM

Un Form es un elemento de tipo contenedor, es decir, es capaz de
contener una serie de elementos visuales con los que podemos
construir interfaces más elaboradas.
LIBRERIAS MIDP




Javax.microedition.Midlet
 Define la funcionalidad de las aplicaciones y el entorno en el
que se ejecutan
Javax.microedition.lcdui
 Contiene clases asociadas con la interfaz grafica y el manejo
de eventos
Javax.microedition.rms
 Contiene clases para realizar almacenamiento persistentes de
los datos
Javax.microedition.io
 Continene clases que permiten la conectividad a una red
javax.microedition.lcdui

Interfaces:
Choice
 CommandListener
 ItemCommandListener
 ItemStateListener

javax.microedition.lcdui









Alert
AlertType
Canvas
ChoiceGroup
Command
CustomItem
DateField
Display
Displayable









Font
Form
Gauge
Graphics
Image
ImageItem
Item
List
Screen





Spacer
StringItem
TextBox
TextField
Ticket