Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA DE SISTEMAS
INTEGRANTES:
Argomedo De La Cruz, Jhon
Reyes Julca, Christian Steven
Serin Nery, Elmer
Silva Guevara, Manuel
Zavaleta Cortez, Jeyson
CURSO:
Tecnología de la Programación II
CICLO: V
Trujillo, mayo de 2019
Contenido
I. Introducción ..............................................................................................................................1
II. ¿Qué es Java 2 ME? ..................................................................................................................2
III. Componentes ..........................................................................................................................3
IV. Máquinas virtuales ..................................................................................................................4
V. Configuraciones .......................................................................................................................5
CDC (Connected Device Configuration) ...................................................................................5
CLDC (Connected Limited Device Configuration) ....................................................................6
VI. Perfiles ....................................................................................................................................7
1. Foundation Profile: ..........................................................................................................7
2. Personal Profile:...............................................................................................................8
3. RMI Profile: ......................................................................................................................8
4. PDA Profile: ......................................................................................................................8
5. Mobile Informa ion Device Profile (MIDP): .....................................................................9
VII. MIDlet ....................................................................................................................................9
a. Componentes y contenedores .........................................................................................9
b. Ciclo de vida de un MIDlet ..............................................................................................10
c. Proceso de creación de un MIDlet ..................................................................................10
d. Principales métodos .......................................................................................................11
Método startApp() .............................................................................................................11
Método pauseApp() ...........................................................................................................11
Método destroyApp(boolean) ...........................................................................................12
Método notifyDestroyed() .................................................................................................12
Método notifyPaused()......................................................................................................12
Método resumeRequest() ..................................................................................................12
VIII. Conclusiones ...............................................................................................................13
Bibliografía .................................................................................................................................13
I. Introducción
Uno de los factores del éxito de Java como lenguaje de programación se debe a su
conocido lema “Write Once, run everyehere” (Escribe una vez, ejecuta en todos lados).
Esto, debido a que Java se desarrolló con el enfoque de ser un lenguaje “universal” que
se ejecuta indistintamente del hardware y del sistema operativo. Todo esto posible
gracias a la implementación de la Java Virtual Machine. Sin embargo, con el lanzamiento
de dispositivos móviles con sistemas operativos propios y recursos limitados, es que
surge la necesidad de utilizar un lenguaje más ligero y eficiente en el que se pueda
programar aplicaciones para estos.
Es por ello que en 1999 Sun Microsystems (luego adquirida por Oracle) lanza una nueva
versión de Java adaptada a estas necesidades. La J2ME o Java 2 Micro Edition es una
versión de Java más ligera que se enfoca en el desarrollo para dispositivos de pocos
recursos, esto es: teléfonos, tabletas, relojes, dispositivos inteligentes, etc.
Cabe resaltar que, debido al aumento en las capacidades de los teléfonos y tabletas
modernos, ya no es necesario el uso de J2ME en estos dispositivos y se usa la versión
standard, sin embargo, aún es utilizado en algunos dispositivos con menos recursos
como relojes y otros dispositivos inteligentes.
1
II. ¿Qué es Java 2 ME?
Antes de definir qué es J2ME, repasaremos las distintas versiones de Java y
estableceremos sus principales diferencias.
Esta edición de Java es la que en cierta forma recoge la iniciativa original del lenguaje
Java.
Esta versión está orientada al entorno empresarial. El software empresarial tiene unas
características propias marcadas: está pensado no para ser ejecutado en un equipo, sino
para ejecutarse sobre una red de ordenadores de manera distribuida y remota mediante
EJBs (Enterprise Java Beans). De hecho, el sistema se monta sobre varias unidades o
aplicaciones. En muchos casos, además, el software empresarial requiere que se sea
capaz de integrar datos provenientes de entornos heterogéneos. Esta edición está
orientada especialmente al desarrollo de servicios web, servicios de nombres,
persistencia de objetos, XML, autenticación, APIs para la gestión de transacciones, etc.
El cometido de esta especificación es ampliar la J2SE para dar soporte a los requisitos de
las aplicaciones de empresa.
Habiendo repasado los conceptos de las otras versiones de Java, ahora podemos definir
qué es y en qué está enfocada la J2ME.
Para simplificar, J2ME es entonces una “versión reducida” de Java Standard Edition.
2
III. Componentes
Al ser una versión para pequeños dispositivos, J2ME está compuesto de distintos
componentes que pueden variar (principalmente las máquinas virtuales) de un
dispositivo a otro.
3
La figura representa el entorno de ejecución de una aplicación J2ME que va desde una
capa de abstracción más alta (los perfiles) a una más baja (Sistema operativo).
KVM (Kilobyte virtual machine): Es la máquina virtual más pequeña desarrollada por
Sun, utilizada por dispositivos con configuración CLDC. Su nombre hace referencia al
poco espacio de memoria requerido por esta para ejecutarse (entre 40 y 80 Kb).
4
La KVM puede ser compilada y probada en 3 plataformas distintas: Solaris Operating
Environment, Windows 3, PalmOs.
CVM (Compact virtual machine): Ha sido tomada como Máquina Virtual Java de
referencia para la configuración CDC y soporta las mismas características que la
Máquina Virtual de J2SE. Está orientada a dispositivos electrónicos con procesadores de
32 bits de gama alta y en torno a 2Mb o más de memoria RAM. Las características que
presenta esta Máquina Virtual son:
V. Configuraciones
Una configuración es el conjunto mínimo de APIs Java que permiten desarrollar
aplicaciones para un grupo de dispositivos. Estas APIs describen las características
básicas, comunes a todos los dispositivos como: Características soportadas del lenguaje
de programación Java y por la Máquina Virtual Java, bibliotecas básicas de Java y otras
APIs soportadas.
Como ya hemos visto con anterioridad, existen dos configuraciones en J2ME: CLDC,
orientada a dispositivos con limitaciones computacionales y de memoria y CDC,
orientada a dispositivos con no tantas limitaciones.
a. Procesador de 32 bits.
b. Disponer de 2 Mb o más de memoria total (incluyendo memoria RAM y ROM).
c. Poseer la funcionalidad completa de la Máquina Virtual Java2.
d. Conectividad de red.
La CDC está basada en J2SE e incluye varios paquetes Java de la edición estándar. Las
peculiaridades de la CDC están contenidas principalmente en el paquete
5
javax.microedition.io, que incluye soporte para comunicaciones http y basadas en
datagramas.
Ya hemos dicho que CLDC está orientado a dispositivos con ciertas restricciones. Algunas
de estas restricciones vienen dadas por el uso de la KVM, necesaria al trabajar con la
CLDC debido a su pequeño tamaño.
Los dispositivos que usan CLDC deben cumplir los siguientes requisitos:
6
La siguiente tabla nos muestra las librerías incluídas en CLDC
Hay que ter en cuenta que una determinada Configuración no se encarga del
mantenimiento del ciclo de vida de la aplicación, interfaces de usuario o manejo de
eventos, sino que estas responsabilidades caen en manos de los perfiles.
VI. Perfiles
El perfil es el que define las APIs que controlan el ciclo de vida de la aplicación, interfaz
de usuario, etc. 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, 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.
En la imagen anterior se muestran los distintos perfiles que existen para cada
configuración.
1. Foundation Profile:
Este perfil define una serie de APIs sobre la CDC orientadas a dispositivos que carecen
de interfaz gráfica como, por ejemplo, decodificadores de televisión digital. Este perfil
incluye gran parte de los paquetes de la J2SE, pero excluye totalmente los paquetes
“java.awt” Abstract Windows Toolkit (AWT) y “java.swing” que conforman la interfaz
gráfica de usuario (GUI) de J2SE. Si una aplicación requiriera una GUI, entonces sería
necesario un perfil adicional. Los paquetes que forman parte del Foundation Profile se
muestran en la siguiente tabla.
7
2. Personal Profile:
El Personal Profile es un subconjunto de la plataforma J2SE, y proporciona un entorno
con un completo soporte gráfico AWT. El objetivo es el de dotar a la configuración CDC
de una interfaz gráfica completa, con capacidades web y soporte de applets Java. Este
perfil requiere una implementación del Foundation Profile. La siguiente tabla nos
muestra los paquetes que conforman el Personal Profile.
3. RMI Profile:
Este perfil requiere una implementación del Foundation Profile. El perfil RMI soporta un
subconjunto de las APIs JSE RMI, aunque algunas características de estas APIs se han
eliminado del perfil RMI debido a las limitaciones de cómputo y memoria de los
dispositivos.
Las siguientes propiedades se han eliminado del J2SE RMI:
a. Java.rmi.server.disableHTTP.
b. Java.rmi.activation.port.
c. Java.rmi.loader.packagePrefix.
d. Java.rmi.registry.packagePrefix.
e. Java.rmi.server.packagePrefix.
4. PDA Profile:
El PDA Profile está construido sobre CLDC. Pretende abarcar PDAs de gama baja, tipo
Palm, con una pantalla y algún tipo de puntero (ratón o lápiz) y una resolución de al
menos 200x100 pixels con un factor 2:1.
8
5. Mobile Informa ion Device Profile (MIDP):
Este perfil está construido sobre la configuración CLDC. Al igual que CLDC fue la primera
configuración definida para J2ME, MIDP fue el primer perfil definido para esta
plataforma. Este perfil está orientado para dispositivos con las siguientes características:
a. Reducida capacidad computacional y de memoria.
b. Conectividad limitada (en torno a 9600 bps).
c. Capacidad gráfica muy reducida (mínimo un display de 96x54 pixels monocromo).
d. Entrada de datos alfanumérica reducida.
e. 128 Kb de memoria no volátil para componentes MIDP.
f. 8 Kb de memoria no volátil para datos persistentes de aplicaciones.
g. 32 Kb de memoria volátil en tiempo de ejecución para la pila Java.
Los tipos de dispositivos que se adaptan a estas características son: teléfonos móviles,
buscapersonas (pagers) o PDAs de gama baja con conectividad. El perfil MIDP establece
las capacidades del dispositivo, por lo tanto, especifica las APIs relacionadas con:
Las aplicaciones que realizamos utilizando MIDP reciben el nombre de MIDlets. Decimos
así que un MIDlet es una aplicación Java realizada con el perfil MIDP sobre la
configuración CLDC. Este es el punto de referencia para cualquier programador de J2ME.
VII. MIDlet
Como se vio anteriormente, un MIDlet es una aplicación desarrollada en J2ME y
construida sobre la configuración CLDC utilizando el perfil MIDP.
a. Componentes y contenedores
Los componentes son elementos que tienen una determinada interfaz, y los
contenedores son la infraestructura que da soporte a estos componentes.
9
componentes no se ejecutan como una aplicación independiente (stand-alone),
sino que son ejecutados dentro de una aplicación ya existente, que será el
contenedor.
En este estado el midlet debe mantener los recursos mínimos posibles liberando
los demás para que sean utilizados por el dispositivo con la nueva aplicación
activa.
Ejemplo: Cuando entra una llamada al teléfono móvil durante la ejecución del
midlet.
Será el AMS quién se encargue de controlar este ciclo de vida, es decir, quién
realice las transiciones de un estado a otro. Nosotros podremos saber cuándo
hemos entrado en cada uno de estos estados porque el AMS (Administration
Managament System) invocará al método correspondiente dentro de la clase
del MIDlet.
Método startApp()
Es un método abstracto, debe ser definido por el MIDlet para reservar todos los
recursos y establecer los valores iniciales de los atributos que vaya a necesitar
en su estado activo.
Debe tenerse en cuenta que este método puede ejecutarse en varias ocasiones:
cuando se inicia por primera vez el MIDlet y cada vez que el MIDlet pase de
estado pausado a estado activo. Esto es particularmente importante al
momento de decidir donde realizar la creación de ciertos objetos (en este
método o en el constructor del MIDlet).
Como regla general, en el método startApp() se reservarán los recursos que son
liberados en el método pauseApp(). Debemos tener en cuenta que el
constructor MIDlet crea una instancia de la clase Display (pantalla del
dispositivo) solamente en el primer llamado al método startApp(). Pues en los
siguientes llamadas al método startApp() el objeto Display seguirá siendo el
mismo que el utilizado antes de la pausa.
Método pauseApp()
11
Igual que en el caso anterior, si se produce una excepción de tipo
RuntimeException durante la ejecución de este método, el MIDlet se destruirá.
Método destroyApp(boolean)
Método notifyDestroyed()
Método notifyPaused()
Este método le informa a sistema operativo que el MIDlet desea pasar a estado
paused. Únicamente puede ser invocado cuando el MIDlet se encuentre en
estado active. Tiene la misma funcionabilidad de la invocación del método
pauseApp() por parte del dispositivo.
Método resumeRequest()
La invocación de este método acostumbra a ser provocada por una tarea que se
ejecuta en segundo plano, un temporizador o un evento de origen externo
12
VIII. Conclusiones
Respecto al desarrollo en J2ME, se logró entender la arquitectura de este tipo de
aplicaciones y como se logra reducir la versión estándar de Java a una versión más ligera
y mucho menos demandante. Además de como estas aplicaciones (MIDlet) manejan los
recursos limitados a través de estados y cuál es el ciclo de vida de estas.
Del presente informe también se puede inferir que J2ME fue una gran innovación y una
de las pioneras en el desarrollo para dispositivos móviles. Este era el lenguaje de
programación en el que se desarrollaban todo tipo de aplicaciones para teléfonos de la
época. Sin embargo, debido al avance tecnológico y las capacidades de los dispositivos
móviles, ha dejado de usarse masivamente. A pesar de ello, se pueden abstraer algunas
metodologías para desarrollos futuros de aplicaciones que puedan funcionar en gran
cantidad de dispositivos sin la necesidad de hardware potente.
IX. Bibliografía
AMS Introduction. (2012). Recuperado el 25 de Mayo de 2019, de Oracle Java ME
Embedded Application Management System API Guide:
https://docs.oracle.com/javame/config/cldc/rel/3.4/core/ams/html/ams/ams_f
actory_class.htm
Gálvez Rojas, S., & Ortega Díaz, L. (2003). Java a tope: J2ME (Java 2 Micro Edition). Madrid:
Universidad de Málaga.
Oracle. (s.f.). ¿Cómo puedo obtener Java para dispositivos móviles? Recuperado el 29 de
Mayo de 2019, de Java:
https://www.java.com/es/download/faq/java_mobile.xml
13