Desarrollo de Aplicaciones Java para Dispositivos Moviles...

18
Universidad de Murcia ´ Area de Tecnolog´ ıas de la Informaci´on y Comunicaciones Aplicadas Cursos de Promoci ´ on Educativa Desarrollo de Aplicaciones Java para Dispositivos M ´ oviles J2ME Autor elixG´omezM´ armol http://ants.dif.um.es/˜felixgm [email protected]

Transcript of Desarrollo de Aplicaciones Java para Dispositivos Moviles...

Universidad de Murcia

Area de Tecnologıas de la Informacion

y Comunicaciones Aplicadas

Cursos de Promocion Educativa

Desarrollo de Aplicaciones Javapara Dispositivos Moviles J2ME

Autor

Felix Gomez Marmol

http://ants.dif.um.es/˜[email protected]

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 2

Indice general

Indice General 6

Indice de Figuras 9

Indice de Tablas 12

Introduccion 131. Presentacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2. Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3. Contenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

5. Metodologıa y Evaluacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

6. Neosistec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Parte I. Desarrollo de Aplicaciones Javapara Dispositivos Moviles J2ME 21

1. Introduccion a J2ME. Conceptos basicos 21

1.1. Breve introduccion a J2ME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.2. Configuraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.3. Perfiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1.4. Arquitectura de J2ME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1.5. KVM, CLDC y MIDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1.6. JVM, CDC, FP, PBP y PP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.6.1. Foundation Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.6.2. Personal Basis Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.6.3. Personal Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.6.4. Diferencias entre PP y JDK 1.3 . . . . . . . . . . . . . . . . . . . . . . 28

1.6.5. Diferencias entre PP y PersonalJava . . . . . . . . . . . . . . . . . . . 29

2. Entorno de desarrollo NetBeans 31

2.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.2. Instalacion de NetBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.2.1. Instalacion de la JDK 6 Update 22 . . . . . . . . . . . . . . . . . . . . 31

2.2.2. Instalacion de NetBeans 6.9.1 . . . . . . . . . . . . . . . . . . . . . . . 32

2.3. Manejo de NetBeans 6.9.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3. Primer Midlet: HelloMidlet 37

3.1. ¿Como crearlo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.1.1. Vista Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.1.2. Vista Screen Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 3

INDICE GENERAL

3.1.3. Vista Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.1.4. Vista Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.2. Explorando el codigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.2.1. Clase MIDlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.2.2. Clase Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.2.3. Clase Command e interfaz CommandListener . . . . . . . . . . . . . . . 45

3.3. Compilacion y ejecucion del Midlet . . . . . . . . . . . . . . . . . . . . . . . . 46

4. Emulador VS dispositivo real 51

4.1. Java(TM) Platform Micro Edition SDK 3.0 . . . . . . . . . . . . . . . . . . . 51

4.2. Ficheros JAR y JAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.3. Instalacion en un dispositivo real . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.4. Restricciones de diseno en dispositivos moviles . . . . . . . . . . . . . . . . . 55

5. Ventanas, menus y alertas 57

5.1. Ventanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.1.1. Clase TextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.1.2. Clase Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

5.1.3. Transicion entre ventanas . . . . . . . . . . . . . . . . . . . . . . . . . 60

5.2. Menus. Prioridades de comandos . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.3. Alertas (clase Alert) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

5.3.1. Alertas con sonidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

6. Formularios, listas y botones 67

6.1. Formularios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

6.2. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

6.3. Botones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

6.3.1. Interfaz ItemCommandListener . . . . . . . . . . . . . . . . . . . . . . 73

7. Imagenes, check boxes y barras de progreso 75

7.1. Imagenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

7.2. Check boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

7.3. Barras de progreso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

8. Actividad final 81

8.1. Descripcion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Parte II. Desarrollo Avanzado de Aplicaciones Javapara Dispositivos Moviles J2ME 85

1. Breve repaso de J2ME y NetBeans 85

1.1. J2ME. Repasando conceptos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

1.1.1. Configuraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

1.1.2. Perfiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

1.2. Repaso de NetBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

1.2.1. Instalacion de NetBeans 5.5.1 . . . . . . . . . . . . . . . . . . . . . . . 90

1.2.2. Manejo de NetBeans 5.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . 91

1.2.3. Vista Flow Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

1.2.4. Vista Screen Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

1.2.5. Vista Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 4

INDICE GENERAL

2. Manejo de ficheros. Lectura y escritura 99

2.1. Modelo de Threads en J2ME . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

2.2. Record Management System (RMS) . . . . . . . . . . . . . . . . . . . . . . . 102

2.3. JSR-75. Acceso al sistema de ficheros . . . . . . . . . . . . . . . . . . . . . . . 106

3. Gestion de la comunicacion Bluetooth 111

3.1. Introduccion al protocolo Bluetooth . . . . . . . . . . . . . . . . . . . . . . . 111

3.2. JSR-82. Gestion de la comunicacion Bluetooth . . . . . . . . . . . . . . . . . 111

3.2.1. Paquete javax.obex . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

3.2.2. Paquete javax.bluetooth . . . . . . . . . . . . . . . . . . . . . . . . 112

3.3. Busqueda de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

3.3.1. Clase LocalDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

3.3.2. Clase DeviceClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

3.3.3. Clase UUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

3.3.4. Clase DiscoveryAgent . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

3.3.5. Interfaz DiscoveryListener . . . . . . . . . . . . . . . . . . . . . . . 117

3.3.6. Clase RemoteDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

3.4. Busqueda de servicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

3.4.1. Interfaz ServiceRecord . . . . . . . . . . . . . . . . . . . . . . . . . . 119

3.4.2. Clase DataElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

3.5. Establecimiento de la conexion . . . . . . . . . . . . . . . . . . . . . . . . . . 124

3.5.1. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

3.5.2. Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

3.6. Comunicacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

3.7. BluetoothMidlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

4. Envıo y recepcion de SMS 129

4.1. JSR-120 vs JSR-205 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

4.2. Envıo de SMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

4.2.1. Interfaz Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

4.2.2. Interfaz MessageConnection . . . . . . . . . . . . . . . . . . . . . . . 130

4.2.3. Interfaz TextMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

4.3. Recepcion de SMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

4.3.1. Interfaz MessageListener . . . . . . . . . . . . . . . . . . . . . . . . . 132

4.3.2. Push Registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

4.4. Seguridad y permisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

4.5. SMSMidlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

5. Envıo y recepcion de MMS 137

5.1. JSR-205 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

5.2. Estructura de un mensaje MMS . . . . . . . . . . . . . . . . . . . . . . . . . . 137

5.2.1. Campos de cabecera accesibles . . . . . . . . . . . . . . . . . . . . . . 138

5.2.2. Direccionamiento de mensajes MMS . . . . . . . . . . . . . . . . . . . 139

5.3. Envıo y recepcion de MMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

5.3.1. Clase MessagePart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

5.3.2. Interfaz MultipartMessage . . . . . . . . . . . . . . . . . . . . . . . . 141

5.3.3. Identificador de aplicacion . . . . . . . . . . . . . . . . . . . . . . . . . 143

5.3.4. Seguridad y permisos . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

5.3.5. Centro de mensajerıa multimedia . . . . . . . . . . . . . . . . . . . . . 143

5.4. MMSMidlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 5

Indice General

6. Manejo de conexiones HTTP y HTTPS 1476.1. Generic Connection Framework . . . . . . . . . . . . . . . . . . . . . . . . . . 147

6.1.1. Conexiones soportadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 1486.2. Conexiones HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

6.2.1. Interfaz HttpConnection . . . . . . . . . . . . . . . . . . . . . . . . . 1496.3. Conexiones HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

6.3.1. Interfaz HttpsConnection . . . . . . . . . . . . . . . . . . . . . . . . . 1526.3.2. Interfaz SecurityInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . 1536.3.3. Interfaz Certificate . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

6.4. HTTPMidlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

7. Otras posibilidades con J2ME: Canvas y Juegos 1577.1. Clase Canvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

7.1.1. Clase Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1597.1.2. Eventos de teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1627.1.3. Acciones de juego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1627.1.4. Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

7.2. CanvasMidlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

8. Actividad final 1678.1. Descripcion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Apendices 169

A. CLDC y MIDP 169A.1. API CLDC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169A.2. API MIDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

B. Protocolo Bluetooth 173B.1. Arquitectura Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173B.2. Perfiles de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174B.3. La pila de protocolos de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . 175

B.3.1. La capa de radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175B.3.2. La capa de banda base . . . . . . . . . . . . . . . . . . . . . . . . . . . 175B.3.3. Link Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176B.3.4. Host Controller Interface . . . . . . . . . . . . . . . . . . . . . . . . . 176B.3.5. Protocolo de adaptacion y control de enlaces logicos L2CAP . . . . . 176B.3.6. RFCOMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176B.3.7. TCS y SDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

B.4. La capa de radio de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . 177B.5. La capa de banda base de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . 177B.6. La capa L2CAP de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . 178B.7. Estructura de la trama de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . 178B.8. Java y Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

B.8.1. Inicializacion de la pila . . . . . . . . . . . . . . . . . . . . . . . . . . . 179B.8.2. Descubrimiento de dispositivos y servicios . . . . . . . . . . . . . . . . 180B.8.3. Manejo del dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . 181B.8.4. Comunicacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

C. Acronimos 183

Bibliografıa 185

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 6

Indice de Figuras

Desarrollo de Aplicaciones Javapara Dispositivos Moviles J2ME . . . . . . . . . . . . . . . . . . . . . 21

1.1. Plataformas de Java: J2EE, J2SE, J2ME y Java Card . . . . . . . . . . . . . 211.2. Arquitectura generica de J2ME . . . . . . . . . . . . . . . . . . . . . . . . . . 231.3. Arquitecturas CDC y CLDC de J2ME . . . . . . . . . . . . . . . . . . . . . . 241.4. Jerarquıa de interfaces del GCF . . . . . . . . . . . . . . . . . . . . . . . . . . 251.5. Jerarquıa de clases e interfaces de MIDP . . . . . . . . . . . . . . . . . . . . . 261.6. J2SE, Personal Profile, Personal Basis Profile y Foundation Profile . . . . . . 28

2.1. Instalacion de la JDK 6 Update 22 (I) . . . . . . . . . . . . . . . . . . . . . . 322.2. Instalacion de la JDK 6 Update 22 (II) . . . . . . . . . . . . . . . . . . . . . . 322.3. Instalacion de la JDK 6 Update 22 (III) . . . . . . . . . . . . . . . . . . . . . 322.4. Instalacion de NetBeans 6.9.1 (I) . . . . . . . . . . . . . . . . . . . . . . . . . 332.5. Instalacion de NetBeans 6.9.1 (II) . . . . . . . . . . . . . . . . . . . . . . . . . 332.6. Instalacion de NetBeans 6.9.1 (III) . . . . . . . . . . . . . . . . . . . . . . . . 332.7. Instalacion de NetBeans 6.9.1 (IV) . . . . . . . . . . . . . . . . . . . . . . . . 342.8. Entorno de desarrollo NetBeans. Proyecto de “Pagina de inicio” . . . . . . . . 342.9. NetBeans. Plataformas Java (I) . . . . . . . . . . . . . . . . . . . . . . . . . . 352.10. NetBeans. Plataformas Java (II) . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.1. Creacion del Midlet HelloMidlet (I) . . . . . . . . . . . . . . . . . . . . . . . 373.2. Creacion del Midlet HelloMidlet (II) . . . . . . . . . . . . . . . . . . . . . . 383.3. Creacion del Midlet HelloMidlet (III) . . . . . . . . . . . . . . . . . . . . . . 383.4. Creacion del Midlet HelloMidlet (IV) . . . . . . . . . . . . . . . . . . . . . . 393.5. Creacion del Midlet HelloMidlet (V) . . . . . . . . . . . . . . . . . . . . . . 393.6. Vista Flow del Midlet HelloMidlet . . . . . . . . . . . . . . . . . . . . . . . . 403.7. Vista Screen del Midlet HelloMidlet . . . . . . . . . . . . . . . . . . . . . . . 413.8. Vista Source del Midlet HelloMidlet . . . . . . . . . . . . . . . . . . . . . . . 423.9. Vista Analyzer del Midlet HelloMidlet . . . . . . . . . . . . . . . . . . . . . . 433.10. Jerarquıa de clases e interfaces de MIDP . . . . . . . . . . . . . . . . . . . . . 443.11. Compilando el Midlet HelloMidlet (I) . . . . . . . . . . . . . . . . . . . . . . 463.12. Compilando el Midlet HelloMidlet (II) . . . . . . . . . . . . . . . . . . . . . 473.13. Compilando el Midlet HelloMidlet (III) . . . . . . . . . . . . . . . . . . . . . 473.14. Ejecutando el Midlet HelloMidlet (I) . . . . . . . . . . . . . . . . . . . . . . 483.15. Ejecutando el Midlet HelloMidlet (II) . . . . . . . . . . . . . . . . . . . . . . 48

4.1. Midlet de ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.2. Como consultar las propiedades de un proyecto . . . . . . . . . . . . . . . . . 534.3. Propiedades del Midlet HelloMidlet . . . . . . . . . . . . . . . . . . . . . . . 53

5.1. Jerarquıa de clases e interfaces de MIDP . . . . . . . . . . . . . . . . . . . . . 57

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 7

Indice General

5.2. Creacion de un nuevo Visual MIDlet . . . . . . . . . . . . . . . . . . . . . . . . 60

5.3. MyFirstMidlet. Vista Flow Design (I) . . . . . . . . . . . . . . . . . . . . . . 61

5.4. MyFirstMidlet. Vista Flow Design (II) . . . . . . . . . . . . . . . . . . . . . . 61

5.5. MyFirstMidlet. Vista Flow Design (III) . . . . . . . . . . . . . . . . . . . . . 62

5.6. Ejemplo de menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

6.1. MyFormMidlet. Vista Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

6.2. MyFormMidlet. Vista Screen. Restricciones de un TextField . . . . . . . . . . 69

6.3. MyFormMidlet. Vista Screen. Elementos StringItem . . . . . . . . . . . . . . 69

6.4. MyFormMidlet. Vista Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

6.5. MyListMidlet. Vista Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

7.1. Vista Screen del Midlet MyImagesMidlet . . . . . . . . . . . . . . . . . . . . . 77

7.2. Como anadir un nuevo recurso de imagen en NetBeans . . . . . . . . . . . . . 78

7.3. Como asociar un fichero de imagen a un recurso de imagen en NetBeans . . . 78

Desarrollo Avanzado de Aplicaciones Javapara Dispositivos Moviles J2ME . . . . . . . . . . . . . . . . . . . . . 85

1.1. Plataformas de Java: J2EE, J2SE, J2ME y Java Card . . . . . . . . . . . . . 85

1.2. Jerarquıa de interfaces del GCF . . . . . . . . . . . . . . . . . . . . . . . . . . 87

1.3. Jerarquıa de clases e interfaces de MIDP . . . . . . . . . . . . . . . . . . . . . 88

1.4. Entorno de desarrollo NetBeans. Proyecto de Bienvenida . . . . . . . . . . . . 91

1.5. NetBeans. Administrador de plataforma Java (I) . . . . . . . . . . . . . . . . 92

1.6. NetBeans. Administrador de plataforma Java (II) . . . . . . . . . . . . . . . . 92

1.7. NetBeans. Administrador de plataforma Java (III) . . . . . . . . . . . . . . . 93

1.8. NetBeans. Administrador de plataforma Java (IV) . . . . . . . . . . . . . . . 93

1.9. NetBeans. Administrador de plataforma Java (V) . . . . . . . . . . . . . . . . 94

1.10. NetBeans. Administrador de plataforma Java (VI) . . . . . . . . . . . . . . . 94

1.11. Vista Flow Design del Midlet HelloMidlet . . . . . . . . . . . . . . . . . . . . 95

1.12. Vista Screen Design del Midlet HelloMidlet . . . . . . . . . . . . . . . . . . . 96

1.13. Vista Source del Midlet HelloMidlet . . . . . . . . . . . . . . . . . . . . . . . 97

1.14. Mostrando la numeracion de lıneas de codigo . . . . . . . . . . . . . . . . . . 97

2.1. Modelo de Threads en J2ME con NetBeans . . . . . . . . . . . . . . . . . . . 100

2.2. Vista Flow Design del Midlet NotesRMSStoreMidlet . . . . . . . . . . . . . . 104

2.3. Ejecutando el Midlet NotesRMSStoreMidlet . . . . . . . . . . . . . . . . . . . 105

2.4. Vista Flow Design del Midlet FileExplorerMidlet . . . . . . . . . . . . . . . 108

2.5. Ejecutando el Midlet FileExplorerMidlet. Leyendo un fichero . . . . . . . . 109

2.6. Ejecutando el Midlet FileExplorerMidlet. Escribiendo un fichero . . . . . . 110

3.1. Diagrama de estados del descubrimiento de dispositivos Bluetooth . . . . . . 117

3.2. SDDB (Service Discovery DataBase) . . . . . . . . . . . . . . . . . . . . . . . 119

3.3. Diagrama de estados del descubrimiento de servicios Bluetooth . . . . . . . . 122

3.4. GCF y conexiones Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

3.5. Vista Flow Design del Midlet MyBluetoothMidlet . . . . . . . . . . . . . . . . 127

3.6. Ejecutando el Midlet MyBluetoothMidlet . . . . . . . . . . . . . . . . . . . . 128

4.1. Integracion de las conexiones WMA en la GCF . . . . . . . . . . . . . . . . . 129

4.2. Push Registry en NetBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

4.3. Permisos para las APIs en NetBeans . . . . . . . . . . . . . . . . . . . . . . . 135

4.4. Vista Flow Design del Midlet SMSMidlet . . . . . . . . . . . . . . . . . . . . . 135

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 8

INDICE DE FIGURAS

4.5. Ejecutando el Midlet SMSMidlet . . . . . . . . . . . . . . . . . . . . . . . . . 136

5.1. Clases e interfaces de la WMA 2.0 . . . . . . . . . . . . . . . . . . . . . . . . 1375.2. Estructura de un mensaje MMS . . . . . . . . . . . . . . . . . . . . . . . . . . 1385.3. Vista Flow Design del Midlet MMSMidlet . . . . . . . . . . . . . . . . . . . . . 1445.4. Ejecutando el Midlet MMSMidlet . . . . . . . . . . . . . . . . . . . . . . . . . 145

6.1. Jerarquıa de interfaces de la GCF de CLDC . . . . . . . . . . . . . . . . . . . 1476.2. HTTPS dentro de la pila TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . 1526.3. Vista Flow Design del Midlet HTTPMidlet . . . . . . . . . . . . . . . . . . . . 1546.4. Ejecutando el Midlet HTTPMidlet . . . . . . . . . . . . . . . . . . . . . . . . . 155

7.1. Sistema de coordenadas empleado por la clase Graphics . . . . . . . . . . . . 1597.2. Tableros de tamano n× n, con n = 2, 3, 9 . . . . . . . . . . . . . . . . . . . . 1617.3. Tableros de tamano n× n, con n = 2, 3, 9 pintando la casilla actual . . . . . . 1637.4. Ejecutando el Midlet CanvasMidlet . . . . . . . . . . . . . . . . . . . . . . . 165

Apendice B. Protocolo Bluetooth . . . . . . . . . . . . . . . . . . . . . . . 173

B.1. Scatternet formada por 12 piconets . . . . . . . . . . . . . . . . . . . . . . . . 173B.2. Pila de protocolos de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . 175B.3. Host Controller Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176B.4. Coexistencia de Bluetooth y 802.11 en la banda de los 2’4 GHz . . . . . . . . 177B.5. Estructura de la trama de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . 178B.6. Integracion de la JSR-82 en la pila de protocolos Bluetooth . . . . . . . . . . 181

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 9

Indice de Figuras

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 10

Indice de Tablas

Desarrollo de Aplicaciones Javapara Dispositivos Moviles J2ME . . . . . . . . . . . . . . . . . . . . . 21

3.1. Metodos de la clase javax.microedition.midlet.MIDlet . . . . . . . . . . . 433.2. Metodos de la clase javax.microedition.lcdui.Display . . . . . . . . . . . 453.3. Metodos de la clase javax.microedition.lcdui.Command . . . . . . . . . . . 453.4. Metodos de la interfaz javax.microedition.lcdui.CommandListener . . . . 45

4.1. Atributos del fichero manifest.mf . . . . . . . . . . . . . . . . . . . . . . . . 524.2. Contenido del manifiesto del fichero HelloMidlet.jar . . . . . . . . . . . . . 524.3. Atributos de un fichero JAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.4. Contenido del fichero HelloMidlet.jad . . . . . . . . . . . . . . . . . . . . . 54

5.1. Metodos de la clase javax.microedition.lcdui.Screen . . . . . . . . . . . 575.2. Metodos de la clase javax.microedition.lcdui.TextBox . . . . . . . . . . . 585.3. Restricciones de la clase javax.microedition.lcdui.TextField . . . . . . . 585.4. Metodos de la clase javax.microedition.lcdui.Form . . . . . . . . . . . . . 595.5. Metodos de la clase javax.microedition.lcdui.Alert . . . . . . . . . . . . 645.6. Tipos de javax.microedition.lcdui.AlertType . . . . . . . . . . . . . . . 64

6.1. Metodos de la clase javax.microedition.lcdui.TextField . . . . . . . . . 676.2. Metodos de la clase javax.microedition.lcdui.StringItem . . . . . . . . . 686.3. Tipos de opcion de la interfaz javax.microedition.lcdui.Choice . . . . . 716.4. Metodos de la clase javax.microedition.lcdui.List . . . . . . . . . . . . . 716.5. Modos de apariencia de la clase javax.microedition.lcdui.Item . . . . . . 73

7.1. Metodos de la clase javax.microedition.lcdui.Image . . . . . . . . . . . . 767.2. Metodos de la clase javax.microedition.lcdui.ImageItem . . . . . . . . . 767.3. Metodos de la clase javax.microedition.lcdui.ChoiceGroup . . . . . . . . 797.4. Metodos de la clase javax.microedition.lcdui.Gauge . . . . . . . . . . . . 80

Desarrollo Avanzado de Aplicaciones Javapara Dispositivos Moviles J2ME . . . . . . . . . . . . . . . . . . . . . 85

2.1. Metodos de la clase javax.microedition.rms.RecordStore . . . . . . . . . 1022.2. Contenido del paquete javax.microedition.io.file . . . . . . . . . . . . . 1062.3. Metodos de la interfaz javax.microedition.io.file.FileConnection . . . 106

3.1. Metodos de la clase javax.bluetooth.LocalDevice . . . . . . . . . . . . . . 1123.2. Metodos de la clase javax.bluetooth.DeviceClass . . . . . . . . . . . . . . 1133.3. Algunos valores para el tipo de dispositivo de la clase javax.bluetooth.DeviceClass1143.4. UUIDs mas comunes en Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . 114

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 11

Indice de Tablas

3.5. Metodos de la clase javax.bluetooth.UUID . . . . . . . . . . . . . . . . . . . 1153.6. Metodos de la clase javax.bluetooth.DiscoveryAgent . . . . . . . . . . . . 1153.7. Campos estaticos de la clase javax.bluetooth.DiscoveryAgent indicando la

conectividad del dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153.8. Metodos de la interfaz javax.bluetooth.DiscoveryListener . . . . . . . . 1173.9. Metodos de la clase javax.bluetooth.RemoteDevice . . . . . . . . . . . . . 1183.10. Metodos de la interfaz javax.bluetooth.ServiceRecord . . . . . . . . . . . 1193.11. Tipos de datos DataElement . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203.12. Metodos de la clase javax.bluetooth.DataElement . . . . . . . . . . . . . . 122

4.1. Metodos de la interfaz javax.wireless.messaging.Message . . . . . . . . . 1304.2. Metodos de la interfaz javax.wireless.messaging.MessageConnection . . 1304.3. Metodos de la interfaz javax.wireless.messaging.TextMessage . . . . . . 1314.4. Metodos de la clase javax.microedition.io.PushRegistry . . . . . . . . . 133

5.1. Metodos de la clase javax.wireless.messaging.MessagePart . . . . . . . . 1405.2. Metodos de la interfaz javax.wireless.messaging.MultipartMessage . . . 141

6.1. Esquemas URL y tipos de conexion asociados en la GCF . . . . . . . . . . . . 1496.2. Metodos de la interfaz javax.microedition.io.HttpConnection . . . . . . 1506.3. Metodos de la interfaz javax.microedition.io.HttpsConnection . . . . . . 1526.4. Metodos de la interfaz javax.microedition.io.SecurityInfo . . . . . . . . 1536.5. Metodos de la interfaz javax.microedition.pki.Certificate . . . . . . . . 153

7.1. Metodos de la clase javax.microedition.lcdui.Canvas . . . . . . . . . . . 1587.2. Metodos de la clase javax.microedition.lcdui.Graphics . . . . . . . . . . 160

Apendice A. CLDC y MIDP . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

A.1. Paquete java.lang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169A.2. Paquete java.util . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169A.3. Paquete java.io . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170A.4. Paquete javax.microedition.io . . . . . . . . . . . . . . . . . . . . . . . . 170A.5. Extension de MIDP al paquete java.lang . . . . . . . . . . . . . . . . . . . . 170A.6. Extension de MIDP al paquete java.util . . . . . . . . . . . . . . . . . . . . 170A.7. Extension de MIDP al paquete javax.microedition.rms . . . . . . . . . . . 170A.8. Extension de MIDP al paquete javax.microedition.midlet . . . . . . . . . 171A.9. Extension de MIDP al paquete javax.microedition.io . . . . . . . . . . . . 171A.10.Extension de MIDP al paquete javax.microedition.lcdui . . . . . . . . . . 171Apendice B. Protocolo Bluetooth . . . . . . . . . . . . . . . . . . . . . . . 173

B.1. Perfiles de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174B.2. Clases de dispositivos Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 175

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 12

Introduccion

1. Presentacion

Este curso de promocion educativa pretende dar una vision general y completa acer-ca del lenguaje de programacion para dispositivos moviles Java 2 Micro Edition, mascomunmente conocido por sus siglas J2ME.

El curso, titulado “Desarrollo de Aplicaciones Java para Dispositivos Moviles J2ME”, seenmarca dentro de los cursos de promocion educativa ofrecidos por el Area de Tecnologıasde la Informacion y las Comunicaciones Aplicadas (ATICA) de la Universidad de Murcia.

Esta dirigido principalmente a todas aquellas personas que cuenten con unos conocimien-tos basicos de programacion en el lenguaje Java y que deseen ampliar sus conocimientos yhabilidades para ser capaces de desarrollar aplicaciones escritas en J2ME orientadas a dis-positivos moviles tales como telefonos moviles, PDAs o Smartphones.

Las principales caracterısticas del curso son:

6 creditos ECTS

