Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. INTRODUCCIÓN 3
1.1 Evolución histórica de la telefonía móvil 3
1.2 Objetivos 3
2. J2ME 4
2.1 Análisis comparativo
2.2 Nuevos conceptos 5
2.2.1 Configuración 5
2.2.2 Perfiles 6
2.3 MIDLet 7
3. HERRAMIENTAS DE DESARROLLO 9
3.1 Desarrollo de aplicaciones en Sun One Studio Mobile Edition 6 9
3.2 Desarrollo de aplicaciones en J2ME Wireless Toolkit 2.2 10
3.2.1 Componentes 10
3.2.2 Características 10
3.2.3 Uso 10
4. EJEMPLO 12
5. ANEXO: CÓDIGO 13
Los avances de la telefonía móvil nos llevaron a las tecnologías conocidas como
generaciones 2 y 2.5 que hacen uso de las tecnologías GSM y GPRS respectivamente.
GSM es una conexión telefónica que soporta una circulación de datos, mientras que
GPRS es estrictamente una red de datos que mantiene una conexión abierta en la que el
usuario paga por la cantidad de información intercambiada y no por el tiempo que
permanezca conectado. Un servicio suplementario de GSM son los SMS (Short
Message System). Con ayuda de J2ME, sin embargo, podemos realizar aplicaciones de
chat o mensajería instantánea.
1.2 Objetivos
Este trabajo pretende ser una guía para aquellas personas que estén interesadas
en iniciarse en el mundo del J2ME o, lo que es lo mismo, en el mundo de las
aplicaciones Java para móviles.
3. Java 2 Platform, Micro Edition (J2ME). Esta versión de Java está enfocada
a la aplicación de la tecnología Java en dispositivos electrónicos con capacidades
computacionales y gráficas muy reducidas, tales como teléfonos móviles, PDAs
o electrodomésticos inteligentes. Esta edición tiene unos componentes básicos
que la diferencian de las otras versiones, como el uso de una máquina virtual
Los dispositivos que claramente encajan dentro de este grupo, son los teléfonos
móviles, los PDA (Personal Digital Assintant) o los Pocket PC”. En cuanto a los
requisitos de memoria, según CLDC, los 160KB se utilizan de la siguiente forma:
• 128KB de memoria no volátil para la máquina virtual Java y para las librerías d
el API de CLDC
• 32KB de memoria volátil, para sistema de ejecución (Java Runtime System).
En cuanto a las limitaciones impuestas por CLDC, tenemos por ejemplo las
operaciones en coma flotante. CLDC no proporciona soporte para matemática en coma
flotante. Otra limitación es la eliminación del método Object.finalize. Este método es
invocado cuando un objeto es eliminado de la memoria, para optimizar los recursos.
También se limita el manejo de las excepciones. Es complicado definir una serie de
clases de error estándar, que se ajuste a todos los dispositivos contemplados dentro de
CLDC. La solución es soportar un grupo limitado de clases de error y permitir que el
API específico de cada dispositivo defina su propio conjunto de errores y excepciones.
2.2.2 Perfiles
El perfil es el que define las APIs que controlan el ciclo de vida de la aplicación
e interfaz de usuario. Más concretamente, un perfil es un conjunto de APIs orientado a
un ámbito de aplicación determinado. Los perfiles identifican un grupo de dispositivos
por la funcionalidad que proporcionan (electrodomésticos, teléfonos móviles…) 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.
Existen unos perfiles que construiremos sobre la configuración CDC y otros que
construiremos sobre la CLDC. Para la configuración CDC tenemos los siguientes
perfiles:
• Foundation Profile.
• Personal Profile.
• RMI Profile.
Ahora vamos a ver por los estados que pasa un MIDlet durante una ejecución típica y
cuáles son las acciones que realiza tanto el AMS como el MIDlet. En primer lugar, se
realiza la llamada al constructor del MIDlet pasando éste al estado de Pausa durante un
corto período de tiempo. El AMS por su parte crea una nueva instancia del MIDlet.
Cuándo el dispositivo está preparado para ejecutar el MIDlet, el AMS invoca al método
MIDlet.startApp() para entrar en el estado de Activo. El MIDlet entonces, ocupa todos
los recursos que necesita para su ejecución. Durante este estado, el MIDlet puede pasar
al estado de Pausa por una acción del usuario, o bien, por el AMS que reduciría en todo
lo posible el uso de los recursos del dispositivo por parte del MIDlet. Tanto en el estado
Activo como en el de Pausa, el MIDlet puede pasar al estado Destruido realizando una
llamada al método MIDlet.destroyApp(). Esto puede ocurrir porque el MIDlet haya
finalizado su ejecución o porque una aplicación prioritaria necesite ser ejecutada en
memoria en lugar del MIDlet. Una vez destruido el MIDlet, éste libera todos los
recursos ocupados.
3.2.1 Componentes.
• Ktoolbar: que automatiza la mayor parte de las tareas involucradas en la
creación de aplicaciones MIDP. Es el centro de la aplicación y se puede usar
para construir aplicaciones, lanzar el emulador y empezar las utilidades.
• Emulator: se trata de una simulación de un teléfono móvil. Sobre él se evalúan
las aplicaciones MIDP.
• Una colección de utilidades que proporciona otros servicios igualmente útiles,
como pueden ser utilidades de criptografía o una consola de mensajes.
3.2.2 Características.
La J2ME Wireless Toolkit permite la creación de aplicaciones MIDP con las
siguientes características principales.
• Building and packaging: el usuario sólo debe escribir el código y la
herramienta de ocupa del resto, ya que ella compila, preverifica los ficheros de
clases y empaqueta un MIDlet suite.
• Running and monitoring: se puede ejecutar el MIDlet directamente en el
emulador o instalarlo usando un proceso que se parece a la instalación de una
aplicación en un dispositivo real.
• MIDlet suite signing: contiene herramientas para firmar criptográficamente los
MIDlet, hecho que resulta de gran utilidad.
3.2.3 Uso.
Al arrancar la Ktoolbar nos encontramos con una ventana con un aspecto tal que:
Al hacer esto, nos saldrá una pantalla en la que podremos escoger multitud de
propiedades y característias propias de la aplicación que queremos desarrollar. La
pantalla que muestra por defecto es:
Mostramos los pasos que se siguieron así como los resultados visuales que se
obtienen de la ejecución del mismo.
public EjemploAlerta()
{
// Obtengo la referencia a la pantalla del MIDlet
pantalla = Display.getDisplay(this);