Programación de juegos para móviles con J2ME

En este cap�tulo vamos a construir y ejecutar nuestro primer MIDlet. Existen diferentes herramientas v�lidas para construir programas bajo el standard J2ME, como el propio �Sun One Studio� de Sun Microsystems o �Jbuilder� de Borland. Nosotros vamos a valernos del �J2ME Wireless Toolkit 2.0� que proporciona Sun. Este entorno es el m�s sencillo de utilizar, y aunque no nos ofrece una gran potencia a la hora de desarrollar aplicaciones, no nos distraer� con grandes complejidades del principal objetivo que es aprender a hacer aplicaciones (juegos) en J2ME.

Para instalar J2ME Wireless Toolkit, primero hemos de instalar el entorno de programaci�n de J2SE (JDK). Puedes descargar la �ltima versi�n de JDK desde la URL http://java.sun.com/j2se/downloads.html. Una vez descargado e instalado, estaremos en condiciones de descargar e instalar J2ME desde la URL http://java.sun.com/j2me/download.html. El entorno de desarrollo que nos provee el Wireless Toolkit se llama KToolBar.

.�Compilando el primer MIDlet

Vamos a construir paso a paso nuestro primer MIDlet usando esta herramienta. Tras la instalaci�n del wireless toolkit, tendremos un nuevo submen� en el men� inicio con un aspecto similar a �ste:

Selecciona la aplicaci�n KToolBar e inicializa el entorno. Ver�s aparecer la ventana del entorno.

Vamos a crear un nuevo proyecto, as� que pulsamos el bot�n New Project. Nos solicitar� un nombre para el proyecto y otro para la clase principal de la aplicaci�n.

Tanto el proyecto como la clase principal se llamar�n HelloWorld, as� que introducimos este nombre en ambos cuadros de texto y pulsamos el bot�n Create Project. En este momento KToolBar crea la estructura de directorios necesaria para albergar el proyecto.

Cada una de las carpetas creadas tiene una misi�n concreta. Por ahora nos bastar� saber que nuestros archivos fuente ir�n emplazados en el directorio src, y los recursos necesarios como gr�ficos, sonidos, etc... se alojar�n en el directorio res.