Curso virtual (on-line) a traves de la plataforma educativa SUMA (https://suma.um.es)

Posibilidad de solicitud de beca

Posibilidad de pago con tarjeta de credito

No alumnos: mınimo 20 / maximo 40

Web: http://ants.dif.um.es/~felixgm/docencia/j2me

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 13

Introduccion

2. Motivacion

Mientras que la ensenanza del lenguaje de programacion Java ha recibido una gran aten-cion desde muchos organos de direccion docente y ha sido incluido en la mayorıa de planesdocentes de carreras como Informatica, Telecomunicaciones, Matematicas, etc., se ha prestadopoca atencion al desarrollo de aplicaciones Java para dispositivos moviles J2ME.

En este curso se mostrara la facilidad con la que, contando con unos conocimientos basicosde programacion en Java, es posible desarrollar rapidamente una aplicacion para un disposi-tivo movil J2ME.

Ademas, muchas empresas del sector de las TIC (Tecnologıas de la Informacion y lasComunicaciones) estan apostando por las comunicaciones y los productos orientados a dis-positivos moviles. Sin embargo, existe un gran vacıo de profesionales y expertos en este sectorque hacen de esta tecnologıa un campo de interes muy importante.

Pensemos que hoy en dıa todos llevamos encima, a todas horas, un dispositivo movil (leasetelefono movil) con capacidad de ejecutar aplicaciones J2ME (en la inmensa mayorıa de lasocasiones). Se trata pues, de un mercado con grandes posibilidades al cual aun no se le hasacado todo el partido posible.

3. Contenidos

Este curso de desarrollo de aplicaciones Java para dispositivos moviles J2ME se divide, asu vez, en dos cursos, uno de iniciacion y otro avanzado.

El curso de iniciacion, formalmente titulado “Desarrollo de Aplicaciones Java paraDispositivos Moviles J2ME”, trata de dar una vision basica del lenguaje J2ME y esta ori-entado principalmente a aquellas personas que no hayan tenido ningun contacto previo conJ2ME, o con conocimientos mınimos. El curso se divide en los siguientes 8 temas:

1. Introduccion a J2ME. Conceptos basicos

En este tema se veran los conceptos basicos sobre J2ME, la arquitectura en confi-guraciones (CLDC, CDC) y perfiles (MIDP), la maquina virtual KVM, ası como lasprincipales librerıas de conexiones (interfaz Connection) y graficos (clase Display).

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 14

3 Contenidos

2. Entorno de desarrollo NetBeans

Este tema explicara como instalar Netbeans y como crear un nuevo proyecto de de-sarrollo de una aplicacion J2ME, ası como buena parte de toda la funcionalidad queofrece.

3. Primer Midlet: HelloMidlet

En este tema se desarrollara el primer Midlet del curso, HelloMidlet, al cual se leaplicaran algunos cambios para conocer bien y mejor la estructura del codigo subya-cente.

4. Emulador VS dispositivo real

Aquı se vera de que manera es posible depurar las aplicaciones desarrolladas en J2MEmediante un emulador de dispositivo movil. Tambien se explicara en cualquier caso elprocedimiento para instalar correctamente nuestra aplicacion en un dispositivo movilreal final.

5. Ventanas, menus y alertas

Este tema explicara las clases que modelan las ventanas, menus y alertas, describiendosus funcionalidades y posibilidades.

6. Formularios, listas y botones

En este tema se vera como desarrollar formularios sencillos en J2ME, ademas de verlas clases que implementan las listas de elementos y los botones.

7. Imagenes, check boxes y barras de progreso

Este tema cierra la explicacion de los conocimientos basicos necesarios para desarrollaruna aplicacion grafica en J2ME. En el se explica como insertar imagenes, check boxesy barras de progreso en una ventana.

8. Actividad final

En este ultimo tema se propone al alumno que, con todos los conocimientos adquiridosa lo largo del curso, desarrolle libremente un Midlet en J2ME donde se apliquen y sevean reflejados dichos conocimientos. El profesor sugerira algunos ejercicios, en cualquiercaso.

Por su parte, en el curso avanzado, formalmente titulado “Desarrollo Avanzado deAplicaciones Java para Dispositivos Moviles J2ME” se explicaran algunas librerıasopcionales de J2ME orientadas a desarrollar aplicaciones J2ME mas complejas y completas.Este curso esta principalmente enfocado a los alumnos que hayan realizado el curso basicode J2ME y a todas aquellas personas que ya cuenten con unos conocimientos y un dominiobasico del lenguaje J2ME. El curso avanzado se divide tambien en otros 8 temas:

1. Breve repaso de J2ME y NetBeans

En este tema se vera un repaso de los conceptos basicos sobre J2ME, la arquitectura enconfiguraciones (CLDC, CDC) y perfiles (MIDP), la maquina virtual KVM, ası comolas principales librerıas de conexiones (interfaz Connection) y graficos (clase Display).Tambien se recordara brevemente como desarrollar Midlets con el entorno de desarrolloNetBeans.

2. Manejo de ficheros. Lectura y escritura

Este tema explicara como manejar ficheros en dispositivos J2ME mediante la librerıaJSR-75 “PDA Optional Packages for the J2ME Platform”. Se desarrollara un pequenoexplorador de ficheros.

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 15

Introduccion

3. Gestion de la comunicacion Bluetooth

Aquı se vera de que manera es posible gestionar comunicaciones Bluetooth en J2MEhaciendo uso de la librerıa JSR-82 “Java APIs for Bluetooth”. Se mostrara como des-cubrir a otros dispositivos Bluetooth que se encuentren dentro del radio de alcance,como averiguar que servicios ofrecen, como iniciar una conexion con ellos y como enviary recibir datos de los mismos a traves de Bluetooth.

4. Envıo y recepcion de SMS

En este tema se daran los conocimientos necesarios y suficientes para poder enviar yrecibir SMS desde un dispositivo movil gracias a la librerıa JSR-205 “Wireless MessagingAPI 2.0”.

5. Envıo y recepcion de MMS

Este tema explicara como se pueden enviar y recibir MMS desde un dispositivo J2MEhaciendo uso de la librerıa JSR-205 “Wireless Messaging API 2.0”. Se estudiara laestructura de un MMS y como enviar y recibir MMS con datos adjuntos (imagenes,ficheros, etc.).

6. Manejo de conexiones HTTP y HTTPS

En este tema se vera como establecer conexiones de tipo HTTP y HTTPS en dispositivosJ2ME y como enviar y recibir datos a traves de dichas conexiones.

7. Otras posibilidades con J2ME: Canvas y Juegos

Este tema expone algunas otras posibilidades que ofrece el lenguaje J2ME y que no sepueden tratar con mas profundidad en el curso, como por ejemplo la librerıa de graficosen 2D para el desarrollo de juegos.

8. Actividad final

En este ultimo tema se propone al alumno que, con todos los conocimientos adquiridosa lo largo del curso, desarrolle libremente un Midlet en J2ME donde se apliquen y sevean reflejados dichos conocimientos. El profesor sugerira algunos ejercicios, en cualquiercaso.

4. Objetivos

Los objetivos del curso de promocion educativa titulado “Desarrollo de AplicacionesJava para Dispositivos Moviles J2ME” son:

Introducir al alumno al lenguaje J2ME y hacerle ver el gran potencial que dicho lenguajetiene, ası como sus limitaciones

Mostrar la facilidad de desarrollo con el entorno NetBeans

Dar al alumno los conocimientos necesarios para desarrollar y desplegar aplicacionesJ2ME sencillas

Ensenar el manejo de ventanas, menus, listas, alertas, botones, imagenes, etc.

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 16

5 Metodologıa y Evaluacion

Los objetivos del curso de promocion educativa titulado “Desarrollo Avanzado deAplicaciones Java para Dispositivos Moviles J2ME” son:

Mostrar al alumno las capacidades mas avanzadas que posee el lenguaje J2ME

Ensenar como manejar ficheros (leer y escribir) en dispositivos moviles J2ME

Dar al alumno los conocimientos necesarios para gestionar comunicaciones Bluetooth yconexiones HTTP y HTTPS en J2ME

Formar al alumno para enviar y recibir SMS y MMS mediante dispositivos movilesJ2ME

Mostrar muchas otras posibilidades de desarrollo adicionales sobre dispositivos J2ME

5. Metodologıa y Evaluacion

¡¡IMPORTANTE!!A lo largo de cada uno de los cursos se propondran al alumno varias actividades optativas

que podra realizar libremente (o no). Algunas de dichas actividades estaran incluso resueltasen la propia web del curso:

http://ants.dif.um.es/~felixgm/docencia/j2me

El alumno podra enviar a traves de SUMA los resultados de las actividades propuestasque desee que el profesor corrija (se sugiere que previamente compruebe que el ejercicio essimilar a la solucion propuesta en la web del curso y se envıe solo en el caso de que surjandudas o problemas en la realizacion de los ejercicios).

Ambos cursos cuentan con un ultimo tema en el que se pide al alumno que, con todoslos conocimientos adquiridos a lo largo del curso, desarrolle una aplicacion en J2ME enla que se apliquen todos o algunos de los conceptos vistos. El profesor propondra algunasactividades, aunque el alumno tiene la posibilidad de enviar su propia aplicacion, previapuesta en conocimiento y consentimiento por parte del profesor ([email protected]).

La entrega de la aplicacion final se hara de la siguiente manera. El alumno debera subir ala seccion “Mis Contenidos” de SUMA un fichero comprimido en .ZIP que contenga la carpetacompleta del proyecto de NetBeans de dicha aplicacion, ası como un fichero contacto.txt

que contenga la informacion de contacto (e-mail y telefono movil) de aquellos alumnos quedeseen participar en el concurso organizado por Neosistec. El nombre del fichero tendra elsiguiente aspecto:

apellidos.nombre-edicion-{basico|avanzado}-j2me-{SI|NO}.zip

Por ejemplo:

gomez-marmol.felix-VI-basico-j2me-NO.zip ogomez-marmol.felix-V-avanzado-j2me-SI.zip

Donde {SI|NO} indicara la disposicion del alumno a participar en el concurso organizadopor Neosistec.

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 17

Introduccion

6. Neosistec

“Neosistec, empresa de ambito nacional con sede en Murcia, que lidera eldesarrollo de aplicaciones en movilidad sobre plataformas Java exportando lasmismas actualmente a mas de 15 paıses, ha tenido conocimiento de los cursoson-line de promocion educativa de “Desarrollo de Aplicaciones Java paraDispositivos Moviles J2ME” impartidos por la Universidad de Murcia.

Dada la calidad que hemos podido comprobar en dichos cursos y por encon-trarnos en expansion en el area de aplicaciones en movilidad, dentro de nuestrodepartamento de Desarrollo e Innovacion, estamos interesados en promover eincentivar la participacion de nuevos alumnos en los mismos.

Es por esto que Neosistec desea ofrecer a los tres alumnos mas destacadosque hayan realizado dichos cursos la posibilidad de llevar a cabo unas practicasen nuestra empresa por 2 meses, prorrogables. Adicionalmente, aquel alumno deentre los tres mas destacados que presente un mejor proyecto de desarrollo enJ2ME sera obsequiado con un dispositivo movil de ultima generacion.

El profesor de los cursos, en cada edicion de los mismos, seleccionara de entreaquellos alumnos que deseen participar en esta iniciativa, los tres candidatos quepresenten los proyectos mas completos, innovadores, originales y practicos. Unavez finalizados los cursos y seleccionados los candidatos, tendra lugar una sesionde exposicion y defensa de los proyectos presentados en las oficinas de Neosis-tec. Un tribunal compuesto por personal de la empresa seleccionara entonces alganador del dispositivo movil de ultima generacion.”

Javier PitaDirector de Neosistec

http://www.neosistec.com

Felix Gomez Marmol http://ants.dif.um.es/˜felixgm/docencia/j2me 18