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