Sei sulla pagina 1di 55

Programacin: Mi primera aplicacin para telfono mvil basada en Java (J2ME)

con NetBeans

Os explicamos en este artculo cmo desarrollar aplicaciones para mviles, PDAs


(dispositivos electrnicos con capacidades reducidas en general). Para ello os
explicamos cmo preparar un equipo con Windows 7 como sistema operativo, cmo
instalar NetBeans 6.7.1 (entorno de desarrollo) y los componentes necesarios: NetBeans
Mobility Pack y Sun Java Wireless Toolkit para desarrollar aplicaciones para mviles,
PDAs, etc.

Introduccin a Java 2 Platform, Micro Edition (J2ME).


o Configuraciones.
o Perfiles.
o Mquinas Virtuales J2ME: KVM, CVM.
o MIDlets.
Entorno de desarrollo NetBeans, instalacin de los componentes necesarios para
realizar aplicaciones Java para mviles.
o Instalacin de JDK 6 Update 17.
o Instalacin de NetBeans 6.7.1.
o Instalacin de NetBeans Mobility Pack.
o Instalacin de Sun Java Wireless Toolkit 2.5.2_01.
Cmo realizar mi primera aplicacin para telfono mvil.
o Creacin de un nuevo proyecto JavaME Mobile Application en NetBeans.
o Vistas del IDE NetBeans: Source, Screen y Flow.
Vista Flow Design.
Vista Screen Design.
Vista Source.
o Compilar y probar la aplicacin (MIDlet) en el emulador.
o Ficheros JAR y JAD.
o Cdigo fuente (source code) en Java de la aplicacin para mvil.
Artculos relacionados.
Crditos.

Introduccin a Java 2 Platform, Micro


Edition (J2ME)
Java 2 Platform, Micro Edition (J2ME) es un entorno de desarrollo robusto y flexible
enfocado a la aplicacin de la tecnologa Java en dispositivos electrnicos con

capacidades computacionales y grficas muy reducidas, tales como telfonos mviles,


PDAs (Personal Digital Assistants o asistentes personales digitales), electrodomsticos
inteligentes, TV, impresoras, etc. Esta edicin tiene unos componentes bsicos que la
diferencian de las otras versiones( Java 2 Platform, Enterprise Edition J2EE y Java 2
Platform, Standard Edition J2SE), como el uso de una mquina virtual denominada KVM
(Kilo Virtual Machine, debido a que requiere slo unos pocos Kilobytes de memoria para
funcionar) en vez del uso de la JVM (Java Virtual Machine) clsica, inclusin de un
pequeo y rpido recolector de basura.
Las tecnologas J2ME contienen un JRE altamente optimizado, especialmente
desarrollado para el mercado de gran consumo, abarcan una amplia gama de aparatos de
tamao muy reducido y permiten ejecutar programas de seguridad, conectividad y
utilidades en tarjetas inteligentes, buscapersonas, sintonizadores de TV y otros pequeos
electrodomsticos. Las tecnologas J2ME representan nicamente una parte de la gama de
productos de software de Java. Las plataformas Java relacionadas son la Plataforma Java
2, Edicin estndar (plataforma J2SE) y la Plataforma Java 2, Edicin empresa
(plataforma J2EE). La tecnologa Java ofrece, asimismo, mtodos de creacin de servicios
Web, transferencia de informacin XML, numerosos protocolos de red, kits de
herramientas y la aplicacin Java Web Start.
Aunque sera ideal contar con la API completa de J2SE disponible en un dispositivo
mvil, no es algo realista. Por ejemplo, un telfono mvil con su pantalla limitada no
puede soportar toda la funcionalidad disponible en la AWT, que es la principal interfaz
grfica de usuario (GUI) que da Java. J2ME se introdujo precisamente dirigido hacia
todos esos dispositivos que caen fuera del mbito de J2SE y J2EE. Las capacidades de
este tipo de dispositivos pueden variar mucho de unos a otros.
Una nica plataforma de Java claramente no encajara adecuadamente con todos estos
dispositivos. Es por ello que J2ME introduce dos nuevos conceptos, las configuraciones y
los perfiles.

Configuraciones
Una configuracin define una plataforma Java para un amplio rango de dispositivos. Est
directamente relacionada con una JVM. De hecho, una configuracin especfica define las
caractersticas del lenguaje Java y las libreras de la JVM que sern utilizadas.
La decisin acerca de qu configuracin aplicar sobre un dispositivo se basa
principalmente en la disponibilidad y capacidades de memoria, pantalla, conexin de red y
procesador de dicho dispositivo.
Las caractersticas tpicas de aquellos dispositivos que se ajustan a cada una de las
actuales conguraciones son:

CDC: Connected Device Conguration, con las siguientes caractersticas mnimas:

o
o
o

Un mnimo de 512 kilobytes de memoria para ejecutar Java.


Un mnimo de 256 kilobytes de memoria para ejecucin de programas.
Conexin de red, posiblemente persistente y con gran ancho de banda.
CLDC: Connected Limited Device Conguration, con los siguientes requisitos
mnimos:
o 128 kilobytes de memoria para ejecutar Java.
o 32 kilobytes de memoria para ejecucin de programas.
o Una GUI restringida.
o Tpicamente con suministro elctrico a travs de bateras.
o Conexin de red, tpicamente inalmbrica, con bajo ancho de banda y
acceso intermitente.

Perfiles
Los perfiles son bibliotecas Java de clases especficas orientadas a implementar
funcionalidades de ms alto nivel para familias especficas de dispositivos.
Un perfil es, si se quiere ver as, como una extensin de una configuracin. Proporciona a
un programador las libreras necesarias para desarrollar una aplicacin para un tipo de
dispositivo en particular. Por ejemplo, MIDP define APIs para componentes de interfaz de
usuario, manejo de entrada de datos y eventos, almacenamiento persistente,
comunicaciones y temporizadores, todo ello teniendo en cuenta las limitaciones de
pantalla y memoria de los dispositivos mviles.
El perfil es el que define las APIs que controlan el ciclo de vida de la aplicacin, interfaz
de usuario, etc. Ms concretamente, un perfil es un conjunto de APIs orientado a un
mbito de aplicacin determinado. Los perfiles identifican un grupo de dispositivos por la
funcionalidad que proporcionan (electrodomsticos, telfonos mviles, etc.) y el tipo de
aplicaciones que se ejecutarn en ellos. Las libreras de la interfaz grfica son un
componente muy importante en la definicin de un perfil. Aqu nos podemos encontrar
grandes diferencias entre interfaces, desde el men textual de los telfonos mviles hasta
los tctiles de los PDAs.
El perfil establece unas APIs que definen las caractersticas de un dispositivo, mientras
que la configuracin hace lo propio con una familia de ellos. Esto hace que a la hora de
construir una aplicacin se cuente tanto con las APIs del perfil como de la configuracin.
Tenemos que tener en cuenta que un perfil siempre se construye sobre una configuracin
determinada. De este modo, podemos pensar en un perfil como un conjunto de APIs que
dotan a una configuracin de funcionalidad especfica. Ya hemos visto los conceptos
necesarios para entender cmo es un entorno de ejecucin en Java Micro Edition.
Anteriormente vimos que para una configuracin determinada se usaba una Mquina
Virtual Java especfica. Tenamos que con la configuracin CDC usbamos la CVM y que
con la configuracin CLDC usbamos la KVM. Con los perfiles ocurre lo mismo. Existen

unos perfiles que construiremos sobre la configuracin CDC y otros que construiremos
sobre la CLDC. Para la configuracin CDC tenemos los siguientes perfiles:

Foundation Profile: este perfil define una serie de APIs sobre la CDC orientadas a
dispositivos que carecen de interfaz grfica como, por ejemplo, decodificadores de
televisin 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 grfica de usuario (GUI) de J2SE.
Personal Profile: es un subconjunto de la plataforma J2SE v1.3, y proporciona un
entorno con un completo soporte grfico AWT. El objetivo es el de dotar a la
configuracin CDC de una interfaz grfica completa, con capacidades web y
soporte de applets Java. Este perfil requiere una implementacin del Foundation
Profile.
RMI Profile: este perfil requiere una implementacin del Foundation Profile, se
construye encima de l. El perfil RMI soporta un subconjunto de
las APIs J2SE v1.3 RMI. Algunas caractersticas de estas APIs se han eliminado
del perfil RMI debido a las limitaciones de cmputo y memoria de los
dispositivos.

y para la configuracin CLDC tenemos los siguientes:

PDA Profile: est construido sobre CLDC. Pretende abarcar PDAs de gama baja,
tipo Palm, con una pantalla y algn tipo de puntero (ratn o
lpiz) y una resolucin de al menos 20000 pixels (al menos 200x100 pixels) con
un factor 2:1.
Mobile Information Device Profile (MIDP): este perfil est construido sobre la
configuracin CLDC. Al igual que CLDC fue la primera configuracin definida
para J2ME, MIDP fue el primer perfil definido para esta plataforma. Este perfil
est orientado para dispositivos con las siguientes caractersticas:
o Reducida capacidad computacional y de memoria.
o Conectividad limitada (en torno a 9600 bps).
o Capacidad grfica muy reducida (mnimo un display de 96x54 pixels
monocromo).
o Entrada de datos alfanumrica reducida.
o 128 Kb de memoria no voltil para componentes MIDP.
o 8 Kb de memoria no voltil para datos persistentes de aplicaciones.
o 32 Kb de memoria voltil en tiempo de ejecucin para la pila Java.

Los tipos de dispositivos que se adaptan a estas caractersticas son: telfonos mviles,
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:

La aplicacin (semntica y control de la aplicacin MIDP).


Interfaz de usuario.

Almacenamiento persistente.
Trabajo en red.
Temporizadores.

Mquinas Virtuales J2ME: KVM, CVM


Una mquina virtual de Java (JVM) es un programa encargado de interpretar cdigo
intermedio (bytecode) de los programas Java precompilados a cdigo mquina ejecutable
por la plataforma, efectuar las llamadas pertinentes al sistema operativo subyacente y
observar las reglas de seguridad y correccin de cdigo definidas para el lenguaje Java.
De esta forma, la JVM proporciona al programa Java independencia de la plataforma con
respecto al hardware y al sistema operativo subyacente. Las implementaciones
tradicionales de JVM son, en general, muy pesadas en cuanto a
memoria ocupada y requerimientos computacionales. J2ME define varias JVMs de
referencia adecuadas al mbito de los dispositivos electrnicos que, en algunos casos,
suprimen algunas caractersticas con el fin de obtener una implementacin menos
exigente.
Ya hemos visto que existen dos configuraciones CLDC y CDC, cada una con unas
caractersticas propias. Como consecuencia, cada una requiere su propia mquina virtual.
La VM (Virtual Machine) de la configuracin CLDC se denomina KVM y la de la
configuracin CDC se denomina CVM. Las caractersticas principales de cada una de
ellas:

KVM: se corresponde con la Mquina Virtual ms pequea desarrollada por Sun.


Su nombre KVM proviene de Kilobyte (haciendo referencia a la baja ocupacin de
memoria, entre 40Kb y 80Kb). Se trata de una implementacin de Mquina Virtual
reducida y especialmente orientada a dispositivos con bajas capacidades
computacionales y de memoria. La KVM est escrita en lenguaje C,
aproximadamente unas 24000 lneas de cdigo, y fue diseada para ser:
o Pequea, con una carga de memoria entre los 40Kb y los 80 Kb,
dependiendo de la plataforma y las opciones de compilacin.
o Alta portabilidad.
o Modulable.
o Lo ms completa y rpida posible y sin sacrificar caractersticas para las
que fue diseada.

Sin embargo, esta baja ocupacin de memoria hace que posea algunas limitaciones con
respecto a la clsica Java Virtual Machine (JVM):
no hay soporte para tipos en coma flotante (double, float), no existe soporte para JNI (Java
Native Interface) debido a los recursos limitados de memoria, no existen cargadores de
clases (class loaders) definidos por el usuario, no se permiten los grupos de hilos o hilos
daemon, no existe la finalizacin de instancias de clases (mtodo Object.finalize()), no
hay referencias dbiles, limitada capacidad para el manejo de excepciones debido a que el
manejo de stas depende en gran parte de las APIs de cada dispositivo por lo que son stos
los que controlan la mayora de las excepciones, etc.

La KVM puede ser compilada y probada en tres plataformas distintas:

Solaris Operating Environment.


Windows.
PalmOs.

CVM: Compact Virtual Machine ha sido tomada como Mquina Virtual Java de
referencia para la configuracin CDC y soporta las mismas caractersticas que la
Mquina Virtual de J2SE. Est orientada a dispositivos electrnicos con
procesadores de 32 bits de gama alta y en torno a 2Mb o ms de memoria RAM.
Las caractersticas que presenta esta Mquina Virtual son:
o Sistema de memoria avanzado.
o Tiempo de espera bajo para el recolector de basura.
o Separacin completa de la VM del sistema de memoria.
o Recolector de basura modularizado.
o Portabilidad.
o Rpida sincronizacin.
o Ejecucin de las clases Java fuera de la memoria de slo lectura (ROM).
o Soporte nativo de hilos.
o Baja ocupacin en memoria de las clases.
o Proporciona soporte e interfaces para servicios en Sistemas Operativos de
Tiempo Real.
o Conversin de hilos Java a hilos nativos.
o Soporte para todas las caractersticas de Java2 v1.3 y libreras de seguridad,
referencias dbiles, Interfaz Nativa de Java (JNI), invocacin remota de
mtodos (RMI), Interfaz de depuracin de la Mquina Virtual (JVMDI).

En resumen, un entorno de ejecucin determinado de J2ME se compone de una seleccin


de:

Mquina virtual: JVM, KVM CVM.


Configuracin: CLDC CDC.
Perfil: PDA, MIDP, RMI, etc.
Paquetes Opcionales.

MIDlets
MIDlet es un programa desarrollado en lenguaje de programacin Java para dispositivos
embedidos, ms especficamente para la mquina virtual Java MicroEdition (Java ME).
Generalmente son juegos y aplicaciones que corren en un telfono mvil. Est
desarrollada bajo la especificacin MIDP (Mobile Information Device Profile).

El MIDlets suele ser un archivo JAR, formado por los siguientes elementos:

Un archivo manifiesto que describe el contenido del archivo JAR.


Las clases Java que forman el MIDlet.
Los archivos de recursos usados por el MIDlet.

Entorno de desarrollo NetBeans,


instalacin de los componentes necesarios
para realizar aplicaciones Java para
mviles
En la actualidad existen multitud de entornos de desarrollo o IDEs para disear e
implementar aplicaciones para dispositivos mviles. Para hacerlo usando el lenguaje
J2ME podremos encontrar entornos como Eclipse,, JBuilder, IntelliJ, NetBeans, etc.
En nuestro caso utilizaremos NetBeans 6.5, se trata de un proyecto de cdigo abierto
(open source) de gran xito, con una gran base de usuarios,
una comunidad en constante crecimiento y con un gran nmero de socios en todo el
mundo. Sun MicroSystems fund el proyecto de cdigo abierto NetBeans en junio de
2000 y contina siendo el patrocinador principal de este proyecto.

Instalacin de JDK 6 Update 17


Antes de instalar NetBeans necesitaremos instalar JDK 6, para ello abriremos un
navegador web (como Mozilla Firefox), desde la URL:
http://java.sun.com/javase/downloads/index.jsp
Pulsaremos el botn "Download" en JDK 6 Update 17 (o la versin que queramos):

En Platform elegiremos el sistema operativo, en nuestro caso "Windows" y pulsaremos


"Download" (74MB de descarga):

Mozilla Firefox nos mostrar una ventana con el nombre del fichero ad descargar (jdk6u17-windows-i586.exe), pulsaremos en "Guardar archivo":

Se iniciar la descarga:

Accederemos a la carpeta de descargas del usuario de Windows 7, en nuestro caso


"C:\Users\ajpdsoft\Downloads" y ejecutaremos el fichero descargado (jdk-6u17-windowsi586.exe), haciendo doble clic sobre l:

El UAC Control de cuentas de usuario de Windows 7 nos pedir confirmacin para


ejecutar el fichero, pulsaremos "S":

Leeremos los trminos de licencia de Sun Microsystems, si estamos de acuerdo


pulsaremos "Accept":

El asistente de instalacin de Java SE Development Kit 6 Update 17 nos permitir elegir


las opciones de instalacin, dejaremos todas marcadas y pulsaremos "Next" (si
quisiramos cambiar la carpeta de destino pulsaremos en "Change" y elegiremos una
carpeta de destino distinta la la de defecto):

Antes de la instalacin definitiva, en asistente nos vuelve a dar la opcin de cambiar la


carpeta de destino, si queremos dejar la de defecto pulsaremos "Next":

Tras la instalacin el asistente nos mostrar una ventana indicando: Java(TM) SE


Development Kit 6 Update 17 Successfully Installed", pulsaremos "Finish":

Instalacin de NetBeans 6.7.1


Instalaremos el IDE de desarrollo NetBeans, versin 6.7.1, que ser la herramienta
principal a utilizar para el desarrollo de aplicaciones para dispositivos mviles, PDAs, etc.
Para ello abriremos un navegador Web (como Mozilla Firefox), desde la URL:
http://netbeans.org/downloads/indexC.html
En el "Idioma del IDE" seleccionaremos "Espaol". En las distintas posibilidades
(tecnologas) a elegir para la descarga: Java SE, JavaFX, Java Web y EE, Java ME, Ruby,
C/C++, Groovy, etc. pulsaremos el botn "Download" de la columna "Java":

Mozilla Firefox nos mostrar una ventana con el nombre del fichero ad descargar
(netbeans-6.7.1-ml-java-windows.exe, de 251MB), pulsaremos en "Guardar archivo":

Se iniciar la descarga del fichero de instalacin de NetBeans 6.7.1:

Tras la descarga, abriremos la carpeta de descargas del usuario y ejecutaremos el fichero


netbeans-6.7.1-ml-java-windows.exe haciendo doble clic sobre l:

El UAC Control de cuentas de usuario de Windows 7 nos pedir confirmacin para


ejecutar el fichero, pulsaremos "S":

El Firewall (cortafuegos) de Windows 7 nos bloquear el acceso del fichero java.exe a la


red, pulsaremos en "Permitir acceso":

Se iniciar el asistente de instalacin de NetBeans IDE 6.7.1, si queremos personalizar la


instalacin, eligiendo los complementos a instalar, pulsaremos en "Personalizar":

Desde la ventana de "Personalizar la instalacin" marcaremos o desmarcaremos los


posibles paquetes: Java SE, JavaScript Debugger, Java Web y EE, Java ME, Groovy,
Caractersticas de la demanda, Sun GlassFish Enterprise Server. En nuestro caso
dejaremos todas marcadas:

Tras elegir las opciones de instalacin pulsaremos en "Siguiente":

Leeremos los trminos de licencia de NETBEANS IDE 6.7.1, si estamos de acuerdo


marcaremos la opcin "Acepto los trminos del acuerdo de licencia" y pulsaremos
"Siguiente":

A continuacin deberemos elegir la carpeta de instalacin de NetBeans IDE y la carpeta


donde instalamos JDK 6 Update 17 (si todo es correcto la detectrar automticamente,
mediante la variable de entorno), pulsaremos "Siguiente" para continuar:

Si hemos elegido instalar Sun GlassFish Enterprise Server (servidor de aplicaciones


desarrollado por Sun Microsystems que implementa las tecnologas definidas en la
plataforma Java EE y permite ejecutar aplicaciones que siguen esta especificacin, es
parecido a Apache Tomcat) deberemos indicar la carpeta donde se instalar, el JDK a
utilizar, el nombre del usuario administrador ("admin" por defecto) de GlassFish, la
contrasea ("adminadmin" por defecto), el puerto HTTP (por defecto 8080) que utilizar

este servidor de aplicaciones web, el puerto HTTPS (por defecto 8181) y el puerto de
administracin (por defecto 4848):

Tambin deberemos elegir la carpeta de instalacin de Sun GlassFish Enterprise Server v3


Prelude:

Antes de la instalacin final de NetBeans, el asistente nos mostrar un resumen de las


opciones elegidas y el espacio que necesitar en disco, en nuestro caso 720MB,
pulsaremos "Instalar":

El Firewall (cortafuegos) de Windows 7 nos bloquear el acceso del fichero java.exe a la


red, pulsaremos en "Permitir acceso":

Tras la instalacin de NetBeans podremos ayudar al proyecto NetBeans marcando la


opcin "Apoye al proyecto NetBeans proporcionando datos de uso annimamente",
tambin podremos registrarnos (gratuitamente) marcando "Registre NetBeans IDE y Sun
GlassFish Enterprise Server despus de finalizar la instalacin". Pulsaremos "Terminar":

Con esto habremos instalado NetBeans IDE 6.7.1 en nuestro equipo con Windows 7. Para
ejecutarlo haremos doble clic en el acceso directo del escritorio "NetBeans IDE 6.7.1":

El IDE de NetBeans 6.7.1 en funcionamiento:

Instalacin de NetBeans Mobility Pack


En realidad, para la versin NetBeans IDE 6.7.1 no es necesario instalar NetBeans
Mobility Pack pues ya va incorporado. Si utilizamos otra versin anterior de NetBeans
seguiramos los siguientes pasos para instalar NetBeans Mobility Pack:
abriremos un navegador Web (como Mozilla Firefox), desde la URL:
http://www.netbeans.info/downloads/all.php?b_id=2368
Pulsaremos en la lnea de "Windows" para iniciar la descarga:

Se iniciar la descarga del fichero de instalacin de NetBeans Mobility Pack (netbeansmobility-5_5-windows.exe (de 25MB), pulsaremos en "Guardar archivo":

Abriremos la carpeta de descargas del usuario, en nuestro caso


"C:\Users\ajpdsoft\Downloads" y haremos doble clic sobre el fichero netbeans-mobility5_5-windows.exe para iniciar la instalacin:

El UAC Control de cuentas de usuario de Windows 7 nos pedir confirmacin para


ejecutar el fichero, pulsaremos "S":

Se abrir el asistente de instalacin de NetBeans Mobility Pack 5.5 (en nuestro caso),
pulsaremos "Next":

Leeremos los trminos de licencia, si estamos de acuerdo marcaremos "I accept the terms
in the license agreement" y pulsaremos "Next":

Indicaremos la carpeta de instalacin de NetBeans pulsando en "Browse":

La seleccionaremos en la ventana de "Select a directory":

Y pulsaremos "Next" para instalar NetBeans Mobility Pack. Volvemos a repetir que para
el caso de la versin 6.7.1 de NetBeans este componente ya est instalado.

Instalacin de Sun Java Wireless Toolkit 2.5.2_01


Para instalar Sun Java Wireless Toolkit abriremos un navegador web (como Mozilla
Firefox) y accederemos a la URL:
http://java.sun.com/products/sjwtoolkit/download.html?feed=JSC
Pulsaremos en el botn "Download". A continuacin elegiremos en "Platform" el sistema
operativo "Windows", marcaremos "I agree..." y pulsaremos en "Continue". Marcaremos
"Sun Java Wireless Toolkit 2.5.2_01 for CLDC" y pulsaremos en
"sun_java_wireless_toolkit-2.5.2_01-win.exe". Se iniciar la descarga del fichero
sun_java_wireless_toolkit-2.5.2_01-win.exe (de 38MB) y, como en los casos anteriores,
abriremos la carpeta de descargas y haremos doble clic sobre este fichero.
Se abrir el asistente de instalacin, pulsaremos "Next":

Leeremos los trminos de licencia, si estamos de acuerdo pulsaremos "Accept":

Seleccionaremos la carpta del JDK que deseemos que utilizar para Sun Java Wireless
Toolkit, en nuestro caso el instalado anteriormente. Si queremos utilizar otro pulsaremos

"Browse":

Indicaremos la carpeta de instalacin de Sun Java Wireless Toolkit, por defecto


C:\WTK2.5.2_01, es recomendable que no lleve espacios en el nombre de la carpeta de
destino:

Pulsaremos "Next" para continuar:

Si queremos que se compruebe si hay actualizaciones automticas de Sun Java Wireless


Toolkit marcaremos "Check for Product Updates", pulsaremos "Next":

Comprobaremos las opciones elegidas, si son correctas pulsaremos "Next" para iniciar la
instalacin definitiva de Sun Java Wireless Toolkit:

Tras la instacin pulsaremos "Finish":

A continuacin agregaremos este plugin o complemento a NetBeans para poder utilizarlo


en las aplicaciones que desarrollemos. Para ello abriremos NetBeans IDE haciendo doble
clic sobre el acceso directo del escritorio "NetBeans IDE 6.7.1" de nuestro equipo con
Windows 7. Una vez abierto pulsaremos en el men "Herramientas" - "Plataformas
Java...", en la ventana de "Administrador de Java Platform" pulsaremos en "Aadir
plataforma...":

Seleccionaremos Java ME MIDP Platform Emulator y pulsaremos "Siguiente":

Si la instalacin de Sun Java Wireless Toolkit ha sido correcta nos detectar la carpeta
donde la instalamos, pulsaremos "Siguiente":

El Firewall de Windows 7 nos detectar y bloquear un acceso del fichero emulator.exe a


la red, pulsaremos en "Permitir acceso":

Si la plataforma es correcta, el asistente para aadir plataformas Java nos mostrar los
datos de Sun Java(TM) Wireless Toolkit 2.5.2_01 for CLDC:

En Platform Details mostrar los detalles de la plataforma a instalar:


Devices: DefaultColorPhone, DefaultGrayPhone, MediaControlSkin, QwertyDevice
Profiles: MIDP-1.0, MIDP-2.0, MIDP-2.1
Configurations: CLDC-1.0, CLDC-1.1
Optional APIs: J2ME-WS-1.0, J2ME-XMLRPC-1.0, JSR172-1.0, JSR177-1.0, JSR1791.0.1, JSR180-1.0.1, JSR184-1.1, JSR211-1.0, JSR226-1.0, JSR229-1.1.0, JSR234-1.0,
JSR238-1.0, JSR239-1.0, JSR75-1.0, JSR82-1.1, MMAPI-1.1, OBEX-1.0, SATSA-APDU1.0, SATSA-CRYPTO-1.0, SATSA-JCRMI-1.0, SATSA-PKI-1.0, WMA-1.1, WMA-2.0
Pulsaremos en "Terminar" en la ventana anterior para finalizar de agregar a NetBeans la
plataforma Sun Java(TM) Wireless Toolkit 2.5.2_01 for CLDC.
Y quedar instalado en la plataforma J2ME:

Cmo realizar mi primera aplicacin para


telfono mvil
Creacin de un nuevo proyecto JavaME Mobile
Application en NetBeans
Abriremos NetBeans IDE haciendo doble clic sobre el acceso directo del escritorio
"NetBeans IDE 6.7.1" de nuestro equipo con Windows 7. Una vez abierto pulsaremos en
el men "Achivo" - "Proyecto Nuevo...":

En "Categoras" elegiremos "Java ME", en "Proyectos" seleccionaremos "Mobile


Application":

Introduciremos los siguientes datos:

Project name: nombre que tendr el proyecto, en nuestro caso "AjpdSoft Hola
mundo J2ME".
Project Location: carpeta donde se guardarn los proyectos.
Project Folder: carpeta donde se guardarn los ficheros del proyecto.

Set as main Project: si marcamos esta opcin el MIDlet que creemos ser el
proyecto principal en el entorno NetBeans.
Create hello MIDlet: si marcamos esta opcin se crear un MIDlet de ejemplo con
el tpico mensaje "Hola mundo".

En la siguiente ventana podremos elegir los siguientes parmetros:

Emulator Platform: seleccionaremos Sun Java(TM) Wireless Toolkit 2.5.2_01 for


CLDC.
Device: tipo de dispositivo para el emulador, en nuestro caso
"DefaultColorPhone".
Device configuration: tipo de configuracin, en nuestro caso CLDC-1.1.
Device Profile: tipo de pefil, en nuestro caso MIDP-2.1.

Introduciremos los datos anteriores y pulsaremos "Siguiente":

Si necesitamos ms perfiles de configuracin podremos marcarlos en la siguiente ventana.


Pulsaremos "Terminar" para iniciar el desarrollo del proyecto:

Puesto que hemos marcado "Create hello MIDlet" NetBeans crear un formulario con las
acciones necesarias para mostrar un mesaje en la pantalla de nuestro mvil "Hello world":

Vistas del IDE NetBeans: Source, Screen y Flow


Vista Flow Design
Esta vista es la primera que aparece cuando inicialmente creamos un MIDlet. Esta vista
resulta muy interesante ya que nos indica cul es el flujo de ventanas de nuestra
aplicacin, es decir, qu ventana lleva a qu otra ventana y a travs de qu botn o
comando. Tambin nos permite editar fcilmente dicho flujo simplemente arrastrando y
soltando elementos sobre el panel principal. De esta forma un desarrollador puede ir
tomando cada uno de los tipos de ventana que se muestran en la Paleta de la derecha,
dentro del grupo Screens (es decir, Alert, List, Splash-Screen, Form, TextBox o bien
WaitScreen), ir colocndolos en el panel principal e ir definiendo cmo llegar de una
ventana a otra simplemente conectndolas entre s. Adems, a cada ventana se le puede
aadir cualquiera de los dems elementos que se muestran en la Paleta (Commands, Form
Items, Elements, etc.) simplemente arrastrando dicho elemento sobre la ventana en la que
queramos aadirlo. Por ltimo, decir que cuando se selecciona cualquier elemento en el
panel principal, tambin es posible modificar sus propiedades o atributos mediante el
panel de Propiedades que se encuentra debajo de la Paleta, abajo a la derecha, lo cual
resulta extremadamente til al programador:

Vista Screen Design


Esta vista tambin resulta extremadamente til al programador ya que a travs de la
misma es posible realizar el diseo de cada una de las ventanas de las que consta nuestro
MIDlet. De esta forma el desarrollador podr ver el aspecto final que aproximadamente
tendr su aplicacin. Para cambiar la ventana que queremos disear basta con
seleccionarla en la lista desplegable llamada Edited Screen que se encuentra encima del
panel principal a la derecha. En nuestro ejemplo de "Hola mundo" slo podemos disear
inicialmente una ventana llamada helloForm.
En esta vista tambin disponemos de la Paleta de componentes, y el diseo de las ventanas
es tan sencillo como arrastrar los elementos desde sta hasta el panel principal, igual que
ocurra en la vista Flow Design. Y del mismo modo que en la vista Flow Design era
posible editar las propiedades o atributos de los elementos seleccionados desde el panel de
Propiedades, aqu eso tambin es posible de la misma forma. En la seccin anterior no se
coment el panel Inspector mediante el cual podemos ver todos los elementos (ventanas,
comandos, Items, etc.) que conforman nuestro MIDlet en forma de rbol jerrquico. A
travs de l tambin se pueden realizar todas las acciones comentadas anteriormente para
esta vista. Merece la pena resaltar la gran utilidad que esta vista ofrece al desarrollador de
aplicaciones J2ME. Hasta tal punto es interesante que ser posible desarrollar aplicaciones
sencillas sin necesidad de ver ni escribir ni una sola lnea de cdigo:

Vista Source
La vista Source permite ver y modificar el cdigo fuente Java de nuestra aplicacin:

Compilar y ejecutar la aplicacin (MIDlet) en el


emulador de NetBeans
Para compilar el MIDlet pulsaremos en el men "Ejecutar" - "Limpiar y generar Main
Project" o la pulsacin de las teclas Maysculas + F12. Nos mostrar el resultado de la
operacin en la parte inferior del IDE de desarrollo:

Si todo es correcto mostrar, al final, algo as: "GENERACIN CORRECTA (total time:
2 seconds)". Una vez compilado correctamente NetBeans habr generado los ficheros .jar
y .jad correspondientes. Con estos dos ficheros la aplicacin ya se podra ejecutar en un
telfono mvil. Estos ficheros se encuentran en la carpeta "dist", dentro de la carpeta del
proyecto:

En nuestro caso: AjpdSoft_Hola_mundo_J2ME.jad y AjpdSoft_Hola_mundo_J2ME.jar.


Como decimos, si transferimos estos dos ficheros a un telfono mvil y ejecutamos el
AjpdSoft_Hola_mundo_J2ME.jar, el mvil nos pedir si deseamos instalarlo, lo
instalaremos y ya funcionar nuestra primera aplicacin para mvil.

Para ejecutarlo y probarlo en el equipo (en el emulador de NetBeans) pulsaremos en el


men "Ejecutar" - "Ejecutar Main Project":

Si todo es correcto se ejecutar el emulador de telfomo mvil, como si de un mvil se


tratase, aparecer seleccionado nuestro MIDlet, pulsaremos en el botn central del
telfono para ejecutarlo:

Y podremos ver en nuestro equipo cmo funcionara la aplicacin (MIDlet) en el mvil:

Ficheros JAR y JAD


Un fichero JAR (Java Archive) es el encargado de encapsular todas las clases y recursos
(imgenes, sonidos, datos, etc.) que conformen uno o ms MIDlets.Un archivo JAR es un
tipo de archivo que permite ejecutar aplicaciones escritas en lenguaje Java. Los archivos
JAR estn comprimidos con el formato de archivo ZIP. Adems de las clases y los
recursos, un fichero JAR incluye otro archivo conocido como manifiesto (con nombre
manifest.mf). Dicho archivo contiene informacin sobre el contenido del fichero JAR, los
atributos de este archivo son:
Atributo
MIDlet-Name

Descripcin
Nombre de la MIDlet suite

Requerido
S

MIDlet-Version

Versin de la MIDlet suite

MIDlet-Vendor

Desarrollador del MIDlet

MIDlet-n

Contiene una lista con el nombre de la MIDlet suite,


icono y nombre del MIDlet en la suite

MicroeditionConfiguration

Configuracin necesitada para ejecutar el MIDlet

Microedition-Profile Perfil necesitado para ejecutar el MIDlet

MIDlet-Description Descripcin de la MIDlet suite

No

MIDlet-Icon

Nombre del archivo png incluido en el JAR

No

MIDlet-Info-URL

URL con informacin sobre el MIDlet

No

MIDlet-Data-Size

Nmero de bytes requeridos por el MIDlet

No

El fichero JAD (Java Application Descriptor) es opcional y sirve para proporcionar


informacin adicional acerca del juego de MIDlets contenido en un fichero JAR. Los
atributos del archivo JAD son los siguientes:
Atributo

Descripcin

Requerido

MIDlet-Name

Nombre de la MIDlet suite

MIDlet-Vendor

Nombre del desarrollador

MIDlet-Version

Versin del MIDlet

MIDlet-Configuration

Configuracin necesitada para ejecutar el MIDlet S

MIDlet-Profile Perfil

Perfil necesitado para ejecutar el MIDlet

MIDlet-Jar-URL

URL del archivo JAR de la MIDlet suite

MIDlet-Jar-Size

Tamao en bytes del archivo JAR

MIDlet-Data-Size

Mnimo nmero de bytes de almacenamiento


persistente usado por el MIDlet

No

MIDlet-Delete-Confirm Confirmacin a la hora de eliminar el MIDlet

No

MIDlet-Description

Descripcin de la MIDlet suite

No

MIDlet-Icon

Archivo .png incluido en el JAR

No

MIDlet-Info-URL

URL con informacin de la MIDlet suite

No

MIDlet-Install-Notify

Indica que el AMS notifique al usuario de la


instalacin del nuevo MIDlet

No

Cdigo fuente (source code) en Java de la aplicacin

para mvil
El cdigo Java de la aplicacin para telfonos mviles AjpdSoft Hola mundo J2ME es el
siguiente (todo generado automticamente por el asistente de nuevo proyecto):
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hello;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
* @author ajpdsoft
*/
public class HelloMIDlet extends MIDlet implements CommandListener {
private boolean midletPaused = false;
//

private Command exitCommand;


private Form form;
private StringItem stringItem;
//

/**
* The HelloMIDlet constructor.
*/
public HelloMIDlet() {
}
//

//

//

/**
* Initilizes the application.
* It is called only once when the MIDlet is
* started. The method is called before the startMIDlet method.
*/
private void initialize() {
// write pre-initialize user code here

// write post-initialize user code here


}
//

//

/**
* Performs an action assigned to the
* Mobile Device - MIDlet Started point.
*/
public void startMIDlet() {
// write pre-action user code here
switchDisplayable(null, getForm());
// write post-action user code here
}
//

//

/**
* Performs an action assigned to the
* Mobile Device - MIDlet Resumed point.
*/
public void resumeMIDlet() {
// write pre-action user code here

// write post-action user code here


}
//

//

/**
*
*
*
*

Switches a current displayable in a display.


The display instance is taken from getDisplay
method. This method is used by all actions
in the design for switching displayable.

* @param alert the Alert which is temporarily


* set to the display; if null,
* then nextDisplayable is set immediately
* @param nextDisplayable the Displayable to be set
*/
public void switchDisplayable(Alert alert, Displayable
nextDisplayable) {
// write pre-switch user code here
Display display = getDisplay();

if (alert == null) {
display.setCurrent(nextDisplayable);
} else {
display.setCurrent(alert, nextDisplayable);
}
// write post-switch user code here
}
//

//

/**
* Called by a system to indicated that a command
* has been invoked on a particular displayable.
* @param command the Command that was invoked
* @param displayable the Displayable where the command was invoked
*/
public void commandAction(Command command, Displayable displayable)
{
// write pre-action user code here
if (displayable == form) {
if (command == exitCommand) {
// write pre-action user code here
exitMIDlet();
// write post-action user code here
}
}

// write post-action user code here


}
//

//

/**
* Returns an initiliazed instance of exitCommand component.
* @return the initialized component instance
*/
public Command getExitCommand() {
if (exitCommand == null) {
// write pre-init user code here
exitCommand = new Command("Exit", Command.EXIT, 0);
// write post-init user code here
}
return exitCommand;
}
//

//

/**
* Returns an initiliazed instance of form component.
* @return the initialized component instance
*/

public Form getForm() {


if (form == null) {
// write pre-init user code here
form = new Form("Welcome", new Item[] { getStringItem() });
form.addCommand(getExitCommand());
form.setCommandListener(this);
// write post-init user code here
}
return form;
}
//

//

/**
* Returns an initiliazed instance of stringItem component.
* @return the initialized component instance
*/
public StringItem getStringItem() {
if (stringItem == null) {
// write pre-init user code here
stringItem = new StringItem("AjpdSoft - Primer programa
m\u00F3vil", "AjpdSoft Hola mundo");
// write post-init user code here
}
return stringItem;

}
//

/**
* Returns a display instance.
* @return the display instance.
*/
public Display getDisplay () {
return Display.getDisplay(this);
}
/**
* Exits MIDlet.
*/
public void exitMIDlet() {
switchDisplayable (null, null);
destroyApp(true);
notifyDestroyed();
}
/**
* Called when MIDlet is started.
* Checks whether the MIDlet have been already
* started and initialize/starts or resumes the MIDlet.
*/
public void startApp() {
if (midletPaused) {
resumeMIDlet ();
} else {
initialize ();
startMIDlet ();
}
midletPaused = false;
}
/**
* Called when MIDlet is paused.
*/
public void pauseApp() {
midletPaused = true;
}
/**
* Called to signal the MIDlet to terminate.
* @param unconditional if true, then the MIDlet has
* to be unconditionally terminated and all
* resources has to be released.
*/
public void destroyApp(boolean unconditional) {
}
}

Potrebbero piacerti anche