Actualizado el 26 de Octubre del 2020 (Publicado el 7 de Mayo del 2017)
2.295 visualizaciones desde el 7 de Mayo del 2017
408,2 KB
9 paginas
Creado hace 16a (15/01/2009)
J2ME Programando un cronómetro para nuestro celular
A lo largo de este apunte veremos como desarrollar una aplicación que sea capaz de correr en un teléfono
celular (MIDlet). Para ello haremos uso del entorno de desarrollo que Sun Microsystem dispone para
programar en dispositivos de bajos recursos: J2ME, hoy llamado JME y el IDE NetBeans 6.5.
¿Qué es J2ME?
J2ME (Java 2 Micro Edition) es un subconjunto del popular lenguaje Java, más precisamente de J2SE
(Java 2 Standar Edition). Este subconjunto fue adaptado y contiene nuevas funcionalidades para permitir el
desarrollo de aplicaciones destinadas a dispositivos electrónicos con escasos recursos de memoria, proceso
y display.
Las características mas sobresalientes de J2ME son:
● Inspirado en C++.
● Es completamente orientado a objetos.
● Es multiplataforma, genera bytecodes que serán interpretados independientemente del celular por
una JVM (Java Virtual Machine).
● Es software libre.
Arquitectura del entorno de ejecución de J2ME.
Se suele asociar a J2ME con la programación de celulares, sin embargo J2ME apunta a todos aquellos
dispositivos que no cumplan con los requisitos necesarios para correr la máquina virtual de J2SE.
J2ME dispone de dos configuraciones. Cada fabricante de dispositivos que desea soportar J2ME debe
decidir que configuración implementará, dependiendo de las características de su producto. Las dos
configuraciones de J2ME son CDC y CLDC.
Una configuración es el conjunto mínimo de APIs que permiten desarrollar aplicaciones para un grupo
de dispositivos. Por ejemplo la configuración CLDC (Connected Limited Device Configuration) está
enfocada a dispositivos con limitaciones en procesamiento, memoria y pantalla como ser celulares, pagers,
PDAs o agendas electrónicas; mientras que la configuración CDC se enfoca a dispositivos con mayores
recursos que poseen procesadores de 32 bits, y más de 2MB de memoria, en esta configuración trabajan los
decodificadores de TV digital, palms, televisores con internet y electrodomésticos inteligentes.
Como verán, la configuración que implementan los celulares es CLDC. Cada configuración tiene su
propia máquina virtual encargada de correr las aplicaciones. La máquina virtual de la configuración CLDC
es la KVM (Kilo Virtual Machine), cuyas características son las siguientes:
La KVM es la máquina virtual mas pequeña desarrollada por Sun Microsytem.
● Ocupa entre 40Kb y 80Kb.
● No soporta punto flotante.
● Escrita en lenguaje C.
● Posee alta portabilidad.
Por último, la arquitectura de J2ME, puntualmente la configuración CLDC, que es la que nos interesa, se
bifurca en 2 perfiles: PDA Profile y MID Profile.
Un perfil es un conjunto de APIs orientado a un ámbito de aplicación determinado. El perfil estipula las
librerías necesarias para implementar una aplicación en una clase abstracta de dispositivos, como por
ejemplo en teléfonos celulares. Los perfiles engloban un grupo de dispositivos según la funcionalidad que
proporcionan. Para teléfonos celulares existe un único perfil llamado MIDP (Mobile Information Device
Profile). MIDP nos provee las clases y funciones necesarias para que el usuario ejecute una aplicación en el
celular.
A continuación podemos apreciar gráficamente la arquitectura de ejecución de J2ME:
Para que quede mas clara la diferencia entre un perfil y una configuración podemos decir que una
configuración implica la máquina virtual a implementar y las librerías disponibles para una familia de
dispositivos con características en común, como pagers, PDAs o celulares, mientras que un perfil establece
las APIs que se utilizarán para programar en un tipo de dispositivo genérico, por ejemplo, en un teléfono
celular. Es por ello que debemos tener en claro que configuración usar y que perfil. En nuestro caso la
configuración será CLDC y el perfil MIDP.
Creación del MIDlet a través de NetBeans 6.5
Bueno mucha teoría, seguro quieren ver de que trata el código, paciencia, ya arrancamos. Vimos ya que
un Midlet es un programa capaz de correr en un teléfono celular. Así como a las aplicaciones Java que
corren en un navegador web se las llama Applets y a las que se ejecutan en un servidor Servlets, a las que
se ejecutan utilizando el perfil MIDP se las denominan MIDlets.
Para crear nuestro cronómetro debemos disponer del siguiente software:
● Java SE Runtime Environment (JRE) 6 Update 11
● Java SE Development Kit (JDK) 6 Update 11
● NetBeans IDE 6.5 con plugin JME
Todos el software está disponible gratuitamente en la web de Sun www.sun.com.
Los dos IDEs más populares que soportan J2ME son Eclipse y NetBeans. Para la construcción de la
aplicación que propongo en este artículo opte por NetBeans, dicho sea de paso, NetBeans ha cumplido 10
años en octubre de 2008, lo cual se refleja en la pantalla de bienvenida de la versión 6.5.
Punto de partida
Iniciamos NetBeans y vamos al menú Proyecto Nuevo, en la ventana, que se muestra a continuación,
seleccionamos en categorías, J2ME y en Proyectos, Mobile Application:
A continuación nos pedirá el nombre del proyecto, ponemos aquí MIDletCronometro y quitamos el tilde
en Create Hello MIDlet para evitar que nuestro MIDlet ya arranque con la programación básica del típico
“Hola Mundo”. Llegamos ahora al punto en que tenemos que seleccionar la versión tanto de la
configuración como del perfil, también es posible seleccionar un emulador de celular para probar la
aplicación. Como mi celular trabaja con la configuración CLDC 1.0 y el perfil MIDP 2.0 son estos los
parámetros que selecciono. Clic en siguiente, clic en terminar y por fin estamos listos para teclear código.
La programación J2ME es orientada a objetos, escapa del alcance de este artículo explicar que es una
clase, un objeto, un método, una instancia, un constructor y herencia de clases. Si no comprenden estos
términos les aconsejo que investiguen antes de continuar con la lectura de este artículo.
Es momento ahora de crear una clase cuyo nombre debe ser el mismo del proyecto y debe heredar de la
clase MIDlet. Para crear esta clase nos dirigimos a la ventana Proyectos y seleccionamos Nueva Clase Java
desde el menú contextual de Source Packages, <paquete predeterminado>. La captura siguiente refleja lo
dicho anteriormente:
Antes de continuar, es importante no olvidar configurar las propiedades del MIDlet para que la clase de
inicio sea la recién creada, si no lo hacemos nuestra clase nunca se instanciará. Para ello vamos al menú
Archivo → Project Properties, para luego dirigirnos a la categoría Application Descriptor, y, previa
selección de la solapa MIDlet, pulsamos sobre el botón Add para seleccionar nuestra única clase. Asi
debería quedarnos:
Volvemos a la ventana de código que ya contiene la definición de la clase MiDletCronometro. Es
momento ahora de importar a nuestro proyecto las clases necesarias para, en primer lugar, implementar un
MIDlet, y en segundo lugar, diseñar la interfaz gráfica de alto nivel. También indicaremos que nuestro
MIDlet hereda de la clase MIDlet, y será nuestra clase MIDletCronometro quien manejará los eventos que
disparen cada uno de lo botones de comandos que próximamente incorporaremos. El código entonces inicia
así:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MIDletCronometro extends MIDlet implements CommandListener {
}
Una clase que hereda de la clase MIDlet estará en uno de tres estados: Activo, Pausado o Destruido. Es
necesario implementar estos métodos aún si no contienen programación, lo hacemos en el interior de la
clase MIDletCronometro (dentro de las llaves):
public void startApp(){
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional){
}
Bien, seguramente el IDE debe estar resaltando lineas a lo loco, esto es normal, ya que queda mucho por
programar y el código está incompleto, de a poco los errores irán desapareciendo a medida que ingresemos
programación, paciencia.
Vamos ahora a definir los objetos de nuestra clase. Pensemos entonces que objetos necesitamos para
implementar nuestro cronómetro:
● Un objeto Display, que tendrá una referencia al display o pantalla del celular donde correrá la
aplicación.
● Un objeto Form, que será el formulario que visualizaremos en la pantalla. Sobre este formulario
incorporaremos el resto de los objetos que menciono a continuación.
● 4 objetos Command (botones para desencadenar procesos), uno para iniciar el cronómetro, otro para
salir del programa, otro para detener el cronómetro y otro para reiniciarlo.
● Un objeto TextField que será en donde se visualizará el tiempo transcurrido.
● Un objeto Cronometro, que no existe en java y lo debemos crear nosotros. Por ahora pensemos que
un objeto cronómetro debe ser capaz de iniciar el conteo, detenerlo y mostrar el tiempo transcurrido
en algún otro objeto.
Estos objetos los declaramos como privados de nuestra clase y los instanciamos desde el constructor de
la misma:
public class MIDletCronometro extends MIDlet implements CommandListener {
private Form formulario;
private Display pantalla;
private Command cmdIniciar;
private Command cmdSalir;
private Command cmdParar;
private Command cmdReiniciar;
private TextField txtVisor;
private Cronometro cronometro;
public MIDletCronometro(){
pantalla=Display.getDisplay(this);
formulario=new Form("Cronómetro");
cmdIniciar=new Command("Iniciar",Command.OK,0);
cmdSalir=new Command("Salir",Command.EXIT,1);
cmdParar=new Command("Parar",Command.STOP,0);
cmdReiniciar=new Command("Reiniciar",Command.OK,1);
txtVisor=new TextField("Cronómetro","00:00:00:00",15,TextField.ANY);
formulario.addCommand(cmdSalir);
formulario.addCommand(cmdIniciar);
formulario.setCommandListener
Comentarios de: J2ME Programando un cronómetro para nuestro celular (0)
No hay comentarios