En el resto del curso Versión: 2.0, Septiembre, 2006 Juan Manuel Fernández Luna Web: http://decsai.ugr.es/~jmfluna, Mail: jmfluna@decsai.ugr.es |
(C) Decsai Web: http://decsai.ugr.es |
En este tutorial se considerarán las herramientas básicas de desarrollo de aplicaciones JAVA para dispositivos móviles. Comenzaremos dando una visión de las herramientas básicas, para considerar, en último lugar, algunas de las herramientas integradas disponibles para los desarrolladores. Analizaremos, en primer lugar, la programación de más bajo nivel, interactuando con la máquina virtual de CLDC. A continuación estudiaremos la programación de MIDlets, mediante MIDP. En ambos casos, se estudiará inicialmente la forma de operar desde comandos, para describir, a continuación, la operativa mediante entornos de desarrollo de libre disposición.
En sección 1, se hace una breve
introducción al lenguaje Java, haciendo referencia a su origen,
historia, relación con Internet, el significado del
bytecode, y sus características más importantes. Se
sigue con una introducción al paradigma de la
programación orientada a objetos en que se basa Java. Se termina
presentado como crear el primer programa con CLDC, que es la
configuración en la que se basan los dispositvos móviles
de menor capacidad. En sección 2 presentamos los tipos de
datos básicos del lenguaje Java, analizando como se definen
variables y arrays o matrices de estos tipos básicos. En
sección 3 presentamos brevemente los operadores de Java,
prácticamente iguales a los de C++. En sección 4
presentamos las estructuras de control disponibles en Java, de nuevo
prácticamente iguales a las de C++. En la sección 5
estudiamos el concepto de clase en Java, analizando como se construyen,
los constructores, las variables de clase, los métodos,
como se crean objetos de la clase, etc. En la sección 6
analizamos puntos importantes en la definición de los
métodos de una clase, como la sobrecarga, el paso de
parámetros de los métodos (por valor, por referencia), los
especificadores de control de acceso (public, private, etc),
así como los modificadores static y final. Se hace
también una breve introducción de la clase
java.lang.String. En la sección 7 se estudia la herencia,
estudiando concepto asociados como la sobreescritura de métodos,
polimorfismo en tiempo de ejecución, clases abstractas, el
especificador de control de acceso protected. En la sección
8 se estudia el tema de la definición de paquetes de clases y el
de la creación de interfaces, que son algo similar a las
clases, pero en donde los métodos no tienen cuerpo, sólo
su definición. La sección 9 trata del tema de la
gestión de excepciones. Se analiza las principales excepciones
existentes en CLDC, como capturarlas, como lanzar excepciones
explícitamente, y como crear nuestros propios tipos de
excepciones. La sección 10 estudia el tema de la
programación multihebra. Veremos como crear programas con
más de una hebra de ejecución, y aprender a usar los
principales métodos de la clase Thread, así como otros
métodos de la clase Object (wait(), notify(), notifyAll())
que se usan para que dos hebras puedan comunicarse. Aprenderemos
también a sincronizar hebras.
Comenzaremos a implementar un programa con la biblioteca de CLDC, que corresponde al famoso juego de la serpiente (Snake o nibbles). El interfaz gráfico de este juego se construirá cuando se estudie el perfil MIDP. La sección 11 retoma el concepto de CLDC, que como hemos dicho antes es la configuración disponible para pequeños dispositivos. Se hará un repaso a la biblioteca de clases que contiene CLDC haciendo énfasis en las clases que no se han visto anteriormente. La biblioteca de clases de CLDC se divide en los paquetes: java.lang, java.util, java.io y javax.microedition.io.
En este parte del curso enpezaremos a ver la Interfaz de Programación de Aplicaciones (API) de MIDP, explicando las clases más importantes de su jerarquía. Primero nos centraremos en el ciclo de vida de un Midlet y como tratarlo, además de unas cuantas generalidades de la programación de los mismo. Posteriormente veremos cómo realizar el interfaz de nuestros Midlet, tanto en el manejo de la pantalla, como en el manejo de las entradas de usuario. Veremos que la parte de interfaces de usuario de MIDP se puede distinguir en dos partes claramente diferencias, cada uno con su estilo y finalida propios: La primera parte es el API de alto nivel para interfaces de usuario que nos va a permitir desarrollar Midlets utilizando clases para el interfaz, es una forma de programar muy fácil y rápida, pero no tenemos apenas control sobre la pantalla del dispositivo o las entradas que se produzcan. En la segunda parte estudiaremos el API de bajo nivel para interfaces de usuario, que nos va a permitir programar Midlet con un control total de la pantalla y entrada de datos del dispositivo. Esta forma de trabajar será más compleja, pues nos tendremos que preocupar a nivel de detalle de pixel o de tecla pulsada, sin embargo, nos permite un control mayor del dispositivo.
En este módulo trataremos la gestión de la conexión a redes en J2ME. Hay tres formas de realizar transmisión de información contempladas en CLDC y MIDP: por sockets, datagramas y por HTTP. Veremos un resumen de las tres con sus ventajas e inconvenientes, centrandonos finalmente en la conexión por HTTP, que es el tipo que está completamente contemplado en los estándares. Finalmente se estudiará el almacenamiento persistente en J2ME. MIDP nos proporciona APIS para crear y manejar almacenes de registros. Una especie de bases de datos especialmente creadas para las características de los dispositivos móviles -escasos recursos-. Veremos como dentro de un almacén (tabla de una BD) podemos crear y manejar los registros (tuplas).
Finalmente, se pondrán en práctica los conocimientos adquiridos en el curso, realizando una aplicación para teléfono móvil o PDA.