A diferencia de otros entornos de programaci�n, KToolBar no cuenta con un editor integrado para editar los programas, por lo tanto vamos a utilizar uno externo. Puedes utilizar el bloc de notas de Windows o tu editor favorito. Personalmente utilizo Crimson Editor (http://www.crimsoneditor.com/), que tiene soporte para Java.

Utilizando tu editor favorito introduce el programa siguiente:


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloWorld extends MIDlet implements CommandListener {
	private Command exitCommand;
	private Display display;
	private Form screen;
	
	public HelloWorld() {
		// Obtenemos el objeto Display del midlet.
		display = Display.getDisplay(this);
		
		//  Creamos el comando Salir.
		exitCommand = new Command("Salir", Command.EXIT,2);
		
		// Creamos la pantalla principal (un formulario)
		screen = new Form("HelloWorld");
		
		// Creamos y a�adimos la cadena de texto a la pantalla
		StringItem saludo = new StringItem("","Hola Mundo...");
		screen.append(saludo);
		
		// A�adimos el comando Salir e indicamos que clase lo manejar�
		screen.addCommand(exitCommand);
		screen.setCommandListener(this);	
	}	

	public void startApp() throws MIDletStateChangeException {
		// Seleccionamos la pantalla a mostrar
		display.setCurrent(screen);	
	}
	
	public void pauseApp() {
	}
	
	public void destroyApp(boolean incondicional) {
	}
	
	public void commandAction(Command c, Displayable s) {
		// Salir
		if (c == exitCommand) {
			destroyApp(false);
			notifyDestroyed();	
		}	
	}
}

No es necesario que trates de comprender el programa ahora. Entraremos en m�s detalles un poco m�s adelante. Por ahora simplemente lo vamos a almacenar en el directorio src que ha creado KToolBar con el nombre HelloWorld.java. Es importante que el nombre sea exactamente �ste incluidas may�sculas y min�sculas. Esto es as�, ya que el nombre de la clase principal tiene que ser id�ntico al nombre del archivo que lo contiene. Una vez hecho esto, volvemos al entorno KTooBar y pulsamos el bot�n Build. Si todo va bien, aparecer� el texto Build Complete. Ya tenemos nuestro programa compilado y podemos ejecutarlo en el emulador. En el desplegable Device puedes seleccionar el emulador que quieres utilizar. El DefaultColorPhone tiene soporte de color, as� que te resultar� m�s atractivo. Pulsa el bot�n Run. Ver�s aparecer un emulador con forma de tel�fono m�vil. En la pantalla del m�vil aparece un men� con un s�lo programa llamado HelloWorld. Pulsa select para ejecutarlo.

Deber�as ver como aparece la frase Hola Mundo... en la pantalla.

Ahora que hemos comprobado que el programa funciona en el emulador, estamos listos para empaquetar el programa y dejarlo listo para descargar a un dispositivo real. En KToolBar despliega el men� project, y selecciona create package del submen� package. KToolBar nos informa de que ha creado los archivos HelloWorld.jar y HelloWorld.jad dentro del directorio bin. Estos son los archivos que habremos de transferir al tel�fono m�vil.

.�Desarrollo de MIDlets

Lo que acabamos de hacer es crear un MIDlet desde cero, aunque sin saber muy bien que es lo que est�bamos haciendo. Vamos a profundizar en los pasos que hemos seguido hasta conseguir nuestro MIDlet. El ciclo de desarrollo de un MIDlet es el siguiente:

  1. Editar
  2. Compilar
  3. Preverificar MIDlet
  4. Ejecuci�n en el emulador
  5. Ejecuci�n en el dispositivo

Como hemos visto en la primera parte del cap�tulo, utilizamos un editor de textos com�n para editar el programa. La compilaci�n la llevamos a cabo con el comando Build de la herramienta KTooBar. Cuando compilamos un programa Java, y por lo tanto un MIDlet, se genera un archivo con la extensi�n .class por cada clase, que contiene el c�digo intermedio que es capaz de ejecutar la m�quina virtual de Java. Estos archivos son almacenados en el directorio classes. El paso que sigue a la compilaci�n es preverificar las clases que se han generado. Sin esta preverificaci�n no ser� posible la ejecuci�n del MIDlet. Pero, �para qu� sirve este paso? La preverificaci�n nos asegura que no existe ning�n tipo de c�digo malintencionado que pueda da�ar o crear un comportamiento extra�o en nuestro dispositivo o en la m�quina virtual. Lo habitual es que la m�quina Java sea lo suficientemente robusta como para que no haya ning�n problema en este sentido, pero debido a que los dispositivos J2ME no tienen demasiada capacidad de proceso, es necesario que la m�quina virtual sobre la que se ejecutan los MIDlets (llamada K Virtual Machine o KVM) sea lo m�s eficiente posible, por lo que se han eliminado muchas de las comprobaciones que realizan las m�quinas virtuales habitualmente.

Ahora que hemos compilado y preverificado nuestro MIDlet, ya podemos ejecutarlo en el emulador. Esto lo hacemos con el comando Run de la herramienta KTooBar. Si ahora queremos ejecutarlo en el dispositivo real, hemos de realizar un paso m�s. Los MIDlets tienen que ser distribuidos en dos archivos especiales. Son los archivos JAR y los archivos JAD. Un archivo JAR es un archivo comprimido (en formato ZIP) que contiene las clases (.class) que ha generado la compilaci�n de nuestro programa. Adem�s puede contener los recursos necesarios para el MIDlet como sonidos, gr�ficos, etc... Finalmente, contiene un archivo con extensi�n .mf., es lo que se llama un archivo de manifiesto. Este archivo contiene informaci�n sobre las clases contenidas en el archivo JAR.

El segundo archivo necesario para la distribuci�n de MIDlets son los archivos JAD. El archivo JAD contiene informaci�n necesaria para la instalaci�n de los MIDlets contenidos en el archivo JAR. Un archivo puede contener m�s de un MIDlet. Cuando ocurre esto, hablamos de un MIDlet suite. Podemos editar los par�metros contenidos en el archivo JAD mediante el bot�n Settings de KTooBar. Aqu� podemos editar informaci�n del MIDlet como el nombre, la versi�n o el autor del MIDlet (o de los MIDlets).

S�lo nos resta transferir los archivos JAR y JAD al dispositivo J2ME. Hay varias formas de hacerlo dependiendo de la marca y modelo del dispositivo. Si el tel�fono tiene soporte de infrarrojos o bluetooth, y tu ordenador tiene puerto IrDA o bluetooth, podr�s transferirlo f�cilmente sin necesidad de cable alguno. Si no, tendr�s que recurrir a un cable de datos (consulta el manual de tu tel�fono). Otra posibilidad es poner los archivos JAR y JAD en un servidor wap o un espacio web y descargarlo desde tu m�vil. Para ello es necesario que el dispositivo tenga un navegador wap o web y soporte GPRS para una descarga fiable.

.�Anatom�a de un MIDlet

Si estas familiarizado con la programaci�n de applets, conoces las diferencias que tiene con respecto a una aplicaci�n Java normal. La primera es que un applet se ejecuta sobre un navegador web. Otra importante es que, a diferencia de un programa Java est�ndar, un applet no tiene un m�todo main(), adem�s, un applet tiene que ser una subclase de la clase Applet, e implementar unos m�todos concretos (init, start, stop, destroy). En este sentido, un MIDlet es m�s parecido a un applet que a una aplicaci�n Java est�ndar. Un MIDlet tiene que ejecutarse en un entorno muy concreto (un dispositivo con soporte J2ME), y tampoco cuenta con un m�todo main(). Un MIDlet tiene que heredar de la clase MIDlet e implementar una serie de m�todos de dicha clase.

Concretamente, la clase de la que ha de heredar cualquier MIDlet es javax.microedition.midlet.MIDlet Hay tres m�todos heredados que son particularmente importantes:

  • startApp()
  • pauseApp()
  • destroyApp()

Un MIDlet puede estar en tres estados diferentes: en ejecuci�n, en pausa o finalizado. Dependiendo del estado en el que est�, la m�quina virtual llamar� al m�todo correspondiente, es decir, startApp() cuando entre en ejecuci�n, pauseApp() cuando el MIDlet entre en pausa y destroyApp() a la finalizaci�n del MIDlet. F�jate en nuestro ejemplo c�mo hemos implementado los tres m�todos. Incluso si no vamos a hacer uso de ellos, es obligatorio declararlos.

En nuestro programa de ejemplo, no s�lo importamos la clase MIDlet, tambi�n hemos importado las clases de javax.microedition.lcdui.*. Estas clases dan soporte para la interfaz de usuario. Nos va a permitir controlar la pantalla del dispositivo y tambi�n la entrada/salida desde el teclado. En el siguiente cap�tulo nos introduciremos en m�s profundidad en la interfaz de usuario

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO