Documentos de Académico
Documentos de Profesional
Documentos de Cultura
J2ME y NetBeans
J2ME y NetBeans
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 laURL: 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 (jdk-6u17-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-6u17windows-i586.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":
Tras la descarga, abriremos la carpeta de descargas del usuario y ejecutaremos el fichero netbeans-6.7.1-ml-java-windows.exehaciendo 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:
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":
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 (netbeans-mobility-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 netbeansmobility-5_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":
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":
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:
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:
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...":
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 conWindows 7. Una vez abierto pulsaremos en el men "Achivo" - "Proyecto Nuevo...":
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".
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.
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, SplashScreen, 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:
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 MIDlet-Version MIDlet-Vendor MIDlet-n MicroeditionConfiguration Descripcin Nombre de la MIDlet suite Versin de la MIDlet suite Desarrollador del MIDlet Contiene una lista con el nombre de la MIDlet suite, icono y nombre del MIDlet en la suite Configuracin necesitada para ejecutar el MIDlet Requerid o S S S S S S No No No No
Microedition-Profile Perfil necesitado para ejecutar el MIDlet MIDlet-Description Descripcin de la MIDlet suite MIDlet-Icon MIDlet-Info-URL MIDlet-Data-Size Nombre del archivo png incluido en el JAR URL con informacin sobre el MIDlet Nmero de bytes requeridos por el MIDlet
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 MIDlet-Name MIDlet-Vendor MIDlet-Version MIDlet-Configuration MIDlet-Profile Perfil MIDlet-Jar-URL MIDlet-Jar-Size MIDlet-Data-Size MIDlet-Delete-Confirm MIDlet-Description MIDlet-Icon MIDlet-Info-URL MIDlet-Install-Notify Descripcin Nombre de la MIDlet suite Nombre del desarrollador Versin del MIDlet Configuracin necesitada para ejecutar el MIDlet Perfil necesitado para ejecutar el MIDlet URL del archivo JAR de la MIDlet suite Tamao en bytes del archivo JAR Mnimo nmero de bytes de almacenamiento persistente usado por el MIDlet Confirmacin a la hora de eliminar el MIDlet Descripcin de la MIDlet suite Archivo .png incluido en el JAR URL con informacin de la MIDlet suite Requerido S S S S S S S No No No No 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; //
//
//
/** * 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
//
/** * 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
//
/** * * * * 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() });
//
/** * 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) { } }