Professional Documents
Culture Documents
Proyecto final
Proyecto final
Preguntas interpretativas
Por qu un dispositivo MIDP debe estar conectado a una red, como por ejemplo,
la red WAP? (2 puntos)
Un dispositivo MIDP, por ejemplo un telfono celular, debe estar conectado a una red (o
al menos tener algn tipo de acceso a una red) porque los complementos o aplicaciones
(MIDlets) requeridos para su operacin estn generalmente alojados en uno o ms
servidores remotos, desde los cuales deben ser descargados para ser instalados en el
mismo. Tambin es posible que esos recursos estn disponibles en otro dispositivo mvil
cercano, en cuyo caso tambin se requiere alguna forma de conexin en red para
obtenerlos, as sea mediante la creacin de una red adhoc o temporal, como sucede en un
entorno Bluetooth.
En el caso especfico de una red WAP, la conexin entre el dispositivo mvil (que acta
como cliente) y el servidor remoto requiere de un navegador y una pasarela o puerta de
enlace (gateway). Esta ltima constituye la interfaz entre la red inalmbrica y la red fsica
(generalmente Internet), mientras que el navegador constituye la interfaz entre el
dispositivo mvil y el usuario. El navegador WAP le permite al usuario buscar, localizar
y descargar lo que necesita. Adems de navegadores WAP, los dispositivos mviles
modernos cuentan con otras herramientas para descargar contenidos de Internet y otras
redes, incluyendo navegadores ms complejos estilo Google Chrome, as como cables de
datos e interfaces inalmbricas de RF (radiofrecuencia), IR (infrarrojos), etc. Todos estos
escenarios implican transacciones en entornos de red.
Cada tipo de configuracin de Java (CDC o CLDC) tiene sus propios perfiles o conjuntos
de APIs porque cada una utiliza una mquina virtual diferente (CVM o KVM,
respectivamente) y est dirigida a dispositivos con diferentes capacidades
computacionales (alta para CDC y limitada para CLDC). Esto implica que un dispositivo
con configuracin CDC tiene una funcionalidad distinta a la de un dispositivo con
configuracin CLDC, y realiza (o puede realizar) tareas o actividades muy diferentes y/o
con un mayor grado de complejidad. Por esta razn, cada configuracin debe tener y
ejecutar sus propios perfiles, los cuales pueden o no ser compatibles con los perfiles de la
otra configuracin.
Preguntas argumentativas
Los telfonos celulares, tanto los convencionales como los inteligentes, son los
dispositivos mviles por excelencia en J2ME por su ubicuidad (estn en todas partes y
disponibles en todo momento) y, principalmente, por la gran cantidad de aplicaciones
que pueden soportar. De hecho, los celulares modernos sirven no solamente para llamar
por telfono, en el sentido convencional del trmino, sino que tambin permiten navegar
por Internet, enviar y recibir mensajes de texto y de correo electrnico, usar programas
de computador, jugar, chatear, revisar cuentas bancarias, hacer compras, tomar y guardar
fotografas y videos, leer documentos, mantenerse en contacto con redes sociales y
corporativas, grabar y escuchar msica, sintonizar emisoras de radio, ver televisin, llevar
agendas de contactos y compromisos, etc. Incluso muchos celulares avanzados
incorporan sensores capaces de detectar y enviar datos en tiempo real, tal como la
ubicacin geogrfica o el ritmo cardaco del usuario. Todas estas aplicaciones, unidas a
lo que algunos llaman el techno-lust (el constante deseo de los usuarios por tener gadgets
tecnolgicos cada vez ms llamativos, rpidos y con ms prestaciones), constituyen un
escenario particularmente atractivo y apropiado para la tecnologa J2ME (y obviamente
para los fabricantes y operadores de equipos de telefona celular).
Los telfonos celulares son actualmente los dispositivos mviles ms utilizados del
mundo, por encima de las agendas digitales (PDAs), las computadoras de mano
(palmtops), las consolas de juegos, los buscapersonas (beepers o pagers) y otros
similares. Actualmente hay ms de 1.8 billones de celulares en el planeta, una cifra 3
veces superior a la cantidad de computadores de todo tipo existentes. Las tendencias
indican que este crecimiento continuar a un ritmo vertiginoso y muy pronto los celulares
reemplazarn a los notebooks (ya lo hicieron con las palmtops). Los estudios indican, por
ejemplo, que en Estados Unidos los jvenes prefieren la comunicacin por SMS
(mensajes de texto) que por e-mail (considerada obsoleta) y que actualmente en Japn
ms personas se conectan a Internet desde telfonos mviles que desde computadores.
Situaciones similares se viven en otros pases desarrollados y en vas de desarrollo. Las
comunicaciones mviles sern la forma predominante de comunicacin en el futuro
inmediato, lo cual asegura la vigencia de J2ME por mucho tiempo.
Decimos que un MIDlet es una aplicacin JAVA realizada con el perfil MIDP
sobre la configuracin CLDC. Con sus palabras, explique el significado de esta
afirmacin. (2 puntos).
En general, para desarrollar una aplicacin en J2ME para un dispositivo mvil se requiere
la combinacin de 3 elementos o entidades: una mquina virtual, una configuracin y un
perfil. La mquina virtual (KVM o CVM) que se instala en el dispositivo depende
principalmente de sus capacidades de hardware, incluido su tamao de memoria. Una
vez especificada la mquina virtual, queda automticamente definida la configuracin
(CLDC o CDC) que debe utilizarse. Esta ltima, a su vez, condiciona automticamente
los perfiles que pueden ejecutarse sobre ella.
Preguntas propositivas
Hemos visto que a travs del curso usaremos varias herramientas freeware para la
programacin de dispositivos mviles. Estas herramientas sern usadas a lo largo
del curso, y sobre todo, para el proyecto final. Cree un pequeo manual en el que,
con sus palabras, indique cuales son las herramientas usadas y una breve
descripcin del uso de cada una de ellas. Aada a su pequeo manual, fotos de la
instalacin de este software en su computador. (2 puntos).
MANUAL INFORMATIVO
Para programar dispositivos mviles con J2ME, es decir compilar y ejecutar las
aplicaciones (MIDlets) en Java que, en nuestro caso, sern instaladas principalmente en
telfonos celulares, se necesita descargar e instalar, como mnimo, el siguiente grupo de
herramientas de software, todas ellas de distribucin gratuita (freeware) por parte de
Oracle (www.oracle.com), la compaa propietaria desde 2009 de Sun Microsystem, los
creadores originales de la plataforma de programacin Java:
dispositivos mviles con J2ME sino tambin los aplicaciones con J2SE y dems
versiones de Java.
La plataforma JDK, por su parte, proporciona los elementos esenciales para
cualquier desarrollo en Java, incluso si no se dispone de un entorno visual como
el IDE NetBeans. Incluye la mquina virtual de java (JVM), el compilador de
Java (javac), el intrprete de Java (java), el visor de applets (Appletviewer) y el
generador de la documentacin de las clases Java de cada programa (javadoc),
adems de otras herramientas auxiliares, como el desensamblador de clases
(javap) y el depurador de bugs (jdb).
La versin ms reciente de ambas plataformas (JDK 7 + NB 7.0.1) se puede
descargar en un archivo nico de instalacin de la siguiente direccin:
http://www.oracle.com/technetwork/java/javase/downloads/jdk-7-netbeans-download-
432126.html
Figura 1. Plataforma JDK 7 e IDE NetBeans 7.0.1. (a) Pagina de descarga ; (b) Inicio
de instalacin ; (c) Fin de instalacin ; (d) Abriendo NetBeans ; (e) Entorno de Netbeans
con un Applet sencillo ejecutado ; (f) Confirmando la versin de JDK instalada desde la
ventana de comando
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-
downloads-javame-419430.html#sun_java_me_sdk-3.0-rr-oth-JPR
Figura 2. Plataforma Java ME SDK 3.0 (a) Descarga ; (b) Inicio de la instalacin ; (c)
Fin de la instalacin ; (d) Abriendo la plataforma ; (e) Entorno con un proyecto de
ejemplo cargado ; (f) Notificacin que aparece en la barra de tareas para indicar que el
administrador de dispositivos de la plataforma ha sido iniciado.
Los APIs de la configuracin CLDC y del perfil MIDP. Estas herramientas son
realmente opcionales porque ya vienen incluidas en la plataforma Java ME SDK
3.0. Bsicamente, el CLDC, adems de proveer las libreras usuales, genera la
mquina virtual K (KVM). Sobre esta configuracin se instala el perfil MIDP,
que es el encargado de proveer la funcionalidad final al dispositivo mvil. Se
utilizan principalmente para probar de forma rpida, desde la lnea de comandos
y sin necesidad de disponer de un emulador, la ejecucin y la lgica de programas
simples que no necesitan de capacidades grficas. Las versiones ms recientes de
estos programas (CLDC 1.1 y MIDP 2.0) se pueden descargar de la siguiente
direccin:
http://www.oracle.com/technetwork/java/javame/javamobile/download/overview/index.
html
Figura 3. Detalle de la pgina de descarga del perfil MIDP 2.0 y la configuracin CLDC
1.1 para dispositivos mviles de recursos limitados.
REFERENCIAS:
https://tamher.wordpress.com/
http://tuzonasistema.blogspot.com/
ADJUNTO A LA ACTIVIDAD 1
Preguntas interpretativas
Clase, objeto, mtodo, campo, pila, hilo, RAM, ROM, Sandbox, Clase y sistema
operativo, son definiciones que deben ser manejadas para entender la
programacin de dispositivos mviles. Explique cul es la relacin entre cada
una de estas definiciones y el tema visto en el curso (Ojo, no es copiar la
definicin, sino que, a partir de ellas, se explique cmo se relaciona dicha
definicin con la programacin de dispositivos mviles). (2 puntos).
Contestacin 2:
Al programar dispositivos mviles, necesitamos mtodos de ciertos
objetos que creamos de una clase, todo esto genera procesos los cuales
ejecutan hilos, estos son almacenados en memoria, por seguridad para
su ejecucin se utiliza la Sandbox la cual hace una validacin para
permitir que los procesos se ejecuten:
Clase: Se relaciona porque en la POO el corazn de este tipo de
programacin es la clase. Y como el lenguaje que estamos utilizando es java
tenemos que este es para la POO.
Objeto: Como consecuencia del inciso anterior tenemos que el objeto es una
instancia de la clase, si vamos a programar es muy importante los objetos.
Pila: Se relacionan con el tema porque la JVM/CLDC tambin recoge la
basura para optimizar la pila de recursos.
RAM: Se relaciona con el tema porque es una gran limitante (por no decir
que la mayor), a l ahora de hablar de recursos para la PDM.
ROM: Esta memoria de solo lectura tambin limita la PDM. Ya que son
menos las instrucciones predeterminadas en los Dispositivos Mviles.
Hilo: Un hilo es una caracterstica que permite a una aplicacin realizar
varias tareas a la vez. Los distintos hilos de ejecucin comparten una
serie de recursos tales como el espacio de memoria, los archivos abiertos,
situacin de autenticacin, etc. Esta tcnica permite simplificar el diseo
de una aplicacin que debe llevar a cabo distintas funciones
simultneamente.
SANDBOX: Es el mtodo o herramienta con el que se aslan los procesos,
tienen que ver con la PDM ya que es la forma en que java en Sus applets se
protege de ataques, lo mismo es para la J2ME.
Preguntas argumentativas
aplicaciones slidas como las que manejan las grandes empresas, aparte
de que posee sus propias componentes, esto implica un gran tamao, lo
cual no es lo ms prctico para un dispositivo mvil, el cual requiere
aplicaciones livianas y una mquina virtual que al igual que las aplicaciones
sea lo ms compacta posible.
Preguntas propositivas
Proponga una causa que permita explicar la existencia de una librera especfica
para la configuracin CLDC. Esto no afecta la portabilidad de los elementos? (2
puntos).
Contestacin 5:
Una causa es la que permita la transferencia de seudo-ficheros para los
Dispositivos Mviles De mayor capacidad de memoria.
Si puede afectar la portabilidad de los elementos.
Otra puede ser la necesidad de un elemento que soporte una configuracin
CLDC para esto se necesita disear libreras propias, la memoria puede ser
una limitante por tal razn se requiere que los programadores desarrollen
capacidades de memoria en libreras para no limitar su aplicabilidad y no
afectar la portabilidad de los elementos.
Preguntas interpretativas
contiene clases que manejan los estados y ciclo de vida del mismo (activo,
pausado, destruido).
Preguntas argumentativas
PAUSADO para poder iniciar todas sus clases y sus componentes, una vez el
midlet est iniciado o en estado activo, puede volver al estado pausado, ya sea
porque entra una llamada telefnica o por algn otro proceso que se le d ms
prioridad que a la aplicacin misma, tambin del mismo estado activo puede
error en tiempo de ejecucin, por interrupcin del propio usuario o para liberar
memoria para usar otra aplicacin. Es necesario que todo midlet se ejecute de
esta forma.
donde se alojan los midlets y nos provee una especie de visualizacin donde
podemos elegir los midlets o las diversas aplicaciones que queremos instalar en
Ejecucin: en este proceso el AMD ejecuta y controla los estados del midlet.
previa versin del midlet antes de su instalacin, es decir, verifica si hay una
componentes.
Preguntas propositivas
en este estado es donde el midlet acta y es donde puede realizar la ejecucin del proceso
la reproduccin se detiene pero puede iniciar nuevamente desde el mismo punto incluso
la misma imagen detenida sin tener que comenzar de nuevo desde el inicio; en este punto
el midlet est en estado de ejecucin pero la memoria no se puede ejecutar pues debe
estar disponible para otras aplicaciones que lo necesiten pues ese es el principal
por el tamao.
destruido: para no cambiar el ejemplo dado es como dar la orden de stop o incluso el
apagar el aparato se pierde la informacin y si se quiere ver de nuevo hay que comenzar
desde el inicio; el midlet est en este estado cuando ya no est en ejecucin adems se
libera la memoria voltil que gasta esta aplicacin. Cuando el midlet es llevado a este
estado no puede pasar a ningn otro como si lo hara el pausa que puede pasar a activo;
Esqueleto de un Midlet:
import javax.microedition.midlet.*;
public Ejemplo1( ) {
Fuente: http://leo.ugr.es/J2ME/MIDP/aplicaciones.htm
Ejecucin de MIDlets
Los MIDlets deben derivar de la clase abstracta javax.microedition.midlet.MIDlet, que
contiene mtodos destinados a controlar el tiempo de ejecucin de los MIDlets. Todos
los MIDlets deben tener un constructor pblico predeterminado (es decir, que no requiera
argumentos). La estructura bsica de un MIDlet se muestra a continuacin:
public EjemploMidlet(){
}
En todo momento, los posibles estados en que podra estar un MIDlet son:
pausa
activo
destruido
Para ilustrar el ciclo de vida un MIDlet y la forma en que se controla, a la vez que mostrar
el funcionamiento de las herramientas de generacin de MIDlets, vamos a considerar un
ejemplo sencillo de MIDlet, caracterizado por:
El mtodo pauseApp() se invoca al producirse una llamada telefnica, por ejemplo. Para
forzar este evento hay una opcin concreta del men MIDlet de KToolbar. Al recibirse
la llamada a este mtodo, se muestra un mensaje para seguir la traza de
funcionamiento. Se imprime el estado de trabajo de la tarea auxiliar (de la cuenta) y se
fuerza a que la hebra deje de trabajar. Este es el objetivo de la llamada
tarea.interrumpir().
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
if (primeraVez == true){
System.out.println("Ejecucion la primera vez.......");
System.out.println("Se inicia cuenta larga para
permitir pausar");
tarea=new Tarea();
tarea.start();
primeraVez=false;
}
else{
// Se reanuda la ejecucion tras salir de la pausa
System.out.println("Llamada tras pausa..... Valor de i:
"+tarea.getI());
tarea.continuar();
if (condition == true){
// Se indica la finalizacion del midlet
notifyDestroyed();
}
}
}
Tarea(){
i=0;
interrumpido=false;
finalizado=false;
}
// Se finaliza la tarea
finalizado=true;
}
Uso de KToolbar
ktoolbar
Como se ve, hemos rellenado la informacin de ambos campos de texto. Como nombre
del proyecto podemos elegir cualquiera, sin necesidad de coincidir con el nombre de la
clase principal del MIDlet. En el segundo campo de texto hemos de especificar el nombre
de la clase principal del suite que queremos ejecutar en el emulador. En este caso es
EjemploMIDlet1. En cuanto se pulsa el botn Create Project aparecer una nueva
ventana donde aparecen informaciones relativas al MIDlet.
Por tanto, lo primero que haremos ser copiar el archivo con la clase asociada al MIDlet
en el directorio $HOME/java/WTK2.2/apps/ejemplo1/src/. El icono se ubicar en el
directorio $HOME/java/WTK2.2/apps/ejemplo1/res/. Dentro de este directorio
crearemos a su vez el directorio icons. Y en l ser donde se guarde el archivo png del
icono. Para indicar que el icono del MIDlet es este, debe modificarse la informacin sobre
el icono. Para ello se pulsa el botn Settings de KToolbar. Aparecer la venta siguiente:
Aprovechamos ahora para indicar que deseamos que el MIDlet sea conforme a MIDP1.0.
Para ello se selecciona esta opcin de las disponibles al pulsar sobre Target Platform.
Para indicar el icono asociado, se selecciona la pestaa MIDlets. Una vez hecho esto
aparecer
Para poder cambiar el icono (el valor presente en la figura anterior se introduce por
defecto), basta con seleccionar la lnea con los datos (la fila que aparece rellena), con lo
que se marcar con un color diferente para indicarnos que est seleccionada:
Ahora basta con pulsar sobre el botn Edit, lo que dar lugar a la aparicin de la
ventana de edicin:
Al finalizar se pulsa sobre el botn Aceptar de la ventana de edicin. Con esto queda
registrado el cambio de la propiedad correspondiente al icono del MIDlet:
Para lanzar la ejecucin del MIDlet se pulsa sobre la tecla bajo el mensaje Launch. En
cuanto se produce esto el MIDlet se crea y el dispositivo invoca al mtodo startApp().
Esto explica los mensajes que se aprecian en la consola de KToolbar:
Para pausar el MIDlet, tras unos segundos de funcionamiento, basta con actuar sobre el
men MIDlet del emulador telefnico y seleccionar la opcin Pause. Al hacerlo el
emulador queda de la forma siguiente:
Las nuevas lneas de traza indican que se ha invocado al mtodo pauseApp(). Como
comentamos previamente, esto ocurrir al producirse una llamada de telfono sobre el
mvil, por ejemplo. Se observa el valor de la cuenta en el momento en que se produjo la
pausa. Para continuar ejecutando el MIDlet (lo que ocurrira al finalizar la llamada),
forzamos la salida del modo de pausa. Para ello volvemos a actuar sobre el men MIDlet,
seleccionado la opcin Resume. Esto hace que aparezcan nuevas lneas de traza
indicando que se ha producido una nueva llamada al mtodo startApp(), pero sin tratarse
de la primera llamada al mismo.
Si se observa el cdigo del mtodo startApp(), se aprecia que la destruccin del MIDlet
slo se producir en el caso en que ya haya finalizado la tarea de cuenta. Para asegurarnos
que esto ocurre, tras la salida del modo de pausa esperaremos unos segundos, se genera
una nueva pausa (pulsando, como se indicn previamente, sobre la opcin Pause del
men MIDlet) para, a continuacin forzar, mediante Resume (en el men MIDlet), una
nueva llamada a startApp() una vez finalizada la cuenta. Cuando esto ocurra, tendremos:
Slo cuando el MIDlet haya sido destruido de forma completa podr volver a lanzarse de
forma correcta.
BIBLIOGRAFIA: