Вы находитесь на странице: 1из 73

Desarrollo para Aplicaciones Mviles en j2me

Qu es j2me?
Es una versin reducida de J2SE dado que tiene unas ciertas limitaciones o diferencias respecto a ste. Java2 Micro Edition ha sido creado para adaptarse a las caractersticas de los nuevos dispositivos inalmbricos tales como telfonos mviles y PDAs. Puede ubicar la ayuda en esta Ruta : C:\WTK2.5.2_01\docs\api\midp\index.html

J2ME
Descripcin de J2ME - Origen y evolucin
Por tanto, actualmente, la versin 2 de Java de Sun Microsystem contiene tres ediciones distintas: Standard Edition (J2SE): entorno bsico de Java. Ofrece un conjunto de clases y APIs (Application Program Interface Interfaz para Programas de Aplicacin) que permiten desarrollar y ejecutar aplicaciones clientes y servidoras, as como programas que se ejecuten en navegadores (applets). Ya est en la calle el J2SE 5.0. Enterprise Edition (J2EE): agrupa APIs Java y tecnologas que no estn basadas en este lenguaje. Se aconseja para el desarrollo de aplicaciones distribuidas. Micro Edition (J2ME): especficamente diseado para desarrollar aplicaciones para dispositivos embebidos y electrnicos, que tienen caractersticas peculiares ya que dos ediciones anteriores no son adecuadas para su utilizacin con ellos. stos dispositivos normalmente tienen una potencia limitada, posibilidad de conectividad a una red (normalmente sin cables) y poseen interfaces grficos. En la siguiente ilustracin podemos ver grficamente la relacin entre cada una de las ediciones de Java y los tipos de dispositivos con que se podran programar:

J2ME
Descripcin de J2ME - Origen y evolucin

Introduccin JAVA Variables y Tipos de Datos en todas las Ediciones


Las variables son las partes importantes de un lenguaje de programacin: ellas son las entidades (valores, datos) que actan y sobre las que se acta. Una declaracin de variable siempre contiene dos componentes, el tipo de la variable y su nombre

Introduccin JAVA Variables y Tipos de Datos en todas las Ediciones


Sintaxis declaracin de tipo de variable

Int Edad; String Nombre;

Tipos de datos soportados


J2ME soporta hasta tipos de datos double(8) y float(4) dado que los procesadores empleados en los mviles disponen de unidad de coma flotante. Una Unidad de Punto Flotante o Unidad de Coma Flotante (Floating Point Unit en ingls) o, ms comnmente conocido como, coprocesador matemtico, es un componente de la CPU especializado en el clculo de operaciones en coma flotante. Las operaciones bsicas que toda FPU puede realizar son las aritmticas (suma y multiplicacin), si bien algunos sistemas ms complejos son capaces tambin de realizar clculos trigonomtricos o exponenciales. No todas las CPUs tienen una FPU dedicada. En ausencia de FPU, la CPU puede utilizar programas en microcdigo para emular una funcin en coma flotante a travs de la unidad aritmtico-lgica (ALU), la cual reduce el coste del hardware a cambio de una sensible prdida de velocidad Una Unidad de Punto Flotante o Unidad de Coma Flotante (Floating Point Unit en ingls) o, ms comnmente conocido como, coprocesador matemtico, es un componente de la CPU especializado en el clculo de operaciones en coma flotante. Las operaciones bsicas que toda FPU puede realizar son las aritmticas (suma y multiplicacin), si bien algunos sistemas ms complejos son capaces tambin de realizar clculos trigonomtricos o exponenciales. No todas las CPUs tienen una FPU dedicada. En ausencia de FPU, la CPU puede utilizar programas en microcdigo para emular una funcin en coma flotante a travs de la unidad aritmtico-lgica (ALU), la cual reduce el coste del hardware a cambio de una sensible prdida de velocidad

Operadores

Operadores

Operadores

Operadores

Comando System.out.println
Es la salida estndar de datos o impresin . Con ella enviamos informacin a la consola: Ejemplo System.out.println("Salida a la consola");

Sentencias de Control de Flujo La sentencia if-else

Sentencias de Control de Flujo - La sentencia switch


La sentencia switch se utiliza para realizar sentencias condicionalmente basadas en alguna expresin. Por ejemplo, supon que tu programa contiene un entero llamado mes cuyo valor indica el mes en alguna fecha. Supon que tambin quieres mostrar el nombre del mes basndose en su nmero entero equivalente. Podras utilizar la sentencia switch de Java para realizar esta tarea:

Sentencias de Control de Flujo Sentencias de Bucle


Generalmente hablando, una sentencia while realiza una accin mientras se cumpla una cierta condicin. La sintaxis general de la sentencia while es: while (expresin) sentencia

Por convencin el corchete abierto '{' se coloca al final de la misma lnea donde se encuentra la sentencia while y el corchete cerrado '}' empieza una nueva lnea indentada a la lnea en la que se encuentra el while.

Sentencias de Control de Flujo Sentencias for


Primero el bucle for. Puedes utilizar este bucle cuando conozcas los lmites del bucle (su instruccin de inicializacin, su criterio de terminacin y su instruccin de incremento). Por ejemplo, el bucle for se utiliza frecuentemente para iterar sobre los elementos de un array, o los caracteres de una cadena.

Sentencias de Control de Flujo Sentencias do-while


Java proporciona otro bucle, el bucle do-while,que es similar al bucle while que se vio al principio, excepto en que la expresin se aval al final del bucle:

Sentencias de Control de Flujo Sentencias Return

Arrays y Cadenas (Arrays)


Esta seccin te ensear todo lo que necesitas para crear y utilizar arrays en tus programas Java. Como otras variables, antes de poder utilizar un array primero se debe declarar. De nuevo, al igual que otras variables, la declaracin de un array tiene dos componentes primarios: el tipo del array y su nombre. Un tipo de array incluye el tipo de dato de los elementos que va contener el array. Por ejemplo, el tipo de dato para un array que slo va a contener elementos enteros es un array de enteros. No puede existir un array de tipo de datos genrico en el que el tipo de sus elementos est indefinido cuando se declara el array. Aqu tienes la declaracin de un array de enteros:

int[] arrayDeEnteros;
La parte int[] de la declaracin indica que arrayDeEnteros es un array de enteros. La declaracin no asigna ninguna memoria para contener los elementos del array. La siguiente sentencia asigna la suficiente memoria para que arrayDeEnteros pueda contener diez enteros.

int[] arraydeenteros = new int[10]

Arrays y Cadenas (Arrays) Asignando Valores al Arreglo


Ahora que se ha asignado memoria para un array ya se pueden asignar valores a los elemetos y recuperar esos valores:

for (int j = 0; j < arrayDeEnteros.length; j ++) { arrayDeEnteros[j] = j; System.out.println("[j] = " + arrayDeEnteros[j]); }


Como se puede ver en el ejemplo anterior, para referirse a un elemento del array, se aade corchetes cuadrados al nombre del array. Entre los corchetes caudrados se indica (bien con una variable o con una expresin) el ndice del elemento al que se quiere acceder. Observa que en Java, el ndice del array empieza en 0 y termina en la longitud del array menos uno.

Arrays y Cadenas (Strings)


Una secuencia de datos del tipo carcter se llama un string (cadena) y en el entorno Java est implementada por la clase String (un miembro del paquete java.lang). String[] args; Este cdigo declara explcitamente un array, llamado args, que contiene objetos del tipo String. Los corchetes vacios indican que la longitud del array no se conoce en el momento de la compilacin, porque el array se pasa en el momento de la ejecucin. El segundo uso de String es el uso de cadenas literales (una cadena de caracteres entre comillas " y "): "Hola mundo!" El compilador asigna implicitamente espacio para un objeto String cuando encuentra una cadena literal. Los objetos String son inmutables - es decir, no se pueden modificar una vez que han sido creados. El paquete java.lang proporciona una clase diferente, StringBuffer, que se podr utilizar para crear y manipular caracteres al vuelo.

Arrays y Cadenas (Strings)


Una secuencia de datos del tipo carcter se llama un string (cadena) y en el entorno Java est implementada por la clase String (un miembro del paquete java.lang). String[] args; Este cdigo declara explcitamente un array, llamado args, que contiene objetos del tipo String. Los corchetes vacios indican que la longitud del array no se conoce en el momento de la compilacin, porque el array se pasa en el momento de la ejecucin. El segundo uso de String es el uso de cadenas literales (una cadena de caracteres entre comillas " y "): "Hola mundo!" El compilador asigna implicitamente espacio para un objeto String cuando encuentra una cadena literal. Los objetos String son inmutables - es decir, no se pueden modificar una vez que han sido creados. El paquete java.lang proporciona una clase diferente, StringBuffer, que se podr utilizar para crear y manipular caracteres al vuelo.

Que mas Hay


Los programas en J2ME no son fichero.class, se denominan MIDLETs y van comprimidos en paquetes jar con todos los ficheros que forman parte de la aplicacin (Manifesto, Descriptor, imgenes, etc). La finalidad del Manifesto es describir el contenido del fichero .JAR con informacin tal como el nombre, versin, vendedor, etc .. tambin se incluye en este fichero una entrada por cada MIDlet que lo compone.

Que es MIDLETS

Como se Inicia una aplicacion j2me


Las aplicaciones en J2ME empiezan en el mtodo start app. Diagrama de estados de un MIDLET: Estado Pausado

Como se Inicia una aplicacion j2me


Las aplicaciones en J2ME empiezan en el mtodo start app. Diagrama de estados de un MIDLET: Estado Pausado

Como se Inicia una aplicacion j2me


Las aplicaciones en J2ME empiezan en el mtodo start app. Diagrama de estados de un MIDLET: Estado Activo

Como se Inicia una aplicacion j2me


Las aplicaciones en J2ME empiezan en el mtodo start app. Diagrama de estados de un MIDLET: Estado Activo

Como se Inicia una aplicacion j2me


Las aplicaciones en J2ME empiezan en el mtodo start app. Diagrama de estados de un MIDLET: Estado Destruido

Como se Inicia una aplicacion j2me


Las aplicaciones en J2ME empiezan en el mtodo start app. Diagrama de estados de un MIDLET: Modificando estado

Como se Inicia una aplicacion j2me

Como se Inicia una aplicacion j2me

Como se Inicia una aplicacion j2me

Como se Inicia una aplicacion j2me

Como se Inicia una aplicacion j2me

Como se Inicia una aplicacion j2me

Como se Inicia una aplicacion j2me

Que es MIDLETS

Interface de Usuario Tecnologa: Librerias CLDC


javax.microediton.lcdui proporciona los mecanismos para desarrollar un interface de usuario.

Principales paquetes de J2ME (1)


javax.microediton.lcdui Paquete que proporciona los mecanismos para desarrollar un interface de usuario. javax.microediton.midlet Toda aplicacin que quiere utilizar el perfil MIDP debe heredar de MIDLET.

Principales paquetes de J2ME (2)


javax.microediton.rms J2ME MIDP define una simple base de datos de registros llamada RMS (Record Management System) con el objetivo de poder almacenar informacin una vez que el MIDLET finalice. javax.microediton.io Este paquete proporciona conectividad para poder acceder a datos remotos y redes corporativas, es decir, Internet.

Crear la primera aplicacin Ejemplo1

Crea las siguientes carpetas


Creamos la carpeta PROJECTOS la Unidad c: o en alguna unidad no protegida

Ubicando el IDE a utilizar

Construyendo nuestra primera aplicacin


File New Project..

Construyendo nuestra primera aplicacin

Construyendo nuestra primera aplicacin


Observar el nombre del proyecto y la ruta indicada

Construyendo nuestra primera aplicacin

Construyendo nuestra primera aplicacin

CLDC Una configuracin se podra definir como un conjunto mnimo de APIs bsicas que permiten desarrollar aplicaciones destinadas a un amplio rango de dispositivos. Mediante la configuracin se especifica un conjunto de caractersticas soportadas del lenguaje Java y un conjunto mnimo de caractersticas de la JVM. La configuracin no est relacionada con el tipo de aplicacin que se quiere crear, sino que trata de agrupar un amplio conjunto de dispositivos en relacin a sus capacidades computacionales y entorno genrico de operacin.

La diferencia mas notable que CLDC 1.1 soporta coma flotante y CLDC 1.O no lo soporta

Construyendo nuestra primera aplicacin

MIDP es el acrnimo de Perfil para dispositivos de informacin mvil (Mobile Information Device Profile) y nos proporciona un perfil que se apoya en CLDC y que nos va a proporcionar los paquetes y clases necesarios para el desarrollo de nuestras aplicaciones. MIDP est orientado principalmente a telfonos mviles, aunque existe una implementacin para PalmOS (versin 3.5 y superiores) y PocketPC, por lo que es tambin utilizable en casi cualquier PDA.

Construyendo nuestra primera aplicacin

La una de las grandes novedades de MIDP 2 son las clases games, que facilita muchsimo la tarea de realizar juegos con grficos. Bien es cierto que es posible realizar juegos con MIDP 1, en este tutorial nos vamos a centrar en MIDP 2. Siempre es posible hacer tus propias clases imitando la clase games, claro, pero ah ya estamos hablando de otra cosa, y a un nivel un poco ms alto. Mejor aprovechar lo que ya tenemos.

Construyendo nuestra primera aplicacin

Construyendo nuestra primera aplicacin

Algn Concepto Importante MIDlet

Un MIDlet es un programa capaz de correr en un dispositivo mvil. El nombre guarda cierta similitud (no casual) con los programas capaces de correr en un navegador (applets). Si quieres ampliar conocimientos sobre el lenguaje Java, puedes consultar la bibliografa en los apndices de este libro.

El primer Midlet J2ME en NetBeans


Vamos al tree de la parte izquierda, en Projects, y seleccionamos el nuestro. Veremos que aparece ya un package, denominado Default package. Pulsamos sobre l con el botn derecho del ratn, y seleccionamos New/Visual Midlet, para que nos realice el esqueleto de un Midlet en el cual podremos trabajar visualmente. Si activsemos el Midlet a secas, solamente podremos trabajar en cdigo con l, algo que no es muy acertado en el IDE de NetBeans, pues parte de su cdigo no es modificable por el usuario

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans


Que es el Constructor de una clase? Es aquella que posee el mismo nombre de la clase a la cual pertenece y no puede regresar ningn valor (ni siquiera se puede especificar la palabra reservada void). Por ejemplo si aadiramos a la clase Hola un constructor, tendramos que llamarlo tambin Hola. Cuando en una clase no se escribe propiamente un constructor, java asume uno por defecto.

ahora crearemos el constructor de la clase Hola

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans


Que es un Formulario?

Un Forma es una Pantalla que contiene una mezcla arbitraria de elementos :


imgenes, campos de texto de slo lectura , campos de texto editable , los campos editables fecha choice groups y custom items. Creacin del primer Formulario 1.- crear una variable tipo Formulario (donde declaramos la variable pantalla ):

private Form Formulario1;


2.- crear una variable tipo Formulario ( dentro del constructor ):

// instanciamos el formulario Formulario1 = new Form(HolaAmigos");

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans

El primer Midlet J2ME en NetBeans


En la introduccin dijimos que un midlet siempre heredar de la clase javax.microedition.midlet.MIDlet. Los mtodos de esta clase permiten a nuestra aplicacin crear, empezar, parar y destruir un Midlet, estos mtodos son la interfaz del Midlet, que va a permitir a nuestro dispositivo poder manejar mltiples Midlets, sin tener que estar todos ejecutndose en el mismo entorno. El sistema de nuestro dispositivo puede seleccionar que Midlet est activo usando los mtodos correspondientes para empezar o pausar. El ciclo de vida de un midlet se compone de lo siguientes estados: Pausado, Activo o Destruido. Slo puede estar en un estado a la vez. La figura 1 muestra como se pasa de uno a otro

El primer Midlet J2ME en NetBeans


Cuando un midlet ser carga en memoria, inicialmente pasa al estado Pausado, entonces se realiza la inicializacin de la clase (mtodo startApp(), que luego veremos). Si el Midlet lanza una excepcin durante la ejecucin de su constructor, se destruye. El midlet puede pasar de Activo a Pausado, cuando, por ejemplo, recibimos una llamada en nuestro mvil; es el sistema quien pasa nuestro Midlet de Activo a Pausado y viceversa. Un Midlet puede ser lanzado y parado todas las veces que queramos, pero slo puede ser destruido una vez.

El primer Midlet J2ME en NetBeans


//Usamos la clase MIDlet import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form;import javax.microedition.lcdui.StringItem;import javax.microedition.midlet.*; //Nuestra clase debe de heredar de la clase MIDlet public class Hola extends MIDlet implements CommandListener { private Command exitCommand; private Display display; private Form screen; //Constructor, si no lo ponemos (est vaco) ya lo har Java por nosotros public Hola( ) { // 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 aadimos la cadena de texto a la pantalla StringItem saludo = new StringItem("","Hola Mundo..."); screen.append(saludo); // Aadimos el comando Salir e indicamos que clase lo manejar screen.addCommand(exitCommand); screen.setCommandListener(this); } //Mtodo que se llama cuando pasamos de Pausado a Activo protected void startApp( ) { // Seleccionamos la pantalla a mostrar display.setCurrent(screen); } //Mtodo que se llama cuando pasamos de Activo a Pausado protected void pauseApp( ) { } //Mtodo que se llama cuando se destruye el midlet protected void destroyApp(boolean incondicional) { } public void commandAction(Command c, Displayable s) { // Salir if (c == exitCommand) { destroyApp(false); notifyDestroyed(); } } }

Вам также может понравиться