Sistema Web Con Acceso a Bases de Datos Multiplataforma a Través de Dispositivos Móviles.

Anuncio
Universidad Nacional del Nordeste
Facultad de Ciencias Exactas, Naturales y Agrimensura
Trabajo Final de Aplicación
Sistema Web con Acceso a Bases de Datos
Multiplataforma a Través de Dispositivos
Móviles
Juan Felix Basterretche - L.U.: 34039
Profesores Orientadores:
Mgter. David Luis la Red Martínez
Lic. Valeria Emilce Uribe
Licenciatura en Sistemas de Información
Corrientes - Argentina
2009
A mi familia y amigos por su incansable apoyo
Prefacio
En los últimos años se han realizado grandes avances en tecnologías de comunicación móvil, lo cual hace posible que hoy en día la sociedad tenga acceso
a información útil del contenido de las bases de datos, mediante dispositivos
móviles. Es decir, hoy un usuario de un PDA, o bien un usuario de un teléfono
celular puede navegar por internet desde el mismo utilizando redes, en este
caso inalámbricas.
La aparición de tecnologías como bluetooth y wi-fi han revolucionado la
manera en que los usuarios desean conectarse, ya que ambas tecnologías presentan pocas dificultades para lograr la conexión entre distintos dispositivos
debido a la estandarización de las mismas.
Estas tecnologías se han desarrollado tanto hasta abarcar escenarios donde
la utilización de dispositivos móviles presentan grandes ventajas y comodidades, ya que cada vez se ven más servicios que antes solo podían ser utilizados
a través de computadoras personales conectadas a redes cableadas.
Considerando esto, se ve la necesidad de estudiar detalladamente estas tecnologías para poder explotar las oportunidades que los servicios de Internet y
los dispositivos móviles presentan a la sociedad, ya que, juegan un papel fundamental en todos los ámbitos: Profesionales, culturales, educativos, comerciales
y otros.
Desde la aparición de las computadoras éstas han sido usadas en los sistemas de información de las empresas para facilitar el trabajo de control y
gestión gracias a la capacidad de recopilar y procesar gran cantidad de datos. En entornos fuertemente competitivos las empresas han comprendido que
las inversiones en tecnologías de la información pueden incrementar de forma
significativa la competitividad de la empresa.
Aunque las necesidades tecnológicas de los restaurantes parezcan inferiores
en comparación a otros sectores, muchos estudios hablan del uso de las TIC
en los mismos, que a causa de una competencia creciente, estos restaurantes
cada vez se ven más obligados a realizar inversiones en este campo. Hoy en día
parece impensable que un restaurant no tenga página web y en el caso ideal
su sistema de información debería estar preparado para afrontar retos como
el “E-Commerce” o poder ofrecer servicios como Wi-Fi a sus clientes.
Para satisfacer lo anteriormente mencionado, en este trabajo se propuso
el desarrollo de una aplicación con software de computación móvil multipla-
vi
taforma, que permita el acceso a información situada en bases de datos multiplataforma en un servidor Web, a través de dispositivos móviles tales como
PDAs.
La aplicación se ha desarrollado para correr en PDAs, se basa en el trabajo
de un mozo de restaurant, es decir, permite el registro y el seguimiento de
pedidos de clientes dentro del restaurant. Para esto, el mozo deberá utilizar
un PDA con el aplicativo instalado.
Esto significa disminuir los tiempos de atención en cada mesa, ya que cada
acción que realice el mozo sobre los datos, esto se reflejará en las bases de
datos del restaurant.
A su vez se propuso el desarrollo de la plataforma Web de la aplicación
que sea accesible desde la Intranet, que contemple funciones adicionales como
ser: registro de usuarios, registro de nuevos platos o bebidas que formarán
parte del menú, poder ver en cada momento los pedidos que van registrando
los mozos, facturar los mismos, y además obtener estadísticas.
Se propuso también el desarrollo de un sitio Web accesible desde Internet,
que simula ser el sitio de un restaurant, el cual contemple funciones de ecommerce como ser: registro de clientes, registro y atención de solicitudes de
reservas on-line, permitiendo a un cliente realizar una reserva donde puede
expresar los platos y bebidas que desea para la misma.
Objetivos Logrados
Se han alcanzado plenamente la totalidad de los objetivos planteados para
el presente trabajo:
• Desarrollo de una aplicación utilitaria empleando un software de computación móvil multiplataforma para PDAs que permita acceder a información situada en una base de datos que se encuentra en un servidor
Web, mediante una red wi-fi.
• Desarrollo de la plataforma web de la aplicación con acceso a bases de
datos, que sirva de apoyo a la aplicación móvil.
• Desarrollo de la plataforma web que simula ser el sitio web de un restaurant que permita realizar reservas on-line.
vii
Clasificación del Trabajo
El trabajo se encuadra en la utilización de software de base que permite el
desarrollo de aplicaciones que permitan el acceso a bases de datos multiplataformas desde dispositivos móviles tales como PDAs.
Etapas de Desarrollo
• Se ha efectuado una amplia recopilación bibliográfica específica a los
temas pertinentes a la tarea planificada y a los productos de software
que se emplearon para la concreción del trabajo final.
• Gracias a las gestiones realizadas por el Profesor Orientador Mgter. David Luis la Red Martinez ante IBM Argentina se han recibido materiales
tanto en CDs como en libros de dicha empresa, en el marco del Scholars
Program de la misma, destinado a Universidades de todo el mundo; se
destacan por ser necesarios para la realización del presente Trabajo Final
los productos de software como los siguientes:
— WebSphere Studio Application Developer versión 5.0 y 5.1.2.
— DB2 UDB WorkGroup Server Edition versión 8.1.
— WebSphere Studio Device Developer versión 5.7.1.
• Se ha efectuado un estudio acerca de las arquitecturas de aplicaciones
móviles.
• Se ha realizado el análisis y diseño de la base de datos que utiliza la
aplicación.
• Se ha realizado el estudio del manejador de bases de datos DB2 UDB
para Windows.
• Se ha realizado un detallado estudio del J2ME (versión de Java para
móviles), para la herramienta de desarrollo WebSphere Studio Device
Developer versión 5.7.1.
• Se ha realizado un detallado estudio del software para el desarrollo de
las plataformas web de la aplicación, WebSphere Studio Application Developer versión 5.1.2.
viii
• Se ha desarrollado el aplicativo móvil con la utilización del lenguaje Java,
versión J2ME.
• En el marco de la herramienta WebSphere Studio Application Developer se desarrollaron los módulos web del aplicativo utilizadando páginas
XHTMLs, JSPs y Servlets de Java.
• Una vez finalizada la etapa de desarrollo se realizaron las siguientes actividades:
— Empaquetado de la aplicación móvil para su distribución e instalación en los PDAs.
— Instalación del simulador de la Palm TX.
— Instalación y prueba de la aplicación tanto en los emuladores como
así también en una Palm TX real.
— Testeo del sistema, simulando un escenario real realizando pruebas
de conexión entre el sistema móvil y el servidor web a través de
wi-fi en una Intranet.
• Finalizada la aplicación se realizó la grabación en DVD de todo el material correspondiente al trabajo final: una versión de la aplicación, otra
referente al libro en formato LaTex y el PDF generado. También se incluyó los instaladores de los productos utilizados para el desarrollo, es
decir DB2 UDB, WebSphere Studio Application Developer, WebSphere
Studio Device Developer y emuladores.
Organización del Informe Final
El trabajo final de aplicación comprende un informe final impreso y un
DVD además de un resúmen y de un resúmen extendido.
El informe final está organizado en capítulos los que se indican a continuación:
• Introducción: Se presenta una vision global acerca de las nuevas tecnologías de información y comunicaciones, como así también las principales
caracteristicas del comercio electronico móvil, computación ubicua y de
la sociedad de la información y el conocimiento.
ix
• Tecnología móvil: Se indican los principales dispositivos móviles y su
evolución, y se explican las diferentes tecnologías de conexión inalámbricas de estos.
• Aplicaciones móviles: Se explican los requerimientos necesarios para una
aplicación móvil.
• Java: Se presentan los principales aspectos y características referidas al
lenguaje.
• Java 2 Micro Edition: Se detallan las conceptos y características del
lenguaje Java para dispositivos electrónicos con menos recursos.
• Introducción al DB2: Se detallan las más relevantes características de
esta familia de productos de gestión de bases de datos.
• WebSphere Studio: Presenta los principales aspectos de este entorno de
aplicaciones complejas.
• Descripción de la aplicación: Se describen todos los aspectos de la aplicación desarrollada utilizando las herramientas antes mencionadas.
• Conclusiones: Se presentan las conclusiones a las que se ha llegado al
finalizar el presente trabajo y las posibles líneas futuras de acción.
El DVD adjunto al informe final impreso, contiene lo siguiente:
— Instaladores del software utilizado.
— Resúmenes del trabajo realizado.
— Informe final en formato digital.
— Presentación para la defensa final.
— Aplicación desarrollada.
Juan Felix Basterretche
Licenciatura en Sistemas de Información
Universidad Nacional del Nordeste
L.U.: 34039
Corrientes; 19 de Noviembre de 2009
x
Índice General
1 Introducción
1.1 Comercio Electrónico . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Forma en que los actores se relacionan . . . . . . . . . .
1.1.2 Espacio donde se realizan las operaciones . . . . . . . .
1.1.3 El comercio y la función tiempo . . . . . . . . . . . . . .
1.1.4 Actores . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.5 Otras Concepciones del Comercio Electrónico . . . . . .
1.1.6 Esquema General . . . . . . . . . . . . . . . . . . . . . .
1.1.7 Modelos de Comercio Electrónico . . . . . . . . . . . . .
1.2 M-Commerce . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Computación Ubicua . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1 Concepto . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.3 Diseño centrado en el usuario . . . . . . . . . . . . . . .
1.4 La Ley de Moore y la Visión de Weiser . . . . . . . . . . . . . .
1.5 SIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1 La Visión Sobre las Sociedades de la Información y de
la Comunicación . . . . . . . . . . . . . . . . . . . . . .
1.5.2 Principios Guía . . . . . . . . . . . . . . . . . . . . . . .
1.5.3 Hacia las sociedades de información y comunicación . .
1.6 TICs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.1 Aspecto social de las TIC . . . . . . . . . . . . . . . . .
1.7 Tecnología en el Restaurant . . . . . . . . . . . . . . . . . . . .
1.7.1 Beneficios e inconvenientes del uso de las tecnologías de
la información en el sector gastronómico. . . . . . . . .
1
1
1
2
3
3
4
4
5
7
8
8
8
11
15
17
17
18
18
19
20
20
21
2 Tecnología Móvil
25
2.1 Telefonía Móvil . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.1 Celulares: Concepto General . . . . . . . . . . . . . . . 25
xi
xii
ÍNDICE GENERAL
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
28
32
34
35
36
37
39
40
42
42
43
46
49
50
. . . .
Móvil
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
53
53
54
56
59
62
63
4 Java
4.1 Introducción al Lenguaje . . . . . . . . . . . . . .
4.1.1 Bibliotecas de Clases Estándares de Java
4.1.2 Java es Multiplataforma . . . . . . . . . .
4.1.3 Características del Lenguaje . . . . . . . .
4.2 Estructura de un Programa Java . . . . . . . . .
4.3 Conceptos Básicos . . . . . . . . . . . . . . . . .
4.3.1 Clases . . . . . . . . . . . . . . . . . . . .
4.3.2 Herencia . . . . . . . . . . . . . . . . . . .
4.3.3 Interfaces . . . . . . . . . . . . . . . . . .
4.3.4 Package . . . . . . . . . . . . . . . . . . .
4.4 Variables de Java . . . . . . . . . . . . . . . . . .
4.4.1 Datos de Objetos o Instancia . . . . . . .
4.4.2 Datos de Clase . . . . . . . . . . . . . . .
4.5 Operadores del Lenguaje Java . . . . . . . . . . .
4.5.1 Operadores Aritméticos . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
65
65
67
68
69
70
71
71
72
72
73
73
75
75
76
76
2.2
2.3
2.4
2.5
2.6
2.7
2.1.2 Un Poco de Historia . . . . . . .
2.1.3 Generaciones del Celular . . . . .
La Computadora Portátil . . . . . . . .
PDAs . . . . . . . . . . . . . . . . . . .
2.3.1 Historia de las PDAs . . . . . . .
2.3.2 Atari Portfolio . . . . . . . . . .
2.3.3 Apple Newton . . . . . . . . . .
Palm Pilot 5000 . . . . . . . . . . . . . .
Sistemas operativos y equipos . . . . . .
Estándares . . . . . . . . . . . . . . . .
2.6.1 Bluetooth . . . . . . . . . . . . .
2.6.2 IrDA - Infrared Data Association
2.6.3 IEEE 802.11 o Wi-Fi . . . . . . .
Internet Móvil - WAP . . . . . . . . . .
2.7.1 Tecnología - WAP . . . . . . . .
3 Aplicaciones Móviles
3.1 Introducción . . . . . . . . . . . . . . .
3.2 Requerimientos Para una Arquitectura
3.3 Arquitectura de Portal Móvil . . . . .
3.4 Arquitectura de Bases de Datos . . . .
3.5 Aplicaciones Multiplataforma . . . . .
3.5.1 Java y Multiplataforma . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ÍNDICE GENERAL
4.6
4.7
4.5.2 Operadores de Asignación . .
4.5.3 Operadores Unarios . . . . .
4.5.4 Operador Instanceof . . . . .
4.5.5 Operador Condicional . . . .
4.5.6 Operadores Incrementales . .
4.5.7 Operadores Relacionales . . .
4.5.8 Operadores de Concatenación
Estructuras de Programación . . . .
4.6.1 Sentencias o Expresiones . . .
4.6.2 Comentarios . . . . . . . . .
4.6.3 Bifurcaciones . . . . . . . . .
4.6.4 Bucles . . . . . . . . . . . . .
Servlets . . . . . . . . . . . . . . . .
4.7.1 Estructura de un Servlet . . .
4.7.2 Instanciación e Inicialización
4.7.3 Servicio de Demanda . . . . .
4.7.4 Terminación . . . . . . . . . .
4.7.5 Java Server Faces . . . . . . .
4.7.6 Desarrollando Aplicaciones .
xiii
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
de Caracteres
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5 Java 2 Micro Edition
5.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1 Comparación de Versiones . . . . . . . . . . . . .
5.1.2 Algunas Consideraciones al Desarrollar en J2ME
5.2 Componentes de J2ME . . . . . . . . . . . . . . . . . . .
5.2.1 Máquinas Virtuales J2ME . . . . . . . . . . . . .
5.2.2 Configuraciones . . . . . . . . . . . . . . . . . . .
5.2.3 Perfiles . . . . . . . . . . . . . . . . . . . . . . .
5.3 Cómo Detectar una Aplicación J2ME . . . . . . . . . .
5.4 Los MIDlets . . . . . . . . . . . . . . . . . . . . . . . .
5.4.1 El Gestor de Aplicaciones . . . . . . . . . . . . .
5.4.2 Ciclo de Vida de un Midlet . . . . . . . . . . . .
5.4.3 Estados de un MIDlet . . . . . . . . . . . . . . .
5.4.4 El paquete javax.microedition.midlet . . . . . . .
5.4.5 La Clase MIDlet . . . . . . . . . . . . . . . . . .
5.4.6 Estructura de los MIDlets . . . . . . . . . . . . .
5.5 Interfaces Gráficas de Usuario . . . . . . . . . . . . . . .
5.5.1 La Clase Display . . . . . . . . . . . . . . . . . .
5.5.2 La Clase Displayable . . . . . . . . . . . . . . . .
5.5.3 Las Clases Command y CommandListener . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
76
77
77
77
78
78
79
79
79
80
81
82
84
85
88
90
90
90
96
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
97
97
98
101
102
103
106
109
114
115
116
116
118
119
119
121
123
124
126
126
xiv
ÍNDICE GENERAL
5.6
5.7
5.5.4 Interfaz de Usuario de Alto Nivel . . . . . . . . . . . . .
RMS (Record Management System) . . . . . . . . . . . . . . .
5.6.1 Modelo de Datos . . . . . . . . . . . . . . . . . . . . . .
5.6.2 Record Stores . . . . . . . . . . . . . . . . . . . . . . .
5.6.3 Creación de un Record Store . . . . . . . . . . . . . . .
5.6.4 Manipulación de Registros . . . . . . . . . . . . . . . . .
5.6.5 Operaciones con Record Stores . . . . . . . . . . . . . .
5.6.6 Búsqueda de Registros . . . . . . . . . . . . . . . . . . .
Comunicaciones en J2ME . . . . . . . . . . . . . . . . . . . . .
5.7.1 Clases y Conexiones del Generic Connection Framework
5.7.2 Comunicaciones HTTP . . . . . . . . . . . . . . . . . .
128
137
139
140
141
142
152
152
153
153
157
6 Introducción al DB2
175
6.1 Bases de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
6.2
6.3
6.1.1 Objetivos de las Bases de Datos . . . .
6.1.2 Ventajas de las Bases de Datos . . . . .
Sistema de Administración de Bases de Datos
Organización de Bases de Datos . . . . . . . .
6.3.1 Bases de Datos Jerárquicas . . . . . . .
6.3.2 Bases de Datos en Red . . . . . . . . .
6.3.3
6.4
Bases de Datos Relacional
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
176
176
177
179
179
180
. . . . . . . . . . . . . . . . 180
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
182
183
186
186
188
188
188
189
190
7 WebSphere Studio
7.1 ¿Qué es WebSphere? . . . . . . . . . . . . . . . . . . . . . .
7.2 Plataforma de Software . . . . . . . . . . . . . . . . . . . .
7.2.1 WebSphere for Commerce - Soluciones B2B . . . . .
7.2.2 WebSphere for Commerce - Soluciones B2C . . . . .
7.2.3 WebSphere for Commerce-Soluciones de Portal . . .
7.2.4 WebSphere for Commerce-Soluciones Digital Media .
7.3 Productos WebSphere Studio . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
193
193
194
195
195
196
197
198
6.5
Introducción a DB2 UDB . . . . . . . . . . . .
6.4.1 Características Generales del DB2 UDB
DB2 UDB Versión 8.1 . . . . . . . . . . . . . .
6.5.1 Centro de Desarrollo . . . . . . . . . . .
6.5.2 Mejoras en XML Extender . . . . . . .
6.5.3 DB2 Warehouse Manager . . . . . . . .
6.5.4 Centro de Depósito de Datos de DB2 .
6.5.5 Asistentes de DB2 . . . . . . . . . . . .
6.5.6 Centro de Mandatos . . . . . . . . . . .
. .
.
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ÍNDICE GENERAL
7.4
7.5
7.6
7.7
xv
WebSphere Studio Application Developer . . . . . . . . . . .
7.4.1 Ventajas de Utilizar a WebSphere Studio Application
Developer . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4.2 Desarrollando Aplicaciones Java . . . . . . . . . . . . .
WebSphere Application Server . . . . . . . . . . . . . . . . . .
7.5.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . .
7.5.2 WebSphere Application Server Como Plataforma Para
el Comercio Electrónico . . . . . . . . . . . . . . . . . .
7.5.3 Application Server - Advanced Edition . . . . . . . . . .
7.5.4 Application Server - Enterprise Edition . . . . . . . . .
7.5.5 Application Server - Standard Edition . . . . . . . . . .
7.5.6 Servidor HTTP . . . . . . . . . . . . . . . . . . . . . . .
7.5.7 Servidor de Aplicaciones . . . . . . . . . . . . . . . . . .
7.5.8 Contenedor de EJB . . . . . . . . . . . . . . . . . . . .
7.5.9 Contenedor Web . . . . . . . . . . . . . . . . . . . . . .
7.5.10 Contenedor de Clientes de Aplicaciones . . . . . . . . .
7.5.11 Sistema Principal Virtual . . . . . . . . . . . . . . . . .
7.5.12 Virtual Hosts (Hosts Virtuales) . . . . . . . . . . . . .
WCTME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.6.1 WebSphere Everyplace Micro Environment . . . . . . .
7.6.2 WebSphere Everyplace Custom Environment . . . . . .
7.6.3 J9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.6.4 WebSphere Studio Device Developer . . . . . . . . . . .
7.6.5 Java 2 Micro Edition (J2ME) . . . . . . . . . . . . . . .
WebSphere Studio Device Developer . . . . . . . . . . . . . . .
7.7.1 Componentes de WebSphere Studio Device Developer .
7.7.2 Herramienta de Desarrollo C (CDT) para Eclipse . . . .
7.7.3 Arquitectura de Device Developer . . . . . . . . . . . .
7.7.4 Utilización del IDE . . . . . . . . . . . . . . . . . . . . .
8 Descripción de la Aplicación
8.1 Introducción . . . . . . . . . . . . . . .
8.2 Estructuración . . . . . . . . . . . . .
8.3 Modelo de datos . . . . . . . . . . . .
8.4 Descripción de MobileChef . . . . . . .
8.4.1 Levantar Pedidos . . . . . . . .
8.4.2 Ver Pedidos . . . . . . . . . . .
8.4.3 Estructura de los Record Stores
8.5 Descripción de J-Chef . . . . . . . . .
8.5.1 Estructura de J-Chef . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
de MobileChef
. . . . . . . . .
. . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
198
201
205
207
207
208
209
210
211
211
212
212
212
213
213
213
214
215
215
215
215
216
216
217
217
218
218
223
223
224
226
235
245
250
256
259
259
xvi
ÍNDICE GENERAL
8.6
Descripción de Miarritze . . . . . . . . . . . . . . . . . . . . . . 286
8.6.1 Estructuración de Miarritze . . . . . . . . . . . . . . . . 288
9 Concluciones
299
9.1 Concluciones Generales. . . . . . . . . . . . . . . . . . . . . . . 299
9.2 Conclusiones Acerca de las Tecnologías y Software Utilizados . 300
9.3 Líneas Futuras de Acción . . . . . . . . . . . . . . . . . . . . . 301
Bibliografía
303
Índice de Materias
305
Índice de Figuras
1.1
1.2
1.3
1.4
1.5
1.6
Esquema General del Comercio Electrónico. . . . . . . . . . . .
Ideal de Computación Ubicua. . . . . . . . . . . . . . . . . . .
Arquitectura Genérica de un Dispositivo de Computación Ubicua
Fases del Diseño Orientado al Usuario . . . . . . . . . . . . . .
MarkWeiser (1952-1999), el Visionario de la Computación Ubicua
Beneficios Obtenidos de la Introducción de Tecnología. . . . . .
5
9
12
13
16
21
2.1
2.2
2.3
2.4
26
27
28
2.13
2.14
2.15
2.16
2.17
Handie Talkie12-16 . . . . . . . . . . . . . . . . . . . . . . . . .
Martin Cooper mostrando el primer teléfono celular. ArrayComm
Publicidad del Motorola Handie Talkie H12-16 . . . . . . . . .
La evolución de los teléfonos celulares fue más allá de las características técnicas. Se puede apreciar cómo en tamaño y peso
la evolución fue considerable. . . . . . . . . . . . . . . . . . . .
Celdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arquitectura GSM . . . . . . . . . . . . . . . . . . . . . . . . .
Modelo Apple IIc de Apple Computers - 1984 . . . . . . . . . .
PC Convertible de IBM - 1986 . . . . . . . . . . . . . . . . . .
Atari Portfolio . . . . . . . . . . . . . . . . . . . . . . . . . . .
Apple Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Palm Pilot 5000 . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comparativa en tamaños entre la Palm Pilot 5000 y el Apple
Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bluetooth Apple Mighty Mouse . . . . . . . . . . . . . . . . . .
Teclado Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . .
IrDA - Organización de sus capas. . . . . . . . . . . . . . . . .
Tarjeta Wi-Fi para PalmOne . . . . . . . . . . . . . . . . . . .
Tarjeta USB para Wi-Fi . . . . . . . . . . . . . . . . . . . . . .
3.1
Arquitectura Portal Móvil . . . . . . . . . . . . . . . . . . . . .
60
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.12
xvii
30
32
33
34
35
37
38
40
41
44
44
46
47
49
xviii
ÍNDICE DE FIGURAS
4.1
4.2
4.3
4.4
4.5
4.6
Mecanismo de Mensajes . . . . . . . . . . . . . . . . . . . . . .
Proceso Compilación y Ejecución . . . . . . . . . . . . . . . . .
Jerarquía y Métodos de las Principales Clases Para Crear Servlets.
Ciclo de Vida de un Servlet. . . . . . . . . . . . . . . . . . . . .
Requerimiento de un archivo JSP. . . . . . . . . . . . . . . . .
Requerimiento de un Servlet . . . . . . . . . . . . . . . . . . . .
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
5.14
5.15
5.16
5.17
5.18
5.19
Arquitectura de la Plataforma Java 2 de Sun. . .
Ubicación de las Tecnologías Java. . . . . . . . .
Proceso de Verificación. . . . . . . . . . . . . . .
Entorno de Ejecución de J2ME. . . . . . . . . . .
Ciclo de Vida de un MIDlet. . . . . . . . . . . . .
Estados de un MIDlet. . . . . . . . . . . . . . . .
Jerarquía de Clases. . . . . . . . . . . . . . . . .
Un MIDlet y el RMS. . . . . . . . . . . . . . . .
Acceso a un RMS a Través de un MIDlet Suite. .
Esturctura de Un Record Store. . . . . . . . . . .
Ejemplo RMS. . . . . . . . . . . . . . . . . . . .
Jerarquía de Interfaces. . . . . . . . . . . . . . .
Estados de una conexión HTTP. . . . . . . . . .
Ejemplo de comunicación HTTP de un MIDlet. .
Solicitud de permiso para utilizar tiempo de aire.
Iniciando el proceso de conexión. . . . . . . . . .
Conectandose a la red wi-fi. . . . . . . . . . . . .
Obteniendo dirección IP. . . . . . . . . . . . . . .
Conectado a red wi-fi. . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
100
101
105
110
117
118
124
139
140
141
151
154
158
168
169
170
171
172
173
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
6.10
Estructura de Una Base de Datos . . . . . . .
Sistema de Administración de Bases de Datos
Modelo de Bases de Datos Jerárquica. . . . .
Modelo de Bases de Datos en Red. . . . . . .
Modelo de Bases de Datos Relacional. . . . .
AIV Extender. . . . . . . . . . . . . . . . . .
XML Extender. . . . . . . . . . . . . . . . . .
Centro de Desarrollo. . . . . . . . . . . . . . .
Asistente Para Crear Tabla. . . . . . . . . . .
Centro de Mandatos. . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
178
178
180
181
182
185
185
187
190
191
7.1
7.2
La familia del WebSphere Studio. . . . . . . . . . . . . . . . . . 199
WebSphere Studio, entorno de desarrollo. . . . . . . . . . . . . 199
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
67
69
86
89
95
95
ÍNDICE DE FIGURAS
xix
7.3
7.4
7.5
7.6
7.7
7.8
7.9
7.10
. . . . . . . . . . . . . . . . . . . . . . .
Plataforma de Eclipse. . . . . . . . . . .
Asistente de Proyecto Java. . . . . . . .
Paquete Java. . . . . . . . . . . . . . . .
Diálogo de Configuración de Ejecución. .
WebSphere para e-bussines. . . . . . . .
Barra de herramientas de WSDD. . . . .
Métodos de un Objeto. . . . . . . . . . .
.
.
.
.
.
.
.
.
200
201
206
207
208
209
219
221
8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
8.9
8.10
8.11
8.12
8.13
8.14
Casos de uso del Sistema Principal. J-Chef y MobileChef. . . .
Casos de Uso del módulo Miarritze. . . . . . . . . . . . . . . . .
Modelo de datos del Sistema Principal. . . . . . . . . . . . . . .
Modelo de datos del sitio web Miarritze. . . . . . . . . . . . . .
Pantalla de Aplicaciones de una Palm TX con SO Garnet 5.4.9.
Pantalla Inicial de MobileChef. . . . . . . . . . . . . . . . . . .
Pantalla de Configuración de MobileChef. . . . . . . . . . . . .
Pantalla Default Settings. . . . . . . . . . . . . . . . . . . . . .
Inicio del Proceso de Login. . . . . . . . . . . . . . . . . . . . .
Pantalla de Alerta. . . . . . . . . . . . . . . . . . . . . . . . . .
Posibles situaciones del Proceso de Login. . . . . . . . . . . . .
Progreso del Proceso de Login. . . . . . . . . . . . . . . . . . .
Menú Principal de MobileChef. . . . . . . . . . . . . . . . . . .
Pantalla donde el Mozo debe seleccionar el Nro de mesa, y si el
cliente solicitó una Comida o una Bebida. . . . . . . . . . . . .
Levantar Pedido. . . . . . . . . . . . . . . . . . . . . . . . . . .
El item se ha cargado de manera local. . . . . . . . . . . . . . .
Items de una Orden. . . . . . . . . . . . . . . . . . . . . . . . .
Editar Pedido. . . . . . . . . . . . . . . . . . . . . . . . . . . .
El envío de los datos se realizó correctamente. . . . . . . . . . .
Mesas con pedidos del mozo. . . . . . . . . . . . . . . . . . . .
El Administrador ha atendido una Reserva y la ha convertido
en Pedido Activo. . . . . . . . . . . . . . . . . . . . . . . . . . .
Se ha habilitado el comando Cerrar debido a que todas las ordenes poseen un estado Entregado. . . . . . . . . . . . . . . . .
Formulario donde se capturan los datos necesarios para la posterior Facturación. . . . . . . . . . . . . . . . . . . . . . . . . .
Se ha registrado correctamente el pedido para poder ser Facturado por el Cajero. . . . . . . . . . . . . . . . . . . . . . . . . .
Pantalla inicial de J-Chef. . . . . . . . . . . . . . . . . . . . . .
225
226
227
231
237
238
239
240
241
242
243
244
245
8.15
8.16
8.17
8.18
8.19
8.20
8.21
8.22
8.23
8.24
8.25
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
246
247
248
249
250
251
252
253
254
255
256
260
xx
ÍNDICE DE FIGURAS
8.26 No se han rellenado correctamente los campos necesarios para
el proceso de Login. . . . . . . . . . . . . . . . . . . . . . . . .
8.27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.28 Inicio del Panel de Administrador. . . . . . . . . . . . . . . . .
8.29 Usuarios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.30 Nuevo Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.31 Se debe seleccionar el usuario a editar. . . . . . . . . . . . . . .
8.32 Gestión del Menú. . . . . . . . . . . . . . . . . . . . . . . . . .
8.33 Nuevo Item de Menú. . . . . . . . . . . . . . . . . . . . . . . .
8.34 Luego de seleccionar Tipo, Categoría y Sub Categoría se habilitan los campos a rellenar para el nuevo ítem de menú. . . . .
8.35 Editar Item de Menú. . . . . . . . . . . . . . . . . . . . . . . .
8.36 Gestión de Estadísticas. . . . . . . . . . . . . . . . . . . . . . .
8.37 Todos los Usuarios. . . . . . . . . . . . . . . . . . . . . . . . . .
8.38 Escoger opciones de selección en Estadísticas de Mozos. . . . .
8.39 Opción que requiere de una parámetro de comparación. . . . .
8.40 Ver Comidas. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.41 Listado de Items resultado de una consulta estadística. . . . . .
8.42 Buscar facturas por monto. . . . . . . . . . . . . . . . . . . . .
8.43 Facturas que coinciden con los parámetros de búsqueda ingresados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.44 Cantidad de Mesas con las que va a trabajar el Restaurant. . .
8.45 Modificar Perfil del Administrador. . . . . . . . . . . . . . . . .
8.46 Logout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.47 Inicio del panel de Jefe de Cocina. . . . . . . . . . . . . . . . .
8.48 Ver Pedidos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.49 Modifcar Perfil del Jefe de Cocina. . . . . . . . . . . . . . . . .
8.50 Inicio del Panel de Cajero. . . . . . . . . . . . . . . . . . . . . .
8.51 Lista de Pedidos listos para Facturar. . . . . . . . . . . . . . .
8.52 Facturas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.53 Modificar Perfil del Cajero. . . . . . . . . . . . . . . . . . . . .
8.54 Pantalla Inicial de Miarritze. . . . . . . . . . . . . . . . . . . .
8.55 Miarritze - Quienes Somos?. . . . . . . . . . . . . . . . . . . . .
8.56 Miarritze - Servicios. . . . . . . . . . . . . . . . . . . . . . . . .
8.57 Miarritze - Contacto. . . . . . . . . . . . . . . . . . . . . . . . .
8.58 Registro de Clientes de Miarritze . . . . . . . . . . . . . . . . .
8.59 Cliente Logeado. . . . . . . . . . . . . . . . . . . . . . . . . . .
8.60 Miarritze - Reservas y Pedidos. . . . . . . . . . . . . . . . . . .
8.61 Solicitud de Reserva con Pedidos. . . . . . . . . . . . . . . . . .
260
261
262
263
264
264
265
266
266
267
270
270
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
290
291
292
292
293
ÍNDICE DE FIGURAS
8.62
8.63
8.64
8.65
8.66
8.67
Reserva Registrada. . . . . . . . . . . . . . . . . . . . . . . . .
Miarritze - Configuración. . . . . . . . . . . . . . . . . . . . . .
Miarritze - Listado de Reservas según su Estado. . . . . . . . .
Confirmar o Rechazar una Reserva . . . . . . . . . . . . . . . .
Atender Reserva. . . . . . . . . . . . . . . . . . . . . . . . . . .
La Reserva se ha registrado como pedido activo correctamente.
xxi
294
295
296
296
297
297
Capítulo 1
Introducción
1.1
Comercio Electrónico
Antes de intentar una definición de comercio electrónico, resulta apropiado
analizar los distintos aspectos y características que hacen a la esencia misma
de esta forma de comercio.
Las particularidades del comercio electrónico están dadas, tanto por la forma en que los actores interactúan, como por la nueva dimensión que adquieren
las funciones de tiempo y espacio. Aunque el comercio electrónico mantiene
ciertas analogías y similitudes con el comercio tradicional, dentro de su contexto, los actores pasan a cumplir nuevos roles, operando en un nuevo ámbito
y siguiendo los lineamientos de nuevos principios. [1]
1.1.1
Forma en que los actores se relacionan
En el comercio electrónico no existe contacto físico directo entre los actores.
Las operaciones se realizan a través de medios electrónicos de comunicación,
de ahí que en un sentido amplio algunas personas incluyan dentro de esta
modalidad de comercio a aquellas operaciones que, aunque originadas en una
oferta publicada en catálogos u otros medios gráficos, o publicitada a través
de la radio o la televisión, sean finalizadas por medios de comunicación como
el teléfono o el fax.
En un sentido más estricto, sólo se consideran operaciones de comercio
1
2
CAPÍTULO 1. INTRODUCCIÓN
electrónico a aquellas realizadas enteramente a través de medios digitales de
comunicación como Internet, Intranets, Extranets, o sistemas de Intercambio
Electrónico de Datos (EDI: Electronic Data Interchange).
1.1.2
Espacio donde se realizan las operaciones
Si se llama mercado al lugar donde interactúan compradores y vendedores se
verifica que desde la antigüedad esta interacción está asociada a un lugar físico
determinado. De una forma u otra esta tradición aún continua, y se pueden
encontrar dos tipos de mercados físicos:
• Aquel en el cual comprador y vendedor se encuentran en persona a los
fines de realizar la transacción.
• Aquel que se refiere específicamente al lugar donde la operación es llevada
a cabo, abarcando de este modo a las operaciones que se asocian a dicho
lugar físico. Como ejemplo pueden ser mencionados los mercados de
valores o bolsas donde gente de un lugar u otro del planeta compra o
vende títulos comercializables pertenecientes a corporaciones localizadas
en cualquier lugar del mundo.
Esta dualidad de mercado abriría en principio la posibilidad de asignar las
transacciones o bien al sitio donde está localizado el vendedor, o bien al lugar
donde está situado el comprador. Lo importante es destacar que en ambos
casos las operaciones comerciales ocurren en un lugar determinado. Hasta
ahora siempre ha existido un nexo inseparable entre la operación y el lugar
físico-geográfico en el cual se realiza.
Frente a esta realidad, el comercio electrónico ha abierto una tercera posibilidad: que las operaciones ocurran dentro de un espacio virtual, no específico.
En este caso, la problemática esta planteada por el hecho de que, legalmente, a los fines de otorgarle validez a la transacción, los mismos marcos
regulatorios del comercio requieren la presencia de un lugar físico donde circunscribirla. Dadas las particularidades del comercio electrónico, surge la necesidad de establecer lineamientos normativos adecuados, a fin de dar solución
al vacío legal existente.
1.1. COMERCIO ELECTRÓNICO
1.1.3
3
El comercio y la función tiempo
El comercio tradicional sólo funciona durante ciertos periodos de tiempo, es
decir durante determinados horarios o durante ciertas épocas del año. En dicho comercio, las respuestas a los estímulos producidos por los actores pueden
tomar días, semanas y hasta meses. Si una determinada empresa decide, por
ejemplo, presentar un producto nuevo o lanzar un mensaje a sus potenciales clientes tardará un tiempo en conocer los resultados y requerirá aún más
tiempo para modificarlos en caso de ser necesario.
El comercio electrónico no involucra horarios. Trabaja 24 horas al día,
los 365 días del año. Opera permanentemente un agente electrónico que es
capaz de brindar los datos requeridos, tomar pedidos u ofrecer variedad de
servicios. De igual modo interactúa, obtiene información y la transforma en
conocimiento en tiempo real, sin demoras y casi instantáneamente.
1.1.4
Actores
Como se ha visto en el punto anterior. Los actores del comercio electrónico
pueden no ser humanos.
Los agentes electrónicos son capaces de realizar una gran cantidad de funciones. Si bien es cierto que aún no están muy desarrollados, empresas como
Apple o instituciones educativas como el M.I.T. están trabajando en el desarrollo de dichas tecnologías, así como otras compañías dedicadas a la producción
de software para Internet.
Los robots o agentes electrónicos, una vez preestablecidos ciertos parámetros, poseerán la capacidad de buscar, comparar, “negociar” y completar operaciones sin la necesidad de que intervenga un ser humano. En comparación
con las opciones ofrecidas en los distintos sitios de la red, aún un agente electrónico poco sofisticado puede, actualmente, encontrar el mejor valor tanto
para un libro como para un CD o un pasaje aéreo.
Luego de haber analizado los elementos que le otorgan al comercio electrónico sus propiedades distintivas, llegamos a definirlo como:
“Toda transacción comercial (producción, publicidad, distribución y venta
de bienes y servicios) realizada tanto por personas, empresas o agentes electrónicos a través de medios digitales de comunicación, en un mercado virtual
4
CAPÍTULO 1. INTRODUCCIÓN
que carece de límites geográficos y temporales.”
1.1.5
Otras Concepciones del Comercio Electrónico
• Transacciones de negocios efectuadas mediante redes públicas o privadas, incluyendo transacciones públicas y privadas que utilizan Internet
como instrumento de entrega. Estas transacciones incluyen transferencias financieras, intercambios en línea, subasta, entrega de productos y
servicios, actividades de la cadena de abastecimiento y redes de negocios
integradas. [2]
• El Comercio Electrónico (e-Commerce) es la simple replicación de un
negocio en Internet u otro medio electrónico que permita recoger los
pedidos u ofertar los productos y/o servicios desde o hacia clientes o
proveedores. Por ejemplo vender zapatos en la página web de la empresa,
recibir los pedidos desde la web, por ejemplo, en forma de e-mail o a
una base de datos y hacer los despachos. Muchas veces esta actividad
puede generar duplicación de tareas o tareas extras para asentar esas
transacciones en los sistemas digitales centrales del negocio.
1.1.6
Esquema General
El comercio electrónico se puede definir como un intercambio electrónico de
datos que se utilizan para dar soporte a transacciones comerciales, es decir, un
intercambio de valores entre un vendedor o comerciante (ofertante de bienes
y servicios) y un comprador (demandante de bienes y servicios). [3]
La mayor parte de los sistemas actuales de comercio electrónico consiste
básicamente en un vendedor que oferta sus productos a través de un catálogo
(preferentemente actualizado) y unos compradores de dicho producto quienes
consultan el catálogo ofrecido por el vendedor y a su vez tienen la posibilidad
de comprar dichos productos.
Se puede sintetizar el ciclo de compra en las siguientes etapas:
• La entidad vendedora (ofertante) oferta sus productos mediante un catalogo actualizado.
• La entidad compradora (demandante) consulta los productos ofertados.
1.1. COMERCIO ELECTRÓNICO
5
• La entidad compradora (demandante) realiza el pedido.
• La entidad vendedora (ofertante) acepta el pedido y lo confirma.
• Finalmente es necesario realizar la entrega del producto y el pago (ambos
procesos se pueden realizar indistintamente de forma electrónica o no).
Todos los intercambios entre compradores y vendedores en el escenario
electrónico o virtual se realizan de forma no presencial mediante la utilización
de redes de transmisión como el caso de la red Internet. Como se puede
apreciar en la figura 1.1 de la página 5.
Figura 1.1: Esquema General del Comercio Electrónico.
1.1.7
Modelos de Comercio Electrónico
B2C (Bussines to Consumer) (Negocio a Cliente Final)
Es el negocio orientado hacia el consumidor final (internauta particular
que navega por la red).
Las empresas ofrecen sus productos a particulares a través de su portal
web. El único requisito es conectarse a su web y hacer un pedido.
Se considera el original comercio electrónico.
Las estadísticas indican que cada vez se compra más por Internet, pero la
evolución es lenta comparada con las expectativas que se habían creado.
Tiene el riesgo de que los clientes puedan comparar precios fácilmente, con
lo que el marketing y el posicionamiento de la marca son muy importantes.
Gran parte de su éxito depende de:
6
CAPÍTULO 1. INTRODUCCIÓN
• La originalidad del negocio.
• La comodidad para el comprador.
• La rapidez de la entrega.
• El precio (ahorro con respecto al comercio tradicional).
B2B (Bussines to Bussines) (Negocio a Negocio)
A este tipo de comercio también se lo conoce como comercio mayorista.
En este caso las entidades comerciales son empresas.
Congrega a proveedores, compradores e intermediarios que se ofrecen mutuamente sus productos en base a unas reglas de negocios fijadas.
Es el verdadero impulsor del comercio electrónico.
El volumen de negocio entre empresas es muy superior al negocio dirigido
al cliente final.
C2C (Consumer to Comsumer) (Consumidor a Consumidor)
La negociación se desarrolla entre personas con intereses similares indistintamente de la parte compradora y vendedora. La comunicación se realiza de
forma espontánea y los participantes pueden asumir roles de comprador, vendedor o ambos. Requiere sistema de intermediario para garantizar la confianza
entre los participantes.
Un ejemplo podría ser un sitio de subastas, donde un particular ofrece un
producto y otro lo compra. Es necesario pasar por un intermediario, que es la
subasta, con lo que se podría resumir en dos negocios B2C paralelos.
Otra categoría de comercio electrónico que seguramente impactará en el
futuro es Mobile-Commerce (M-Commerce) o comercio electrónico a través de
teléfonos móviles.
Se fundamenta en lo siguiente:
• La penetración de la telefonía móvil.
• El acceso gratuito/tarifa plana a Internet.
• La implantación de la tarjeta inteligente. Los móviles inteligentes.
1.2. M-COMMERCE
7
• Telefonía inalámbrica digital.
• La convergencia: Teléfono fijo/móvil/Internet.
El potencial de usuarios de teléfonos móviles es superior al de los internautas.
Los estudios de empresas consultoras de comercio electrónico apuestan por
el comercio electrónico móvil , como el de mayor desarrollo e impacto futuro.
1.2
M-Commerce
Teniendo en cuenta todas las ventajas que el E-COMMERCE ha demostrado
tener, surge una pregunta, ¿Por qué es necesario estar atado a la pantalla de
un computador en un escritorio para poder disfrutar de los servicios y de los
beneficios del E-COMMERCE ? La respuesta está en el M-COMMERCE , el
cual nos ofrece el valor agregado de la movilidad y nos libera de las conexiones
fijas. El M-COMMERCE consiste en el uso de terminales móviles (Teléfonos
celulares, Asistentes personales Digitales - PDAs, Palms, LapTops, etc.) y de
redes móviles públicas o privadas para accesar información y conducir transacciones que resultan en la transferencia de valor mediante el intercambio de
información, bienes o servicios.
El fuerte desarrollo de la norma GSM en Europa, el sistema de SMS, y especialmente el WAP, facilitaron el acceso móvil e interactivo a datos, abriendo
nuevas posibilidades para el comercio. Pero esas oportunidades tienen algunas
dificultades como el ancho de banda limitado que aún complica las transmisiones, y la interfaz de usuario de los dispositivos móviles es limitada en tamaño.
Además, los costos de acceso son altos, y el poder de cómputo de estos
dispositivos es mucho más pequeño que el de las PCs.
El M-Commerce involucra tres aspectos básicos:
• Oferta de los negocios y servicios en un área circundante al usuario.
• Información oportuna georeferenciada mientras el usuario está en movimiento.
• Posibilidad de completar la transacción de forma inmediata.
8
CAPÍTULO 1. INTRODUCCIÓN
Por ello debe ofrecer al usuario las siguientes prestaciones:
• Negociación y entrega inmediata.
• Métodos de micro y macro pagos.
• Facilidades de uso en el contexto móvil.
1.3
Computación Ubicua
La ubicuidad es la propiedad por la cual una entidad existe o se encuentra en
todos los sitios al mismo tiempo. La Computación Ubicua pretende la integración de las nuevas tecnologías en el entorno personal, insertando dispositivos
inteligentes en las tareas diarias, haciendo que interactúen de forma natural
y desinhibida en todo tipo de situaciones y circunstancias. De esta forma se
pretende unir el mundo real con una representación virtual, apoyándose sobre
la inteligencia ambiental y logrando el entorno inteligente.
1.3.1
Concepto
La Computación Ubicua, también denominada Computación Pervasiva, fue
descrita por primera vez por Mark Weiser en 1991. La esencia de su visión era
la creación de entornos llenos de computación y capacidad de comunicación,
integrados de forma inapreciable con las personas. En la fecha en que Weiser
describió su idea no existía la tecnología necesaria para llevarla a cabo, por
lo que no era posible desarrollarla, pero después de una década de progreso,
estas ideas son productos comercialmente viables, aún cuando fueron en sus
orígenes criticadas. [4]
1.3.2
Objetivos
Uno de los objetivos más importantes de la Computación Ubicua es integrar
los dispositivos computacionales lo más posible, como se puede ver en la figura
1.2 de la página 9, para hacer que se mezclen en la vida cotidiana, y permitir a
los usuarios centrarse en las tareas que deben hacer, y no en las herramientas
que deben usar, pudiendo suponer una revolución que cambie el modo de vida.
El hecho de enviar la computación a un “segundo plano” tiene dos significados:
1.3. COMPUTACIÓN UBICUA
9
• El primero es el significado literal, detallando que la tecnología de la
computación se debe integrar en los objetos, cosas, tareas y entornos
cotidianos.
• El segundo se refiere a que esta integración se debe realizar de forma
que estos elementos no deben interferir en las actividades para las que
son usadas, proporcionando un uso más cómodo, sencillo y útil de los
mismos.
Figura 1.2: Ideal de Computación Ubicua.
Como ya se ha detallado, en su momento la Computación Ubicua era una
visión inalcanzable, pero hoy en día la evolución de las tecnologías, hacen que
ésta sea viable. Siguiendo la Ley de Moore, las previsiones se van cumpliendo,
y la capacidad de cómputo de los procesadores avanza rápidamente, además de
la capacidad de almacenamiento, el ancho de banda para las comunicaciones,
etc. En resumen, cada poco tiempo tenemos dispositivos más baratos, más
pequeños y más potentes, siendo la previsión para los próximos tiempos que
siga ocurriendo lo mismo, excepto para un factor, las baterías. Esto supone
10
CAPÍTULO 1. INTRODUCCIÓN
una limitación para los dispositivos que se tratan aquí, porque las capacidades
de procesamiento y de almacenamiento crecen exponencialmente, y también,
aunque no al mismo ritmo crece el consumo de energía pero la capacidad para
dotar a estos dispositivos de la energía necesaria crece muy lentamente. [5]
Con las nuevas tecnologías también disponemos de nuevos materiales, dando lugar a novedosos sistemas, pero también existen otros en pleno desarrollo
que pueden presentar grandes avances en la Computación Ubicua.
Por lo tanto, los objetos cotidianos en los que se integra la tecnología de
computación, tienen una serie de características que permiten y delimitan la
creación del entorno ubicuo buscado: Comunicación entre dispositivos, ya que
los elementos del sistema disponen no sólo de capacidad de computación, sino
también de comunicación, tanto con el usuario como con los demás elementos
a su alrededor mediante WiFi, Bluetooth, GPRS/UMTS, UWB, RFID, etc.
Disponibilidad de memoria, que puede ser usada para almacenar información
y así mejorar la interacción con el resto de dispositivos. Sensibilidad al contexto, siendo capaces de adaptarse a diferentes situaciones, como su situación
geográfica, las preferencias de los usuarios, los dispositivos que se encuentran
en el entorno, etc., actuando en base a este contexto. Por último, son capaces de reaccionar ante ciertos estímulos o eventos, que pueden percibir en su
entorno a través de sensores o mediante interacción con otros dispositivos.
La Computación Ubicua, incorpora cuatro nuevos conceptos:
• Uso eficaz de espacios “perspicaces”: Se basa, en la detección
del estado de un individuo y de sus necesidades, deducidas de dicho
estado, ya sea en la oficina, sala de reuniones, clase, domicilio, coche,
etc. El espacio perspicaz surge cuando varios dispositivos inteligentes
coinciden en el mismo espacio físico e interactúan colaborativamente
para dar soporte a los individuos que se encuentren en él. La domótica,
computación ubicua en el domicilio, es la aplicación más popular.
• Invisibilidad: Actualmente, se está lejos de la propiedad expuesta por
Weiser para los sistemas ubicuos, la completa desaparición de la tecnología de la consciencia del usuario. Una buena aproximación es tener
presente, en el diseño de estos sistemas, la idea de mínima distracción
del usuario. La invisibilidad va a requerir del cambio drástico en el tipo
de interfaces que nos comunican con los computadores. Reconocimiento
de voz y de gestos, comprensión del lenguaje natural y del texto manuscrito, en la dirección hombre máquina y en el sentido contrario, síntesis
1.3. COMPUTACIÓN UBICUA
11
de lenguaje hablado y escrito y de representaciones gráficas.
• Escalabilidad local: El concepto de localidad de servicios en computación ubicua es fundamental frente a la universalidad de servicios de
Internet. Los usuarios disponen de capacidades asociadas al contexto en
el que se encuentran, careciendo de sentido, por ejemplo, que las aplicaciones domóticas situadas en el domicilio particular tengan que estar
escrutando las necesidades del usuario que se encuentra trabajando en
ese momento en la oficina. Al igual que la mayoría de las interacciones
en la naturaleza, la proporcionada por estos sistemas, decrece con la
distancia al usuario.
• Ocultación de los desniveles de acondicionamiento: Dependiendo
de la infraestructura y del desarrollo tecnológico disponible, la distribución de los servicios ofrecidos puede ser muy poco uniforme, en esta
situación el principio de invisibilidad puede no cumplirse ya que el usuario detectaría desagradables transiciones. Este requisito es hoy día el
más alejado respecto de la situación ideal, los sistemas que incorporan
computación ubicua están aislados, sin continuidad entre unos y otros.
En la figura 1.3 de la página 12, se describe una arquitectura genérica de
un dispositivo de computación ubicua, que permite interactuar con el usuario
a través de su interfaz (tanto de entrada como de salida), obtener el contexto
e información relevante del mundo real para dar el soporte adecuado a sus
necesidades y modificar el entorno en base a la información capturada por los
sensores y las acciones realizadas a través de los actuadores, y mediante su
interfaz de red puede coordinarse con otros elementos del sistema.
Se puede ir viendo cómo el usuario toma un rol principal en el sistema, por
lo que tiene sentido adoptar una perspectiva de diseño centrada en el usuario,
a la hora de idear e implementar los posibles servicios y aplicaciones.
1.3.3
Diseño centrado en el usuario
La arquitectura y diseño de los sistemas ubicuos giran entorno a las características de los usuarios. Además, a la hora de diseñar el sistema, se debe tener
presente que ciertas capacidades son necesarias:
• Identificar al usuario: En este sentido se puede pensar en dos estrategias posibles, la utilización de señales de identidad (tags) que porta el
12
CAPÍTULO 1. INTRODUCCIÓN
Figura 1.3: Arquitectura Genérica de un Dispositivo de Computación Ubicua
propio usuario o el uso de sensores que le reconocen por alguna característica o conjunto de ellas (biometría).
• Reconocer el estado del usuario: El sistema debe adquirir información del estado del usuario con el fin de tomar decisiones acertadas, en
este sentido la localización tanto espacial como temporal es considerada
como parte del estado del individuo.
• Inferir sus necesidades: Una vez conocido el estado del usuario, pueden determinarse cuáles van a ser sus necesidades, a través de sus hábitos
de comportamiento, basándose en situaciones similares que le ocurrieron
a él o a otros usuarios en la misma circunstancia o similar.
• Actuar proactivamente: El sistema tendrá iniciativa, realizará operaciones sobre el mundo físico que cambiarán el estado y las necesidades
de los usuarios. Esta capacidad requiere ser diseñada con especial cuidado, ya que no todos los usuarios están dispuestos a que un sistema tome
decisiones de forma transparente a ellos. Esta cualidad tendrá que estar
parametrizada y será ajustada por el usuario.
De forma general, el diseño centrado en el usuario es una filosofía y proceso
de diseño en el que las necesidades, los deseos y las limitaciones del usuario
1.3. COMPUTACIÓN UBICUA
13
final del sistema toman una atención y relevancia considerable en cada nivel del
proceso de diseño. El diseño centrado en el usuario puede ser caracterizado
como un problema de resolución en múltiples niveles, que no sólo requiere
diseñadores para que analicen y prevean cómo los usuarios se sienten más a
gusto en el uso de una interfaz o una acción, sino también para probar la validez
de sus hipótesis teniendo en cuenta las conductas del usuario con pruebas en
la vida real con usuarios actuales. Tales pruebas son tan necesarias como
difíciles para los diseñadores de un sistema, de comprender en forma intuitiva
lo que un usuario primerizo experimenta de sus diseños, y cómo es la curva de
aprehensión de cada usuario.
Figura 1.4: Fases del Diseño Orientado al Usuario
Las tecnologías en ocasiones son demasiado complicadas para la audiencia objetivo, por lo que el diseño de la interacción con los usuarios pretende
minimizar la curva de aprendizaje e incrementar la precisión y eficiencia de
una tarea sin disminuir su utilidad. Así, se pretende disminuir la frustración
e incrementar la productividad y satisfacción del usuario.
El proceso de diseño centrado en el usuario se compone de varias fases
(ver figura 1.4 de la página 13), ideadas para involucrar al máximo al propio
14
CAPÍTULO 1. INTRODUCCIÓN
usuario, sus necesidades, características y objetivos que espera del sistema
final. Así, el proceso se estructura en seis pasos principales, los cuales pueden
ser iterados diversas veces en base al feedback dado por el usuario a lo largo
del desarrollo. A continuación se detallan los mismos:
• Investigación de diseño: En base a ciertas técnicas (observación,
entrevistas, cuestionarios, etc.) los diseñadores deben investigar sobre
los usuarios y su entorno, para aprender más sobre ellos y así ser capaces
de diseñar para ellos.
• Análisis de la investigación y generación del concepto: En base
a la información obtenida de los usuarios, las posibilidades tecnológicas
y las oportunidades de negocio, los diseñadores crean, idean y realizan
esbozos de nuevo software, servicios o sistemas. Este proceso puede involucrar varias fases de brainstorming, discusiones y refinamiento. Para
extraer los requisitos de los usuarios, los diseñadores pueden hacer uso de
perfiles de usuarios existentes; a partir de los requisitos se pueden crear
los escenarios de aplicación, y un resumen de alto nivel de los objetivos
del desarrollo.
• Diseño alternativo y evaluación: Una vez definido el problema a resolver, los diseñadores son capaces de desarrollar soluciones alternativas
acompañadas de prototipos básicos, que apoyen los conceptos e ideas
propuestos. Estas soluciones son evaluadas y a veces fusionadas, dando
lugar a un diseño que cubra el mayor número de requisitos posibles.
• Prototipado y test de usabilidad: Los diseñadores de interacción
usan una gran variedad de técnicas de prototipado para probar aspectos
de ideas de diseño. Éstas pueden ser divididas en: las que se centran en
probar el rol de un artefacto, las que se centran en el look and feel, y las
que prueban la implementación.
• Implementación: Los diseñadores de la interfaz tienen que estar involucrados en el desarrollo del producto, para confirmar que el diseño se
está implementando correctamente. En ocasiones, se necesitan realizar
cambios durante el proceso de creación, y por lo tanto los diseñadores
deben actuar sobre el diseño de la interfaz.
• Pruebas del sistema: Una vez que el sistema está terminado, se deben
definir y realizar otra ronda de tests, tanto para controlar la usabilidad
como los posibles errores.
1.4. LA LEY DE MOORE Y LA VISIÓN DE WEISER
15
En base al proceso definido para la creación y desarrollo del sistema en
torno al usuario, se tiene la capacidad de lograr servicios o aplicaciones que
cubran las necesidades y requisitos marcados, ofreciendo muy diversas funcionalidades a los usuarios gracias a los dispositivos inteligentes distribuidos y
camuflados en el entorno.
1.4
La Ley de Moore y la Visión de Weiser
Los constantes avances en microelectrónica se han convertido en algo común:
la ley de Moore, formulada en los años sesenta por Gordon Moore, afirma que
la capacidad de computación disponible en un microchip se multiplica por
dos aproximadamente cada 18 meses y, de hecho, esto ha resultado ser un
pronóstico extraordinariamente exacto del desarrollo del chip desde entonces.
Se puede observar también un crecimiento exponencial comparable en otras
áreas de la técnica, como por ejemplo en la capacidad de almacenamiento y el
ancho de banda para la comunicación. Visto de otra forma, los precios para la
funcionalidad microelectrónica con la misma capacidad de computación están
bajando gradualmente de forma radical.
Esta tendencia que no cesa producirá una profusión de computadores muy
pequeños en un futuro no demasiado lejano, lo que anuncia un cambio de paradigma en las aplicaciones informáticas: se montarán procesadores, dispositivos
de memoria y sensores para formar una amplia gama de “aparatos electrónicos
de información” baratos, que estarán conectados sin cables a Internet y serán
construidos de forma personalizada para realizar tareas específicas.
Estos componentes microelectrónicos se podrán incrustar además en casi
cualquier tipo de objeto cotidiano, lo que le añadirá “sensibilidad” (smartness),
por ejemplo modificando su comportamiento dependiendo del contexto en que
se encuentre del objeto. Al final, el procesamiento de la información y las
capacidades de comunicación quedarán integrados en objetos que, por lo menos
a primera vista, no parecerán de ningún modo aparatos eléctricos, de esta
forma las capacidades de la computación se volverán ubicuas.
El término “computación ubicua” (ubiquitous computing), que denota esta
visión, fue acuñado hace más de diez años por Mark Weiser , un investigador
del Palo Alto Research Center de XEROX. Weiser ve la tecnología solamente
como un medio para un fin y como algo que debería quedar en segundo plano
16
CAPÍTULO 1. INTRODUCCIÓN
para permitir al usuario concentrarse completamente en la tarea que está realizando. En este sentido, considerar el computador personal como herramienta
universal para la tecnología de la información sería un enfoque equivocado, ya
que su complejidad absorbería demasiado la atención del usuario.
Según Weiser , el computador como dispositivo dedicado debería desaparecer, mientras que al mismo tiempo debería poner a disposición de todo lo
que nos rodea sus capacidades de procesamiento de la información.
Figura 1.5: MarkWeiser (1952-1999), el Visionario de la Computación Ubicua
Weiser ve el término “computación ubicua” en un sentido más académico e
idealista como una visión de tecnología discreta, centrada en la persona, mientras que la industria ha acuñado por eso el término “computación pervasiva”,
o ampliamente difundida “pervasive computing” con un enfoque ligeramente
diferente: Aunque su visión siga siendo todavía integrar el procesamiento de
la información en objetos cotidianos de forma casi invisible, su objetivo principal es utilizar tales objetos en un futuro próximo en el ámbito del comercio
electrónico y para técnicas de negocios basados en la Web.
Esta variante pragmática de computación ubicua está empezando ya a
tomar forma: El presidente de IBM Lou Gerstner describía una vez su visión
de la “era post-PC” como “mil millones de personas interactuando con un
millón de negocios electrónicos a través de un billón de dispositivos inteligentes
interconectados”.
1.5. SIC
1.5
17
Sociedad de la Información y el Conocimiento
(SIC)
El término “Sociedad de la Información” ha sido incorporado, con relativa insistencia, en los años recientes, a la literatura política, académica y mediática
contemporáneas. Periodistas, políticos, cibernautas, académicos e investigadores suelen evocar tan ambiguo concepto para referirse al tipo de sociedades
deseables a las cuales habrá de conducirnos la “globalización”. [6]
La Cumbre Mundial sobre la Sociedad de la Información (CMSI) [7], organizada por el sistema de la ONU bajo el auspicio de Kofi Annan, la Unión
Internacional de Telecomunicaciones (UIT), y otras agencias de la ONU interesadas en la materia, planea adoptar una declaración que incorpore un
conjunto de principios y reglas de conducta destinados a crear a nivel mundial
una Sociedad de la Información más inclusiva y equilibrada; un plan de acción
y una declaración de principios que formulen propuestas operativas y medidas
concretas para que todos los actores se beneficien más equitativamente de las
oportunidades que concederá la Sociedad de la Información en el futuro.
Las organizaciones cívicas internacionales que más han participado a nivel
mundial en la discusión y construcción del futuro que debe adoptar la sociedad
de la información a través de la CMSI, poseen una visión diferente a la manejada por los organismos económicos y políticos internacionales tradicionales
que han creado esencialmente un proyecto de expansión de las empresas como
negocios eficientes y no en el mejoramiento generalizado de las condiciones de
vida de los seres humanos. Por ello, la sociedad civil ha proclamado la otra
versión de lo que debe ser la Sociedad de la Información y de la Comunicación
y fundamenta su concepción, en las siguientes bases: concepción de la sociedad
de la información, principios guías.
1.5.1
La Visión Sobre las Sociedades de la Información y de
la Comunicación
La sociedad civil entiende a las sociedades de la información y de la comunicación como realidades basadas en los derechos humanos y en el desarrollo
humano duradero. Los sucesos que definen las sociedades de la información y
de la comunicación deben basarse en principios de justicia económica, política
y social y deben perseguir objetivos de desarrollo humano duradero, además
del apoyo a la democracia, la participación, el fortalecimiento y la igualdad de
18
CAPÍTULO 1. INTRODUCCIÓN
géneros.
1.5.2
Principios Guía
Para alcanzar los objetivos anteriores las estrategias de desarrollo de sociedades de la información y de la comunicación deberán estar guiadas por los
siguientes principios que respondan a la visión expuesta:
• Preponderancia de los derechos humanos y del desarrollo humano duradero.
• El derecho a la comunicación.
• Acceso a la información y a los medios de comunicación.
• Fomentar la diversidad cultural y lingüística.
• Adoptar una perspectiva democrática para las sociedades de información
y comunicación.
1.5.3
Hacia las sociedades de información y comunicación
En la CMSI se abordarán cuestiones tales como las barreras que encuentran
la ciudadanía y las naciones en el acceso a las sociedades de la información.
La CMSI reconoce, específica y abiertamente, un conjunto de diversos tipos
de barreras y no sólo un concepto monolítico de “brecha digital”. Se hará gran
hincapié en tratar las barreras que encuentran los países menos desarrollados
(LDC) y se otorgará especial atención a los pueblos indígenas que tienen un
estatus socioeconómico bajo en la mayoría de los países de residencia, incluso
en países desarrollados. Otros temas a tratar aquí incluirían: barreras educativas, culturales, económicas y sociales; barreras sociales y políticas; relaciones
y roles de género; requisitos para lograr un acceso universal y equitativo; la
información en tanto que bien público, con especial consideración acerca de la
propiedad intelectual y cultural; libertad de expresión y de medios; apoyo a
la diversidad lingüística y cultural con el fin de eliminar las barreras y roles
de los gobiernos, la sociedad civil y el sector privado en la eliminación de los
obstáculos que impiden la creación de sociedades de información y comunicación.
1.6. TICS
19
La Cumbre deberá examinar algunos de los temas regulatorios como la
libertad de expresión; la protección de la información; el acceso a la misma;
la privacidad y seguridad de las redes; la privacidad en el lugar de trabajo; la
protección de la comunidad de consumidores, especialmente en lo que respecta
al correo no deseado y a la creación de categorías de población electrónicas.
1.6
Tecnologías de la Información y la Comunicación
Por Tecnologías de la Información y de la Comunicación (TICs) se entiende un
concepto difuso empleado para designar lo relativo a la informática conectada
a Internet y, especialmente, el aspecto social de éstos. TIC’S : Se denomina
así a las Tecnologías de la Información y de la Comunicación. También se
las suele denominar Ntic’s (por Nuevas Tecnologías de la Información y de la
Comunicación).
Parece pues necesario conectar el concepto a un conjunto de estructuras
materiales, localizar el origen de la difusión de estas estructuras en el tiempo
y en el espacio geográfico y delimitar el fenómeno del espacio virtual que estas
estructuras hacen posible. Dentro de ésta definición general encontramos los
siguientes temas principales:
• Sistemas de comunicación.
• Informática.
• Herramientas ofimáticas que contribuyen a la comunicación.
Las TIC agrupan un conjunto de sistemas necesarios para administrar la
información, y especialmente las computadoras y programas necesarios para
convertirla, almacenarla, administrarla, transmitirla y encontrarla. Los primeros pasos hacia una “Sociedad de la Información” se remontan a la invención
del telégrafo eléctrico, pasando posteriormente por el teléfono fijo, la radiotelefonía y, por último, la televisión. Internet, la telecomunicación móvil y
el GPS pueden considerarse como nuevas tecnologías de la información y la
comunicación.
La revolución tecnológica que vive la humanidad actualmente es debida
en buena parte a los avances significativos en las tecnologías de la informa-
20
CAPÍTULO 1. INTRODUCCIÓN
ción y la comunicación. Los grandes cambios que caracterizan esencialmente
a esta nueva sociedad son: la generalización del uso de las tecnologías, las
redes de comunicación, el rápido desenvolvimiento tecnológico y científico y la
globalización de la información.
1.6.1
Aspecto social de las TIC
La introducción de estas tecnologías consigue un cambio de nuestra sociedad.
Se habla de sociedad de la información o sociedad del conocimiento. Se trata
de un cambio en profundidad de la propia sociedad.
Las nuevas tecnologías de la información y la comunicación designan a la
vez un conjunto de innovaciones tecnológicas pero también las herramientas
que permiten una redefinición radical del funcionamiento de la sociedad. La
puesta en práctica de las TIC afecta a numerosos ámbitos de las ciencias
humanas, la teoría de las organizaciones o la gestión.
La expansión de las tecnologías de la información y la comunicación basadas en la microelectrónica, la informática, la robótica y las redes de comunicaciones se está produciendo a gran velocidad en todos los ámbitos socioeconómicos y de las actividades humanas configurando la nombrada “Sociedad
de la información”.
1.7
Tecnología en el Restaurant
Desde la aparición de las computadoras éstas han sido usadas en los sistemas de
información de las empresas para facilitar el trabajo de control y gestión gracias a la capacidad de recopilar y procesar gran cantidad de datos. En entornos
fuertemente competitivos las empresas han comprendido que las inversiones
en tecnologías de la información pueden incrementar de forma significativa la
competitividad de la empresa.
Aunque las necesidades tecnológicas de los restaurantes parezcan inferiores
en comparación a otros sectores, muchos estudios hablan del uso de las TIC
en estos, que a causa de la globalización y de una competencia creciente,
estos restaurantes cada vez se ven más obligados a realizar inversiones en este
campo. Hoy en día parece impensable que un restaurant no tenga página
web y en el caso ideal su sistema de información debería estar preparado para
1.7. TECNOLOGÍA EN EL RESTAURANT
21
afrontar retos como el “E-Commerce” o poder ofrecer servicios como Wi-Fi a
sus clientes.
1.7.1
Beneficios e inconvenientes del uso de las tecnologías de
la información en el sector gastronómico.
Las TIC se han convertido en una fuente de ventajas competitivas y en un
arma estratégica, especialmente en sectores donde la información juega un papel fundamental en la descripción, promoción y distribución de sus productos.
Pueden ser requisitos para formar alianzas estratégicas, desarrollar canales de
distribución innovadores y nuevas vías de comunicación con proveedore clientes
Existe una relación directa entre la mejora del funcionamiento de los procesos internos de la empresa y la mejora del servicio ofrecido a los clientes. Las
TIC deben mejorar el funcionamiento de estos procesos creando información
relevante e incrementando la comunicación entre los diferentes departamentos
o unidades funcionales, evitando las ineficiencias.
Figura 1.6: Beneficios Obtenidos de la Introducción de Tecnología.
22
CAPÍTULO 1. INTRODUCCIÓN
En la figura 1.6 de la página 21 se detallan los beneficios obtenidos por la
aplicación de las tecnologías de la información y las comunicaciones. En el
esquema vemos como todos los beneficios se centran en el cliente.
Para mejorar el grado de satisfacción del cliente es necesaria la introducción
de técnicas como “data warehouse”, “data mining” o “Customer Relationship
Management”. Estas técnicas permiten recopilar y consolidar datos del cliente
de todos los puntos de contacto con él, antes, durante y después de su estancia.
Esto permite mantener un historial completo y ofrecerle lo que quiere cuando lo
quiere. De hecho algunos directivos piensan que realmente se consigue mejorar
la satisfacción del cliente con el uso de las TIC.
La incorporación de nuevas tecnologías no está sin embargo exenta de riesgos. Según estudios un 90% de los proyectos de TIC no alcanzan los objetivos,
un 80% están por encima del presupuesto o tiempo de implementación esperados, un 40% fallan completamente o son abandonados, en menos del 40%
el personal está preparado para explotar satisfactoriamente el sistema y solo
entre un 10% y un 20% obtiene exitosamente todos los objetivos.
El incremento de la productividad cuando se aplican innovaciones tecnológicas ha sido discutido. Algunos estudios enuncian que mediante la aplicación de tecnologías de la información se obtienen mejoras en el funcionamiento
de la empresa, pero otros enuncian que no hay relación entre productividad
y la aplicación de estas tecnologías o que incluso hay un efecto negativo en
su aplicación. Mientras que en otros se llega a la conclusión que para obtener
beneficio es necesario aprovechar las capacidades de integración, información
y transformación que tienen estas tecnologías, así como hacer un uso más
estratégico.
El cambio del sistema de información en una empresa es un momento
crítico. La empresa debe dejar de trabajar con un sistema que ya es conocido
por los usuarios y que cumple una serie de requerimientos mínimos para dar
soporte a los procesos críticos de la empresa, para pasar a trabajar con un
nuevo sistema cuyo rendimiento no es conocido a priori. Para evitar riesgos se
puede optar por un periodo de convivencia de los dos sistemas, lo que provoca
duplicar el trabajo, o bien hacer la transición de forma acumulativa cambiando
no todo el sistema a la vez sino realizar el cambio por departamentos o unidades
funcionales.
Durante el proceso de cambio es necesario vencer las posibles resistencias
al cambio que se puedan presentar. Para ello puede ser útil la presencia de
1.7. TECNOLOGÍA EN EL RESTAURANT
23
una persona de cierto prestigio en la empresa que sea capaz de promocionar el
uso del nuevo sistema y convertir las posibles resistencias en cooperación por
parte del personal.
Un punto clave es la formación del personal antes, durante y después de la
puesta en funcionamiento del nuevo sistema. Especialmente crítico es en un
sector como el gastronómico donde muchos de los usuarios que van a utilizar
el sistema tienen un perfil de formación bajo.
Capítulo 2
Tecnología Móvil
2.1
2.1.1
Telefonía Móvil
Celulares: Concepto General
Se define al teléfono móvil o celular como un dispositivo electrónico de comunicación, normalmente de diseño reducido y sugerente, basado en la tecnología
de ondas de radio, que tiene la misma funcionalidad que cualquier teléfono de
línea fija. Su rasgo característico principal es que se trata de un dispositivo
portable e inalámbrico, es decir, que la realización de llamadas no es dependiente de ningún terminal fijo y que no requiere de ningún tipo de cableado
para llevar a cabo la conexión a la red telefónica. [8]
Además de ser capaz de realizar llamadas como cualquier otro teléfono
convencional, un celular moderno suele incorporar un conjunto de funciones
adicionales que aumentan la potencialidad de utilización de estos dispositivos.
Es más, su desarrollo y exigencia ha llegado a tal punto, que se puede hablar
incluso de términos tales como memoria RAM. Y considerando que estos pueden crear y reproducir información de todo tipo (audio, video, texto, etc.),
hace de estos un complemento perfecto tanto para el hombre común como
para el de negocios.
25
26
2.1.2
CAPÍTULO 2. TECNOLOGÍA MÓVIL
Un Poco de Historia
La telefonía móvil utiliza ondas de radio para poder ejecutar todas y cada
una de las operaciones de comunicación, ya sea llamar, mandar un mensaje
de texto, etc., y esto es producto de lo que sucedió hace algunas décadas. [9]
La comunicación inalámbrica tiene sus raíces en la invención del radio por
Nikola Tesla en los años 1880, aunque formalmente presentado en 1894 por
un joven italiano llamado Guglielmo Marconi.
El teléfono móvil se remonta a los inicios de la Segunda Guerra Mundial,
donde ya se veía que era necesaria la comunicación a distancia, es por eso que
la compañía Motorola creó un equipo llamado Handie Talkie H12-16 el cual
se puede apreciar en la figura 2.1 de la página 26, el cual permitía el contacto
con las tropas vía ondas de radio que en ese tiempo no superaban más de 600
kHz.
Figura 2.1: Handie Talkie12-16
Fue sólo cuestión de tiempo para que las dos tecnologías de Tesla y Marconi
se unieran y dieran a luz a la comunicación mediante radio-teléfonos. Martin
Cooper , figura 2.2 de la página 27, pionero y considerado como el padre de la
telefonía celular , fabricó el primer radio teléfono entre 1970 y 1973, en Estados
Unidos.
“La gente desea hablar con la gente - no en una casa, o en una oficina, o
en un coche. Dales la opción, y la gente exigirá la libertad para comunicarse
dondequiera que este, desencadenándose del infame alambre de cobre. Es esa
libertad que intentamos demostrar vividamente en 1973” dijo Martin Cooper.
[10]
2.1. TELEFONÍA MÓVIL
27
Figura 2.2: Martin Cooper mostrando el primer teléfono celular. ArrayComm
En 1979 aparecieron los primeros sistemas a la venta en Tokio (Japón),
fabricados por la Compañía NTT. Los países europeos no se quedaron atrás y
en 1981 se introdujo en Escandinavia un sistema similar a AMPS (Advanced
Mobile Phone System). Y si bien Europa y Asia dieron los primeros pasos, en
Estados Unidos, gracias a que la entidad reguladora de ese país adoptó reglas
para la creación de un servicio comercial de telefonía celular, en 1983 se puso
en operación el primer sistema comercial en la ciudad de Chicago.
Este fue el inicio de una de las tecnologías que más avances tiene, aunque
continúa en la búsqueda de novedades y mejoras.
Hace una década aproximadamente los teléfonos celulares se caracterizaban
sólo por llamar, pero ha sido tanta la evolución que ya se puede hablar de
equipos Multimedia que pueden llamar y ejecutar aplicaciones, jugar juegos
3D, ver videos, ver televisión y más. Obviamente muchas marcas de placas
madres para PC o fabricantes de hardware en general se hacen presentes en
los teléfono móviles como por ejemplo: ASUS e INTEL que construyen las
placas matrices de lo celulares o ayudan con el acelerador gráfico o el sistema
de video. En fin, se debe tener conciencia y estar preparados para lo que se
viene más adelante y pensar que el teléfono celular ya no es tan sólo para
hablar, y de esta forma poder aprovechar las situaciones de negocios que estos
nos brindan.
28
CAPÍTULO 2. TECNOLOGÍA MÓVIL
2.1.3
Generaciones del Celular
0-G: Generación 0
Tristemente, siempre se dice que las guerras agudizan la inventiva y el ingenio
del hombre, no solo a nivel armamentístico, sino a otros muchos niveles tales
como el de las comunicaciones.
Por supuesto, la Segunda Guerra Mundial no fue una excepción. La compañía Motorola lanzó el Handie Talkie H12-16, el cual permitía la comunicación a distancia entre las tropas, un dispositivo basado en la transmisión
mediante ondas de radio que, a pesar de trabajar por aquel entonces con un
espectro de 550 MHz aproximadamente, supuso una revolución de enormes
proporciones.
Figura 2.3: Publicidad del Motorola Handie Talkie H12-16
Esta tecnología fue aprovechada a partir de los años 50 y 60 para crear
una gran variedad de aparatos de radio y de comunicación a distancia (los
tradicionales Walkie-Talkies), utilizados sobretodo por servicios públicos tales
como taxis, ambulancias o bomberos.
Aunque realmente estos dispositivos no pueden ser considerados como teléfonos móviles, la implementación de los primeros supuso el comienzo de la
evolución hacia los dispositivos que conocemos en la actualidad.
Los primeros estándares más utilizados, en los que se fundamentó esta
“generación 0”, fueron:
• Estándar PTT (Push To Talk): Pulsar para Hablar.
• Estándar IMTS (Improved Mobile Telefone System): el Sistema de Telefonía Móvil Mejorado.
2.1. TELEFONÍA MÓVIL
29
1-G: Móviles de Primera Generación
Surgidos a partir de 1973 y con un tamaño y peso inmanejable, los móviles de
primera generación funcionaban de manera analógica, es decir que la transmisión y recepción de datos se apoyaba sobre un conjunto de ondas de radio que
cambiaban de modo continuo.
El hecho de que fueran analógicos traía consigo una serie de inconvenientes,
tales como que solo podían ser utilizados para la transmisión de voz (el uso de
mensajería instantánea era algo solo visible en un futuro “muy lejano”) o su
baja seguridad, la cual hacía posible a una persona escuchar llamadas ajenas
con un simple sintonizador de radio o, incluso hacer uso de las frecuencias
cargando el importe de las llamadas a otras personas.
A pesar de todo, esta fue la primera generación considerada realmente
como de teléfonos móviles.
Estándares más utilizados:
• NMT: Nordic Mobile Telephone
• AMPS: Advaced Mobile Phone System
2-G: Segunda Generación
Al contrario de lo que pasa en otras generaciones, la denominada “segunda
generación” no es un estándar concreto, sino que marca el paso de la telefonía
analógica a la digital, que permitió, mediante la introducción de una serie de
protocolos, la mejora del manejo de llamadas, más enlaces simultáneos en el
mismo ancho de banda y la integración de otros servicios adicionales al de la
voz, de entre los que destaca el Servicio de Mensajes Cortos (Short Message
Service).
Estos protocolos fueron implementados por diversas compañías, siendo este
hecho el origen de uno de los principales problemas de esta generación la
incompatibilidad entre protocolos, debido a que el radio de utilización del
teléfono quedaba limitado al área en el que su compañía le diera soporte.
Estándares más utilizados:
30
CAPÍTULO 2. TECNOLOGÍA MÓVIL
Figura 2.4: La evolución de los teléfonos celulares fue más allá de las características técnicas. Se puede apreciar cómo en tamaño y peso la evolución fue
considerable.
• GSM: Global System for Mobile Communications - Sistema Global para
Comunicaciones Móviles.
• CDMA: Code Division Multiple Access - Acceso Múltiple por División
de Código.
• GPRS: General Packet Radio Service - Servicio General de Radio por
Paquetes.
3-G: Tercera Generación
El año 2001 fue un año revolucionario en el ámbito de la telefonía móvil ya
que supuso la aparición de los primeros celulares que incorporaban pantalla
LCD a color, hecho que abría un inmenso abanico de posibilidades en cuanto
a adaptación de nuevas funciones se refiere.
Así, pronto el usuario pudo asistir al nacimiento de dispositivos que se
creían como mínimo futuristas tales como móviles con cámara fotográfica di-
2.1. TELEFONÍA MÓVIL
31
gital, posibilidad de grabar videos y mandarlos con un sistema de mensajería
instantánea evolucionado, juegos 3d, sonido Mp3 o poder mantener conversaciones por videoconferencia gracias a una tasa de transferencia de datos
más que aceptable y a un soporte para Internet correctamente implementado
(correo electrónico, descargas, etc.).
Todo este conjunto de nuevos servicios integrados en el terminal junto con
un nuevo estándar dieron lugar a la denominada hoy en día “tercera generación
de móviles” o móviles 3G.
Estándares más utilizados:
• UMTS: Universal Mobile Telecommunications System - Servicios Universales de Comunicaciones Móviles.
Concepto de la Red de Telefonía Celular
La red se constituye básicamente en torno a dos tipos de elementos:
• Estaciones base: son las encargadas de transmitir y recibir la señal.
• Centrales de conmutación: son las que permiten la conexión entre
dos terminales concretos.
La adecuada combinación de estos dos elementos posibilita la comunicación
tanto entre teléfonos móviles como entre un celular y un teléfono fijo. Se ve
entonces que la telefonía móvil, es algo más que el teléfono móvil.
Funcionamiento de la Red
A nivel general, su funcionamiento es bastante sencillo. Las estaciones base se
disponen creando una gran malla con forma de célula o celda (cell; de ahí que
se denomine a este tipo de teléfonos, teléfonos celulares), conectando mediante
ondas de radio dos terminales con los controladores de dichas estaciones base.
Esta disposición en forma de panal no es meramente casual, sino que responde a un esquema que permite la reutilización de un determinado conjunto
32
CAPÍTULO 2. TECNOLOGÍA MÓVIL
de frecuencias asignadas en distintas celdas, siempre que estas no sean adyacentes, aumentando el rendimiento de la red por un lado (el número de
frecuencias de que se dispone es limitado), y economizando por otro.
Figura 2.5: Celdas
En la figura 2.6 de la página 33, se puede apreciar detalladamente la arquitectura de un sistema celular móvil según el estándar GSM, uno de los más
utilizados hoy en día.
2.2
La Computadora Portátil
A lo largo de los años, las computadoras personales portátiles han sufrido
algunos cambios que las hacen ser como lo son hoy día, aunque no se parecen
en nada a sus principios.
Resulta muy difícil establecer un orden cronológico de la historia y secuencias de la computadora portátil y su evolución porque nadie puede asegurar
quién fue el primero en desarrollar el primer ordenador móvil.
Algunos afirman que el pionero fue Alan Kay, del centro de investigación
de XeroX en Palo Alto en 1970, quien fue el primero que llego con la idea de
un ordenador que se pudiera llevar encima. Kay visionó un dispositivo portátil
parecido a los que usamos hoy en día, algo pequeño y ligero que cualquiera se
pudiera permitir.
2.2. LA COMPUTADORA PORTÁTIL
33
Figura 2.6: Arquitectura GSM
Otros aseguran que el portátil fue construido en 1979 por William Moggridge el cual trabajaba para la corporación Grid Systems. Tenía 340 kilobytes,
una pantalla plegable y estaba hecho de metal (magnesio). Era bastante diferente a lo que hoy conocemos pero era un comienzo.
Aunque se discute su veracidad, el siguiente ordenador portátil que existió
fue creado en 1983 por “Gavilan Computers”. Este portátil tenía de 64 a 128
megabytes de memoria, un ratón e incluso una impresora portátil. Su peso,
sin la impresora, era algo mayor que los actuales.
Gavilan fracaso tiempo después por problemas de incompatibilidad con
otros ordenadores. El portátil de Gavilan usaba su propio sistema operativo.
“Apple Computers” introdujo el modelo “Apple IIc” en 1984, el cual se
puede apreciar en la figura 2.7 de la página 34, pero no era mucho mejor que
lo que había producido Gavilan un año antes. Un punto favorable era que
incluía la función opcional de LCD lo cual impactó en posteriores equipos.
Finalmente en 1986 un portátil real fue creado por IBM el cual lo llamó
PC de IBM Convertible, el cual se puede apreciar en la figura 2.8 de la página
35. Se califica como “real” porque al contrario de otros, a este portátil no
se le tenía que hacer una configuración inicial en cada sitio. También poseía
dos disqueteras de 3.5 pulgadas y espacio para un módem interno. En este
34
CAPÍTULO 2. TECNOLOGÍA MÓVIL
“convertible” podíamos encontrar una pantalla LCD y algunas aplicaciones
básicas que los usuarios podían usar para crear documentos de texto, y tomar
notas.
El precio del portátil de IBM rondaba los 3500 dólares de aquella época. Hoy en día pagar ese precio por un portátil moderno está fuera de toda
consideración, afortunadamente.
Desde los años ochenta, muchos fabricantes están produciendo y desarrollando nuevos equipos cada vez más rápidos y potentes dejando en el olvido
a sus predecesores. Y según avanza la tecnología, los precios se vuelven más
competitivos hasta el punto de que cualquier persona puede disponer de una
computadora portátil.
Figura 2.7: Modelo Apple IIc de Apple Computers - 1984
2.3
PDAs
PDA, del inglés Personal Digital Assistant, Ayudante Personal Digital, es
una computadora de mano originalmente diseñada como agenda electrónica
(calendario, lista de contactos, bloc de notas y recordatorios) con un sistema
de reconocimiento de escritura. Hoy día se puede usar como una computadora
doméstica (ver películas, crear documentos, juegos, correo electrónico, navegar
por Internet, escuchar música, etc.).
2.3. PDAS
35
Figura 2.8: PC Convertible de IBM - 1986
2.3.1
Historia de las PDAs
En 1989, el Atari Portfolio, aunque técnicamente clasificado como palmtop, fue
una muestra temprana de algunos de los más modernos dispositivos electrónicos. Le siguieron otros dispositivos como los Psion Organizer, el Sharp Wizard
o la Amstrad Penpad que fueron sentando la base de las funcionalidades de
las PDAs.
La primera mención formal del término y concepto de PDA es del 7 de
enero de 1992 por Jhon Sculley al presentar el Apple Newton, en el Consumer
Electronics Show de Las Vegas (EE.UU.). Sin embargo fue un sonoro fracaso
financiero para la compañía Apple, dejando de venderse en 1998. La tecnología
estaba aún poco desarrollada y el reconocimiento de escritura en la versión
original era bastante impreciso, entre otros problemas. Aún así, este aparato
ya contaba con todas las características del PDA moderno: pantalla sensible
al tacto, conexión a una computadora para sincronización, interfaz de usuario
especialmente diseñada para el tipo de máquina, conectividad a redes vía
módem y reconocimiento de escritura.
En 1995 con la aparición de la empresa Palm comenzó una nueva etapa
de crecimiento y desarrollo tecnológico para el mercado de estos dispositivos.
Tal fue el éxito que las PDA son a veces llamadas Palm o Palm Pilot, lo cual
constituye un caso de una marca registrada que se transforma en el nombre
36
CAPÍTULO 2. TECNOLOGÍA MÓVIL
genérico del producto.
La irrupción de Microsoft Windows CE (2000) y Windows Mobile (2003)
en el sector los dotó de mayores capacidades multimedia y conectividad, y
sobre todo incorporó a un público ya acostumbrado al uso de sus programas
y que se los encontraban en versión reducida.
La irrupción de los Smartphones, híbridos entre PDA y teléfono móvil ,
trajeron por un lado nuevos competidores al mercado y por otro incorporaron
al usuario avanzado de móviles al mercado. También supuso la vuelta de un
sistema operativo que había abandonado el mercado de las PDAs y ordenadores de mano en favor de los móviles: el Symbian OS. Las PDAs de hoy en
día traen multitud de comunicaciones inalámbricas como ser Bluetooth, WiFi, IrDA, GPS, que los hace tremendamente atractivos hasta para cosas tan
inverosímiles como su uso para domótica o como navegadores GPS.
2.3.2
Atari Portfolio
El Atari Portfolio, puede verse en la figura 2.9 de la página 37, fue lanzado
por Atari en 1989 siendo este el primer ordenador PC compatible PDA.
Se trataba de un PC XT compatible MS-DOS, construido utilizando un
procesador 80C88 a 4,9152 MHz, y del tamaño aproximado de una cinta de
VHS, estando cerrado.
La versión estándar tenía 128 kB de RAM, con un disco interno RAM
configurable (C:).
Tenía 256 KB ROM con software de aplicaciones preinstaladas, que no
utilizaban la RAM:
• Sistema operativo DIP DOS 2.11, compatible con MS-DOS & PC BIOS.
• Procesador de texto.
• Agenda.
• Hoja de cálculo.
• Calendario.
2.3. PDAS
37
Figura 2.9: Atari Portfolio
Utilizaba un puerto para tarjetas de expansión, que desgraciadamente no
era compatible con PCMCIA.
Esa expansión estaba localizada en la parte derecha del ordenador. Existían módulos de expansión para puerto paralelo, serie e incluso MIDI.
Además disponía de un zócalo para insertar tarjetas de memoria de estado
sólido de 64, 128 y 256 KB a modo de disquetes o de tarjetas Secure Digital.
El Atari Portfolio tenía un panel LCD sin retroiluminación y un altavoz
capaz de emitir tonos de teléfono que usado conjuntamente con la agenda
permitía marcar números de teléfono de manera automática (marcación por
tonos).
Atari no desarrolló el Portfolio sino que lo licenció de la empresa DiP.
El Portfolio aparece en la película Terminator, donde era utilizado por
el protagonista, el joven John Connor, para abrir una puerta con sistema de
seguridad a base de tarjeta electrónica y para robar un cajero automático.
2.3.3
Apple Newton
El Apple Newton, el cual se puede observar en la figura 2.10 de la página 38, o
simplemente Newton, fue una línea temprana de asistentes digitales personales
desarrollada, manufacturada y comercializada por Apple Computer entre 1993
y 1998. [11]
38
CAPÍTULO 2. TECNOLOGÍA MÓVIL
Figura 2.10: Apple Newton
Los Newtons originales estaban basados en el procesador RISC ARM 610 e
incluían reconocimiento de escritura manual. El nombre oficial de Apple para
el dispositivo era MessagePad; el término Newton era el nombre de Apple para
el sistema operativo que usaba, pero el uso popular de la palabra Newton ha
crecido hasta incluir el dispositivo y su software juntos.
Apple también adoptó ese nombre, ya que es una alusión a la manzana de
Isaac Newton y encajan perfecto en sus esfuerzos de marketing en lo relacionado a su marca.
El Newton permitía a los usuarios escribir notas, capturar datos de calendario, crear una libreta de direcciones y se incluyó el software de reconocimiento
de escritura. Los usuarios también podían verificar la hora de varias zonas
horarias, calcular y verificar mensajes.
El Newton falló en su afán de generar un gran cambio en el mercado durante
sus cinco años de vida. Su alto precio, tamaño y corta duración de la batería
contribuyó a que se discontinuase su fabricación en 1998.
Un accesorio especial para el Newton de Apple fue el módem fax, diseñado
específicamente para satisfacer las necesidades de los Newton. El cual utilizaba
2.4. PALM PILOT 5000
39
un cable de serie corto alimentado por dos pilas AA.
2.4
Palm Pilot 5000
La Palm Pilot 5000, la cual se puede ver en la figura 2.11 de la página 40,
fue el segundo modelo de la primera generación de PDAs manufacturadas por
Palm Computing, entonces conocida como US Robotics. [12]
Debutando en Marzo de 1996, la Pilot apareció en un mercado donde tenía
un solo competidor real: el Apple Newton.
El pequeño tamaño de las Pilots, las cuales cabían en el bolsillo de una
camisa, fue definitivamente una ventaja sobre el Apple Newton, que funcionaba
de manera muy similar y tenía casi exactamente la misma pantalla que el
modelo Pilot 5000, esto se puede apreciar en la figura 2.12 de la página 41.
La Pilot funcionaba con un poder de computo similar al Macintosh SE,
alardeando de sus 512 KB de memoria RAM, casi cinco veces más capacidad de
datos que el original modelo Pilot 1000. Más tarde, Palm Computing vendía
una tarjeta de expansión de 1 MB para aumentar la capacidad de memoria
aún más.
Fue también el primer PDA de mano en distinguirse con la capacidad de
sincronizar con Windows 95, 3.1 o PCs de escritorio Macintosh.
El Palm OS 1 fue un sistema operativo que habilitaba la posibilidad de
integración con computadoras de escritorio a un bajo costo, y poco consumo
de energía. Si bien este dispositivo no contaba con puerto de infrarrojos o de
memoria flash, el software de la Pilot podía sincronizar su información con la
mayoría de los PC estándar, permitiendo a los usuarios trabajar y compartir
información de otros programas de aplicación en su computadora a través de
su computadora de mano.
La sincronización de la PDA Pilot 5000 con una PC permitía a los usuarios
introducir texto desde su teclado de tamaño normal y ver las aplicaciones de
la Pilot en la pantalla de sus monitores. Y esto hacía de la Pilot una pequeña
pero muy buena herramienta de negocios.
Para la información de entrada, los consumidores utilizában un lápiz (Stylus) o el popular Graffiti Text Entry Software, creado por Palm, que permitía
la entrada de 30 palabras por minuto con una precisión del 100 por ciento.
40
CAPÍTULO 2. TECNOLOGÍA MÓVIL
Figura 2.11: Palm Pilot 5000
La mayoría de la información se podía acceder con un solo toque, ya que las
aplicaciones contaban con buenos tiempos de respuesta.
La Pilot venía de varios colores con una carcasa plástica, tenía un panel
táctil LCD y 160 x 160 mm de pantalla gráfica y funcionaba con dos pilas
AAA, corría aplicaciones simples en blanco y negro. Contaba con aplicaciones
pre-cargadas como directorio telefónico, lista de tareas, notas, calculadora y
múltiples funciones de búsqueda de aplicaciones, la Pilot también era compatible con otras muchas aplicaciones populares de la epoca, tales como Ascend,
DataSync, Lotus Organizer y Microsoft Schedule +.
2.5
Sistemas operativos y equipos
Hoy en día tenemos los siguientes sistemas operativos y equipos competidores:
• Dispositivos Palm OS, hoy en día mantenido casi en solitario por Palm,
pero que hasta hace poco ha tenido importantes fabricantes como Sony;
• Dispositivos Pocket Pc, con HP como líder de fabricantes acompañado
por otras empresas de informática como Dell o Acer, a quienes se han
2.5. SISTEMAS OPERATIVOS Y EQUIPOS
41
Figura 2.12: Comparativa en tamaños entre la Palm Pilot 5000 y el Apple
Newton
incorporado los fabricantes de Taiwán como High Tech Computer que
van copando el mercado del Smartphone con sus marcas propias, como
Qtek, o fabricando para terceros y, sobre todo, operadores de telefonía
móvil ;
• Research In Motion con sus Blackberry, más propiamente Smartphones que PDAs, pero que han copado una parte importante del mercado
corporativo a la vez que incorporaban prestaciones de PDA.
• Dispositivos Symbian OS presente en las gamas altas de teléfonos móviles
de Nokia y Sony Ericsson;
• Dispositivos Linux liderado por las Sharp Zaurus.
• Y por último, multitud de PDAs de juguete, desde los verdaderos juguetes infantiles a los aparatos baratos fabricados en China, pero que,
aparte del reconocimiento de escritura, incorporan todas las prestaciones básicas de las primeras PDAs, incluyendo cámaras digitales básicas
y comunicaciones con los PCs.
42
CAPÍTULO 2. TECNOLOGÍA MÓVIL
2.6
2.6.1
Estándares
Bluetooth
El nombre procede del rey danés y noruego Harald Blåtand cuya traducción al
inglés sería Harold Bluetooth (‘Diente Azul’ en su traducción al español, aunque en lengua danesa significa ‘de tez oscura’) conocido por buen comunicador
y por unificar las tribus noruegas, suecas y danesas.
De la misma manera, Bluetooth intenta unir diferentes tecnologías como
las de las computadoras, los teléfonos móviles y el resto de periféricos. El
símbolo de Bluetooth es la unión de las runas nórdicas H y B. [13]
Bluetooth es el nombre común de la especificación industrial IEEE 802.15.1,
que define un estándar global de comunicación inalámbrica que posibilita la
transmisión de voz y datos entre diferentes dispositivos mediante un enlace
por radiofrecuencia de corto rango. Los principales objetivos que se pretende
conseguir con esta norma son:
• Facilitar las comunicaciones entre equipos móviles y fijos.
• Eliminar cables y conectores entre éstos.
• Ofrecer la posibilidad de crear pequeñas redes inalámbricas y facilitar la
sincronización de datos entre nuestros equipos personales.
Los dispositivos que con mayor intensidad utilizan esta tecnología son los de
los sectores de las telecomunicaciones y la informática personal, como PDAs,
teléfonos celulares, computadoras portátiles, PCs, impresoras y cámaras digitales.
La tecnología Bluetooth comprende hardware, software y requerimientos
de interoperatividad, por lo que para su desarrollo ha sido necesaria la participación de los principales fabricantes de los sectores de las telecomunicaciones
y la informática, tales como: Sony Ericsson, Nokia, Motorola, Toshiba, IBM e
Intel, entre otros. Posteriormente se han ido incorporando muchas más compañías, y se prevé que próximamente lo hagan también empresas de sectores
tan variados como automatización industrial, maquinaria, ocio y entretenimiento, fabricantes de juguetes, electrodomésticos, etc., con lo que en poco
tiempo se nos presentará un panorama de total conectividad de nuestros aparatos tanto en casa como en el trabajo.
2.6. ESTÁNDARES
43
Descripción
Bluetooth proporciona una vía de interconexión inalámbrica entre diversos
aparatos que tengan dentro de sí esta tecnología, como móviles ( Nokia 6600),
consolas (Nokia N-Gage), dispositivos PDA, cámaras digitales, computadoras
portátiles, impresoras, o simplemente cualquier dispositivo que un fabricante considere oportuno, usando siempre una conexión segura de radio de muy
corto alcance. El alcance que logran tener estos dispositivos es de 10 metros
para ahorrar energía ya que generalmente estos dispositivos utilizan mayoritariamente baterías. Sin embargo, se puede llegar a un alcance de hasta 100
metros (similar a Wi-Fi) pero aumentando el consumo energético considerablemente. Para mejorar la comunicación es recomendable que nada físico, como
por ejemplo una pared, se interponga.
El primer objetivo para los productos Bluetooth de primera generación eran
los entornos de la gente de negocios que viaja frecuentemente. Esto originaba
una serie de cuestiones previas que deberían solucionarse tales como:
• El sistema debería operar en todo el mundo.
• El emisor de radio deberá consumir poca energía, ya que debe integrarse
en equipos alimentados por baterías.
• La conexión deberá soportar voz y datos, y por lo tanto aplicaciones
multimedia.
• La tecnología debería tener un bajo costo. Como objetivo se quiso alcanzar los 5 US$ por dispositivo.
Muchos dipositivos han adquirido esta característica lo que es un gran
avance.
2.6.2
IrDA - Infrared Data Association
Infrared Data Association (IrDA) define un estándar físico en la forma de
transmisión y recepción de datos por rayos infrarrojos. IrDA se crea en 1993
entre HP, IBM, Sharp y otros.
Esta tecnología está basada en rayos luminosos que se mueven en el espectro infrarrojo. Los estándares IrDA soportan una amplia gama de dispositivos
44
CAPÍTULO 2. TECNOLOGÍA MÓVIL
Figura 2.13: Bluetooth Apple Mighty Mouse
Figura 2.14: Teclado Bluetooth
2.6. ESTÁNDARES
45
eléctricos, informáticos y de comunicaciones, permite la comunicación bidireccional entre dos extremos a velocidades que oscilan entre los 9.600 bps y los
4 Mbps. Esta tecnología se encuentra en muchos ordenadores portátiles, y en
un creciente número de teléfonos celulares, sobre todo en los de fabricantes
líderes como Nokia y Ericsson.
El FIR (Fast Infrared) se encuentra en estudio, con unas velocidades teóricas de hasta 16 Mbps.
Estructura
En IrDA se define una organización en capas, las cuales pueden verse en la
figura 2.15 de la página 46.
Además cualquier dispositivo que quiera obtener la conformidad de IrDA
ha de cumplir los protocolos obligatorios (azul), no obstante puede omitir
alguno o todos los protocolos opcionales (verde). Esta diferenciación permite
a los desarrolladores optar por diseños más ligeros y menos costosos, pudiendo
también adecuarse a requerimientos más exigentes sin que sea necesario salirse
del estándar IrDA.
Protocolos IrDA
• PHY (Physical Signaling Layer) establece la distancia máxima, la velocidad de transmisión y el modo en el que la información se transmite.
• IrLAP (Link Access Protocol) facilita la conexión y la comunicación
entre dispositivos.
• IrLMP (Link Management Protocol) permite la multiplexación de la
capa IrLAP.
• IAS (Information Access Service ) actúa como unas páginas amarillas
para un dispositivo.
• Tiny TP mejora la conexión y la transmisión de datos respecto a IrLAP.
• IrOBEX diseñado para permitir a sistemas de todo tamaño y tipo intercambiar comandos de una manera estandarizada.
• IrCOMM para adaptar IrDA al método de funcionamiento de los puertos
serie y paralelo.
46
CAPÍTULO 2. TECNOLOGÍA MÓVIL
Figura 2.15: IrDA - Organización de sus capas.
• IrLan permite establecer conexiones entre ordenadores portátiles y LANs
de oficina.
2.6.3
IEEE 802.11 o Wi-Fi
El protocolo IEEE 802.11 o Wi-Fi es un estándar de protocolo de comunicaciones del IEEE que define el uso de los dos niveles más bajos de la arquitectura
OSI (capas física y de enlace de datos), especificando sus normas de funcionamiento en una WLAN. En general, los protocolos de la rama 802.x definen
la tecnología de redes de área local.
La familia 802.11 actualmente incluye seis técnicas de transmisión por
modulación que utilizan todos los mismos protocolos. El estándar original de
este protocolo data de 1997, era el IEEE 802.11 , tenía velocidades de 1 hasta
2 Mbps y trabajaba en la banda de frecuencia de 2,4 GHz. En la actualidad
no se fabrican productos sobre este estándar.
El término IEEE 802.11 se utiliza también para referirse a este protocolo
al que ahora se conoce como “802.11legacy”. La siguiente modificación apareció en 1999 y es designada como IEEE 802.11b, esta especificación tenía
velocidades de 5 hasta 11 Mbps, también trabajaba en la frecuencia de 2,4
GHz. También se realizó una especificación sobre una frecuencia de 5 Ghz
que alcanzaba los 54 Mbps, era la 802.11a y resultaba incompatible con los
productos de la b y por motivos técnicos casi no se desarrollaron productos.
Posteriormente se incorporó un estándar a esa velocidad y compatible con el
b que recibiría el nombre de 802.11g.
En la actualidad la mayoría de productos son de la especificación b y de la
2.6. ESTÁNDARES
47
Figura 2.16: Tarjeta Wi-Fi para PalmOne
g. El siguiente paso se dará con la norma 802.11n que sube el límite teórico
hasta los 600 Mbps. Actualmente ya existen varios productos que cumplen un
primer borrador del estándar N con un máximo de 300 Mbps (80-100 estables).
La seguridad forma parte del protocolo desde el principio y fue mejorada en
la revisión 802.11i. Otros estándares de esta familia (c-f, h-j, n) son mejoras
de servicio y extensiones o correcciones a especificaciones anteriores. El primer
estándar de esta familia que tuvo una amplia aceptación fue el 802.11b. En
2005, la mayoría de los productos que se comercializan siguen el estándar
802.11g con compatibilidad hacia el 802.11b.
Los estándares 802.11b y 802.11g utilizan bandas de 2,4 Ghz que no necesitan de permisos para su uso. El estándar 802.11a utiliza la banda de 5
GHz. El estándar 802.11n hará uso de ambas bandas, 2,4 GHz y 5 GHz.
Las redes que trabajan bajo los estándares 802.11b y 802.11g pueden sufrir
interferencias por parte de hornos microondas, teléfonos inalámbricos y otros
equipos que utilicen la misma banda de 2,4 Ghz.
Dispositivos
Existen varios dispositivos que permiten interconectar elementos Wi-Fi, de
forma que puedan interactuar entre si. Entre ellos destacan routers, acces
points, etc, para la emisión de la señal Wi-Fi y para la recepción se utilizan
tarjetas para conectar a los PC, ya sean internas, como tarjetas PCI o bien
USB (tarjetas de nueva generación que no requieren incluir ningún hardware
dentro de la computadora).
48
CAPÍTULO 2. TECNOLOGÍA MÓVIL
Los acces points funcionan a modo de emisor remoto, es decir, en lugares
donde la señal Wi-Fi del router no tenga suficiente señal, se colocan estos
dispositivos, que reciben la señal bien por un cable UTP que se lleve hasta él
o bien que capture la señal débil y la amplifique (aunque para este ultimo caso
existen aparatos especializados que ofrecen un mayor rendimiento).
Los routers son los que reciben la señal de la línea que ofrezca el proveedor,
se encargan de todos los problemas inherentes a la recepción de la señal, donde
se incluye el control de errores y extracción de la información, para que los
diferentes niveles de red puedan trabajar. En este caso el router efectúa el
reparto de la señal, de forma muy eficiente.
Además de routers, hay otros dispositivos que pueden encargarse de la distribución de la señal, aunque no pueden encargarse de las tareas de recepción,
como pueden ser hubs y switch, estos dispositivos son mucho más sencillos que
los routers, pero también su rendimiento en la red local es muy inferior.
Los dispositivos de recepción abarcan tres tipos mayoritarios: tarjetas PCI,
tarjetas PCMCIA y tarjetas USB :
• Las tarjetas PCI para Wi-Fi se agregan a las computadoras de escritorio,
permiten un acceso muy eficiente, la única desventaja de este tipo de
tarjeta es que requiere abrir el gabinete de la computadora.
• Las tarjetas PCMCIA son un modelo que se utilizó mucho en las primeras computadoras portátiles, la mayor parte de estas tarjetas solo son
capaces de llegar hasta la tecnología b de Wi-Fi, no permitiendo por
tanto disfrutar de una velocidad de transmisión demasiado elevada.
• Las tarjetas USB para Wi-Fi son el tipo de tarjeta más moderno que
existe y más sencillo de conectar a un PC, ya sea de escritorio o portátil,
haciendo uso de todas las ventajas que tiene la tecnología USB, además la
mayor parte de las tarjetas USB actuales permite utilizar la tecnología g
de Wi-Fi, incluso algunas ya ofrecen la posibilidad de utilizar la llamada
tecnología Pre n.
Ventajas y desventajas
Una de las desventajas que tiene Wi-Fi es la pérdida de velocidad en relación
a la misma conexión utilizando cables, debido a las interferencias y pérdidas
de señal que el ambiente puede acarrear.
2.7. INTERNET MÓVIL - WAP
49
Figura 2.17: Tarjeta USB para Wi-Fi
Existen algunos programas capaces de capturar paquetes, trabajando con
su tarjeta Wi-Fi en modo promiscuo, de forma que puedan calcular la contraseña de la red y de esta forma acceder a ella, las claves de tipo WEP son
relativamente fáciles de conseguir para cualquier persona con un conocimiento medio de informática. La alianza Wi-Fi arregló estos problemas sacando
el estándar WPA y posteriormente WPA2, basados en el grupo de trabajo
802.11i. Las redes protegidas con WPA2 se consideran robustas dado que
proporcionan muy buena seguridad.
Los dispositivos Wi-Fi ofrecen gran comodidad en relación a la movilidad
que ofrece esta tecnología, sobre los contras que tiene Wi-Fi es la capacidad
de terceras personas para conectarse a redes ajenas si la red no está bien
configurada y la falta de seguridad que esto trae consigo.
Cabe aclarar que esta tecnología no es compatible con otros tipos de conexiones sin cables como Bluetooth, GPRS, UMTS, etc.
2.7
Internet Móvil - WAP
Wireless Application Protocol o WAP (protocolo de aplicaciones inalámbricas)
es un estándar abierto internacional para aplicaciones que utilizan las comunicaciones inalámbricas, por Ej. Acceso a servicios de Internet desde un teléfono
móvil.
Se trata de la especificación de un entorno de aplicación y de un conjunto de
protocolos de comunicaciones para normalizar el modo en que los dispositivos
50
CAPÍTULO 2. TECNOLOGÍA MÓVIL
inalámbricos, se pueden utilizar para acceder a correo electrónico, grupo de
noticias y otros.
El organismo que se encarga de desarrollar el estándar WAP fue originalmente el WAP Forum, fundado por cuatro empresas del sector de las comunicaciones móviles, Sony-Ericsson, Nokia, Motorola y Openwave (originalmente
Unwired Planet). Desde 2002 el WAP Forum es parte de la Open Mobile
Alliance (OMA), consorcio que se ocupa de la definición de diversas normas
relacionadas con las comunicaciones móviles, entre ellas las normas WAP.
2.7.1
Tecnología - WAP
En la versión 1 de WAP, definida en 1999, el lenguaje de presentación de contenidos es el WML, o Wireless Markup Language. La pila de protocolos de WAP
1 no es compatible directamente con la de Internet: WSP (Wireless Session
Protocol), WTP (Wireless Transaction Protocol), WTLS (Wireless Transport
Layer Security), y WDP (Wireless Datagram Protocol). WDP corresponde
a la capa de transporte, con funcionalidad equivalente al protocolo UDP de
Internet, y se apoya en los servicios de la “portadora” WAP, que depende de
la red móvil que esté usando el terminal. WAP 1 además define la interfaz de
acceso de las aplicaciones a las funciones de telefonía del terminal con WTAI
(Wireless Telephony Application Interface), y también un sencillo lenguaje de
“scripting”, WMLScript, basado en ECMAscript/JavaScript.
La incompatibilidad de la pila de protocolos WAP 1 con la de Internet exige
la presencia de un nodo pasarela para hacer de intermediario en la comunicación entre un terminal WAP y un servidor de contenidos WAP residente en
Internet. WAP 1 ha sido objeto de fuertes críticas por diversos motivos, que
incluyen la pobreza del soporte gráfico (gráficos monocromos WBMP, Wireless Bitmap), las diferencias en las implantaciones de WAP en los terminales
de distintos fabricantes, y un potencial problema de seguridad debido a que
WTLS no es muy robusto y además, por no ser compatible con las capas de
seguridad usadas en Internet, en la pasarela WAP los contenidos deben estar
en claro.
La nueva versión de WAP, WAP 2.0 , está presente en los teléfonos móviles
de nueva generación (a partir de 2004). Esta versión es una reingeniería de
WAP que utiliza XHTML-MP (Mobile Profile) como lenguaje de presentación
de contenidos, y mejora el soporte de los gráficos (incluye color). En cuanto
a los protocolos usados, en la capa de transporte se usa TCP y en la de
2.7. INTERNET MÓVIL - WAP
51
aplicación, HTTP. Así pues, WAP 2.0 ha adoptado los protocolos de Internet.
WAP 2.0 además especifica opciones tanto en TCP como en HTTP para
mejorar las prestaciones de dichos protocolos sobre redes de comunicaciones
móviles. Los mecanismos de seguridad usados ya son compatibles con los de
Internet por lo que los problemas de seguridad de WAP 1 se resuelven. La
pasarela WAP no es estrictamente necesaria en WAP 2.0 , pero su presencia
puede tener funciones útiles, como caché web y para dar soporte a las opciones
de TCP y HTTP antes mencionadas.
Capítulo 3
Aplicaciones Móviles
3.1
Introducción
Los dispositivos de computación inalámbrica han crecido rápidamente, requiriendo aplicaciones de software cada vez más potentes que puedan manejar
esta nueva realidad. Los usuarios desean que las aplicaciones que corren en
sus dispositivos móviles tengan la misma funcionalidad estando conectados
o desconectados de la red. Esperan aplicaciones que puedan soportar conexiones intermitentes, anchos de banda cambiantes y que manejen
eficientemente el problema del roaming.
El rango de dispositivos móviles va desde dispositivos dedicados a tareas específicas, como los teléfonos celulares, hasta aquellos dispositivos de propósito
general, como las handhelds o como las notebooks. Cada uno de ellos presenta
diferentes conjuntos de desafíos para el diseño de aplicaciones móviles.
Algunos de estos desafíos compartidos por la mayoría de los dispositivos
móviles incluyen:
• La ubicación física del dispositivo y la configuración pueden cambiar en
cualquier momento a medida que el dispositivo está conectado o desconectado de la red o se mueve entre dos puntos de conexión. La arquitectura de aplicación móvil debe soportar una operación consistente
operando tanto online como offline y proveer una conectividad continua
mientas el dispositivo se mueve entre puntos de conexión.
53
54
CAPÍTULO 3. APLICACIONES MÓVILES
• Los dispositivos que se alimentan mediante el uso de baterías pueden
operar por un tiempo limitado sin recargar o reemplazar las mismas. La
arquitectura de una aplicación móvil debe ser diseñada para administrar
esa energía limitada de las baterías, mediante el uso de estrategias que
prologuen la vida útil al reducir el consumo sin sacrificar el rendimiento
del sistema.
Una arquitectura de aplicaciones móviles debe proveer soporte para un amplio rango de dispositivos. Debido a que los dispositivos pequeños de propósito
específico, tales como teléfonos celulares, poseen limitaciones de recursos como el tamaño reducido de sus pantallas, limitado almacenamiento y poder de
cómputo. [14]
3.2
Requerimientos Para Una Arquitectura de Aplicaciones Móviles
Una aplicación diseñada para ser usada en un dispositivo móvil debe cumplir
con ciertos requerimientos, algunos son propios del ambiente móvil y otros
pueden ser requerimientos de cualquier tipo de aplicación. A continuación se
presentan los más relevantes:
• Operación consistente tanto online como offline: En varias arquitecturas, los datos son almacenados en un sistema compartido accesible
a través de la red, en forma de documentos, registros de datos o archivos
binarios, donde se tiene un acceso coordinado a una copia de la información. Una aplicación móvil debe ser diseñada de forma de que los
usuarios puedan acceder a los datos sin importar si lo hacen en forma
online o en forma offline. Cuando se trabaja offline, el usuario percibe
que la información compartida está disponible para lectura y escritura.
Cuando la conectividad regresa, los cambios en la información local son
integrados a la copia de red y viceversa.
• Conectividad continua: Una aplicación diseñada para movilidad debe trabajar con un agente o servicio Proxy para permitir un manejo
transparente de los cambios en la conectividad. La conectividad no tiene que ser un requerimiento para la funcionalidad y cortes intermitentes
e inesperados en la conexión con la red deben poder ser manejados satisfactoriamente. Así mismo este agente o servicio Proxy debe poder
3.2. REQUERIMIENTOS PARA UNA ARQUITECTURA MÓVIL
55
seleccionar la red óptima de las disponibles en ese momento, y manejar las tareas propias de la comunicación como autentificación segura o
autorización y direccionamiento lógico.
• Clientes que soporten multiplataformas: Una aplicación móvil debe al menos ajustar su interacción y comportamiento al dispositivo en
el que corre, como por ejemplo tipo de entrada y salida, recursos disponibles y nivel de performance.
• Administración de recursos: Un recurso como la energía, el ancho
de banda o el espacio de almacenamiento puede ser consumido y existe
en una cantidad finita. La administración de recursos debe permitir el
monitoreo de atributos como cantidad o tasa de uso, y soportar notificaciones basadas en disparadores predefinidos por el usuario.
• Administración del contexto: Contexto es cualquier información que
puede ser usada para caracterizar la situación de una entidad. Donde
una entidad es una persona, lugar u objeto que es relevante para la
interacción entre un usuario y una aplicación, incluyendo al usuario y
la aplicación. La administración del contexto debe permitir el monitoreo de atributos como ubicación actual o tipo de dispositivo, y proveer
notificación de cambios en el mismo.
• Codificación: La codificación involucra la modificación de los datos
y protocolo en función de los requerimientos del contexto y recursos
disponibles. Ejemplos de codificación son la encriptación, compresión y
transcodificación. Una implementación de la capacidad de codificación
permitirá la enumeración de los encoders y decoders disponibles. Luego
con ésta información disponible junto con la capacidad de administración
del contexto, proveer la habilidad de negociar el uso de uno u otro método
de codificación.
• Almacenamiento duradero: La capacidad de manejar un almacenamiento duradero permite la persistencia de datos de configuración o
información estática.
• Seguridad: Para evitar las consecuencias de ataques maliciosos, aplicaciones con diseños pobres, y errores inadvertidos de usuarios, se deben
tomar ciertas medidas de seguridad como ser: Sistemas y usuarios deben
ser autenticados, autentificación de sistemas, usuarios y acciones deben
ser autorizados, y acciones e interacciones deben ser auditadas.
56
CAPÍTULO 3. APLICACIONES MÓVILES
Se puede observar que los requerimientos planteados son en gran medida
requerimientos no funcionales, esto se debe a la naturaleza sumamente restrictiva implicada en un escenario móvil, y relacionada especialmente con aspecto
de hardware.
3.3
Arquitectura de Portal Para Aplicaciones Móviles
La función primaria de un portal es la de agregar e integrar diversas y distribuidas fuentes de información, y presentar el resultado al usuario en una vista
simple concisa y pertinente a través de un navegador Web o Web Browser.
Un portal es típicamente dirigido a un grupo específico o tipo de usuario.
Por ejemplo en la Intranet de una compañía, el sector de atención al cliente
puede acceder a información relacionada con clientes (promociones vigentes,
descuentos, etc.), pero no puede acceder a información financiera, ésta estaría
sólo autorizada para los integrantes del sector de finanzas. [14]
Los contenidos que puede tener un portal son:
• Datos relativamente estáticos, como banners, gráficos y estructura general.
• Contenido dinámico, información que cambia con cierta frecuencia, el
caso de las promociones vigentes para el sector de atención al cliente
estaría dentro de este grupo.
• Información nueva o trascendente, como notificaciones o información
incremental. Por ejemplo una notificación para el grupo de ventas de
un determinado producto que indique que el stock se ha terminado.
La arquitectura de un portal abarca tres tipos de funciones:
• Fuentes de Información: Las fuentes de información proveen de datos al
portal. Las fuentes de información incluyen bases de datos, aplicaciones
u otros portales externos al sistema.
• Funciones del Portal: Las funciones de un portal son básicamente las de
agregar y componer la información para luego ser entrada al usuario.
3.3. ARQUITECTURA DE PORTAL MÓVIL
57
• Funciones Independientes: Son tecnologías persistentes o componentes,
como el Web Browser.
Los componentes incluidos en un portal son los siguientes:
• Web browser: Provee una interface del portal al usuario, si se accede a
través de Internet, un protocolo Proxy soporta la comunicación con el
usuario y con el portal HTTP y HTML comúnmente mejorado del lado
del cliente con el uso de lenguajes de scripting y/o código ubicado en el
browser como ActiveX o controles Java.
• Servidor de Presentación: Crea e integra vistas de contenido a través de
la interacción con otros componentes.
• Servidor de Aplicación: Ejecuta cualquier código que sea requerido dinámicamente para extraer y reformatear información desde sistemas no
basados en Web.
• Administración de Contenido, búsqueda e indexación, y colaboración.
• Servicios de Personalización: Disponible para que cada usuario pueda
configurar la vista y el contenido que quiere tener cada vez que accede
al portal.
• Seguridad: Un requerimiento para toda arquitectura de aplicaciones
móviles, es el de asegurar la integridad de información sensible en sitios remotos.
Un portal Web es completamente dependiente de la conexión de red, ya
que es una arquitectura centrada en el servidor y la conexión de red se hace
un recurso imprescindible.
Una solución simple para aplicaciones móviles es la de permitir el acceso
offline a sitios Web, bases de datos y archivos que han sido previamente descargados en el móvil. El usuario interactúa con los mismos y una vez que la
conexión se restablece, las copias locales y remotas se sincronizan. Esta solución es válida para aquellos portales simples, pero cuando las fuentes de datos
vienen asociadas con otros sistemas o directamente no caben en el dispositivo
móvil , no podrá ser aplicada.
Entonces, sin conexión de red, la creación de contenido dinámico desde
un portal y sus sistemas back-end en tiempo de ejecución es esencialmente
58
CAPÍTULO 3. APLICACIONES MÓVILES
imposible. Sin embargo existen algunas aproximaciones que pueden ser usadas
para proveer una vista offline del contenido:
• Prealmacenado del contenido generado en el portal.
• Replicación en el sistema móvil de los datos y el código usado para
generar el portal y su sistema back-end.
La apropiada estrategia a utilizar dependerá de factores como cantidad de
datos involucrados, la complejidad de la interacción del usuario con los datos,
y la frecuencia necesaria de actualización de los mismos.
A continuación se presentará de que forma una arquitectura de portal móvil
puede cubrir los requerimientos planteados para caracterizar una aplicación
móvil:
• Clientes que soporten multiplataformas: Los portales usualmente soportan el acceso desde diferentes plataformas, manejan diferentes
caracterizaciones de dispositivos, y cualquier transcodificación de contenido requerido. Como el contenido comúnmente es dinámico y el tipo de
dispositivo del cliente impredecible, estas actividades ocurren en tiempo
de ejecución. Una aplicación cliente que soporte movilidad no necesita soportar transcodificación dinámica porque el tipo de dispositivo del
cliente es estático. La aplicación no necesita manejar cambios dinámicos en la personalización del dispositivo offline, ya que se supone que el
mismo será usado por una única persona.
• Capacidad de trabajar offline:
— Prealmacenado de Contenido: involucra el prealmacenado del contenido provisto por un portal en respuesta a un requerimiento hecho
por un cliente a través de una URL, como una página Web. El código que genera el contenido no es prealmacenado. Por ejemplo un
link (enlace) puede ser referencia a un script JSP o ASP, el Server
de aplicación corre este script y devuelve al cliente streams HTML.
Estos HTML son los que están prealmacenados, no los scripts. Navegar por el portal, siguiendo cada link y almacenar la salida en
el sistema local para luego disponer del mismo offline, es un mecanismo completamente ineficiente. Además todas la páginas pueden
no ser requeridas, por lo tanto el prealmacenado de contenido debe
3.4. ARQUITECTURA DE BASES DE DATOS
59
realizarse bajo el control de la configuración local que especifique
las páginas de interés o provea un criterio de selección.
— Replicación de Código: permite que el contenido del portal sea más
dinámico. El portal puede ejecutar código, por ejemplo JAVA, en
el proceso de servir el contenido al usuario o en la recolección y
manejo de datos de otros sistemas. El código es replicado desde el
servidor al cliente. Alguna replicación involucra componentes de la
interface del usuario, la mayoría está involucrado con la colección,
manipulación y almacenamiento de datos.
— Replicación de Datos: los datos pueden ser replicados del portal
al cliente, del cliente al portal o en ambas direcciones. Si los datos solo pueden tener permiso de escritura en el lado del cliente,
la implementación se vuelve más simple, sin embargo la implementación que permite esquemas de múltiples copias que pueden ser
actualizadas independientemente, se vuelve más compleja.
— Conectividad Continua: Dos áreas están incluidas dentro de conectividad continua, estas son administración de conectividad de red
y la seguridad desde el punto de vista del usuario. Por ejemplo el
usuario no tendrá físicamente que re-autenticarse cada vez que el
sistema se reconecta. La conectividad continua puede ser soportada
por emulación, la cual provee la apariencia de que el recurso de red
se encuentra disponible.
Una posible arquitectura de portal para aplicaciones móviles es la mostrada en la figura 3.1 de la página 60, la cual refleja varios tipos de modificaciones:
agregado de nuevos componentes (a los habituales de un portal no móvil).
3.4
Arquitectura de Bases de Datos Para Aplicaciones Móviles
Los usuarios tradicionales de una base de datos acceden a los datos residentes
en el servidor de bases de datos desde sus equipos clientes conectados físicamente a la red. Los datos se presentan en la máquina cliente como una simple
vista de los datos residentes en el servidor. Esta particular arquitectura es segura pero al mismo tiempo limitada en el hecho de que los usuario no pueden
ver o trabajar con los datos sin una conexión a la red. Todo procesamiento
tiene lugar en el servidor, construido específicamente para tal propósito.
60
CAPÍTULO 3. APLICACIONES MÓVILES
Figura 3.1: Arquitectura Portal Móvil
3.4. ARQUITECTURA DE BASES DE DATOS
61
Se puede afirmar que una base de datos es un archivo que contiene varios
registros de datos. En un ambiente cliente / servidor tradicional, más de
un usuario puede utilizar la misma base de datos simultáneamente. RDBMS
(Sistemas Manejadores de Bases de Datos Relacionales) hace esto posible a
través del uso de mecanismos internos de locking que previenen que más de
un usuario modifique un registro al mismo tiempo. [14]
Una arquitectura de base de datos preparada para un ambiente móvil,
permite a los usuarios acceder a la información en cualquier momento y desde
cualquier lugar.
En un ambiente móvil, copias de los datos pueden existir en distintos
sistemas clientes. Dado que estos sistemas clientes no están continuamente
conectados a la base de datos central, el RDBMS de dicha base no es capaz
de prevenir cambios simultáneos a los datos por más de un usuario. Por
otra parte, los datos locales en cada sistema cliente deben ser periódicamente
sincronizados con los datos de la base master que reside en el servidor.
Algunos de los desafíos al diseñar una arquitectura de bases de datos son
los siguientes:
• Los datos en los sistemas cliente se desactualizan durante los periodos
en que el cliente no está conectado. Los mensajes referentes a actualizaciones pendientes no estarán disponibles mientras el sistema este desconectado, esto introducirá más dudas sobre la validez de los datos.
• La resolución de conflictos se volverán más desafiantes y ya no estarán
bajo el control del RDBMS.
• El poder de procesamiento local en los clientes puede ser limitado en
comparación al poder de procesamiento disponible en el servidor.
• Los datos propietarios, deben mantenerse seguros en las ubicaciones remotas.
Un usuario móvil debe ser capaz de seleccionar los datos a replicar en el
sistema cliente para su uso cuando el sistema este desconectado de la red. La
replicación de la base de datos completa no debe ser permitida, se debe limitar
al usuario a un arbitrario conjunto de datos.
Las desconexiones cliente / servidor deben ser transparentes al usuario.
62
CAPÍTULO 3. APLICACIONES MÓVILES
La aplicación cliente debe continuar teniendo un buen comportamiento y los
datos continuar disponibles para el usuario.
Un usuario necesita saber si los datos que va a utilizar en un ambiente
offline son viejos, irrelevantes o transitorios. El usuario debe ser capaz de basar
sus decisiones en estos datos, pero los mismos deben ser marcados de forma
que la decisión resultante pueda ser actualizada cuando los datos vuelvan a
estar disponibles online nuevamente.
Una arquitectura de base de datos para aplicaciones móviles debe garantizar que las transacciones serán trasmitidas confiablemente. Durante una
transacción normal, una conexión de red es establecida entre el cliente y el
servidor y la transferencia de datos es iniciada.
Cuando la transferencia de datos se completa, una notificación sobre si la
transferencia fue realizada con éxito o no es enviada al que la inició. La falla
o el éxito de la transacción, no debe limitar el trabajo que el usuario puede
hacer. Por ejemplo, si el dispositivo está conectado a la red y actualiza un
campo de datos, la transacción será trasmitida al servidor inmediatamente.
Si la conexión se pierde durante la transmisión, la transacción será encolada
para ser transmitida cuando la conexión sea restablecida. Mientras tanto el
usuario debe poder ser capaz de hacer referencia a la actualización aunque la
transmisión no se haya completado.
3.5
Aplicaciones Multiplataforma
Multiplataforma es un término usado para referirse a los programas, sistemas
operativos, lenguajes de programación, u otra clase de software, que puedan
funcionar en diversas plataformas. Por ejemplo, una aplicación multiplataforma podría ejecutarse en Windows en un procesador x86, en GNU/Linux en
un procesador x86, y en Mac OS X en un x86, sin ningún tipo de problemas.
Una plataforma es una combinación de hardware y software usada para
ejecutar aplicaciones, en su forma más simple consiste únicamente de un sistema operativo, una arquitectura, o una combinación de ambos. La plataforma
más conocida es probablemente Microsoft Windows en una arquitectura x86,
otras plataformas conocidas son GNU/Linux y Mac OS X (que ya de por sí
son multiplataforma).
3.5. APLICACIONES MULTIPLATAFORMA
63
El software en general está escrito de modo que dependa de las características de una plataforma particular; bien sea el hardware, sistema operativo, o
máquina virtual en que se ejecuta. La plataforma Java es una máquina virtual
multiplataforma, tal vez la más conocida de este tipo, así como una plataforma
popular para hacer software.
3.5.1
Java y Multiplataforma
Uno de los principales objetivos de los desarrolladores de software en los últimos años ha sido conseguir programas portables, capaces de ser ejecutados en
diversas plataformas (Macintosh PC, Unix, Windows), logrando la compatibilidad total.
La aparición del lenguaje Java da la primera solución satisfactoria al problema de la compatibilidad. La idea consiste en crear máquinas virtuales
idénticas en cada una de las diferentes plataformas y encargarles a ellas la
ejecución de programas, obteniendo así la compatibilidad total.
Con el desarrollo de estas máquinas virtuales anteriormente mencionadas
se puede lograr que el mismo código binario ejecutable se pueda usar en todos
los sistemas compatibles con el software Java. Además la penetración de Java
en Internet, como lenguaje de acompañamiento al HTML, ha sido todo un
éxito.
Capítulo 4
Java
4.1
Introducción al Lenguaje
Java es un lenguaje orientado a objetos. Esto significa que posee ciertas características estándares en los lenguajes OO:
• Objetos.
• Clases.
• Métodos.
• Subclases.
• Herencia simple.
• Enlace dinámico.
• Encapsulamiento.
Java se volvió un lenguaje muy popular. Antes de que Java apareciera,
por ejemplo, C era un lenguaje extremadamente popular entre los programadores y parecía que era el lenguaje de programación perfecto, combinando
los mejores elementos de los lenguajes de bajo y alto nivel en un lenguaje de
programación que se ajustaba a la arquitectura del ordenador y que gustaba
a los programadores.
65
66
CAPÍTULO 4. JAVA
Sin embargo, el lenguaje C tenía limitaciones, al igual que los lenguajes de
programación anteriores. Cuando los programas crecían, los programas C se
hacían inmanejables porque no había una forma fácil de acortarlo. Esto quiere
decir que el código de la primera línea de un programa largo podría interferir
con el código de la última línea y el programador tendría que recordar todo el
código mientras programaba.
La programación orientada a objetos se hizo popular por ser capaz de
dividir programas largos en unidades semi-autónomas. El lema de la programación orientada a objetos es “divide y vencerás”.
Dicho en otras palabras, un programa se puede dividir en partes fácilmente
identificables.
Por ejemplo, se supone que para mantener fresca la comida se utiliza un
sistema complejo.
Debería comprobar la temperatura de la comida usando un termómetro y
cuando la temperatura fuera lo suficientemente alta, se activaría un interruptor
que arrancara el compresor e hiciera funcionar las válvulas para que el frío
circulara; luego arrancaría un ventilador que moviera el aire. Esa es una forma
de hacerlo. Sin embargo, otra consiste en coordinar todas esas operaciones
de forma que sean automáticas, cubriendo todo con una unidad sencilla, un
refrigerador. Ahora las interioridades no se ven y lo único que hay que hacer
es introducir o sacar comida del frigorífico.
De esta forma es como funcionan los objetos, ocultan los detalles de la
programación al resto del programa, reduciendo todas las interdependencias
que aparecen en un programa C e inicializando una interfaz bien definida y
controlable que mantiene la conexión entre el objeto y el resto del código.
Resumiendo se puede decir que la programación orientada a objetos consiste en la división de un problema en diferentes partes (objetos) donde:
• Cada objeto posee una funcionalidad específica.
• Los objetos interactúan entre sí enviando y recibiendo mensajes; ver
figura 4.1 de la página 67.
La tarea del programador es coordinar las acciones de los objetos y la
comunicación entre los mismos.
4.1. INTRODUCCIÓN AL LENGUAJE
67
Figura 4.1: Mecanismo de Mensajes
Para programar bajo el paradigma orientado a objetos es necesario primero
diseñar un conjunto de clases. La claridad, eficiencia y mantenibilidad del
programa resultante dependerá principalmente de la calidad del diseño de
clases. Un buen diseño de clases significará una gran economía en tiempo de
desarrollo y mantención.
Lamentablemente se necesita mucha habilidad y experiencia para lograr
diseños de clases de calidad. Un mal diseño de clases puede llevar a programas
OO de peor calidad y de más alto costo que el programa equivalente no OO
[15].
Una gran ventaja de un lenguaje OO, son las bibliotecas de clases que se
pueden construir para la aplicación [16]. Una biblioteca de clases cumple el
mismo objetivo de una biblioteca de procedimientos en una lenguaje como C.
Sin embargo:
Una biblioteca de clases es mucho más fácil de usar que una biblioteca de
procedimientos, incluso para programadores sin experiencia en orientación a
objetos. Esto se debe a que las clases ofrecen mecanismos de abstracción más
eficaces que los procedimientos.
4.1.1
Bibliotecas de Clases Estándares de Java
Toda implementación de Java debe tener las siguientes bibliotecas de clases:
• Manejo de archivos.
• Comunicación de datos.
• Acceso a la red Internet..
68
CAPÍTULO 4. JAVA
• Acceso a bases de datos.
• Interfaces gráficas.
La interfaz de programación de estas clases es estándar, esto quiere decir
que en todas ellas las operaciones se invocan con el mismo nombre y los mismos
argumentos.
4.1.2
Java es Multiplataforma
Los programas en Java pueden ejecutarse en cualquiera de las siguientes plataformas, sin necesidad de hacer cambios:
Windows/95 y /NT.
Power/Mac.
Unix (Solaris, Silicon Graphics, ...).
La compatibilidad es total:
A nivel de fuentes: el lenguaje es exactamente el mismo en todas las
plataformas.
A nivel de bibliotecas: en todas las plataformas están presentes las mismas
bibliotecas estándares.
A nivel del código compilado: el código intermedio que genera el compilador
es el mismo para todas las plataformas. Lo que cambia es el intérprete del
código intermedio, la MVJ (Máquina Virtual Java).
Máquina Virtual Java
Es un programa (software) que maneja la interacción entre las aplicaciones
Java y el Sistema operativo y hardware subyacentes.
Este programa interpreta los bytecodes generados por el compilador de
Java durante la ejecución de un programa Java.
El proceso de compilación y ejecución se pueden observar en la figura 4.2
de la página 69.
4.1. INTRODUCCIÓN AL LENGUAJE
69
Figura 4.2: Proceso Compilación y Ejecución
4.1.3
Características del Lenguaje
• Robustez
Los siguientes errores no se pueden cometer en Java:
— Java siempre chequea los índices al acceder a un arreglo.
— Java realiza chequeo de tipos durante la compilación (al igual que
C). En una asignación entre punteros el compilador verifica que los
tipos sean compatibles.
— Java realiza chequeo de tipos durante la ejecución (C y C++ no lo
hacen). Cuando un programa usa un cast para acceder a un objeto
como si fuese de un tipo específico, se verifica durante la ejecución
que el objeto en cuestión sea compatible con el cast que se le aplica. Si el objeto no es compatible, entonces se lanza una excepción
informando al programador la línea en donde está el error.
— Java posee un recolector de basuras que administra automáticamente la memoria. La MVJ lo ejecuta para limpiar o reasignar
memoria, se lo denomina “Garbage Collector”.
• Flexibilidad
Java combina flexibilidad, robustez y legibilidad gracias a una mezcla de
chequeo de tipos durante la compilación y durante la ejecución. En Java se
pueden tener punteros a objetos de un tipo específico y también se pueden
70
CAPÍTULO 4. JAVA
tener punteros a objetos de cualquier tipo. Estos punteros se pueden convertir
a punteros de un tipo específico aplicando un cast.
El programador usa entonces punteros de tipo específico en la mayoría de
los casos con el fin de ganar legibilidad y en unos pocos casos usa punteros a
tipos desconocidos cuando necesita tener flexibilidad.
• Administración Automática de la Memoria
En Java los programadores no necesitan preocuparse de liberar un trozo de
memoria cuando ya no lo necesitan. Es el garbage collector el que determina
cuando se puede liberar la memoria ocupada por un objeto.
Un recolector de basuras es un gran aporte a la productividad. Se ha
estudiado en casos concretos que los programadores han dedicado un 40% del
tiempo de desarrollo a determinar en qué momento se puede liberar un trozo
de memoria.
Además este porcentaje de tiempo aumenta a medida que aumenta la
complejidad del software en desarrollo. Es relativamente sencillo liberar correctamente la memoria en un programa de 1000 líneas. Sin embargo, es difícil
hacerlo en un programa de 10000 líneas. Y se puede postular que es imposible
liberar correctamente la memoria en un programa de 100000 líneas.
4.2
Estructura de un Programa Java
En el siguiente ejemplo se presenta la estructura general de un programa realizado en cualquier lenguaje orientado a objetos u OOP (Object Oriented
Programming), y en particular en el lenguaje Java:
import java.awt.*;
import java.lang.String;
import java.lang.Integer;
import java.awt.event.WindowEvent;
import java.util.*;
import java.awt.TextField;
4.3. CONCEPTOS BÁSICOS
71
public class Simu extends Frame implements ActionListener, ItemListener{
MenuBar barra;
m1 =new Menu(“Archivo”);
barra.add(m1);
m2 =new Menu(“Ver”);
barra.add(m2);
....
public static void main(String args [ ]){
Simu menus = new Simu();
menus.setTitle(“Simulación de Redes”);
menus.setVisible(true);
}
}
Aparece una clase que contiene el programa principal Simu (aquel que
contiene la función main()) y algunas clases de usuario (las específicas de
la aplicación que se está desarrollando) que son utilizadas por el programa
principal. La aplicación se ejecuta por medio del nombre de la clase que
contiene la función main(). Las clases de Java se agrupan en packages, que
son librerías de clases. Si las clases no se definen como pertenecientes a un
package, se utiliza un package por defecto (default) que es el directorio activo.
4.3
4.3.1
Conceptos Básicos
Clases
Una clase es una plantilla desde la que se pueden crear objetos. La definición
de una clase incluye especificaciones formales para la clase y cualquier dato y
métodos incluidos en ella. La programación orientada a objetos se basa en la
programación de clases [17]. Un programa se construye a partir de un conjunto
de clases.
Una vez definida e implementada una clase, es posible declarar elementos
de esta clase. Los elementos declarados de una clase se denominan objetos de
72
CAPÍTULO 4. JAVA
la clase. De una única clase se pueden declarar o crear numerosos objetos. La
clase es lo genérico: es el patrón o modelo para crear objetos.
Cada objeto tiene sus propias copias de las variables miembro, con sus
propios valores, en general distintos de los demás objetos de la clase.
Ejemplo:
public abstract class FuncionActivacion implements Cloneable, Serializable{
/*constructor sin argumentos que permite la herencia */
public FuncionActivacion () {
}
}
4.3.2
Herencia
La herencia es uno de los aspectos de la programación orientada a objetos que
se ha definido formalmente. Utilizando la herencia, se puede crear una nueva
clase a partir de otra, y la nueva heredará todos los métodos y miembros de
datos de la primera.
La clase nueva se llama subclase y la clase original, clase base o superclase.
La idea es añadir lo que se quiera a la nueva clase para darle más funcionalidad
que a la clase base.
La herencia es un tema importante en Java, ya que se puede usar la gran
librería de clases disponible, derivando de ellas nuestras clases propias.
En Java, a diferencia de otros lenguajes orientados a objetos, una clase sólo
puede derivar de una única clase, con lo cual no es posible realizar herencia
múltiple en base a clases. Sin embargo es posible “simular” la herencia múltiple
en base a las interfaces.
4.3.3
Interfaces
Una interfaz es una clase abstracta que define métodos abstractos y constantes, pero no implementa los métodos. La clase que implemeta una interfaz
4.4. VARIABLES DE JAVA
73
hereda los métodos y debe implementarlos, es decir se forma un contrato entre
la Interfaz y la clase que implementa la Interfaz.
Una clase puede “implementar” más de una interface y una interface puede
ser implementada por clases que no se encuentran relacionadas.
4.3.4
Package
Un package es una agrupación de clases. Existen una serie de packages incluidos en el lenguaje.
Además el programador puede crear sus propios packages. Todas las clases
que formen parte de un package deben estar en el mismo directorio.
Los packages se utilizan con las siguientes finalidades:
1. Para agrupar clases relacionadas.
2. Para evitar conflictos de nombres. En caso de conflicto de nombres
entre clases importadas, el compilador obliga a cualificar en el código los
nombres de dichas clases con el nombre del package.
3. Para ayudar en el control de la accesibilidad de clases y miembros.
Por las razones citadas, durante la etapa de Diseño del Software desarrollado, se ha decido crear dos paquetes, calculos e interface, utilizando la sentencia
package.
package myprojects.simu;
import myprojects.calculos.*;
import myprojects.interfase.*;
4.4
Variables de Java
Una variable en Java es un identificador que representa una palabra de memoria que contiene información. El tipo de información almacenado en una
variable sólo puede ser del tipo con que se declaró esa variable. Los diferentes
74
CAPÍTULO 4. JAVA
tipos tienen que ver con el formato de los datos que se almacenan en ella, así
como con la memoria que es necesaria para gestionar ese dato.
Hay dos tipos principales de variables:
• Variables de tipos primitivos: Están definidas mediante un valor único
y almacenan directamente ese valor siempre que pertenezca al rango de
ese tipo. Por ejemplo una variable int almacena un valor entero como
1, 2, 0, -1, etc.
• Variables referencia: Las variables referencia son referencias o nombres
de una información más compleja: arrays u objetos de una determinada
clase. Una referencia a un objeto es la dirección de un área en memoria
destinada a representar ese objeto. El área de memoria se solicita con el
operador new. Una variable de referencia también puede ser descripta
como una referencia a una clase.
Por ejemplo si se define: Estudiante e1. e1 es una referencia a una
instancia de Estudiante.
Se puede decir que dentro de un programa las variables pueden ser:
• Variables miembro de una clase: Se definen en una clase, fuera de cualquier método; pueden ser tipos primitivos o referencias. Son también
llamadas atributos.
• Variables locales: Se definen dentro de un método o más en general
dentro de cualquier bloque entre llaves {}. Se crean en el interior del
bloque y se destruyen al finalizar dicho bloque. Pueden ser también tipos
primitivos o referencias.
En la Tabla 4.1 de la página 74 se muestran las grandes categorías de tipos
para las variables en Java:
Tipos Primitivos
int, short, byte, long
char, boolean
float, double
Referencias a Objetos
Strings
Arreglos
otros objetos
Tabla 4.1: Categorías de Variables.
4.4. VARIABLES DE JAVA
75
En la Tabla 4.2 de la página 75 se indica para cada tipo primitivo el número
de bits que se emplea en su representación y el rango de valores que se puede
almacenar en las variables de estos tipos.
Tipo
int
short
byte
long
boolean
char
float
double
Bits
32
16
8
64
1
16
32
64
Rango
−231 ..231 − 1
−215 ..215 − 1
−27 ..27 − 1
−263 ..263 − 1
n/a
n/a
IEEE
IEEE
Ejemplos
0,1,5,-120,...
0,1,5,-120,...
0,1,5,-120,...
0,1,5,-120,...
false, true
‘a’,‘A’,‘0’,‘*’,...
1.2
1.2
Tabla 4.2: Tipos Primitivos de Datos
4.4.1
Datos de Objetos o Instancia
Son datos propios de cada instancia (objeto) de una clase determinada. Cada
objeto tiene una copia de sus datos. Estos pueden ser variables, métodos.
Se inicializan con el valor por defecto dependiendo del tipo de dato de la
variable.
Cada tipo de dato tiene asociado un valor por defecto de inicialización:
• Integrales (byte, short, int, long): Se inicializan en “0”.
• Flotantes (float, double): Se inicializan en “0,0”.
• Boolean: se inicializan en false.
• Char: se inicializan en /u0000 en formato UNICODE.
4.4.2
Datos de Clase
Son datos generales o globales a la ejecución de un aplicación.
76
CAPÍTULO 4. JAVA
Representan datos que son compartidos por todas las instancias de una
clase y son cargados en memoria antes de que una instancia de la clase sea
creada. Es decir antes de que se instancien nuevos objetos de la clase. Se
declaran con la palabra reservada “static”.
Por ejemplo una variable de clase sería:
public static String mensaje.
Y un ejemplo de la declaración de un método de clase:
public static void leerURL().
4.5
4.5.1
Operadores del Lenguaje Java
Operadores Aritméticos
Son operadores binarios (requieren siempre dos operandos) que realizan las
operaciones aritméticas habituales: suma (+), resta (-), multiplicación (*),
división (/) y resto de la división (%).
4.5.2
Operadores de Asignación
Los operadores de asignación permiten asignar un valor determinado a una
variable. El operador de asignación por excelencia es el operador igual (=).
La forma general de las sentencias de asignación con este operador es:
variable = expresión;
Java dispone de otros operadores de asignación. Se trata de versiones
abreviadas del operador (=) que realizan operaciones “acumulativas” sobre
una variable.
La siguiente Tabla 4.3 de la pág. 77, muestra estos operadores y su equivalencia con el uso del operador igual (=).
4.5. OPERADORES DEL LENGUAJE JAVA
Operador
+=
-=
=*
=/
%=
Utilización
op1 + = op2
op1 - = op2
op1 * = op2
op1 / = op2
op1% = op2
77
ExpresiónEquivalente
op1 = op1 + op2
op1 = op1 - op2
op1 = op1 * op2
op1 = op1 / op2
op1 = op1 % op2
Tabla 4.3: Operadores de asignación.
4.5.3
Operadores Unarios
Los operadores unarios sirven para mantener o cambiar el signo de una variable, constante o expresión numérica. Ellos son el más (+) y menos (-). Su uso
en Java es el estándar de estos operadores.
4.5.4
Operador Instanceof
El operador Instanceof permite saber si un objeto es una instancia o no de
una clase determinada y se utiliza de la siguiente manera:
objectName instanceof className.
Devuelve true o false según el objeto pertenezca o no a la clase.
4.5.5
Operador Condicional
Este operador permite realizar bifurcaciones sencillas, su forma general es la
siguiente:
boolean expresion? res1: res2
donde se evalúa la expresion booleana y si es true devuelve res1, si es false
devuelve res2.
Es el único operador ternario de Java.
78
CAPÍTULO 4. JAVA
4.5.6
Operadores Incrementales
Java dispone del operador incremento (++) y decremento (—). El operador
(++) incrementa en una unidad la variable a la que se aplica, mientras que
(—) la reduce en una unidad. Se pueden utilizar de dos formas:
• Precediendo a la variable de la forma “++i”. En este caso primero se incrementa la variable y luego se utiliza (ya incrementada) en la expresión
en la que aparece.
• Después de la variable de la forma “i++”. En este caso primero se utiliza
la variable en la expresión (con el valor anterior) y luego se incrementa.
En muchos casos estos operadores se utilizan para incrementar una variable
fuera de una expresión. En estos casos ambos operadores son equivalentes. Si
se utilizan en una expresión más complicada, el resultado de utilizar estos
operadores en una u otra de sus formas será diferente.
4.5.7
Operadores Relacionales
Los operadores relacionales sirven para realizar comparaciones de igualdad,
desigualdad y relación de menor o mayor. El resultado de estos operadores
es siempre un valor boolean (true o false) según se cumpla o no la relación
considerada. La siguiente Tabla 4.4 de la pág. 78 muestra los operadores
relacionales de Java.
Operador
>
>=
<
<=
==
! =
Utilización
op1 > op2
op1 >= op2
op1 < op2
op1 <= op2
op1 == op2
op1 != op2
El resultado es true
si op1 es mayor que op2
si op1 es mayor o igual que op2
si op1 es menor que op 2
si op1 es menor o igual que op2
si op1 y op2 son iguales
sio p1 y op2 son diferentes
Tabla 4.4: Operadores relacionales.
4.6. ESTRUCTURAS DE PROGRAMACIÓN
4.5.8
79
Operadores de Concatenación de Caracteres
El operador más (+) también se utiliza para concatenar cadenas de caracteres.
Por ejemplo, para concatenar cadenas puede utilizarse la sentencia:
String msj = “Datos ingresados correctamente”;
System.out.println(“Mensaje: ” + msj);
en donde la leyenda que aparecerá en la consola sería:
“Mensaje: Datos ingresados correctamente”.
4.6
Estructuras de Programación
Las estructuras de programación o estructuras de control permiten tomar decisiones y realizar un proceso repetidas veces. Son las denominadas bifurcaciones y bucles. En la mayoría de los lenguajes de programación, este tipo de
estructuras son comunes en cuanto a concepto, aunque su sintaxis varía de un
lenguaje a otro. La sintaxis de Java coincide prácticamente con la utilizada
en C/C++, lo que hace que para un programador de C/C++ no suponga
ninguna dificultad adicional.
4.6.1
Sentencias o Expresiones
Una expresión es un conjunto variables unidas por operadores. Son órdenes
que se le dan al computador para que realice una tarea determinada.
Una sentencia es una expresión que acaba en punto y coma (;). Se permite
incluir varias sentencias en una línea, aunque lo habitual es utilizar una línea
para cada sentencia. A continuación se muestra un ejemplo de una línea
compuesta de tres sentencias:
i = 0; j = 5; x = i + j;
donde lo habitual sería:
i = 0;
80
CAPÍTULO 4. JAVA
j = 5;
x = i + j;
4.6.2
Comentarios
Existen dos formas diferentes de introducir comentarios entre el código de Java
(en realidad son tres, como pronto se verá). Son similares a la forma de realizar comentarios en el lenguaje C/C++. Los comentarios son tremendamente
útiles para poder entender el código utilizado, facilitando de ese modo futuras
revisiones y correcciones. Además permite que cualquier persona distinta al
programador original pueda comprender el código escrito de una forma más
rápida. Se recomienda acostumbrarse a comentar el código desarrollado. De
esta forma se simplifican también las tareas de estudio y revisión posteriores.
Java interpreta que todo lo que aparece a la derecha de dos barras “//
” en una línea cualquiera del código es un comentario del programador y no
lo tiene en cuenta. El comentario puede empezar al comienzo de la línea o
a continuación de una instrucción que debe ser ejecutada. La segunda forma
de incluir comentarios consiste en escribir el texto entre los símbolos “ /* */
”. Este segundo método es válido para comentar más de una línea de código.
Por ejemplo:
// Esta línea es un comentario de una sola línea
int a=1; // Comentario a la derecha de una sentencia
/* Este tipo de comentarios es para comentar más de una sóla línea,
sólo requiere modificar el comienzo y el final. */
En Java existe además una forma especial de introducir los comentarios
(utilizando /***/ más algunos caracteres especiales) que permite generar automáticamente la documentación sobre las clases y packages desarrollados por el
programador. Una vez introducidos los comentarios, el programa javadoc.exe
(incluido en el JDK) genera de forma automática la información de forma similar a la presentada en la propia documentación del JDK. La sintaxis de estos
comentarios y la forma de utilizar el programa javadoc.exe se puede encontrar
en la información que viene con el JDK.
4.6. ESTRUCTURAS DE PROGRAMACIÓN
4.6.3
81
Bifurcaciones
Las bifurcaciones permiten ejecutar una de entre varias acciones en función
del valor de una expresión lógica o relacional. Se tratan de estructuras muy
importantes ya que son las encargadas de controlar el flujo de ejecución de un
programa. Se exponen dos variantes del de tipo if.
Bifurcación if
Esta estructura permite ejecutar un conjunto de sentencias en función del valor
que tenga la expresión de comparación. Ejemplo: se ejecuta si la expresión de
comparación (error < errorMinimo) tiene valor true:
numero = 58;
if (math.abs(numero) < 10){
System.out.println(“Número de 1 solo dígito”);
} /* fin del if */
Las llaves {} sirven para agrupar en un bloque las sentencias que se han
de ejecutar, y no son necesarias si sólo hay una sentencia dentro del if.
Bifurcación if else
Análoga a la anterior, de la cual es una ampliación. Las sentencias incluidas
en el else se ejecutan en el caso de no cumplirse la expresión de comparación
(false),
Ejemplo:
numero = 58;
if (Math.abs(numero) < 10){
System.out.println(“Número de 1 solo dígito”);
}else{
System.out.println(“Número de 2 dígitos”);
}// fin del else
82
CAPÍTULO 4. JAVA
4.6.4
Bucles
Un bucle se utiliza para realizar un proceso repetidas veces. Se denomina
también lazo o loop. El código incluido entre las llaves {} (opcionales si el
proceso repetitivo consta de una sola línea), se ejecutará mientras se cumplan
unas determinadas condiciones. Hay que prestar especial atención a los bucles
infinitos, hecho que ocurre cuando la condición de finalizar el bucle (booleanExpression) no se llega a cumplir nunca. Se trata de un fallo muy típico,
habitual sobre todo entre programadores poco experimentados.
Bucle while
En el siguiente ejemplo se muestra que se ejecutará la sentencia fin++ mientras
la expresión (capas.charAt(fin)!=‘,’ && capas.charAt(fin)!=-1) sea verdadera.
for (int j=0; j < numeroCapas; j++){
int fin = principio;
try {
while (capas.charAt(fin) != ‘,’ && capas.charAt(fin) != -1){
fin++;
}
}
}
Bucle for
A continuación se podrá apreciar la utilización del bucle for:
/* calcular el nuevo vector de diseño */
for (int i = 0; i < vectorDis.length; i++){
vectorDis[i] = vectorDis[i] + learningRate * S[i];
}
4.6. ESTRUCTURAS DE PROGRAMACIÓN
83
La sentencia int i = 0 (inicialización) se ejecuta al comienzo del for, e
i++ (incremento) después de vectorDis[i] = vectorDis[i] + learningRate * S[i]
(sentencia). La expresión booleana (vectorDis.length) se evalúa al comienzo
de cada iteración; el bucle termina cuando la expresión de comparación toma
el valor false.
Bucle do while
Es similar al bucle while pero con la particularidad de que el control está al
final del bucle (lo que hace que el bucle se ejecute al menos una vez, independientemente de que la condición se cumpla o no). Una vez ejecutadas las
sentencias, se evalúa la condición: si resulta true se vuelven a ejecutar las
sentencias incluidas en el bucle, mientras que si la condición se evalúa a false
finaliza el bucle.
do{
/* calcular el gradiente del vector fijar el vector de diseño */
problema.fijoVector(vectorDis);
/* incrementar el contador de iteraciones*/
step++;
}while (error > errorDeseado && step < iteracionesMaximas);
/* ... hasta que el error sea menor o igual que el deseado o */
/* se alcance el número de iteraciones pasado como argumento */
problema.fijoVector(vectorDis);
Bloque try{...} catch{...} finally{...}
Java incorpora en el propio lenguaje la gestión de errores. El mejor momento
para detectar los errores es durante la compilación. Sin embargo prácticamente
sólo los errores de sintaxis son detectados en esta operación. El resto de los
problemas surgen durante la ejecución de los programas.
84
CAPÍTULO 4. JAVA
En el lenguaje Java, una Exception es un cierto tipo de error o una condición anormal que se ha producido durante la ejecución de un programa.
Algunas excepciones son fatales y provocan que se deba finalizar la ejecución
del programa. En este caso conviene terminar ordenadamente y dar un mensaje explicando el tipo de error que se ha producido. Otras excepciones, como
por ejemplo no encontrar un fichero en el que hay que leer o escribir algo,
pueden ser recuperables. En este caso el programa debe dar al usuario la
oportunidad de corregir el error (dando por ejemplo un nuevo path del fichero
no encontrado).
Los errores se representan mediante clases derivadas de la clase Throwable,
pero los que tiene que chequear un programador derivan de Exception (java.lang.Exception que a su vez deriva de Throwable). Existen algunos tipos
de excepciones que Java obliga a tener en cuenta. Esto se hace mediante el
uso de bloques try, catch y finally.
El código dentro del bloque try está “vigilado”: Si se produce una situación
anormal y se lanza como consecuencia una excepción, el control pasa al bloque
catch que se hace cargo de la situación y decide lo que hay que hacer. Se pueden
incluir tantos bloques catch como se desee, cada uno de los cuales tratará un
tipo de excepción. Finalmente, si está presente, se ejecuta el bloque finally,
que es opcional, pero que en caso de existir se ejecuta siempre, sea cual sea el
tipo de error.
En el caso en que el código de un método pueda generar una Exception
y no se desee incluir en dicho método la gestión del error (es decir los bucles
try/catch correspondientes), es necesario que el método pase la Exception al
método desde el que ha sido llamado. Esto se consigue mediante la adición de
la palabra throws seguida del nombre de la Exception concreta, después de la
lista de argumentos del método. A su vez el método superior deberá incluir
los bloques try/catch o volver a pasar la Exception. De esta forma se puede ir
pasando la Exception de un método a otro hasta llegar al último método del
programa, el método main().
4.7
Servlets
Los servlets son programas de Java que construyen respuestas dinámicas para
el cliente, tal como páginas Web. Los servlets reciben y responden a las
demandas de los clientes Web, normalmente por HTTP.
4.7. SERVLETS
85
Además los servlets son escalables, dando soporte para una multi-aplicación
de configuración del servidor. [18]
Permiten utilizar datos caché, acceso a información de base de datos, y
compartir datos con otros servlets, archivos JSP y (en algunos ambientes) con
los bean empresariales.
Poseen algunas ventajas respecto a los tradicionales programas CGI:
• Independencia de la plataforma. Esto proporciona un menor esfuerzo de
codificación con respecto a soluciones dependientes del servidor web y
de la plataforma.
• Ejecución en paralelo de múltiples peticiones por una sola instancia del
servlet.Tradicionalmente en los programas CGI se ejecuta un proceso
distinto para cada petición, lo que conlleva una gradual degradación del
rendimiento y una necesidad de recursos muy elevada. En un servlet
todas las peticiones se atienden en el mismo proceso por distintos hilos
y una vez que se ha cargado el servlet este permanece en memoria hasta
que se reinicie el servidor.
4.7.1
Estructura de un Servlet
El API Servlet consiste básicamente en dos paquetes:
• javax.servlet
• javax.servlet.http
Todas las clases e interfaces que hay que utilizar en la programación de
servlets están en estos dos paquetes.
Vision General del API de Servlet
La relación entre las clases e interfaces de Java, muy determinada por el concepto de herencia, tal como puede verse en la figura 4.3 de la página 86, se
representan con letra normal las clases y las interfaces con cursiva.
86
CAPÍTULO 4. JAVA
Figura 4.3: Jerarquía y Métodos de las Principales Clases Para Crear Servlets.
La clase GenericServlet es una clase abstracta puesto que su método service() es abstracto. Esta implementa dos interfaces, de las cuales la más
importante es la interface Servlet.
La interface Servlet declara métodos más importantes de cara a la vida de
un servlet: init() que se ejecuta sólo al arrancar el servlet; destroy() que se
ejecuta cuando va a ser destruido y service() que se ejecutará cada vez que el
servlet debe atender una solicitud de servicio.
Cualquier clase que derive de GenericServlet deberá definir el método service(). Este método tiene en su definición dos argumentos correspondientes
a las interfaces ServletRequest y ServletResponse. La primera referencia a un
objeto que describe por completo la solicitud de servicio que se le envía al
servlet. Si la solicitud de servicio viene de un formulairo HTML, a través de
ese objeto se puede acceder a los nombres de los campos y a los valores introducidos por el usuario. El segundo argumento es un objeto con la referencia
a la interface ServletResponse que constituye el camino mediante el cual el
método service() se conecta de nuevo con el cliente y le comunica el resultado
de su solicitud.
La clase HttpServlet ya no es abstracta y dispone de una implementación
o definición del método service(). Dicha implementación detecta el tipo de
servicio o método HTTP que le ha sido solicitado desde el browser y llama
al método adecuado de esa misma clase (doPost(), doGet(), etc.), también
aparecen otras interfaces como ser:
4.7. SERVLETS
87
• La interfaz ServletConfig define métodos que permiten pasar al servlet
información sobre sus parametros de inicialización.
• La interface ServletContext permite a los servlets acceder a información
sobre el entorno en que se estan ejecutando.
Principios de Codificación de Servlet
Para crear un servlet de HTTP, es necesario extender las clases:
javax.servlet.HttpServlet y sustituir cualquier método que se desee implementar en el servlet. Por ejemplo, un servlet reemplaza el método doGet para
manejar las demandas Get de los clientes.
El HttpServletRequest representa los requerimientos de un cliente. Este
objeto da acceso al servlet, a la información incluida como datos en formato
HTML, encabezados HTTP, etc.
El HttpServletResponse representa la respuesta del servlet.
El servlet usa este objeto para devolverle datos al cliente como errores
de HTTP (200, 404, y otros), encabezados de respuesta (Content-Type, SetCookie, y otros), y datos de salida para escribir cadenas de salida de respuesta
o salida impresa.
El principio de un servlet podría parecerse al siguiente ejemplo:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletPrueba extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
Ciclo de Vida del Servlet
Un Servlet de Java tiene un ciclo de vida que determina como el servlet es
cargado e inicializado, como recibe y responde a las peticiones y como sale
88
CAPÍTULO 4. JAVA
fuera de servicio.
Las clases javax.servlet.http.HttpServlet definen métodos tales como:
• Iniciar un servlet.
• Solicitar servicios.
• Quitar un servlet del servidor.
Éstos son conocidos como métodos del ciclo de vida y son llamados en la
siguiente secuencia:
• Se construye el servlet.
• Se inicializa con el método init().
• Se manejan llamadas de los clientes al método de servicio.
• Se saca el servlet de servicio.
• Se destruye con el método destruir.
• Se finaliza el servlet y la basura es recolectada.
El ciclo de vida de un Servlet se puede apreciar en la figura 4.4 de la página
89.
4.7.2
Instanciación e Inicialización
El motor del servlet (la función del Servidor de Aplicaciones que procesa servlets, archivos JSP, y otros tipos de server-side incluyendo codificación) crea
una instancia del servlet. El motor del servlet crea el objeto de configuración
del servlet y lo usa para pasar los parámetros de inicialización del servlet al
método init(). La inicialización de los parámetros persiste hasta que el servlet se destruye y es aplicada a todas las invocaciones de ese servlet hasta
destruirse.
Si la inicialización tiene éxito, el servlet está disponible para el servicio. Si
la inicialización falla, el motor del servlet descarga el servlet. El administrador
4.7. SERVLETS
89
Figura 4.4: Ciclo de Vida de un Servlet.
90
CAPÍTULO 4. JAVA
puede inhabilitar una aplicación y el servlet para el servicio. En tales casos,
la aplicación y el servlet permanecen inhabilitados hasta que el administrador
los habilite.
4.7.3
Servicio de Demanda
Una demanda del cliente llega al servidor de aplicaciones. El motor del servlet
crea un objeto demanda y un objeto respuesta. El motor del servlet invoca
al método de servicio del servlet, procesa el requerimiento y usa métodos del
objeto respuesta para crear la respuesta para el cliente.
El método de servicio recibe información sobre el requerimiento del objeto
demanda, procesa el requerimiento, y usa los métodos del objeto respuesta
para crear la contestación para el cliente. El método de servicio puede invocar
otros métodos para procesar el requerimiento, tales como doGet (), doPost (),
o métodos del usuario.
4.7.4
Terminación
El motor del servlet invoca al método destroy () del servlet cuando apropia
y descarga el servlet. La Máquina Virtual de Java realiza la recolección de
basura después de la destrucción del servlet.
Cuando el contenedor Web ya no necesita que el servlet o una nueva instancia del servlet se recarguen, invoca al método destroy() del servlet. El
contenedor Web también puede llamar al método destroy() si el motor necesita conservar recursos o una llamada pendiente a un método service() del
servlet excediendo el timeout. La Máquina Virtual de Java realiza recolección
de basura después del destroy.
4.7.5
Java Server Faces
Java Server Pages (JSP) combinan HTML con fragmentos de Java para producir páginas web dinámicas.
Cada página es automáticamente compilada a servlet por el motor de JSP
, en primer lugar es recogida y a continuación ejecutada. JSP tiene gran
variedad de formas para comunicarse con las clases de Java, servlets, applets
4.7. SERVLETS
91
y el servidor web; por esto se puede aplicar una funcionalidad a nuestra web
a base de componentes.
Una página JSP es un archivo de texto simple que consiste en contenido
HTML o XML con elementos JSP. Cuando un cliente pide una página JSP
del sitio web y no se ha ejecutado antes, la página es inicialmente pasada al
motor de JSP, el cual compila la página convirtiéndola en Servlet, la ejecuta
y devuelve el contenido de los resultados al cliente.
El código fuente de una página JSP incluye:
• Directivas: Dan información global de la página, por ejemplo, importación de estamentos, página que majena los errores o cuando la página
forma parte de una sesión.
• Declaraciones: Sirven para declarar métodos y variables.
• Scripts de JSP: Es el código Java embebido en la página.
• Expresiones de JSP: Formatea las expresiones como cadenas para incluirlas en la página de salida.
Directivas
Una directiva de JSP es un estamento que proporciona la información del
motor de JSP para la página que la pide. Su sintaxis general es <%@ directiva
{atributo =“valor”} %> dónde la directiva debe tener un número de atributos.
Algunos ejemplos son:
— Page: Información para la página.
— Include: Incluye archivos completos palabra por palabra.
— Taglib: La dirección de la librería de tags que se usará en la página.
La directiva Page posee varios atributos:
— language=“java”: Comunica al servidor el lenguaje que va a ser
utilizado en el archivo. Java es el único posible en esta especificación.
92
CAPÍTULO 4. JAVA
— extends=“package.class”: La variale extends, define la clase padre
del servlet generado. Normalmente no es necesario utilizar otras
que no sean las clases base del proveedor.
— import=“package.*, package.class”: Sirve para especificar los paquetes y clases que se quieran utilizar.
— session=“true|false”: Por defecto session vale true, manteniendo los
datos de las sesión para la página.
— isThreadSafe=“true|false”: Por defecto vale true, le hace señales
al motor de JSP para que múltiples pedidos del cliente puedan ser
tomados como uno.
— info=“text”: Información en la página a la que puede accederse a
través del método Servlet.getServletInfo().
— errorPage=”pagina_error”: Página que manejará las excepciones
de errores.
Declaraciones
Una declaración de JSP, puede definirse como una definición de variables
y métodos a nivel de clase que son usadas en la página.
Un bloque de declaraciones típico sería <%! declaración %>
Un ejemplo de declaración de script sería el siguiente:
<HTML>
<HEAD>
<TITLE>Página simple JSP</TITLE>
</HEAD>
<BODY>
<%!
String strCadena = ”x”;
int intContador = 0;
%>
</BODY>
4.7. SERVLETS
93
</HTML>
Scripts de JSP
Los Scripts son bloques de código Java residentes entre los tags <% y %>.
Estos bloques de código estarán dentro del servlet generado incluídos en el
método _jspService(). Los Scripts pueden acceder a cualquier variable o Bean
que haya sido declarado. También hay algunos objetos implícitos disponibles
para los Scripts desde entorno del Servlet.
Algunos de ellos pueden verse a continuación:
• request: Es la petición del cliente. Es normalmente una subclase de la
clase HttpServletRequest.
• response: Es la página JSP de respuesta y es una subclase de HttpServletResponse. Los atributos de la página y los objetos implícitos necesitan
ser accesibles a través de API, para permitir al motor de JSP compilar
la página. Pero cada servidor tiene implementaciones específicas de cada
uno de esos atributos y objetos.
• pageContext: Esta clase PageContext es inicializada con los objetos response y request y algunos atributos de la directiva de la página (erropage,
session, buffer and autoflush) y facilita los otros objetos implícitos para
la página de petición.
• session: El objeto de sesión HTTP asociado a la petición.
• application: Lo que devuelve el servlet cuando se llama a getServletConfig().getContext().
• page: Es la forma que tiene la página para referirse a si misma. Se usa
como alternativa al objeto this.
El siguiente fragmento de código muestra como obtener el valor de un
parámetro mediante el objeto request, y como pasarlo a una cadena para
mostrarlo en pantalla.
<%
String strNombre = request.getParameter(“nombre”);
94
CAPÍTULO 4. JAVA
out.println(strNombre);
%>
Expresiones JSP
Las expresiones son una magnífica herramienta para insertar código embebido dentro de la página HTML. Cualquier cosa que esté entre los tags <%= y
%> será evaluado, convertido a cadena y posteriormente mostrado en pantalla.
La conversión desde el tipo inicial a String es manejada autómaticamente.
Es importante remarcar que la expresión no termina en punto y coma (;)
. Esto es así porque el motor de JSP, pondrá la expresión automáticamente
entre out.println().
Las expresiones JSP permiten parametrizar las páginas HTML (es parecido a cuando se parametriza una consulta SQL pero difieren la forma de los
valores).
Una y otra vez , en el código de la página HTML, ser verán bucles o condiciones usando código Java, simplemente empezando y acabando las condiciones
o bucles entre los tags <% y %>.
Un ejemplo sería:
<% for (int i=0;i<5;i++) { %>
<BR>El valor del contador es <%=i%>
<% } %>
Modelos de Acceso JSP
Se puede acceder a los archivos JSP de dos maneras:
El browser envía un requerimiento para los archivos JSP.
Los archivos JSP acceden a los beans u otros componentes que generan
contenido dinámico para ser enviado al browser como se muestra en la figura
4.5 de la página 95.
Cuando el servidor Web recibe un requerimiento para un archivo JSP, el
servidor envía ese requerimiento al servidor de aplicaciones. El servidor de
4.7. SERVLETS
95
Figura 4.5: Requerimiento de un archivo JSP.
Figura 4.6: Requerimiento de un Servlet
aplicaciones analiza el archivo JSP y genera código fuente de Java que se
compila y se ejecuta como un servlet.
El requerimiento se envía a un servlet que genera contenido dinámico y
llama a un archivo JSP para enviar el contenido a un browser, como se muestra
en la figura 4.6 de la página 95.
Este modelo de acceso facilita la generación de contenido separado del
despliegue de contenido.
El servidor de aplicaciones proporciona un juego de métodos en el objeto
HttpServiceRequest object y el objeto HttpServiceResponse. Estos métodos
permiten una invocación de servlet para colocar un objeto (normalmente un
96
CAPÍTULO 4. JAVA
bean) en un objeto demanda y pasa ese requerimiento a otra página (normalmente un archivo JSP) para el despliegue. La página invocada recupera el
beans del objeto demanda y genera el HTML que recibe el cliente.
4.7.6
Desarrollando Aplicaciones
Para WebSphere Application Server, las aplicaciones son combinaciones de
bloques que trabajan conjuntamente para el logro de una función de la lógica
comercial. Las aplicaciones Web son grupos de uno o más servlets, más el
contenido estático.
Aplicaciones Web = servlets + archivos JSP + archivos XML + archivos
HTML + gráficos.
El modelo de programación de WebSphere Application Server está basado
en la plataforma Java de Sun (J2SE). El ambiente J2SE soporta la base para
construir redes centrales de aplicaciones empresariales para correr sobre una
variedad de sistemas. El software J2SE consiste en los Java SDK Standard
Edition y el Java Runtime Environment (JRE ) Standard Edition.
Capítulo 5
Java 2 Micro Edition
5.1
Introducción
Para empezar se puede decir que Java 2 Micro Edition o J2ME es la versión
del lenguaje Java que está orientada al desarrollo de aplicaciones para dispositivos pequeños con capacidades restringidas tanto en pantalla gráfica, como
de procesamiento y memoria (teléfonos móviles, PDA’s, Handhelds, Pagers,
etc.).
Esta versión de Java fue presentada en 1999 por Sun Microsystems con el
propósito de habilitar aplicaciones Java para pequeños dispositivos. En esta
presentación lo que realmente se mostró fue una nueva máquina virtual Java
o JVM (Java Virtual Machine) que podía ejecutarse en dispositivos Palm.
La tardía aparición de esta tecnología puede ser debido a que las necesidades de los usuarios de telefonía móvil han cambiado mucho en estos últimos
años y cada vez demandan más servicios y prestaciones por parte tanto de los
terminales como de las compañías. Además el uso de esta tecnología depende
del asentamiento en el mercado de otras, como GPRS, íntimamente asociada
a J2ME y que no ha estado al alcance hasta hace poco. J2ME es la tecnología
del futuro para la industria de los dispositivos móviles.
97
98
CAPÍTULO 5. JAVA 2 MICRO EDITION
5.1.1
Comparación de Versiones
Sun Microsystems, con el objetivo de cubrir las necesidades de todos los usuarios creó distintas versiones de Java de acuerdo a las necesidades de cada
uno, por lo cual existe el paquete Java 2 que se puede dividir en 3 ediciones
distintas:
• J2SE (Java Standard Edition) orientada al desarrollo de aplicaciones
independientes de la plataforma.
• J2EE (Java Enterprise Edition) orientada al entorno empresarial.
• J2ME (Java Micro Edition) orientada a dispositivos con capacidades restringidas.
Algunas de las características de cada una de las versiones son:
1. Java 2 Platform, Standard Edition (J2SE): Esta edición de Java es la
que en cierta forma recoge la iniciativa original del lenguaje Java. Tiene
las siguientes Características:
• Inspirado inicialmente en el lenguaje C++, pero con componentes
de alto nivel, como soporte nativo de strings y recolector de basura
(garbage colector ).
• Código independiente de la plataforma, precompilado a bytecodes
intermedio y ejecutado en el cliente por una JVM (Java Virtual
Machine).
• Modelo de seguridad tipo sandbox proporcionado por la JVM.
• Abstracción del sistema operativo subyacente mediante un juego
completo de APIs de programación.
• Contiene el conjunto básico de herramientas usadas para desarrollar Java Applets, así cómo las APIs orientadas a la programación
de aplicaciones de usuario final: Interfaz gráfica de usuario, multimedia, redes de comunicación.
2. Java 2 Platform, Enterprise Edition (J2EE): Esta versión está orientada
al entorno empresarial. El software empresarial tiene unas características
propias marcadas:
5.1. INTRODUCCIÓN
99
— Está pensado no para ser ejecutado en un equipo, sino para
ejecutarse sobre una red de ordenadores de manera distribuida
y remota mediante EJBs (Enterprise Java Beans).
— Esta edición está orientada especialmente al desarrollo de servicios web, servicios de nombres, persistencia de objetos, XML,
autenticación, APIs para la gestión de transacciones, etc.
— El cometido de esta especificación es ampliar la J2SE para dar
soporte a los requisitos de las aplicaciones de empresa.
3. Java 2 Platform, Micro Edition (J2ME): Esta versión de Java está enfocada a la aplicación de la tecnología Java en dispositivos electrónicos
con capacidades computacionales y gráficas muy reducidas, tales como
teléfonos móviles, PDAs o electrodomésticos inteligentes:
— Esta edición tiene unos componentes básicos que la diferencian de
las otras versiones, como el uso de una máquina virtual denominada
KVM (Kilo Virtual Machine, debido a que requiere sólo unos pocos
Kilobytes de memoria para funcionar) en vez del uso de la JVM
clásica.
La figura 5.1 de la página 100 muestra la arquitectura de Java2.
En la actualidad se puede decir que Java no es sólo un simple lenguaje de
programación sino un conjunto de tecnologías que engloba a todos los aspectos
de la computación con dos elementos en común:
• El código fuente en lenguaje Java es compilado a código intermedio
interpretado por una Java Virtual Machine (JVM ), por lo que el código
ya compilado es independiente de la plataforma.
• Todas las tecnologías comparten un conjunto más o menos amplio de
APIs básicas del lenguaje, agrupadas principalmente en los paquetes
java.lang y java.io.
Debido a que la edición estándar de APIs de Java ocupa 20 MB aproximadamente y los dispositivos pequeños disponen de una cantidad de memoria
mucho más reducida, J2ME contiene una mínima parte de las APIs de Java.
Concretamente, J2ME usa 37 clases de la plataforma J2SE provenientes de
los paquetes java.lang, java.io, java.util. Esta parte de la API que se mantiene
fija forma parte de lo que se denomina “configuración” [19].
100
CAPÍTULO 5. JAVA 2 MICRO EDITION
Figura 5.1: Arquitectura de la Plataforma Java 2 de Sun.
Otra diferencia con la plataforma J2SE viene dada por el uso de una
máquina virtual distinta de la clásica JVM denominada KVM. Esta KVM
tiene unas restricciones que hacen que no posea todas las capacidades incluidas
en la JVM clásica.
J2ME representa una versión simplificada de J2SE. Sun separó estas dos
versiones ya que J2ME está pensada para dispositivos con limitaciones de
proceso y capacidad gráfica. También separó J2SE de J2EE porque este
último exigía unas características muy pesadas o especializadas de E/S, trabajo
en red, etc. Por tanto, separó ambos productos por razones de eficiencia.
Hoy, J2EE es un superconjunto de J2SE pues contiene toda la funcionalidad de éste y más características, así como J2ME es un subconjunto de J2SE
(excepto por el paquete javax.microedition) ya que contiene varias limitaciones
con respecto a J2SE.
Sólo de manera muy simplista se puede considerar a J2ME y J2EE como
versiones reducidas y ampliadas de J2SE respectivamente (ver fig. 5.2 de la
pág. 101): en realidad cada una de las ediciones está enfocada a ámbitos de
aplicación muy distintos [19].
5.1. INTRODUCCIÓN
101
Figura 5.2: Ubicación de las Tecnologías Java.
5.1.2
Algunas Consideraciones al Desarrollar en J2ME
Algunas consideraciones son las siguientes:
• Prácticamente los dispositivos móviles y más aún los nuevos teléfonos
celulares ya poseen capacidad de ejecución de aplicaciones desarrolladas
en J2ME. Existen algunas ventajas y restricciones o desventajas respecto
a otras tecnologías [20].
• Algunas ventajas en comparación de J2ME con respecto al lenguaje C son:
∗ Multiplataforma: Significa 1 programa - se puede ejecutar en
n móviles.
∗ Seguridad: El usuario está protegido.
∗ Descarga OTA (Over The Air).
∗ Desarrollo rápido.
— Inconveniente:
∗ Alejamiento del hardware. No puede accederse a ciertos recursos del teléfono si éste no incorpora el API correspondiente.
102
CAPÍTULO 5. JAVA 2 MICRO EDITION
• Las aplicaciones móviles que poseen conectividad a Internet pueden utilizar la tecnología GPRS, en la cual se tarifa al usuario por Kbytes recibidos y enviados, es por esto que es importante minimizar la cantidad
de información intercambiada. Las relaciones que existen de acuerdo
al tipo de información intercambiada y el volumen de la misma son las
siguientes:
— Página html - 10-100Kb.
— Página wml 1-10Kb.
— Información “pura” - 0.1 - 1kb.
• ¿Cuándo interesa desarrollar en J2ME ?:
— Cuando no hay tráfico de información, por ejemplo: juegos, conversores de unidades.
— Cuando el tráfico de información puede minimizarse con J2ME .
— Cuando pueden almacenarse datos localmente en el móvil y sólo
transferir algunos otros como los resultados [20].
5.2
Componentes de J2ME
Los componentes que forman parte de la tecnología J2ME son:
• Máquina virtual: Existe una serie de máquinas virtuales java con diferentes requisitos, cada una para diferentes tipos de pequeños dispositivos.
• Configuraciones: Son un conjunto de clases básicas orientadas a conformar el corazón de las implementaciones para dispositivos de características específicas:
— Connected Limited Device Configuration (CLDC) enfocada a dispositivos con restricciones de procesamiento y memoria.
— Connected Device Configuration (CDC) enfocada a dispositivos con
más recursos [20].
• Perfiles: Son unas bibliotecas Java de clases específicas orientadas a
implementar funcionalidades de más alto nivel para familias específicas
de dispositivos.
5.2. COMPONENTES DE J2ME
5.2.1
103
Máquinas Virtuales J2ME
Una máquina virtual de Java (JVM ) es un programa encargado de interpretar
código intermedio (bytecode) de los programas Java precompilados a código
máquina ejecutable por la plataforma, efectuar las llamadas pertinentes al
sistema operativo subyacente y observar las reglas de seguridad y corrección
de código 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 electrónicos
que, en algunos casos, suprimen algunas características con el fin de obtener
una implementación menos exigente.
La tecnología J2ME ha definido dos configuraciones, CDC y CLDC, cada
una de ellas con características propias, en consecuencia, para cada tipo de
configuración se definió una máquina virtual distinta. La VM (Virtual Machine) correspondiente a CLDC se denomina KVM y la de la configuración
CDC se denomina CVM.
A continuación se detallan las principales características de cada una de
ellas:
KVM
Se corresponde con la máquina virtual más pequeña. Su nombre KVM
proviene de Kilobyte (que hace referencia a la baja ocupación de memoria).
Se trata de una implementación de máquina virtual reducida y especialmente
orientada a dispositivos con bajas capacidades computacionales y de memoria,
como ser los teléfonos celulares.
La KVM está escrita en el lenguaje de programación C y posee algunas
características particulares como:
• Pequeña, con una carga de memoria entre los 40Kb y los 80 Kb, dependiendo de la plataforma y las opciones de compilación.
• Alta portabilidad.
• Modulable.
104
CAPÍTULO 5. JAVA 2 MICRO EDITION
• Lo más completa y rápida posible y sin sacrificar características para las
que fue diseñada.
Sin embargo, existen algunas limitaciones debido a su bajo consumo de
memoria respecto la maquina virtual clásica:
• No hay soporte para tipos en coma flotante. Esta limitación está presente porque los dispositivos carecen del hardware necesario para estas
operaciones.
• 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. Si se necesita la
utilización de grupos de hilos se tendrán que utilizar los objetos colección
para almacenar cada hilo.
• No existe la finalización de instancias de clases. No existe el método
Object.finalize().
• 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 mayoría de las excepciones.
Otro tema en cuestión que se puede encontrar en ésta maquina virtual
más pequeña es la verificación de clases. El verificador de clases estándar
de Java es demasiado grande para la KVM, de hecho es más grande que la
propia KVM y el consumo de memoria es excesivo, más de 100Kb para las
aplicaciones típicas.
Este verificador de clases es el encargado de rechazar las clases no válidas
en tiempo de ejecución. Este mecanismo verifica los bytecodes de las clases
Java realizando las siguientes comprobaciones:
• Ver que el código no sobrepase los límites de la pila de la VM.
• Comprobar que no se utilizan las variables locales antes de ser inicializadas.
5.2. COMPONENTES DE J2ME
105
Figura 5.3: Proceso de Verificación.
• Comprobar que se respetan los campos, métodos y los modificadores de
control de acceso a clases.
Por esta razón los dispositivos que usen la configuración CLDC y KVM
introducen un algoritmo de verificación de clases en dos pasos. Este proceso
puede apreciarse gráficamente en la figura 5.3 de la página 105.
CVM
• La CVM (Compact Virtual Machine) ha sido tomada como máquina virtual Java de referencia para la configuración CDC y soporta las mismas
características que la máquina virtual clásica. Está orientada a dispositivos electrónicos con procesadores de 32 bits de gama alta y en torno a
2 Mb o más de memoria RAM.
Las características que presenta ésta máquina virtual son:
1. Sistema de memoria avanzado.
2. Tiempo de espera bajo para el recolector de basura.
3. Separación completa de la VM del sistema de memoria.
106
CAPÍTULO 5. JAVA 2 MICRO EDITION
4. Recolector de basura modularizado.
5. Portabilidad.
6. Rápida sincronización.
7. Ejecución de las clases Java fuera de la memoria de sólo lectura (ROM).
8. Soporte nativo de hilos.
9. Baja ocupación en memoria de las clases.
10. Proporciona soporte e interfaces para servicios en sistemas operativos de
tiempo real.
11. Conversión de hilos Java a hilos nativos.
12. Soporte para todas las características de Java2 v1.3 y librerías de seguridad, referencias débiles, Interfaz Nativa de Java (JNI ), invocación
remota de métodos (RMI ), Interfaz de depuración de la máquina virtual
(JVMDI).
5.2.2
Configuraciones
Una configuración es el conjunto mínimo de APIs Java que permiten desarrollar aplicaciones para un grupo de dispositivos. Estas APIs describen las
características básicas, comunes a todos los dispositivos:
• Características soportadas del lenguaje de programación Java.
• Características soportadas por la máquina virtual Java.
• Bibliotecas básicas de Java y APIs soportadas.
Como se ha mencionado con anterioridad, existen dos configuraciones, la
que está orientada a dispositivos con limitaciones computacionales y de memoria que se denomina CLDC y la configuración que se encuentra orientada
a dispositivos con menos restricciones en cuanto a capacidad de cómputo y
memoria, la cual se denomina CDC .
A continuación se presentan las características más relevantes de cada una:
5.2. COMPONENTES DE J2ME
107
• Configuración de dispositivos con conexión, CDC (Conected Device Configuration):
— La CDC está orientada a dispositivos con cierta capacidad computacional y de memoria. Por ejemplo, decodificadores de televisión
digital, televisores con Internet, algunos electrodomésticos y sistemas de navegación en automóviles.
— CDC usa una máquina virtual Java similar en sus características
a una de J2SE, pero con limitaciones en el apartado gráfico y de
memoria del dispositivo.
— La CDC está enfocada a dispositivos con las siguientes capacidades:
— Procesador de 32 bits.
— 2 Mb o más de memoria total, incluyendo memoria RAM y
ROM.
— Conectividad a algún tipo de red.
— Poseer la funcionalidad completa de la Máquina Virtual Java
2.
— La CDC está basada en J2SE v1.3 e incluye varios paquetes Java
de la edición estándar. Las peculiaridades de la CDC están contenidas principalmente en el paquete javax.microedition.io, que incluye
soporte para comunicaciones http y basadas en datagramas [19].
La tabla 5.1 de la pág. 108 muestra las librerías incluidas en la CDC.
• Configuracion de dispositivos limitados con conexión, CLDC (Conected
Limited Device Configuration):
— La CLDC está orientada a dispositivos dotados de conexión y con limitaciones en cuanto a capacidad gráfica, cómputo y memoria. Como por ejemplo teléfonos móviles, buscapersonas (Pagers), PDAs,
organizadores personales, etc.
— Las restricciones que contiene la configuración CLDC vienen dadas
por la utilización de la máquina virtual o KVM.
— Los dispositivos que usan CLDC deben cumplir los siguientes requisitos:
108
CAPÍTULO 5. JAVA 2 MICRO EDITION
Nombre del paquete
CDC
java.io
java.lang
java.lang.ref
java.lang.reflect
java.math
java.net
java.security
java.security.cert
java.text
java.util
java.util.jar
java.util.zip
javax.microedition.io
Descripción
Clases y paquetes estándar de E/S
Clases e interfaces de la máquina virtual
Clases de referencia
Clases e interfaces de reflectión
Paquete de matemáticas
Clases e interfaces de red
Clases e interfaces de seguridad
Clases de certificados de seguridad
Paquete de texto
Clases de utilidades estándar
Clases y utilidades para archivos JAR
Clases y utilidades para archivos
ZIP y comprimidos
Clases e interfaces para conexión genérica CDC
Tabla 5.1: Librerías de configuración CDC.
∗ Disponer entre 160 Kb y 512 Kb de memoria total disponible.
Como mínimo se debe disponer de 128 Kb de memoria no volátil para la máquina virtual Java y las bibliotecas CLDC, y 32
Kb de memoria volátil para la máquina virtual en tiempo de
ejecución.
∗ Procesador de 16 o 32 bits con al menos 25 Mhz de velocidad.
∗ Tener conexión a algún tipo de red, normalmente sin cable, con
conexión intermitente y ancho de banda limitado.
∗ Ofrecer bajo consumo, debido a que éstos dispositivos trabajan con suministro de energía limitado, normalmente baterías
recargables.
— La CLDC aporta las siguientes funcionalidades a los dispositivos:
∗ Un subconjunto del lenguaje Java y todas las restricciones de
su máquina virtual (KVM ).
∗ Un subconjunto de las bibliotecas del núcleo de Java.
∗ Soporte para acceso a redes.
∗ Soporte para E/S básica.
5.2. COMPONENTES DE J2ME
109
∗ Seguridad.
La tabla 5.2 de la pág. 109 muestra las librerías incluidas en la CLDC.
Nombre del paquete CLDC
java.io
java.lang
java.util
javax.microedition.io
Descripción
Clases y paquetes estándar de E/S
Clases e interfaces de la máquina virtual
Clases e interfaces, utilidades estándar
Clases e interfaces de conexión genérica
Tabla 5.2: Librerías de configuración CLDC.
5.2.3
Perfiles
Un perfil es el que define las APIs que controlan el ciclo de vida de la aplicación,
interfaz de usuario, etc. Concretamente, un perfil es un conjunto de APIs
orientado a un ámbito de aplicación determinado.
Los perfiles identifican un grupo de dispositivos por la funcionalidad que
proporcionan (ya sean electrodomésticos, teléfonos móviles, etc.) y el tipo de
aplicaciones que se ejecutarán en ellos.
Las librerías de la interfaz gráfica son un componente muy importante en
la definición de un perfil. Se pueden encontrar grandes diferencias entre las
interfaces, desde el menú textual de los teléfonos móviles hasta los táctiles de
los PDAs.
El perfil establece unas APIs que definen las características de un dispositivo, mientras que la configuración hace lo propio con una familia de ellos.
Esto hace que a la hora de construir una aplicación se cuente tanto con las
APIs del perfil como de la configuración.
Anteriormente se mencionó que para una configuración determinada se
usaba una Máquina Virtual Java específica. Teníamos que con la configuración CDC se utilizaba la CVM y que con la configuración CLDC se utilizaba
la KVM. Con los perfiles ocurre lo mismo. Existen unos perfiles que se construirán sobre la configuración CDC y otros que se construirán sobre la CLDC.
110
CAPÍTULO 5. JAVA 2 MICRO EDITION
Figura 5.4: Entorno de Ejecución de J2ME.
Para la configuración CDC se encuentran los siguientes perfiles:
• Fundation Profile.
• Personal Profile.
• RMI Profile.
Y para la configuración CLDC se encuentran los siguientes:
• PDA Profile.
• Mobile Information Device Profile (MIDP).
En la figura 5.4 de la página 110 se puede ver cómo quedaría el esquema
del entorno de ejecución al completo.
A continuación se describirá con más detenimiento cada uno de estos perfiles:
5.2. COMPONENTES DE J2ME
111
Foundation Profile: Este perfil define una serie de APIs sobre la CDC
orientadas a dispositivos que carecen de interfaz gráfica como, por ejemplo,
decodificadores de televisión digital [19].
Este perfil incluye gran parte de los paquetes de la J2SE, pero excluye
totalmente los paquetes que conforman la interfaz gráfica de usuario (GUI )
de J2SE, concretamente los paquetes “java.awt” Abstract Windows Toolkit
(AWT ) y “java.swing”.
Los paquetes que forman parte del Foundation Profile se muestran en la
tabla 5.3 de la página. 111.
Paq. del Fundation Profile
java.lang
java.util
java.net
java.io
java.text
java.segurity
Descripción
Soporte del lenguaje Java
Añade soporte completo para
zip y otras funcionalidades
Incluye sockets TCP/IP
y conexiones HTTP
Clases Reader y Writer de J2SE
Incluye soporte para internacionalización
Incluye códigos y certificados
Tabla 5.3: Librerías del Foundation Profile.
Personal Profile: Es un subconjunto de la plataforma J2SE versión 1.3,
proporciona un completo soporte gráfico AWT .
El objetivo es el de dotar a la configuración CDC de una interfaz gráfica
completa, con capacidades web y soporte de applets Java.
Este perfil requiere una implementación del perfil Foundation Profile.
La tabla 5.4 de la página 112 muestra los paquete que conforman el perfil.
RMI Profile: Este perfil requiere una implementación del Foundation
Profile. El perfil RMI soporta un subconjunto de las APIs J2SE v1.3 RMI.
Algunas características de estas APIs se han eliminado del perfil RMI debido
a las limitaciones de cómputo y memoria de los dispositivos.
Las siguientes propiedades se han eliminado del J2SE RMI v1.3 :
112
CAPÍTULO 5. JAVA 2 MICRO EDITION
Paq. del Personal
Profile
java.applet
java.awt
java.awt.datatransfer
java.awt.event
java.awt.font
java.awt.im
java.awt.im.spi
java.awt.image
java.beans
javax.microedition.xlet
Descripción
Clases necesarias para crear applets
Clases para crear GUIs con AWT
Clases e interfaces para transmitir
datos entre aplicaciones
Clases e interfaces para manejar
eventos AWT
Clases e interfaces para la
manipulación de fuentes
Clases e interfaces para definir
métodos editores de entrada
Interfaces que añ aden el desarrollo de métodos
editores de entrada para cualquier entorno
de ejecución Java
Clases para crear y modificar imágenes
Clases que soportan JavaBeans
Interfaces que usa el Personal Profile
para la comunicación
Tabla 5.4: Librerías del Personal Profile.
5.2. COMPONENTES DE J2ME
113
• Java.rmi.server.disableHTTP.
• Java.rmi.activation.port.
• Java.rmi.loader.packagePrefix.
• Java.rmi.registry.packagePrefix.
• Java.rmi.server.packagePrefix
PDA Profile: Está construido sobre CLDC. Pretende abarcar PDAs de
gama baja, tipo Palm, con una pantalla y algún tipo de puntero (ratón o lápiz)
y una resolución de al menos 20000 pixeles.
Mobile Information Device Profile (MIDP): Este perfil está construido sobre la configuración CLDC. MIDP fue el primer perfil definido para
esta plataforma.
Este perfil está orientado para dispositivos con las siguientes características:
• Reducida capacidad computacional y de memoria.
• Conectividad limitada (en torno a 9600 bps).
• Capacidad gráfica muy reducida (mínimo un display de 96x54 pixels).
• Entrada de datos alfanumérica reducida.
• 128 Kb de memoria no volátil para componentes MIDP.
• 8 Kb de memoria no volátil para datos persistentes de aplicaciones.
• 32 Kb de memoria volátil en tiempo de ejecución para la pila Java.
Los tipos de dispositivos que se adaptan a estas características son: teléfonos móviles, buscapersonas (pagers) o PDAs de gama baja con conectividad.
El perfil MIDP especifica las APIs relacionadas con:
• La aplicación (semántica y control de la aplicación MIDP).
• Interfaz de usuario.
114
CAPÍTULO 5. JAVA 2 MICRO EDITION
• Almacenamiento persistente.
• Trabajo en red.
• Temporizadores.
Las aplicaciones realizadas utilizando MIDP reciben el nombre de MIDlets
(por simpatía con APPlets). Se puede decir que un MIDlet es una aplicación
Java realizada con el perfil MIDP sobre la configuración CLDC.
En la tabla 5.5 de la página 114 se pueden apreciar cuáles son los paquetes
que están incluidos en el perfil MIDP.
Paq. del MIDP
javax.microedition.lcdui
javax.microedition.rms
javax.microedition.midlet
javax.microedition.io
java.io
java.lang
java.util
Descripción
Clases e interfaces para GUIs
Soporte para el almacenamiento
persistente del dispositivo
Clases de definición de la aplicación
Clases e interfaces de conexión genérica
Clases e interfaces de E/S básica
Clases e interfaces de la máquina virtual
Clases e interfaces de utilidades estándar
Tabla 5.5: Librerías del MIDP Profile.
5.3
Requerimientos Funcionales Para Detectar una
Aplicación J2ME
Los dispositivos deben proporcionar mecanismos mediante los cuales se puedan encontrar los MIDlets que se desean descargar. En algunos casos, se
pueden encontrar los MIDlets a través de un navegador WAP o a través de
una aplicación residente escrita específicamente para identificar MIDlets.
Otros mecanismos como Bluetooth, cable serie, etc, pueden ser soportados
por el dispositivo y a partir de estas conexiones se pueden instalar aplicaciones
(MIDlets).
5.4. LOS MIDLETS
115
El programa encargado de manejar la descarga y ciclo de vida de los MIDlets en el dispositivo se llama Gestor de Aplicaciones o AMS (Application
Management Software).
Un dispositivo que posea la especificación MIDP debe ser capaz de:
• Localizar archivos JAD vinculados a un MIDlet en la red.
• Descargar el MIDlet y el archivo JAD al dispositivo desde un servidor
usando el protocolo HTTP 1.1 u otro que posea su funcionalidad.
• Enviar el nombre de usuario y contraseña cuando se produzca una respuesta HTTP por parte del servidor 401 (Unauthorized) o 407 (Proxy
Authentication Required).
• Instalar el MIDlet en el dispositivo.
• Ejecutar MIDlets.
• Permitir al usuario borrar MIDlets instalados.
5.4
Los MIDlets
Los MIDlets son aplicaciones creadas usando la especificación MIDP. Están
diseñados para ser ejecutados en dispositivos con poca capacidad gráfica, de
cómputo y de memoria.
Las clases de un MIDLet, son almacenadas en bytecodes Java, dentro de
un fichero .class. Estas clases deben ser verificadas antes de su “puesta en
marcha”, para garantizar que no realizan ninguna operación no permitida.
Esta preverificación, se debe hacer debido a las limitaciones de la máquina
virtual usada en estos dispositivos [19].
Para mantener a la máquina virtual lo más sencilla y pequeña posible, se
elimina esta verificación, y se realiza antes de la entrada en producción.
La preverificación se realiza después de la compilación, y el resultado es
una nueva clase, lista para ser puesta en producción.
Los MIDLets son empaquetados en ficheros “.jar”.
116
CAPÍTULO 5. JAVA 2 MICRO EDITION
Existen 2 ficheros que contienen información extra dentro del “.jar” para
la puesta en marcha de la aplicación, el fichero “manifiesto”, con extensión
“.mf ” y un fichero “descriptor”, con extensión “.jad”.
Un fichero “.jar” típico, por tanto, se compondrá de:
• Clases del MIDLet.
• Clases de soporte.
• Recursos (imágenes, sonidos, etc.).
• Manifiesto (fichero “.mf”).
• Descriptor (fichero “.jad”).
5.4.1
El Gestor de Aplicaciones
El gestor de aplicaciones o AMS (Application Management System) es el software encargado de gestionar los MIDlets. Este software reside en el dispositivo
y es el que permite ejecutar, pausar o destruir aplicaciones J2ME.
El AMS realiza dos grandes funciones:
• Por un lado gestiona el ciclo de vida de los MIDlets.
• Por otro, es el encargado de controlar los estados por los que pasa el
MIDlet mientras está en ejecución.
5.4.2
Ciclo de Vida de un Midlet
Como puede ilustrarse en la figura 5.5 de la página 117 el ciclo de vida de
un MIDlet pasa por cinco fases: Descubrimiento o localización; instalación;
ejecución; actualización y borrado.
El AMS es el encargado de gestionar cada una de estas fases de la siguiente
manera:
1. Localización: Esta fase es la etapa previa a la instalación del MIDlet y
es donde se selecciona a través del gestor de aplicaciones la aplicación
5.4. LOS MIDLETS
117
Figura 5.5: Ciclo de Vida de un MIDlet.
a descargar. Por tanto, el gestor de aplicaciones tiene que proporcionar
los mecanismos necesarios para realizar la elección del MIDlet a descargar. El AMS puede ser capaz de realizar la descarga de aplicaciones
de diferentes maneras, dependiendo de las capacidades del dispositivo.
Por ejemplo, esta descarga se debe poder realizar mediante un cable
conectado a un ordenador o mediante una conexión inalámbrica.
2. Instalación: En esta fase el gestor de aplicaciones controla todo el proceso de instalación del MIDlet informando al usuario tanto de la evolución
de la instalación como de si existiese algún problema durante ésta.
3. Ejecución: Mediante el gestor de aplicaciones se va a poder iniciar la
ejecución de los MIDlets. En esta fase, el AMS tiene la función de gestionar los estados del MIDlet en función de los eventos que se produzcan
durante esta ejecución.
4. Actualización: El AMS tiene que tener la capacidad de detectar si el MIDlet a instalar es una actualización de alguno ya existente, en cuyo caso
deberá informar de la situación y permitir la actualización del MIDlet.
5. Borrado: Una vez instalado el MIDlet en el dispositivo, este permanece
almacenado en la memoria persistente todo el tiempo hasta que el usuario
decida borrarlo.
118
CAPÍTULO 5. JAVA 2 MICRO EDITION
Figura 5.6: Estados de un MIDlet.
El AMS es el encargado de eliminar el MIDlet pidiendo una confirmación
del proceso antes de continuar.
5.4.3
Estados de un MIDlet
Además de gestionar el ciclo de vida de los MIDlets, el AMS es el encargado de
controlar los estados del MIDlet durante su ejecución. Durante ésta el MIDlet
es cargado en la memoria del dispositivo y es aquí donde puede transitar entre
3 estados diferentes: activo, en pausa y destruido como puede apreciarse en la
figura 5.6 de la página 118.
Como se puede ver en la figura 5.6 de la página 118, un MIDlet puede
cambiar de estado mediante una llamada a los métodos MIDlet.startApp(),
MIDlet.pauseApp() o MIDlet.destroyApp(). El gestor de aplicaciones cambia
el estado de los MIDlets haciendo una llamada a cualquiera de los métodos
anteriores.
Un MIDlet también puede cambiar de estado por sí mismo.
5.4. LOS MIDLETS
5.4.4
119
El paquete javax.microedition.midlet
El paquete javax.microedition.midlet define las aplicaciones MIDP y su comportamiento con respecto al entorno de ejecución.
En la tabla 5.6 de la página 119 se puede apreciar cuáles son las clases que
están incluidas en este paquete.
Clases
MIDlet
MIDletstateChangeException
Descripción
Aplicación MIDP
Indica que el cambio de estado ha fallado
Tabla 5.6: Clases del Paquete javax.microedition.midlet.
5.4.5
La Clase MIDlet
Como se ha mencionado con anterioridad, un MIDlet es una aplicación realizada usando el perfil MIDP.
La aplicación desarrollada debe extender o heredar de esta clase para que
el gestor de aplicaciones o AMS pueda gestionar sus estados y tener acceso a
sus propiedades.
Los métodos de los que dispone esta clase son los siguientes:
• protected MIDlet()
Constructor de clase sin argumentos. Si la llamada a este constructor falla,
se lanzaría la excepción SecurityException.
• public final int checkPermission(String permiso)
Con este método se consigue un número que determina el permiso especificado. Este permiso está descrito en el atributo MIDlet-Permission del archivo
JAD.
Los valores que puede arrojar este método son:
120
CAPÍTULO 5. JAVA 2 MICRO EDITION
— 0 si el permiso es denegado.
— 1 si el permiso es permitido.
— -1 si el estado es desconocido.
• protected abstract void destroyApp(boolean incondicional) throws MIDletstateChangeException
Indica la terminación del MIDlet y su paso al estado de “Destruido”. En
el estado de “Destruido” el MIDlet debe liberar todos los recursos y salvar
cualquier dato en el almacenamiento persistente que deba ser guardado. Este
método puede ser llamado desde los estados “Pausa” o “Activo”.
• public final String getAppProperty(String key)
Este método proporciona al MIDlet un mecanismo que le permite recuperar
el valor de las propiedades desde el AMS. Las propiedades se consiguen por
medio de los archivos manifest y JAD. El nombre de la propiedad a recuperar
debe ir indicado en el parámetro key.
• public final void notifyDestroyed()
Con este método se notifica al AMS que el MIDlet no quiere estar “Activo”
y que ha entrado en el estado de “Pausa”. Este método sólo debe ser invocado
cuando el MIDlet esté en el estado “Activo”.
Si la aplicación es pausada por sí misma, es necesario llamar al método
MIDlet.resumeRequest() para volver al estado “Activo”.
• protected abstract void pauseApp()
Indica al MIDlet que entre en el estado de “Pausa”. Este método sólo debe
ser llamado cuándo el MIDlet esté en estado “Activo”.
• public final boolean platformRequest(String url)
5.4. LOS MIDLETS
121
Establece una conexión entre el MIDlet y la dirección URL. Dependiendo
del contenido de la URL, el dispositivo ejecutará una determinada aplicación
que sea capaz de leer el contenido y dejar al usuario que interactúe con él.
• protected abstract void startApp() throws MIDletstateChangeException
Este método indica al MIDlet que ha entrado en el estado “Activo”. Este método sólo puede ser invocado cuándo el MIDlet está en el estado de
“Pausa”. En el caso de que el MIDlet no pueda pasar al estado “Activo” en
este momento pero sí pueda hacerlo en un momento posterior, se lanzaría la
excepción MIDletstateChangeException.
Los métodos anteriormente mencionados se utilizan para la comunicación
entre el MIDlet y el AMS. Por un lado se tiene que los métodos startApp(),
pauseApp() y destroyApp() los utiliza el AMS para comunicarse con el MIDlet,
mientras que los métodos resumeRequest(), notifyPaused() y notifyDestroyed()
los utiliza el MIDlet para comunicarse con el AMS.
5.4.6
Estructura de los MIDlets
Es posible decir que los MIDlets, al igual que los applets carecen de la función
main().
Aunque si existiese dicha función, el gestor de aplicaciones la ignoraría por
completo. Un MIDlet tampoco puede realizar una llamada a System.exit().
Una llamada a este método lanzaría la excepción SecurityException.
Los MIDlets tienen la siguiente estructura:
import javax.microedition.midlet.*;
public class MiMidlet extends MIDlet{
public MiMidlet() {
/* Éste es el constructor de clase. Aquí se deben
* inicializar las variables.
*/
}
public startApp(){
122
CAPÍTULO 5. JAVA 2 MICRO EDITION
/* Aquí se puede incluir el código que el
* MIDlet debe ejecutar cuándo se active.
*/
}
public pauseApp(){
/* Aquí se puede incluir el código que el
* MIDlet debe ejecutar cuándo entre en el estado de pausa
* es opcional
*/
}
public destroyApp(){
/* Aquí se puede incluir el código que el
* MIDlet debe ejecutar cuándo sea destruido. Normalmente
* aquí se liberaran los recursos ocupados por el
* MIDlet como memoria, etc.
* es opcional
*/
}
}// fin de la clase MiMidlet
Un pequeño ejemplo de una aplicación simple se puede apreciar a continuación.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HolaMundo extends MIDlet{
private Display pantalla;
private Form formulario = null;
public HolaMundo(){
pantalla = Display.getDisplay(this);
formulario = new Form(“Hola Mundo”);
5.5. INTERFACES GRÁFICAS DE USUARIO
123
}
public void startApp(){
pantalla.setCurrent(formulario);
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional){
pantalla = null;
formulario = null;
notifyDestroyed();
}
}
Estos métodos son los que obligatoriamente tienen que poseer todos los
MIDlets ya que, como se ha visto, la clase que se ha creado tiene que heredar de
la clase MIDlet y ésta posee tres métodos abstractos: startApp(), pauseApp()
y destroyApp() que han de ser implementados por cualquier MIDlet.
5.5
Interfaces Gráficas de Usuario
Teniendo en cuenta la diversidad de aplicaciones que se pueden realizar para
los dispositivos MID y los elementos que proporcionan tanto la configuración
CLDC como el perfil MIDP se pueden clasificar a los elementos en dos grandes
grupos:
• Por un lado existen los elementos que corresponden a la interfaz de
usuario de alto nivel. Esta interfaz usa componentes tales como botones, cajas de texto, formularios, etc. La finalidad de usar estas APIs de
alto nivel es su portabilidad. Al utilizar esta interfaz de usuario se pierde
el control del aspecto de las aplicaciones desarrolladas, ya que la estética
depende exclusivamente del dispositivo donde se ejecute. La ventaja de
la utilización de esta interfaz de usuario de alto nivel es la gran portabilidad que se consigue. Generalmente esta interfaz es utilizada para la
creación de aplicaciones de negocios.
124
CAPÍTULO 5. JAVA 2 MICRO EDITION
Figura 5.7: Jerarquía de Clases.
• Por otro lado existen los elementos que forman parte de la interfaz de
usuario de bajo nivel. Al utilizar las APIs de bajo nivel se puede tener
un control total de todo lo que está dibujado en la pantalla, además
se pueden manejar eventos de bajo nivel, tales como pulsaciones de las
teclas. Esta interfaz es más adecuada para el desarrollo de juegos. El
paquete javax.microedition.lcdui definido en el perfil MIDP incluye las
clases necesarias para crear interfaces de usuario, tanto de alto nivel
como de bajo nivel. En la figura 5.7 de la página 124 se puede apreciar
la organización de estas clases.
5.5.1
La Clase Display
La clase Display representa el manejador de la pantalla y los dispositivos de
entrada. Todo MIDlet debe poseer por lo menos un objeto Display. En este
objeto Display se puede incluir tantos objetos Displayable como se desee. La
clase Display puede obtener información sobre las características de la pantalla
del dispositivo donde se ejecute el MIDlet.
En la tabla 5.7 de la pág. 125 se puede ver los métodos incluidos en esta
clase.
5.5. INTERFACES GRÁFICAS DE USUARIO
Métodos
void callSerially
(Runnable r)
boolean flashBacklight
(int duracion)
int getBestImageHeight
(int imagen)
int getBestImageWidth
(int imagen)
int getBorderStyle
(bolean luminosidad)
int getColor
(int color)
Displayable getCurrent()
static Display getDisplay
(MIDlet m)
boolean isColor()
int numAlphaLevels()
int numColors()
void setCurrent
(Alert a, Displayable d)
void setCurrent
(Displayable d)
void setCurrent
(Item item)
boolean vibrate
(int duracion)
Descripción
Retrasa la ejecución del método run()
del objeto r
Provoca un efecto de flash
en la pantalla
Devuelve el mejor alto
de imagen
Devuelve el mejor ancho
de imagen
Devuelve el estilo de
borde actual
Devuelve un color basado en el
parámetro pasado
Devuelve la pantalla actual
Devuelve una referencia a la pantalla
del MIDlet m
Devuelve true o false si la pantalla
es de color o b/n
Devuelve el número de niveles
alpha soportados
Devuelve el número de colores
Establece la pantalla d
despues de la alerta a
Establece la pantalla actual
Establece en la pantalla
al item
Realiza la operación de
vibración del dispositivo
Tabla 5.7: Métodos de la Clase Display.
125
126
CAPÍTULO 5. JAVA 2 MICRO EDITION
5.5.2
La Clase Displayable
La clase Displayable representa a las pantallas de la aplicación.
Como se mencionó anteriormente, cada objeto Display puede contener tantos objetos displayables como se desee.
Mediante los métodos getCurrent y setCurrent se controlan las pantallas
para que sean visibles y accesibles en cada momento.
La clase abstracta Displayable incluye los métodos encargados de manejar
los eventos de pantalla y añadir o eliminar comandos.
Estos métodos aparecen en la tabla 5.8 de la pág. 126.
Métodos
void addCommand
(Command cmd)
int getHeight()
Ticker getTicker()
String getTitle()
int getWidth()
bolean isShown()
void removeCommand
(Command cmd)
void setCommandListener
(CommandListener l)
protected void sizeChanged
(int w, int h)
void setTicker(Ticker ticker)
void setTitle(String title)
Descripción
añade el Command cmd
Devuelve el alto de la pantalla
Devuelve el Ticker asignado a la pantalla
Devuelve el título de la pantalla
Devuelve el ancho de la pantalla
Devuelve true si la pantalla está activa
Elimina el Commando cmd
de la pantalla
Establece un Listener para la
captura de eventos
El AMS llama a este método
cuándo el área disponible
para el objeto Displayable es modificada
Establece un Ticker a la pantalla
Establece un título a la pantalla
Tabla 5.8: Métodos de la Clase Displayable.
5.5.3
Las Clases Command y CommandListener
Un objeto de la clase Command mantiene información sobre un evento.
5.5. INTERFACES GRÁFICAS DE USUARIO
127
Por establecer una analogía se puede pensar a un objeto Command como
un botón de Windows.
Se implementan en los MIDlets para poder detectar y ejecutar una acción
simple.
Existen tres parámetros que hay que definir al constuir un Command:
• Etiqueta: La etiqueta es la cadena de texto que aparecerá en la pantalla
del dispositivo que identificará al Command.
• Tipo: La declaración del tipo sirve para que el dispositivo identifique
el Command y le dé una apariencia específica acorde con el resto de
aplicaciones existentes en el dispositivo.
• Prioridades: Esto puede servirle al AMS para establecer un orden de
aparición de los Command en pantalla. A mayor número, menor prioridad.
Los tipos que se pueden asignar aparecen en la tabla 5.9 de la página 127.
Tipo
BACK
CANCEL
EXIT
HELP
ITEM
OK
SCREEN
STOP
Descripción
Petición para volver a la pantalla anterior
Petición para cancelar la acción en curso
Petición para salir de la aplicación
Petición para mostrar información de ayuda
Petición para introducir el comando en
un Item en la pantalla
Aceptación de una acción por parte del usuario
Para comandos de propósito más general
Petición para parar una operación
un Listener para la captura de eventos
Tabla 5.9: Tipos de Commands.
Ejemplo de un Command con la etiqueta “Atras”:
new Command(“Atras”,Command.BACK,1);
La tabla 5.10 de la pág. 128 muestra los métodos de la clase Command.
128
CAPÍTULO 5. JAVA 2 MICRO EDITION
Método
public int
getCommandType()
public String getLabel()
public String getLongLabel()
public int getPriority()
Devuelve el tipo del Command
Petición para volver a la
pantalla anterior
Devuelva la etiqueta del Command
Devuelve la etiqueta larga del Command
Devuelve la prioridad del Command
Tabla 5.10: Métodos de la Clase Command.
No solo basta con crear objetos Command, para poder controlar algún
evento de la aplicación. Otra tarea pendiente es implementar la interfaz
CommandListener, la cual define un método abstracto llamado CommandAction(Command d, Displayable d), donde debe ser implentado dicho método,
ya que una interfaz sólo define métodos abstractos, es tarea de la clase que
implementa dicha interfaz tener que implementar los métodos definidos.
A través de la implementación del método CommandAction se podrán
manejar los eventos que lanza el Command c que se encuentran en el objeto
Displayable d.
5.5.4
Interfaz de Usuario de Alto Nivel
Para comenzar se verá la clase Screen que es la superclase de todas las clases
que conforman la interfaz de usuario de alto nivel:
public abstract class Screen extends Displayable
En la especificación MIDP 1.0 esta clase contenía cuatro métodos que le
permitían definir y obtener el título y el ticker: setTitle(String s), getTitle(),
setTicker(Ticket ticker) y getTicker(). El ticker es una cadena de texto que
se desplaza por la pantalla de derecha a izquierda. En la especificación MIDP
2.0, que es la más reciente, estos cuatro métodos han sido incluidos en la clase
Displayable.
5.5. INTERFACES GRÁFICAS DE USUARIO
129
La Clase Alert
El objeto Alert representa una pantalla de aviso. Normalmente se usa cuando
se quiere avisar al usuario de una situación especial como, por ejemplo, un
error.
Para crear un Alert se dispone de 2 constructores de acuerdo a su apariencia:
• Alert(String titulo).
• Alert(String titulo, String textoalerta, Image imagen, AlertType tipo).
Existen dos tipos de alertas:
1. Modal : Este tipo de alerta permanece un tiempo indeterminado en la
pantalla hasta que el usuario la cancela. Se obtiene llamando al método
Alert. setTimeOut (Alert. FOREVER).
2. No modal : Este tipo de alerta permanecerá por un tiempo definido por el
usuario y luego desaparecerá. Para ello se indica el tiempo en el método
setTimeOut(tiempo), el tiempo expresado en milisegundos.
También se puede elegir el tipo de alerta que se va a mostrar. Cada tipo
de alerta tiene asociado un sonido. Los tipos que se pueden definir aparecen
en la tabla 5.11 de la página 129.
Método
ALARM
CONFIRMATION
ERROR
INFO
WARNING
Devuelve el tipo del Command
Aviso de una Petición previa
Indica la aceptació de una acció
Indica que ha ocurrido un error
Indica algún tipo de información
Indica que puede ocurrir algún problema
Tabla 5.11: Tipos de Alerta.
130
CAPÍTULO 5. JAVA 2 MICRO EDITION
La Clase List
La clase List hereda de la clase Screen, pero presenta una funcionalidad más
amplia que la clase Alert. La clase List proporciona una pantalla que contiene
una lista de elementos sobre los que el usuario puede seleccionar. Esta clase
implementa la interfaz Choice, que define constantes que describen tres tipos
básicos de listas de opciones:
• EXCLUSIVE: Una lista que permite seleccionar un solo elemento a la
vez.
• IMPLICIT: Un lista en la que la selección de un elemento provoca un
evento (se adapta para la creación de menús).
• MÚLTIPLE: Una lista que permite seleccionar uno o más elementos a
la vez.
Existen dos constructores que permiten construir listas: el primero de ellos
crea una lista vacía y el segundo proporciona una lista con un conjunto inicial
de opciones y de imágenes asociadas:
• List(String titulo, int listType).
• List(String titulo, int listType, String[] elementos, Image[] imagenes).
En la siguiente tabla 5.12 de la página 131 se puede observar los distintos
métodos de la clase List.
La Clase TextBox
La clase TextBox implementa un componente de edición de texto, que ocupa
toda la pantalla.
El constructor de la clase es:
TextBox(String title, String text, int maxSize, int constraints)
El parámetro title es un texto que aparecerá en la parte superior de la
pantalla, mientras que el parámetro text es usado para inicializar el texto que
contendrá el TextBox.
5.5. INTERFACES GRÁFICAS DE USUARIO
Métodos
int append(String texto,
Image imagen)
void delete(int posición)
void deleteAll()
void insert(int pos,
String texto, Image im)
int getFitPolicy()
Font getFont(int pos)
Image getImage(int pos)
int getSelectedFlags
(bolean[] array)
int getSelectedIndex()
String getString(int pos)
boolean isSelected(int pos)
void removeCommand
(Command cmd)
void set(int pos,
String texto, Image im)
void setFitPolicy(int modo)
void setFont
(int pos, Font fuente)
void setSelectCommand
(Command cmd)
int setSelectedFlags
(bolean[] array)
int setSelectedIndex(int pos,
boolean selec)
int size()
131
Descripción
Añade un elemento
al final de la lista
Elimina el elemento de la
posición especificada
Elimina todas las entradas de la lista
Inserta un elemento en la
posición especificada
Devuelve el modo en el que se muestran
las entradas de la lista por pantalla
Devuelve la fuente del elemento pos
Obtiene la imagen de una
posicióndeterminada
Almacena el estado de selección
en un array
Obtiene el ´(i)ndice del
elemento seleccionado
Obtiene el texto del elemento
indicado por pos
Determina si est´(a) seleccionado
el elemento
Elimina el comando cmd
Reemplaza el elemento de la
posición pos
Establece el modo de posicionar las
entradas de la lista por pantalla
Establece la fuente de la
entrada indicada en pos
Selecciona el Command a usar
Reemplaza el estado de selección
por el de array
Reemplaza el estado de la selección
Obtiene el número de elementos
Tabla 5.12: Métodos de la Clase List.
132
CAPÍTULO 5. JAVA 2 MICRO EDITION
El parámetro maxSize especifica el número máximo de caracteres de texto
que pueden ser introducidos en el TextBox.
Por último el parámetro constraints describe las limitaciones a aplicar
sobre el texto.
Estas limitaciones son especificadas según las constantes definidas en la
clase TextField:
• ANY: No hay limitaciones en el texto.
• EMAILADDR: Sólo se puede introducir una dirección de correo electrónico.
• NUMERIC: Sólo se puede introducir un valor numérico.
• PASSWORD: El texto es protegido para que no sea visible.
• PHONENUMBER: Sólo se puede introducir un número de teléfono.
• URL: Sólo se puede introducir una URL.
Un ejemplo de uso sería:
TextBox box = new TextBox(“NOTAS”, “Nota:” , 256, TextField.ANY).
La Clase Form
Un formulario (clase Form) es un componente que actúa como contenedor de
un número indeterminado de objetos. Todos los objetos que puede contener
un formulario derivan de la clase Item.
El número de objetos que se pueden insertar en un formulario es variable pero, teniendo en cuenta el tamaño de las pantallas de los dispositivos
MID, se recomienda que el número sea pequeño para evitar así el scroll que se
produciría si se insertan demasiados objetos en un formulario.
Un mismo Item no puede estar en más de un formulario a la vez. Si,
por ejemplo, se desea usar una misma imagen en más de un formulario, se
debe borrar esa imagen de un formulario antes de insertarla en el que se va a
mostrar por pantalla.
5.5. INTERFACES GRÁFICAS DE USUARIO
133
Si no se cumple esta regla, se lanzaría la excepción IllegalStateException.
La tabla 5.13 de la página 133 muestra los métodos de la clase Form.
Métodos
int append(Image imagen)
int append(Item item)
int append(String texto)
void delete(int num)
void deleteAll()
Item get(int num)
int getHeight()
int getWidth()
void insert(int num,
Item item)
void set(int num,
Item item)
boolean isSelected(int pos)
void setItemStateListener
(ItemStateListener listener
int size()
Descripción
Añade una imagen al formulario
Añade un item al formulario
Añade un String al formulario
Elimina el Item que ocupa
la posición num
Elimina todos los Items del formulario
Devuelve el Item que se encuentra
en la posici´(o)n num
Devuelve la altura del área
disponible para los Items
Devuelve la anchura del área disponible
para los Items
Inserta un Item justo antes del
que ocupa la posición num
Reemplaza el Item que ocupa la
posici´(o)n num
Determina si est seleccionado el elemento
Establece un listener
eventos capturar
Devuelve el número de Items
del formulario
Tabla 5.13: Métodos de la Clase Form.
Manejo de Eventos
El manejo de eventos en un formulario es muy similar al manejo de eventos
de los Command vistos anteriormente. Nada más que para un formulario se
tiene que implementar la interfaz ItemStateListener que contiene un método
abstracto llamado itemStateChanged(Item item).
Cuando se realiza algún tipo de acción en el algún ítem del formulario se
134
CAPÍTULO 5. JAVA 2 MICRO EDITION
ejecuta el código asociado del método itemStateChanged(Item item).
Un ejemplo de su utilización se puede observar a continuación:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class ManejoItems extends MIDlet implements ItemStateListener, CommandListener{
Display pantalla;
Form formulario;
TextField txt;
Command salir;
public ManejoItems(){
pantalla = Display.getDisplay(this);
formulario = new Form(“”);
txt = new TextField(“Introduce datos”,“”,70,TextField.ANY);
salir = new Command(“Salir”,Command.EXIT,1);
formulario.append(txt);
formulario.addCommand(salir);
formulario.setItemStateListener(this);
formulario.setCommandListener(this);
public void startApp() {
pantalla.setCurrent(formulario);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d){
if (i == txt){
System.out.println(“Evento detectado en el TextBox”);
}
}
}
5.5. INTERFACES GRÁFICAS DE USUARIO
135
La Clase StringItem
La clase StringItem es la clase más simple que deriva de Item. Es una cadena
no modificable de texto, es decir, una cadena de texto con la que el usuario
no puede interactuar de ninguna manera.
Para construir un StringItem se hace uso de cualquiera de sus dos constructores:
• StringItem(String etiqueta, String texto).
• StringItem(String etiqueta, String texto, int apariencia).
Los parámetros:
• etiqueta: Es la etiqueta del ítem.
• texto: Es el texto que contiene el ítem.
• apariencia: Es la apariencia del texto: Item.PLAIN, Item.HYPERLINK,
Item.BUTTON.
Los métodos que posee la clase StringItem aparecen en la tabla 5.14 de la
página 135
Métodos
int getAppearanceMode()
Font getFont()
String getText()
void setFont(Font fuente)
void setText(String texto)
Descripción
devuelve la apariencia del texto
devuelve la Fuente del texto
devuelve el texto del StringItem
Establece la Fuente del texto
Establece el texto del StringItem
Tabla 5.14: Métodos de la Clase StringItem.
La Clase ImageItem
La clase ImageItem brinda la posibilidad de incluir imágenes en un formulario.
136
CAPÍTULO 5. JAVA 2 MICRO EDITION
Al igual que la clase StringItem, el usuario no podrá interactuar con la
imagen.
Para crear un objeto ImageItem se pueden usar uno de sus dos constructores:
• ImageItem(String etiqueta, Image imagen, int layout, String textoalt).
• ImageItem(String etiqueta, Image imagen, int layout, String textoalt, int
apariencia).
El parámetro textoalt especifica una cadena de texto alternativa a la imagen
en caso de que ésta exceda la capacidad de la pantalla. Por su parte, el
parámetro layout indica la posición de la imagen en la pantalla. Los valores
que puede tomar son:
• LAYOUT_LEFT: Imagen posicionada a la izquierda.
• LAYOUT_RIGHT: Imagen posicionada a la derecha.
• LAYOUT_CENTER: Imagen centrada.
• LAYOUT_DEFAULT : Posición por defecto.
• LAYOUT_NEWLINE_AFTER: Imagen posicionada tras un salto de
línea.
• LAYOUT_NEWLINE_BEFORE: Imagen posicionada antes de un salto
de línea.
Los métodos de la clase ImageItem se pueden ver en la tabla 5.15 de la
página 137.
La Clase TextField
Un texfield es un campo de texto que puede ser insertado en un formulario y
en el cuál se puede editar texto. Tiene similitud con la clase TextBox. Sus
diferencias son:
5.6. RMS (RECORD MANAGEMENT SYSTEM)
Métodos
String getAltText()
Int getAppearanceMode()
Image getImage()
Int getLayout()
void setAltText(String textoalt)
void setImage(Image imagen)
void setLayout(int layout)
137
Descripción
devuelve la cadena de
texto alternativa
devuelve la apariencia
devuelve la imagen
devuelve el posicionado de la imagen
Establece un texto alternativo
Establece una nueva imagen
Establece un nuevo posicionado
en pantalla
Tabla 5.15: Métodos de la Clase ImageItem.
• Un texfield tiene que ser insertado en un formulario, a diferencia de un
textbox puede existir por sí mismo.
• TextField deriva de la clase Item, mientras que TextBox deriva directamente de Screen, y sus eventos se controlan a través de Commands. Por
esta razón, los eventos que produce un TextField se controlan a través
del método itemStateChanged(Item item), mientras que en un TextBox
se controlan en el método commandAction(Command c, Displayable d).
Sin embargo ambas clases (TextBox y TextField) comparten las mismas
restricciones de edición que se vieron anteriormente.
Para crear un TextField sólo hay que invocar al constructor con los siguientes parámetros:
TextField(String etiqueta, String texto, int capacidad, int restricciones).
Otros métodos de esta clase pueden verse en la tabla 5.16 de la página 138
5.6
RMS (Record Management System)
El sistema de gestión de registros (Record Management System, RMS ) se compone de una serie de clases e interfaces que proporcionan soporte a un sistema
simple de base de datos que es usado para almacenar información.
138
CAPÍTULO 5. JAVA 2 MICRO EDITION
Métodos
void delete(int desplazamiento,
int longitud)
int getCaretPosition()
Image getImage()
int getChars(char[] datos)
int getConstraints()
int getMaxSize()
String getString()
void insert(char[] datos,
int des, int long, int pos)
void insert(char[] datos,
int pos)
void setChars(char[] datos,
int des, int long)
void setConstraints
(int restricciones)
void setInitialInputMode
(String caracteres)
int setMaxSize(int capacidad)
void setString(String texto)
void setString(String texto)
int size()
Descripción
Borra caracteres del TextField
Devuelve la posici n del cursor en pantalla
devuelve la imagen
Copia el contenido del TextField en datos
Devuelve las restricciones de entrada
Devuelve el tamaño máximo del TextField.
Devuelve el contenido del TextField
Inserta un subrango de caracteres
de datos en el TextField
Inserta la cadena de caracteres datos
en una posición determinada
Reemplaza el contenido del TextField por
un subconjunto de caracteres de datos
Establece las restricciones
de entrada
Establece un tipo
de entrada inicial
Establece el tamaño máximo del TextField
Establece el contenido del TextField
Establece el contenido del TextField
Devuelve el número de caracteres
Tabla 5.16: Métodos de la Clase TextField.
5.6. RMS (RECORD MANAGEMENT SYSTEM)
139
Figura 5.8: Un MIDlet y el RMS.
El objetivo del RMS es almacenar datos de tal forma que estén disponibles
una vez que el MIDlet detenga su ejecución.
La unidad básica de almacenamiento es el registro (record) que será almacenado en un base de datos especial, denominada almacén de registros (record
store ).
Cuando un MIDlet usa un almacén de registros, primero debe crearlo y
luego añadir los registros. Cuando un registro es añadido a un almacén de
registros, se le asigna un identificador único (id) [19].
5.6.1
Modelo de Datos
Como ya se ha dicho, el RMS está implementado en una base de datos basada
en registros; ver figura 5.8 de la página 139.
Los MIDlets son los encargados de crear los Record Stores para poder comunicarse con ellos. Estos Record Stores quedan almacenados en el dispositivo
y pueden ser accedidos por cualquier MIDlet que pertenezca en la misma suite,
es decir que pertenezcan al mismo grupo, como se puede ver en la figura 5.9
de la página 140.
140
CAPÍTULO 5. JAVA 2 MICRO EDITION
Figura 5.9: Acceso a un RMS a Través de un MIDlet Suite.
5.6.2
Record Stores
Las propiedades de estos almacenes de registros son:
1. Cada Record Store está compuesto por cero o más registros.
2. El nombre puede tener un máximo de 32 caracteres.
3. Si una suite es borrada, todos los Record Store también se borran.
4. Un Midlet no perteneciente a la suite puede acceder al Record Store,
siempre que éste lo permita.
5. No pueden coexistir dos Record Stores con el mismo nombre dentro de
una MIDlet suite.
Entonces se puede decir que un Record Store es un almacén de registros,
donde éstos registros son la unidad básica de información.
Cada uno de estos registros está formado por dos unidades:
• Un número identificador de registro (Record ID) que es un valor entero
que realiza la función de clave primaria en la base de datos.
5.6. RMS (RECORD MANAGEMENT SYSTEM)
141
Figura 5.10: Esturctura de Un Record Store.
• Un array de bytes destinados a almacenar la información deseada.
En la figura 5.10 de la página 141 se ilustra la estructura de un Record
Store.
5.6.3
Creación de un Record Store
El API de MIDP incluye un paquete para el RMS , llamado javax.microedition.rms.
Este paquete incluye clases e interfaces que proporcionan un marco de trabajo
para los registros, los almacenes y otras características.
Básicamente se dispone de:
• Capacidad para añadir y borrar registros de un almacén.
• Capacidad para compartir almacenes de todos los MIDlets de una MIDlet suite.
La clase RecordStore no dispone de ningún constructor, pero posee el método estático:
• static RecordStore openRecordStore(String name, Boolean createIfNeccesary).
Este método permite la apertura de un Record Store existente o bien la
creación de un almacén si el parámetro createIfNeccesary tiene el valor true.
También existen otras dos alternativas de este método:
142
CAPÍTULO 5. JAVA 2 MICRO EDITION
• static RecordStore openRecordStore(String name, boolean createIfNeccesary,
int autorización, boolean writable).
• static RecordStore openRecordStore(String name, String vendorName, String
suiteName).
El primero de ellos utiliza los siguientes parámetros:
• autorización:
— AUTHMODE_PRIVATE : Sólo permite el acceso al Record Store
a la MIDlet suite que lo creó.
— AUTHMODE_ANY : Permite el acceso a cualquier MIDlet del dispositivo.
• writable: Este modo especifica si el Record Store puede ser modificado
por cualquier MIDlet que pueda acceder a él.
El segundo método se utiliza para abrir un Record Store que está asociado a
alguna MIDlet suite especificada por los parámetros vendorName y suiteName.
El acceso vendrá limitado por el tipo de autorización del Record Store
cuando fue creado.
Al finalizar con el uso de un determinado Record Store hay que cerrar la
comunicación con él. Para ello se utiliza el siguiente método:
• public void closeRecordStore() throws RecordStoreNotFoundException, RecordStoreException.
En la tabla 5.17 de la página 143 se pueden apreciar los métodos que
proporcionan operaciones con los Record Stores.
5.6.4
Manipulación de Registros
Una vez creado o abierta la comunicación con el Record Store, se puede leer,
escribir, modificar o borrar registros como se desee. Para ello, se usan los
métodos de la clase RecordStore que se ven en la tabla 5.18 de la página 144.
5.6. RMS (RECORD MANAGEMENT SYSTEM)
Métodos
String getName()
int getVersion()
long getLastModified()
int getNumRecords()
int getSize()
int getSizeAvailable()
String[] listRecordStores()
void deleteRecordStore
(String name)
RecordEnumeration enumerateRecords(RecordFilter
filter, RecordComparator
comparator, boolean
actualizado)
void addRecordListener
(RecordListener listener)
void removeRecordListener
(RecordListener listener)
143
Descripción
Devuelve el nombre del Record Store
Devuelve la versi n del Record Store
Devuelve la marca temporal
Devuelve el número de registros
Devuelve el número de bytes
ocupado por el Record Store
Devuelve el tama˜(n)o disponible
para añadir registros
Devuelve una lista con los
nombres de los Record Stores
Elimina del dispositivo al Record
Store especificado por el
parámetro name
devuelve un objeto
RecordEnumeration
Añade un listener para
detectar cambios en el Record Store
Elimina un listener
Tabla 5.17: Métodos Generales de la Clase RecordStore.
144
CAPÍTULO 5. JAVA 2 MICRO EDITION
Métodos
int addRecord(byte[] datos,
int offset, int numBytes)
void deleteRecord(int id)
Int getNextRecordId()
byte[] getRecord(int id)
int getRecord(int id,
byte[] buffer,int offset)
int getRecordSize(int id)
void setRecord(int id,byte[]
datonuevo, int offset,
int tamaño)
Descripción
Añade un registro
al Record Store
Borra el registro id del Record Store
Devuelve el siguiente id del registro
que se vaya a insertar
Devuelve el registro con identificador id
Devuelve el registro con identificador
id en buffer a partir de offset
Devuelve el tama˜(n)o del registro id
Sustituye el registro id
con el valor de datonuevo
Tabla 5.18: Métodos Para Manejo de Registros.
A continuación se mostrará un ejemplo que utiliza un Record Store de
jugadores, donde se pueden ingresar nuevos jugadores y su puntaje obtenido.
package rms;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
public class Rms extends MIDlet implements CommandListener{
//Atributos
protected Display d;
protected Form form;
protected TextField textField;
protected TextField textField1;
protected TextField textField2;
5.6. RMS (RECORD MANAGEMENT SYSTEM)
145
protected Command ingresar, volver;
protected Alert alert;
private RecordStore rs;
protected List list;
protected Form form2;
protected String[] respuesta;
//Metodos
// metodo para iniciar la aplicacion, aqui se inicializa el objeto display y se
// muestra primeramente el menu como pantalla principal
protected void startApp() throws MIDletStateChangeException{
d = Display.getDisplay(this);
d.setCurrent(getList());
}
protected void pauseApp(){
}
protected void destroyApp(boolean flag) throws MIDletStateChangeException{
}
// este método arma el formulario y retorna para poder ser mostrado
protected Form getForm(){
if (form == null){
form = new Form(”Nuevo Puntaje”);
form.append(getTextField());
form.append(getTextField1());
form.append(getTextField2());
form.addCommand(getCommand());
form.addCommand(getBack());
form.setCommandListener(this);
}
return form;
146
CAPÍTULO 5. JAVA 2 MICRO EDITION
}
public TextField getTextField(){
if (textField == null){
textField = new TextField(”Nombre Jugador: ”, ””, 255, TextField.ANY);
}
return textField;
}
public TextField getTextField1(){
if (textField1 == null){
textField1 = new TextField(”Documento: ”, ””, 255, TextField.ANY);
}
return textField1;
}
public TextField getTextField2() {
if (textField2 == null) {
textField2 = new TextField(”Puntaje: ”, ””, 2, TextField.NUMERIC);
}
return textField2;
}
public Command getCommand(){
if (ingresar == null){
ingresar = new Command(”Cargar”,Command.OK,1);
}
return ingresar;
}
public Command getBack(){
if (volver == null){
5.6. RMS (RECORD MANAGEMENT SYSTEM)
147
volver = new Command(”Volver”,Command.BACK,1);
}
return volver;
}
public void commandAction(Command c, Displayable dis){
if (c==list.SELECT_COMMAND){
if (list.getSelectedIndex()==0){
d.setCurrent(getForm());
}else{
//se llama al formulario de lectura .. form2
System.out.println(”ok”);
abrirRecordStore();
leerRegistro();
cerrarRecordStore();
}
}
if (c==ingresar){
cargarDatos();
d.setCurrent(getAlert());
textField.setString(””);
textField1.setString(””);
textField2.setString(””);
}
if (c==volver){
d.setCurrent(getList());
}
}
public Alert getAlert() {
if (alert == null) {
alert = new Alert(”Información”, ”Los datos se estan cargando
espere...”, null, AlertType.INFO);
148
CAPÍTULO 5. JAVA 2 MICRO EDITION
alert.setTimeout(3000);
}
return alert;
}
private void cargarDatos(){
abrirRecordStore();
// luego se graban los datos y despues cierra la conexion
escribirRegistro(textField.getString(),
textField1.getString(),textField2.getString());
cerrarRecordStore();
}
private void abrirRecordStore(){
try{
rs = RecordStore.openRecordStore(”Jugadores”,true);
}catch(RecordStoreException e){
System.out.println(”Error al abrir el record store”);
}
}
private void cerrarRecordStore(){
try{
rs.closeRecordStore();
}catch(RecordStoreException e){
System.out.println(”error al cerrar el recordstore”);
}
}
private void escribirRegistro(String jugador, String doc, String pun){
byte[] registro;
ByteArrayOutputStream baos;
DataOutputStream dos;
try{
baos = new ByteArrayOutputStream();
5.6. RMS (RECORD MANAGEMENT SYSTEM)
149
dos = new DataOutputStream(baos);
dos.writeUTF(jugador);
dos.writeUTF(doc);
dos.writeUTF(pun);
dos.flush();
registro = baos.toByteArray();
rs.addRecord(registro,0,registro.length);
baos.close();
dos.close();
}catch(Exception e){
System.out.println(”error al insertar el registro”);
}
}
private void leerRegistro(){
ByteArrayInputStream bais;
DataInputStream dis;
byte[] registro = new byte[200];
try{
bais = new ByteArrayInputStream(registro);
dis = new DataInputStream(bais);
respuesta = new String[rs.getNumRecords()+ 1];
for (int i=1;i<=rs.getNumRecords();i++){
rs.getRecord(i,registro,0);
System.out.println(”Registro: ” + i);
respuesta[i]= ”Nombre: ” + dis.readUTF() + ” \nDocumento:
” +
dis.readUTF()+” \nPuntaje: ” + dis.readUTF();
bais.reset();
}
bais.close();
dis.close();
}catch(Exception e){
System.out.println(”error al leer registros”);
150
CAPÍTULO 5. JAVA 2 MICRO EDITION
}
registro = null;
mostrarDatos();
}
public List getList() {
if (list == null) {
list = new List(”Menu”, Choice.IMPLICIT);
list.append(”Cargar Datos”,null);
list.append(”Leer Datos”,null);
list.setCommandListener(this);
}
return list;
}
public Form getForm2() {
if (form2 == null) {
form2 = new Form(”Lectura de Datos”);
for (int i=1;i<respuesta.length;i++){
form2.append(respuesta[i]);
form2.addCommand(getBack());
form2.setCommandListener(this);
}
}
return form2;
}
public void mostrarDatos(){
d.setCurrent(getForm2());
}
}
En la figura 5.11 de la página 151 se pueden apreciar las pantallas del
ejemplo representadas por capturas de pantalla de una Palm T|X.
5.6. RMS (RECORD MANAGEMENT SYSTEM)
Figura 5.11: Ejemplo RMS.
151
152
CAPÍTULO 5. JAVA 2 MICRO EDITION
5.6.5
Operaciones con Record Stores
En el ejemplo anteriormente visto se ha usado un simple bucle para recorrer
los distintos registros del Record Store. El bucle es el siguiente:
for (int i=1;i<=rs.getNumRecords();i++){
longitud = rs.getRecordSize(i);
registro = rs.getRecord(i);
System.out.println(“Registro ”+i+“: ”+ new String(registro,0,longitud));
}
Sin embargo, la clase RecordStore proporciona la interfaz RecordEnumeration que facilita ésta tarea.
Utilizando esta interfaz se puede sustituir el bucle anterior por el siguiente
código:
RecordEnumeration re = rs.enumerateRecords(null,null,false);
while (re.hasNextElement()){
registro = re.nextRecord();
//se realizan las operaciones que se desean
...
}
Como se puede ver, la navegación por los registros usando RecordEnumeration es mucho más intuitiva y permite realizar acciones como mover hacia
delante o hacia atrás de una manera muy sencilla.
5.6.6
Búsqueda de Registros
Para realizar una búsqueda eficiente de registros, se debe implementar la interfaz RecordFilter, esta interfaz se encarga de devolver sólo los registros que
coincidan con el patrón de búsqueda especificado.
Para usar esta interfaz se debe implementar necesariamente el método:
5.7. COMUNICACIONES EN J2ME
153
public boolean matches(byte [] candidato), el cual se encarga de comparar el
registro candidato pasado como parámetro con el valor que se quiere buscar y
devolverá true en caso de que coincidan.
5.7
Comunicaciones en J2ME
A pesar de la cantidad de restricciones que soportan los dispositivos MID y
también restricciones propias del lenguaje Java, la gran ventaja que posee este
tipo de dispositivos es la posibilidad de estar siempre “conectados”.
La posibilidad de llevar un dispositivo con poco tamaño y que permita
comunicarse en cualquier momento y lugar abre un abanico de posibilidades
en el desarrollo de aplicaciones [19].
Las aplicaciones MIDP para trabajar en red utilizan las clases contenidas
en los paquetes javax.microedition.io y java.io de la siguiente manera:
• El primer paquete contiene numerosas clases que permitirán crear y
manejar diferentes conexiones de red. Estas conexiones podrán usar
diferentes formas de comunicación: HTTP, datagramas, sockets, etc.
• El paquete java.io se encargará de proporcionar las clases necesarias
para leer y escribir en estas conexiones.
En la figura 5.12 de la página 154 puede verse la jerarquía de clases que
reciben el nombre de Generic Framework Conection (GFC).
En la raíz del árbol se encuentra la interfaz Connection que representa la
conexión más genérica y abstracta que se puede crear. El resto de interfaces
que derivan de Connection representan los distintos tipos de conexiones que
se pueden crear.
5.7.1
Clases y Conexiones del Generic Connection Framework
Lo que proporciona el Generic Connection Framework es una sola clase Connector que esconde los detalles de la conexión.
Esta clase puede por sí misma crear cualquier tipo de conexión: Archivos,
Http, socket,etc.
154
CAPÍTULO 5. JAVA 2 MICRO EDITION
Figura 5.12: Jerarquía de Interfaces.
Clase Connector
Como se ha dicho anteriormente, el GCF proporciona la clase Connector que
esconde los detalles de la conexión. De esta forma se puede realizar cualquier tipo de conexión usando sólo esta clase y sin preocuparnos de cómo se
implementa el protocolo requerido.
La conexión se realiza de la siguiente manera:
Connector.open(“protocolo:dirección;parámetros”);
Algunos ejemplo de invocación son:
• Connector.open(“http://direccionquesea.es”);
• Connector.open(“file://autoexec.bat”);
• Connector.open(“socket://direccion:0000”);
La clase Connector se encarga de buscar la clase específica que implemente
el protocolo requerido. Si esta clase se encuentra, el método open() devuelve
5.7. COMUNICACIONES EN J2ME
155
un objeto que implementa la interfaz Connection.
En la tabla 5.19 de la página 155 se puede apreciar los métodos de la clase
Connector.
Métodos
public static Connection
open(String dir)
public static Connection
open(String dir,int modo
public static Connection open(
String dir, int mode,
boolean tespera)
public static DataInputStream
openDataInputStream(String dir)
public static DataOutputStream
openDataOutputStream(String dir)
public static InputStream
openInputStream(String dir)
public static OutputStream
openOutputStream(String dir)
Descripción
Crea y abre una conexión
Crea y abre una
conexión con permisos
Crea y abre una conexión
especificando el permiso
y tiempo de espera
Crea y abre una conexión de
entrada devolviendo para
ello un DataInputStream
Crea y abre una conexi´[on de
salida a través de
un DataOutputStream
Crea y abre una conexión de
entrada usando un InputStream
Crea y abre una conexión de
salida devolviendo para
ello un OutputStream
Tabla 5.19: Métodos de la Clase Connector.
Los tipos de permisos se pueden ver en la tabla 5.20 de la página 156.
La Interfaz Connection
La interfaz Connection se encuentra en lo más alto de la jerarquía de interfaces
del Generic Connection Framework, por lo que cualquier otra interfaz deriva
de ésta.
Una conexión de tipo Connection se crea después de que un objeto Connector invoque al método open(). Como se dijo anteriormente, esta interfaz
representa la conexión más genérica posible por lo que define un sólo método:
156
CAPÍTULO 5. JAVA 2 MICRO EDITION
Modo
READ
READ_WRITE
WRITE
Descripción
Permiso de solo lectura
Permiso de lectura y escritura
Permiso de solo escritura
Tabla 5.20: Tipos de Permisos.
public void close(), que realiza el cierre de la conexión.
Interfaz InputConnection
La interfaz InputConnection representa una conexión basada en streams de
entrada. Esta interfaz sólo posee dos métodos que devuelven objetos de tipo
InputStreams.
En el siguiente ejemplo se ilustra cómo podría utilizarse este tipo de conexión:
String url = “www.midireccion.com”;
InputConnection conexión = (InputConnection)Connector.open(url);
DataInputStream dis = conexion.openDataInputStream();
Interfaz OutputConnection
La interfaz OutputConnection representa una conexión basada en streams de
salida. Esta interfaz sólo posee dos métodos que devuelven objetos de tipo
OutputStreams.
La conexión a través de esta interfaz se realiza de la misma forma a la
interfaz
InputConnection.
5.7. COMUNICACIONES EN J2ME
157
Interfaz StreamConnection
Esta interfaz representa una conexión basada en streams tanto de entrada
como de salida. No añade ningún método nuevo, si no que hereda los métodos
de los interfaces que están por encima de él. Su única misión en la jerarquía
del GCF es representar un tipo de conexión cuyos datos pueden ser tratados
como streams de bytes y en la que es posible leer y escribir.
A continuación un ejemplo de cómo podría utilizarse esta conexión:
StreamConnection sc = (StreamConnection)Connector.open(url);
InputStream is = sc.openInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int c;
while((c = is.read()) != -1){
baos.write(c);
}
5.7.2
Comunicaciones HTTP
El protocolo HTTP es un protocolo de tipo petición / respuesta. El funcionamiento de este protocolo es el siguiente: El cliente realiza una petición al
servidor y espera a que éste le envíe una respuesta. Normalmente, esta comunicación es la que suele realizarse entre un navegador web (cliente) y un
servidor web (servidor). En este caso la comunicación se realiza a través de
un MIDlet(cliente) y un Servlet(servidor) que recibirá peticiones y devolverá
los resultados.
Una conexión HTTP pasa por tres estados que se pueden ver en la figura
5.13de la página 158.
Establecimiento de la Conexión
En este estado es donde se van a establecer los parámetros de la comunicación.
158
CAPÍTULO 5. JAVA 2 MICRO EDITION
Figura 5.13: Estados de una conexión HTTP.
El cliente prepara la petición que va a realizar al servidor, además de
negociar con él una serie de parámetros como el formato, idioma, etc.
Existen dos métodos que pueden ser invocados. En la tabla 5.21 de la
página 158 se pueden apreciar estos métodos.
Método
public void setRequestMethod(String tipo)
public void setRequestProperty
(String clave, String valor)
Descripción
Establece el tipo de petición
Establece una propiedad de la
petición
Tabla 5.21: Métodos en la Etapa de Establecimiento.
El primer método establece el tipo de petición que se va a realizar. Esta
petición puede ser de los tipos indicados en la tabla 5.22 de la página 159.
El segundo método permite negociar entre el cliente y el servidor detalles
de la petición como, por ejemplo, idioma, formato, etc. Estos campos forman
parte de la cabecera de la petición. En la tabla 5.23 de la página 159 se pueden
ver algunos de los más importantes.
Peticiones GET
5.7. COMUNICACIONES EN J2ME
Tipo
GET
Descripción
Petición de información en la que
los datos se envían como parte del URL
Petición de información en la que
los datos se envían aparte en un stream
Petición de metainformación
POST
HEAD
Tabla 5.22: Tipos de peticiones.
Campo
public void setRequestMethod (String tipo)
User-Agent
Content-Language
Content-Length)
Accept
Connection
Cache-Control
Expires
If-Modified-Since
Descripción
Establece el tipo de petición
Tipo de contenido que
devuelve el servidor
Pais e idioma que usa el cliente
Longitud de la petici n
Formatos que acepta el cliente
Indica al servidor si se quiere
cerrar la conexión después de
la petición o se quiere dejar abierta
Sirve para controlar el almacenamiento
de información
Tiempo m ximo para respuesta del servidor
Pregunta si el contenido solicitado se ha
modificado desde una fecha dada
Tabla 5.23: Campos de la Cabezera.
159
160
CAPÍTULO 5. JAVA 2 MICRO EDITION
A continuación se muestra un ejemplo en el que se prepara una conexión
mediante la interfaz HttpConnection usando una petición de tipo GET.
//se crea la conexión
String url = http://www.midireccion.com/local?opcion=1&us=usuario&pass=1234;
HttpConnection hc = (HttpConnection)Connector.open(url);
//se informa el tipo de conexión a realizar
hc.setRequestMethod(HttpConnection.GET);
// se establece algunos campos en la cabezera
hc.setRequestProperty(“User-Agent”,“Profile/MIDP-2.0
Configuration/CLDC-1.0”);
hc.setRequestProperty(“Content-Language”,“es-ES”);
Como puede apreciarse, la información sobre la petición va incluida en la
cabecera de la dirección URL. El cuerpo de la petición lo forma la cadena:
“opcion=1&us=usuario&pass=1234”.
Esta información va detrás del símbolo “?” situado al final de la dirección
URL. Cada parámetro de la petición va separado del siguiente por el símbolo
“&”.
Peticiones POST
En este tipo de conexión, el cuerpo de la petición se envía en un stream
después de iniciar la conexión. El siguiente ejemplo muestra cómo se realiza
el envío del cuerpo de la petición:
//se crea la conexión
String url = http://www.midireccion.com;
HttpConnection hc = (HttpConnection)Connector.open(url);
// se informa el tipo de petición a realizar
hc.setRequestMethod(HttpConnection.POST);
//se establece algunos campos de la cabezera
5.7. COMUNICACIONES EN J2ME
161
hc.setRequestProperty(“User-Agent”,“Profile/MIDP-2.0
Configuration/CLDC-1.0”);
hc.setRequestProperty(“Content-Language”,“es-ES”);
// se envia el cuerpo de la petición
OutputStream os = hc.openOutputStream();
os.write(opcion=1.getBytes());
os.write(&us=usuario.getBytes());
os.write(&pass=1234.getBytes());
os.flush();
Estado de la Conexión
En este estado se realiza el intercambio de información entre el cliente y el
servidor. En los ejemplos anteriores se ha visto la manera de enviar la petición
al servidor. Ahora se verá cómo se realiza la respuesta del servidor hacia el
cliente.
Respuesta del Servidor
Al igual que la petición del cliente posee distintas partes, la respuesta del
servidor se compone de:
• Línea de estado.
• Cabecera.
• Cuerpo de la respuesta.
Para conocer la respuesta del servidor, la interfaz HttpConnection proporciona diversos métodos que permiten conocer las distintas partes de ésta.
La interfaz HttpConnection dispone de treinta y cinco códigos de estado
diferentes.
Básicamente se pueden dividir en cinco clases de la siguiente manera:
162
CAPÍTULO 5. JAVA 2 MICRO EDITION
• 1xx: Código de información.
• 2xx: Código de éxito.
• 3xx: Código de redirección.
• 4xx: Código de error del cliente.
• 5xx: Código de error del servidor.
Por ejemplo, el código 400 corresponde a la constante HTTP_BAD_REQUEST.
En realidad la respuesta del servidor posee el siguiente formato:
HTTP/1.1 400 Bad Request.
HTTP/1.1 200 OK.
En la respuesta se incluye el protocolo usado, seguido del código de estado
y de un mensaje de respuesta. Este mensaje es devuelto al invocar el método
getResponseMessage().
Estado de Cierre
La conexión entra en este estado una vez que se termina la comunicación entre
el cliente y el servidor invocando al método close().
A continuacion se verá un ejemplo donde se produce una petición mediante
una petición POST, se describirán tanto el código del MIDlet como del Servlet
que recibe la petición y devuelve una respuesta.
Código del MIDlet
package hilo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
5.7. COMUNICACIONES EN J2ME
163
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class HiloConexionMidlet extends MIDlet implements CommandListener,
Runnable{
private Display mDisplay;
private Form mMainScreen;
public HiloConexionMidlet(){
mMainScreen = new Form(”HTTP MIDlet”);
mMainScreen.append(”Presione OK para crear una conexión HTTP.”);
mMainScreen.append(”\n”); // Introduce un salto de linea
mMainScreen.append(”Este programa simula un Login.”);
mMainScreen.append(”\n”);
mMainScreen.append(”Usuario: jb”);
mMainScreen.append(”\n”);
mMainScreen.append(”Clave: si”);
Command exitCommand = new Command(”Exit”, Command.EXIT, 0);
Command okCommand = new Command(”OK”, Command.OK, 0);
mMainScreen.addCommand(exitCommand);
mMainScreen.addCommand(okCommand);
mMainScreen.setCommandListener(this);
}
public void startApp() {
if (mDisplay == null){
mDisplay = Display.getDisplay(this);
164
CAPÍTULO 5. JAVA 2 MICRO EDITION
mDisplay.setCurrent(mMainScreen);
}
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional){
}
public void commandAction(Command c, Displayable s){
if(c.getCommandType() == Command.EXIT){
notifyDestroyed();
}else if (c.getCommandType() == Command.BACK){
mDisplay.setCurrent(mMainScreen);
}else if (c.getCommandType() == Command.OK){
// Aqui poner una pantalla de espera.
Form waitForm = new Form(”Conectando...”);
mDisplay.setCurrent(waitForm);
Thread t = new Thread(this);
t.start();
}
}
// metodo Runnable
public void run(){
5.7. COMUNICACIONES EN J2ME
165
String url = ”http://localhost:9080/hiloServer/ServerHilo”;
Form resultsForm = new Form(”Results”);
Command backCommand =
new Command(”Volver”, Command.BACK, 0);
resultsForm.addCommand(backCommand);
resultsForm.setCommandListener(this);
HttpConnection hc = null;
InputStream in = null;
OutputStream os = null;
try {
// aqui se realiza la conexión al servidor.
hc = (HttpConnection)Connector.open(url);
// se envia el cuerpo de la peticion
hc.setRequestMethod(HttpConnection.POST);
hc.setRequestProperty(”Content-Language”,”es-ES”);
hc.setRequestProperty(”User-Agent”,”ProfileMIDP-2.0 Configuration/CLDC1.0”);
hc.setRequestProperty(”Content-Type”,”application/octect-stream”);
os = hc.openOutputStream();
os.write(”usuario=jb”.getBytes());
os.write(”&clave=si”.getBytes());
os.flush();
// se toma la respuesta.
in = hc.openInputStream();
int length = 256;
byte[] raw = new byte[length];
int readLength = in.read(raw);
String message = new String(raw, 0, readLength);
resultsForm.append(message);
}catch (Exception e){
resultsForm.append(new StringItem(”Exception: ”, e.toString()));
}finally{
if (in != null) {
166
CAPÍTULO 5. JAVA 2 MICRO EDITION
try {
in.close();
}catch(IOException ioe){
System.out.println(ioe.getMessage());
}
}
if (hc != null){
try {
hc.close();
}catch(IOException ioe){
System.out.println(ioe.getMessage());
}
}
}
mDisplay.setCurrent(resultsForm);
}
}
Código del Servlet
package hilo;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
public class ServerHilo extends HttpServlet {
5.7. COMUNICACIONES EN J2ME
167
public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{
InputStream in = req.getInputStream();
int length = 256;
byte[] raw = new byte[length];
int readLength = in.read(raw);
String query= new String(raw, 0, readLength);
int index = query.indexOf(”&”);
String usuarioaux = query.substring(0,index);
index = usuarioaux.indexOf(”=”);
String userid = usuarioaux.substring(index+1,usuarioaux.length());
String claveaux = query.substring(index + 1, query.length());
index = claveaux.indexOf(”=”);
String password = claveaux.substring(index+1,claveaux.length());
resp.setContentType(”text/plain”);
PrintWriter out = resp.getWriter();
if(userid.equals(”jb”) && password.equals(”si”)) {
System.out.println(”Login correcto”);
out.println(”Login correcto.”);
} else {
System.out.println(”Login falló.”);
out.println(”Login falló.”);
}
}
168
CAPÍTULO 5. JAVA 2 MICRO EDITION
Figura 5.14: Ejemplo de comunicación HTTP de un MIDlet.
}
El ejemplo puede verse en la figura 5.14 de la página 168, estas son capturas
de pantalla de una Palm T|X real, donde se corrió el ejemplo citado.
Entre la pantalla 1 y la pantalla 2 del ejemplo, se realizó una conexión
wi-fi real, la cual se demuestra con imágenes; el proceso de conexión comienza
con una pantalla igual a la figura 5.15 de la página 169 en la cual puede verse
una solicitud de permiso para utilizar tiempo de aire, debido a que el tipo
de conexión que se realizará depende de las capacidades de conectividad del
dispositivo, este tiempo de aire puede ser cobrado o no al usuario, y ese es el
motivo por el cual se solicita permiso antes de realizar la conexión.
Luego de confirmar el permiso, puede verse en la pantalla de la Palm la
figura 5.16 de la página 170, que indica que se está iniciando el proceso de
conexión.
Luego se puede apreciar en la pantalla del dispositivo la figura 5.17 de
página 171 donde se informa que se está conectando a la red wi-fi, que en este
ejemplo se llama SteelNet.
En la figura 5.18 de la pániga 172, puede verse que se está gestionando
la obtención de una dirección IP, para que la Palm pueda comunicarse con el
servidor a través de la red wi-fi SteelNet.
5.7. COMUNICACIONES EN J2ME
Figura 5.15: Solicitud de permiso para utilizar tiempo de aire.
169
170
CAPÍTULO 5. JAVA 2 MICRO EDITION
Figura 5.16: Iniciando el proceso de conexión.
5.7. COMUNICACIONES EN J2ME
Figura 5.17: Conectandose a la red wi-fi.
171
172
CAPÍTULO 5. JAVA 2 MICRO EDITION
Figura 5.18: Obteniendo dirección IP.
5.7. COMUNICACIONES EN J2ME
173
Figura 5.19: Conectado a red wi-fi.
La ultima pantalla que se observa en el proceso de conexión es la que
confirma el estado de finalización del proceso, en este caso fue “Conectado”,
esto se puede ver en la figura 5.19 de la página 173.
Capítulo 6
Introducción al DB2
6.1
Bases de Datos
La necesidad de mejorar la manera de acceder y manejar los datos ha evolucionado con el transcurso del tiempo hasta llegar a la generación de los sistemas
de administración de bases de datos relacionales (RDBMS ).
En los últimos tiempos ha surgido una nueva base de datos llamada “Universal”, la cuál es capaz de almacenar y hacer búsquedas no solamente de
datos alfanuméricos sino también de imágenes, audio, video y otros objetos.
Esta ventaja de las bases de datos universales abre un gran número de
oportunidades que permiten mejorar tanto los servicios como las aplicaciones.
Se puede definir una Base de Datos como una serie de datos organizados y
relacionados entre sí, y un conjunto de programas que permitan a los usuarios
acceder y modificar esos datos [21].
Mientras que un archivo normalmente contiene datos acerca de un tipo de
entidad (ej.: personal, órdenes, clientes, ventas), una base de datos contiene
datos acerca de muchos tipos de entidades e información acerca de cómo las
entidades están lógicamente relacionadas entre sí.
Las bases son cualquier conjunto de datos organizados para su almacenamiento en la memoria de un ordenador, diseñado para facilitar su mantenimiento y acceso de una manera estándar. Los datos suelen aparecer en forma
175
176
CAPÍTULO 6. INTRODUCCIÓN AL DB2
de texto, números o gráficos.
Otra definición más completa de bases de datos afirma que es un “conjunto
exhaustivo, no redundante, de datos estructurados, organizados independientemente de su utilización y su implementación en máquina, accesibles en tiempo
real y compatibles con usuarios concurrentes con necesidad de información
diferente y no predecible en el tiempo, donde la información se encuentra almacenada en una memoria auxiliar que permite el acceso directo a un conjunto
de programas que manipulan esos datos” [22].
6.1.1
Objetivos de las Bases de Datos
Automatización de:
• El mantenimiento.
• Cualquier generación de información.
• Cualquier consulta sobre dicha información.
6.1.2
Ventajas de las Bases de Datos
Algunas ventajas de las bases de datos se describen a continuación:
Ahorro de Espacio: No hacen falta archivos de papeles que pudieran
ocupar mucho espacio.
Velocidad: Con la utilización de las bases de datos se pueden modificar,
consultar datos con una velocidad mucho mayor que realizándolo manualmente.
Ahorro de trabajo: ya que las máquinas son encargadas de manejar estas
bases y no se necesitan manejar archivos a mano, existe un ahorro de trabajo
humano.
Actualización: Se dispone en cualquier momento de información precisa
y al día.
Comodidad: Al tener la información en un mismo sitio, se ahorrará tiempo y trabajo.
6.2.
SISTEMA DE ADMINISTRACIÓN DE BASES DE DATOS
177
Disminución de la Redundancia: La duplicación de los datos implica
mayor trabajo en el mantenimiento. Gracias a que las bases de datos disminuyen la redundancia también se disminuye el trabajo.
Compartición de Datos: Se trata de datos actuales, ya que al estar
centralizados, se puede tener acceso a los datos actualizados en prácticamente
tiempo real.
Restricciones de Seguridad: Para mantener la seguridad acerca del
mantenimiento de los datos, los administradores de la Base de Datos, crean
un nivel de acceso, que permitirá o prohibirá a los usuarios hacer una u otra
acción sobre dicha base de datos.
Posibilidad de Mantener la Integridad: En una base de datos se debe
mantener una coherencia.
Esto se controlará mediante:
• Máscaras.
• Reglas de validación.
6.2
Sistema de Administración de Bases de Datos
Una base de datos es una colección de tablas y objetos relacionados entre sí y
organizados como un grupo. La estructura de una base de datos se muestra
en la figura 6.1 de la página 178.
Un DBMS es un conjunto de programas que maneja todos los accesos a
las bases de datos; ver figura 6.2 de la página 178.
Funciones de un DBMS:
— Definición de datos.
— Manipulación de datos.
— Seguridad e integridad de los datos.
— Recuperación y concurrencia de los datos.
— Diccionario de datos.
— Desempeño.
178
CAPÍTULO 6. INTRODUCCIÓN AL DB2
Figura 6.1: Estructura de Una Base de Datos
Figura 6.2: Sistema de Administración de Bases de Datos
6.3. ORGANIZACIÓN DE BASES DE DATOS
6.3
179
Organización de Bases de Datos
Los modelos más comunes de organización de Bases de Datos son:
• Jerárquico.
• En Red.
• Relacional.
• Orientado a Objetos.
6.3.1
Bases de Datos Jerárquicas
Estructura los campos en nodos en una estructura jerárquica. Los nodos son
puntos conectados entre sí formando una especie de árbol invertido. Cada
entrada tiene un nodo padre, que puede tener varios nodos hijos; esto suele
denominarse relación uno a muchos. Los nodos inferiores se subordinan a los
que se hallan a su nivel inmediato superior.
Un nodo que no tiene padre es llamado raíz, en tanto que los que no
tienen hijos son conocidos como hojas. Cuando se desea hallar un campo en
particular, se empieza por el tope, con un nodo padre, descendiendo por el
árbol en dirección a un nodo hijo.
Por Ejemplo: Un Sistema de Reservaciones de una Línea Aérea (ver
figura 6.3 de la página 180).
El Nodo Padre es la Ciudad de Salida en este caso es (Caracas), Nodos
Hijos representando las Ciudades Destino que tiene a su vez Nodos Hijos,
que son el Número de Vuelo. El Número de Vuelo tendrá también Nodos
Hijos, que son los Pasajeros.
Limitaciones de las Base de Datos Jerárquicas
• Al borrar un nodo padre, desaparecen también sus nodos subordinados.
• Sólo podrá añadirse un nodo hijo, si existe el nodo padre.
• Pero lo más significativo es la rigidez de su estructura: sólo un padre
por hijo y ausencia de relaciones entre los nodos hijos.
180
CAPÍTULO 6. INTRODUCCIÓN AL DB2
Figura 6.3: Modelo de Bases de Datos Jerárquica.
6.3.2
Bases de Datos en Red
Se trata también de una organización jerárquica de nodos, pero un nodo hijo
puede tener más de un solo nodo padre (relación muchos a muchos). Existen
los punteros, que son conexiones adicionales entre nodos padres y nodos hijos,
que permiten acceder a un nodo por vías distintas accediendo al mismo en
dirección descendente por las diversas ramas.
Representa una mejora al modelo jerárquico.
Por ejemplo:Los vendedores destacados para distribuir determinados productos en algunas ciudades pueden ilustrar este modelo (ver figura 6.4 de la
página 181).
Cada Producto puede ser distribuido por más de un Vendedor, así mismo
cada Vendedor puede encargarse de diferentes Ciudades.
6.3.3
Bases de Datos Relacional
Esta organización ofrece la mayor flexibilidad ya que los datos se almacenan en
Tablas diferentes, conformadas así mismo por Filas y Columnas. Una tabla
se denomina relación. En una Tabla las Filas contienen los Registros. Las
6.3. ORGANIZACIÓN DE BASES DE DATOS
181
Figura 6.4: Modelo de Bases de Datos en Red.
Columnas representan los Campos. Las Tablas relacionadas poseen un campo
común, el Campo Clave, mediante el cual la información almacenada en una
tabla puede enlazarse con la información almacenada en otra.
El acceso a los datos se realiza mediante consultas escritas en SQL (Structured Query Language). La Organización de Bases de Datos Relacional es la
más difundida en la actualidad debido a su sencillez para realizar operaciones
de adición, eliminación y modificación en contraste con la mayor rigidez de las
Organizaciones Jerárquicas y de Red.
Por ejemplo: En un pequeño negocio, se puede contar con una Tabla de
Clientes y Tabla de Pedidos (ver figura 6.5 de la página 182).
Las órdenes que pertenecen a un determinado cliente son identificadas
colocando el campo de identificación del cliente en la orden (campo clave de
la tabla de clientes), lo cual permite enlazar las dos tablas.
Limitaciones de las Bases de Datos Relacionales
• Estructuras muy simples.
• Poca riqueza semántica.
• No soporta tipos definidos por el ususarios (sólo Dominios).
182
CAPÍTULO 6. INTRODUCCIÓN AL DB2
Figura 6.5: Modelo de Bases de Datos Relacional.
• No soporta Recursividad.
• Falta de Procesamiento/Disparadores.
• No admite Herencia.
6.4
Introducción a DB2 UDB
DB2 UDB Universal Database es una Base de Datos Universal. Es completamente escalable, veloz y confiable.
Corre en modo nativo en casi todas las plataformas como ser: Windows
Vista, NT, Sun Solaris, HP-UX, AIX U, OS/2 entre otros.
DB2 es un software de base de datos relacional. Es completamente multimedia, disponible para su uso en la Web, muy bueno para satisfacer las
demandas de las grandes corporaciones y bastante flexible para servir a los
medianos y pequeños negocios.
DB2 UDB es un sistema manejador de base de datos relacional fuertemente
6.4. INTRODUCCIÓN A DB2 UDB
183
escalable. Es suficientemente flexible para atender estructuras e inestructuras
manejadoras de datos necesarias para usuarios simples de grandes empresas.
Es conveniente para una gama amplia de aplicaciones de los clientes, quienes
pueden desplegar una variedad de plataformas de hardware y software desde
dispositivos manuales a los sistemas multiprocesador paralelos masivos.
6.4.1
Características Generales del DB2 UDB
DB2 UDB es el producto principal de la estrategia de Data Management de
IBM.
DB2 UDB es un sistema para administración de Bases de Datos Relacionales (RDBMS). Es multiplataforma, especialmente diseñada para ambientes
distribuidos, permitiendo que los usuarios locales compartan información con
los recursos centrales. Es el sistema de gestión de datos que entrega una plataforma de base de datos flexible y rentable para construir un sistema robusto
para aplicaciones de gestión.
DB2 UDB libera los recursos con amplio apoyo al open source (fuente
abierta) y plataformas de desarrollo populares como J2EE y Microsoft .NET.
Integridad
El DB2 UDB incluye características de Integridad, asegurando la protección
de los datos aún en caso de que los sistemas sufran un colapso, y de Seguridad
permitiendo realizar respaldos en línea con distintos grados de granularidad,
sin que esto afecte la disponibilidad de acceso a los datos por parte de los
usuarios.
Múltiples Usos
Provee la capacidad de hacer frente a múltiples necesidades, desde Procesamiento Transaccional de Misión Crítica (OLTP), hasta análisis exhaustivo de
los datos para el soporte a la toma de decisiones (OLAP).
184
CAPÍTULO 6. INTRODUCCIÓN AL DB2
Escalabilidad
Sus características distintivas de Escalabilidad le permiten almacenar información en un amplio rango de equipos, desde un PC portátil hasta un complejo
ambiente de mainframes procesando en paralelo.
Web Enabled Para e-Business
Incluye tecnología basada en Web que permite generar aplicaciones en las
Intranets y responder a las oportunidades de negocios disponibles en Internet.
Facilidad de Instalación y Uso
La primera versión de DB2 para NT fue reconocida en el mercado como una
base de datos muy poderosa, pero difícil de instalar y usar.
En esta versión (DB2 UDB V. 8.1), IBM agregó muchas herramientas
gráficas para facilitar el uso para los usuarios, como también para los administradores y desarrolladores. Dicha versión incluye guías para operaciones como
instalación, configuración de performance, setup, etc. Además, se agregaron
herramientas para facilitar las tareas de integración con otras bases de datos,
tecnologías de networking y desarrollo de aplicaciones.
Universalidad
DB2 UDB es, además, la única base de datos realmente universal; es multiplataforma (16 plataformas - de las cuales 10 no son de IBM), brinda soporte
a un amplio rango de clientes, soporta el acceso de los datos desde Internet y
permite almacenar todo tipo de datos:
• Texto, Audio, Imágenes y Video (AIV Extender) (ver figura 6.6 de la
página 185) .
• Documentos XML ( XML Extender) (ver figura 6.7 de la página 185).
6.4. INTRODUCCIÓN A DB2 UDB
Figura 6.6: AIV Extender.
Figura 6.7: XML Extender.
185
186
CAPÍTULO 6. INTRODUCCIÓN AL DB2
Funciones Complementarias del DB2 UDB
Conectividad
Las herramientas de conectividad permiten acceder a los datos más allá de
donde ellos se encuentren. El slogan cualquier cliente, a cualquier servidor,
en cualquier red está completamente sustentado por la funcionalidad que sus
herramientas ofrecen.
DB2 permite acceder a los datos de DB2 en mainframe o AS/400, desde
Windows Vista, NT, Windows 95/98, OS/2 o cualquiera de los Unix soportados. Además, el producto Datajoiner posibilita acceder de forma única y
transparente a los datos residentes en Oracle, Sybase, Informix, Microsoft SQL
Server, IMS, VSAM y otros.
6.5
DB2 UDB Versión 8.1
La versión 8.1 ofrece un soporte más potente para Business Intelligence, Gestión de Datos y Soluciones e-business.
DB2 Universal Database Versión 8.1 contiene muchas características nuevas, que incluyen el Centro de desarrollo, funciones ampliadas de XML Extender, soporte de Linux para DB2 Warehouse Manager, integración de Spatial
Extender con herramientas de IBM Business Intelligence, un nuevo Centro de
duplicación, mejoras de enlace y rendimiento de DB2 Data Links Manager.
Nuevas herramientas de gestión y supervisión de bases de datos, soporte de 64
bits ampliado y nuevos asistentes de Instalación de DB2 y Centro de control
de DB2.
6.5.1
Centro de Desarrollo
En la versión 8.1, el Centro de desarrollo sustituye al Stored Procedure Builder
de anteriores versiones y proporciona un funcionamiento incrementado.
Mediante el Centro de desarrollo, el usuario puede desarrollar procedimientos almacenados y funciones definidas por el usuario como se muestra en la
figura 6.8 de la página 187. También es posible correlacionar tipos estructurados de los Enterprise JavaBeans. Los asistentes simplifican las tareas de
6.5. DB2 UDB VERSIÓN 8.1
187
Figura 6.8: Centro de Desarrollo.
desarrollo.
Las nuevas características incluyen:
• Soporte de varios proyectos y conexiones de base de datos.
• La Vista de servidor para examinar los objetos de desarrollo en el servidor.
• Depurador de SQL para depurar rutinas; incluye vistas para puntos de
interrupción, variables y pila de llamadas.
• Una interfaz mejorada para controlar el entorno de desarrollo.
• Asistentes para construir funciones definidas por el usuario para MQSeries, fuentes de datos OLE DB y documentos XML.
• Asistentes para exportar, importar y desplegar rutinas e información de
proyectos Productos y Paquetes Nuevos.
188
CAPÍTULO 6. INTRODUCCIÓN AL DB2
6.5.2
Mejoras en XML Extender
Se han añadido nuevas características a XML Extender : ahora, XML Extender
soporta servicios de Web con los servicios Web Object Runtime Framework
(WORF), conjunto de herramientas para implantar servicios de Web con DB2.
Asimismo, XML Extender soporta ahora MQSeries, de forma que es posible
enviar documentos XML a las colas de mensajes de MQSeries, y recuperarlos
de las mismas.
6.5.3
DB2 Warehouse Manager
Se han añadido nuevas características y mejoras a DB2 Warehouse Manager :
Con el soporte de carga paralela nativa para DB2 Universal Database Enterprise Server Edition, es posible cargar grandes volúmenes de datos con más
rapidez.
DB2 Warehouse Manager tiene capacidades ampliadas, por lo que se puede
incrementar y mejorar el rendimiento de las operaciones de depósito, manipular y localizar metadatos más deprisa, y ejecutar el agente de depósito,
programas y transformadores en Linux.
Los conectores para la Web y SAP se han mejorado en el paquete de DB2
Warehouse Manager.
6.5.4
Centro de Depósito de Datos de DB2
Se han añadido nuevas características al Centro de depósito de datos:
El soporte de servidor de depósito se amplía a AIX. El servidor de depósito y el iniciador de sesiones de depósito, que se ejecutan como servicios en
Windows, se ejecutan como daemons en AIX.
Es posible exportar e importar metadatos del lenguaje de código y exportar
estos objetos:
• Tablas, archivos y vistas de origen.
• Tablas y archivos de destino.
6.5. DB2 UDB VERSIÓN 8.1
189
El proceso en cascada (varios intervalos) permite gestionar varios pasos
definiendo y habilitando una planificación y un flujo de tareas para los procesos
que contienen los pasos.
Con el nuevo paso Select and Update de SQL, se puede actualizar una
tabla de destino del depósito de datos sin sustituir la tabla completa ni grabar
código adicional.
Ahora, la Guía de aprendizaje de Business Intelligence se compone de dos
guías de aprendizaje más cortas: Guía de aprendizaje de Business Intelligence:
Introducción al Centro de depósito de datos y Guía de aprendizaje de Business
Intelligence: Lecciones ampliadas sobre depósito de datos.
6.5.5
Asistentes de DB2
Asistente para la Configuración de DB2
La instalación de DB2 en plataformas Windows y UNIX resulta más fácil
mediante la utilización del Asistente para la configuración de DB2. Esta interfaz gráfica permite instalar productos DB2 directamente o crear archivos
de respuestas para permitir una instalación posterior. En los sistemas UNIX,
también se puede utilizar el Asistente para la configuración de DB2 para realizar funciones de gestión de instancias.
Asistentes del Centro de Control
En DB2 Versión 8.1, los asistentes que están disponibles en las Herramientas
de administración se han ampliado para abarcar un ámbito más amplio de
funciones, en comparación con las de que se disponía en versiones anteriores
de DB2. Por ejemplo, un asistente de DB2 Versión 8.1 brinda el conjunto
total de opciones disponibles para crear una tabla.
Como se puede observar en la figura 6.9 de la página 190 el asistente para
creación de tablas, que va guiando paso a paso al usuario a través de una
interfaz amigable, permitiendo crear campos de la tabla, definir una clave,
definir un índice y tambien restricciones a la tabla.
190
CAPÍTULO 6. INTRODUCCIÓN AL DB2
Figura 6.9: Asistente Para Crear Tabla.
6.5.6
Centro de Mandatos
El centro de mandatos permite realizar funciones sobre la base de datos como realizar consultas SQL (insert, delete, update, select), crear estructuras
de tablas, modificar índices, etc. Donde un usuario avanzado puede escribir
directamente la sentencia y ejecutarla; ver figura 6.10 de la página 191.
Para usuarios menos avanzados también se dispone de un asistente llamado “SQL ASSIST” que va ayudando al usuario para la realización de una
consulta.
6.5. DB2 UDB VERSIÓN 8.1
Figura 6.10: Centro de Mandatos.
191
Capítulo 7
WebSphere Studio
7.1
¿Qué es WebSphere?
• IBM WebSphere es una plataforma de IBM para el desarrollo y gestión
de sitios web y aplicaciones destinadas al comercio electrónico.
• WebSphere es una plataforma de Software para e-business.
• WebSphere posee una amplia gama de servidores y aplicaciones para
brindar cualquier tipo de capacidades de negocio y ayuda al desarrollo
de las aplicaciones.
• La Plataforma de Software WebSphere está compuesta por un conjunto
de herramientas de e-business integradas y basadas en estándares abiertos de mercado.
• WebSphere es ideal para todas las fases de un e-business, comenzando
desde pequeños sitios Web a mega sitios.
La plataforma de software WebSphere proporciona una completa gama de
habilidades que permiten a los clientes la entrega de altos niveles de servicio a
todos los visitantes del sitio en la web. Administra cargas pico en los servidores
web, mantiene la disponibilidad del sitio en la web, y reconoce contenido de
solicitudes de la web para QoS (calidad de servicio). También permite la
diferenciación de niveles de servicio con base en el tipo de cliente.
193
194
CAPÍTULO 7. WEBSPHERE STUDIO
7.2
Plataforma de Software
La creciente complejidad de los aplicativos de e-business crea muchos desafíos.
Los aplicativos deben ser escalables, fiables y se deben integrar completamente con los sistemas back-end para proteger las inversiones existentes. El
equipo de desarrollo debe poseer las más actualizadas habilidades de programación para acompañar el ciclo de vida del e-business.
Se necesita una plataforma completa, escalable y flexible que proporcione
soporte a la construcción y diseminación de aplicativos de e-business. Las
soluciones de software WebSphere ofrecen las herramientas necesarias para
alcanzar los objetivos de e-business.
Al proporcionar un banco de trabajo abierto que integre y simplifique
diferentes tareas, roles y herramientas, el software WebSphere ayuda a que el
equipo desarrolle, entregue y administre los aplicativos de e-business [18].
El ambiente de desarrollo del software WebSphere:
• Da soporte al desarrollo y cambios rápidos de nuevos aplicativos utilizando un paradigma de desarrollo basado en reglas.
• Proporciona código pre-construido, pre-testeado.
• Proporciona herramientas especializadas para páginas Web y desarrollo
de módulos migrables.
Adicionalmente, servicios basados en estándares Web permiten mezclar
y combinar componentes funcionales de diferentes orígenes de tal forma que
se puede proveer nuevos procesos y servicios al mercado de manera rápida y
eficiente.
La capacidad de un portal de negocios tiene importancia crítica para permitir que las personas interactúen y transaccionen de forma personalizada con
diversos recursos de negocios. Empieza dejando a la medida los ambientes
de usuarios para sus necesidades específicas, integrándolo entonces con otros
usuarios para permitir colaboración en tiempo real, y con los diversos ambientes de TI.
Todo esto permite que las personas trabajen en conjunto de forma más
productiva mientras actúan sobre la información que necesitan. La capacidad
7.2. PLATAFORMA DE SOFTWARE
195
del portal de negocios es proporcionada por la familia WebSphere Portal y la
familia WebSphere Commerce .
7.2.1
WebSphere for Commerce - Soluciones B2B
El e-commerce consiste en realizar negocios con sus clientes, proveedores y
contratistas comerciales sin dificultades en cuanto al tiempo, limitaciones organizacionales o fronteras geográficas.
Con el software With WebSphere Commerce, se establecen relaciones más
estrechas, más productivas con sus clientes y contratistas comerciales en todos
los puntos de contacto. Facilita que sus clientes y contratistas comerciales
hagan negocios hoy y que continúen mañana.
7.2.2
WebSphere for Commerce - Soluciones B2C
El software WebSphere Commerce le permite ir a la línea de las ventas online
a los consumidores.
Crea campañas de marketing dinámicas, fija como objetivo diferentes segmentos de mercado, elabora promociones de producto personalizadas, y mejora
el servicio a clientes.
Esta solución ayuda a crear rápidamente y mantener eficientemente un
sitio interactivo, de alto volumen.
WebSphere Commerce proporciona:
• Personalización del B2B para ayudar a administrar las relaciones de
negocio.
• Tecnología de ventas asistidas para conducir a los clientes y contratistas
a través de la agrupación de requisitos y del proceso de selección del
producto.
• Herramientas de cooperación online y de formación de equipo virtual
para mejorar la eficacia de contratistas comerciales, canal y clientes.
• Administración de pedidos anticipados resultando en capacidades de optimización de operaciones.
196
CAPÍTULO 7. WEBSPHERE STUDIO
• Capacidades avanzadas de inteligencia de negocios para decisiones fundamentales del e-business.
7.2.3
WebSphere for Commerce-Soluciones de Portal
La integración del WebSphere Commerce y WebSphere Portal permite que las
empresas se dirijan a múltiples sectores con necesidades de personalización positivas de soluciones de comercio tanto para las áreas B2B o B2C. Actualmente,
muchas empresas crean sitios separados para cada división, lo que demanda
mucho tiempo y cuesta caro.
El abordaje racionalizado proporciona rápido retorno de inversión al eliminar la necesidad de que la empresa mantenga múltiples sitios. Las empresas
también aumentan la eficiencia de interacciones con clientes y contratistas, lo
que mejora la retención del cliente.
Los productos IBM WebSphere Commerce y WebSphere Portal proporcionan un único punto de interacción con información dinámica y personalizada,
aplicativos, procesos y personas, que son esenciales para construir portales
exitosos para el B2B y B2C.
Con el portal habilitado para el comercio, se puede crear un ambiente
personalizado de comercio provechoso para ambos ambientes, B2B y B2C:
• Ambientes B2B: organizar eficientemente información online, servicios
y aplicativos para contratistas de negocio y proveedores a lo largo de
múltiples divisiones en un portal.
• Ambientes B2C o de ventas al por menor: obtener ventas cruzadas e
impulsar los beneficios, mediante la oferta de acceso a productos, información y servicios desde la Web y de dispositivos inalámbricos, así como
acceso consolidado a catálogos múltiples.
Con un portal de e-commerce integrado, se les puede ofrecer a los clientes, contratistas y proveedores acceso 24x7 a los aplicativos online - rápida y
fácilmente.
7.2. PLATAFORMA DE SOFTWARE
7.2.4
197
WebSphere for Commerce-Soluciones Digital Media
Empresas de medios con volúmenes crecientes de activos digitales -fotos, vídeo
clips, archivos de audio, ilustraciones e imágenes animadas, enfrentan nuevas
exigencias reguladoras y el desafío de colocar esos activos disponibles online. El software WebSphere permite administrar estos activos digitales más
eficazmente, alcanzando clientes en todos el mundo a través de la Web.
WebSphere Commerce para Medios Digitales permite almacenar, buscar,
ver, administrar, colaborar, comprar, vender y hacer download de activos digitales, alcanzando clientes en todo el mundo por la Web. Esta nueva oferta de
servicio de e-commerce combina el software WebSphere Commerce aprobado
por la industria con las capacidades del IBM Content Manager, reforzado por
la tecnología Java.
WebSphere Commerce para Medios Digitales permite enriquecer la experiencia del consumidor y la interfase de compra B2B, creando nuevas relaciones
con clientes al mismo tiempo en que fortalece las existentes y ayudando a generar y aumentar ganancias así como sus márgenes de beneficios.
WebSphere ofrece un amplio portafolio de soluciones clasificadas en tres
áreas críticas:
• Infraestructura y herramientas de Desarrollo (Foundation & Tools):
— Application server.
— WebSphere studio:
∗ IBM WebSphere Studio Site Developer.
∗ IBM WebSphere Studio Application Developer.
∗ IBM WebSphere Studio Application Developer Integration Edition.
∗ IBM WebSphere Studio Enterprise Developer.
∗ IBM WebSphere Studio Homepage Builder.
— Host Access.
• Alcance y experiencia con el usuario (Business Portals):
— WebSphere Portal.
— WebSphere Everyplace.
198
CAPÍTULO 7. WEBSPHERE STUDIO
— WebSphere Commerce.
• Integración de negocio (Business Integration):
— WebSphere Business Integrator.
— WebSphere MQ Integrator.
7.3
Productos WebSphere Studio
WebSphere Studio es una familia de productos de software propietario de IBM,
aunque el término se refiere de manera popular a uno de sus productos específicos: WebSphere Application Server (WAS).
Todos los productos del WebSphere Studio fueron construidos sobre el
Workbench de Eclipse como un sistema de plug-ins conforme al estándar APIs
del Workbench.
La familia del WebSphere Studio tiene actualmente los siguientes miembros
(ver figura 7.1 de la página 199):
• WebSphere Studio Site Developer Advanced .
• WebSphere Studio Application Developer .
• WebSphere Studio Application Developer Integration Edition .
• WebSphere Studio Enterprise Developer .
Cada producto de la familia WebSphere Studio presenta el mismo entorno
de desarrollo integrado (IDE) y una base común de herramientas, por ejemplo
para el desarrollo Java y Web (ver figura 7.2 de la página 199).
7.4
WebSphere Studio Application Developer
WebSphere Studio Application Developer es un producto que se ha desarrollado
basado en el Workbench (banco de trabajo) de Eclipse.
7.4.
WEBSPHERE STUDIO APPLICATION DEVELOPER
Figura 7.1: La familia del WebSphere Studio.
Figura 7.2: WebSphere Studio, entorno de desarrollo.
199
200
CAPÍTULO 7. WEBSPHERE STUDIO
Figura 7.3:
La plataforma del Workbench de Eclipse fue diseñada por IBM y lanzada
a la comunidad de open-source (código abierto).
Este Workbench se ha diseñado para proveer la máxima flexibilidad en el
desarrollo de las herramientas y las nuevas tecnologías que pueden emerger en
el futuro.
La familia del WebSphere Studio Application Developer se basa en un ambiente integrado de desarrollo (IDE), donde este permite desarrollar, probar,
eliminar errores y desplegar su usos. Donde también proporciona la ayuda
para cada fase del ciclo de vida del desarrollo.
Los líderes de la industria de software como: IBM, Borland, Merant, QNX
Software Systems, Rational Software, RedHat, SuSE, TogetherSoft y WebGain
formaron inicialmente la eclipse.org que actualmente administra los directores
del Eclipse open source project.
Eclipse es una plataforma abierta para la integración de herramientas.
Eclipse se ha diseñado a partir de la necesidad de Construir, Integrar los
desarrollos útiles del uso de las tecnologías.
El valor más importante que tiene esta plataforma es: el rápido desarrollo
7.4.
WEBSPHERE STUDIO APPLICATION DEVELOPER
201
Figura 7.4: Plataforma de Eclipse.
de herramienta siendo esta una de las características basadas en un modelo
plug-in (ver figura 7.4 de la página 201).
7.4.1
Ventajas de Utilizar a WebSphere Studio Application
Developer
La ventaja fundamental consiste en la integración de todos los entornos de
desarrollo Java Web en una única plataforma de desarrollo.
J2EE:
• Herramientas de importación/exportación, generación de código, edición
de deployment descriptors estandars, extensiones y bindings (mapeos)
específicos para WebSphere Application Server (WAS).
• Herramienta de mapeo EJB-RDB soportanto tanto top-down, como
bottom-up y meet-in-the-middle.
• Herramientas de edición gráfica de esquemas de bases de datos.
202
CAPÍTULO 7. WEBSPHERE STUDIO
• Herramientas para la creación, edición y validación de ficheros EAR.
• Editores para deployment descriptors (ejb-jar.xml y application.xml).
Desarrollo Java:
• Nuevo Editor Visual Java para GUIs (Swing y AWT).
• Nueva generación de JavaDoc.
• Soporte JDK 1.3.
• Capacidad de utilizar diferentes JREs.
• Compilación incremental automática.
• Posibilidad de ejecutar código incluso con errores.
• Protección contra crashs y auto-recovery.
• Error Reporting y corrección.
• Editor Java con asistente contextual.
• Herramientas de refactoring de código.
• Búsquedas inteligentes y herramientas para comparar código y “merge”.
• Scrapbook para evaluación rápida de código.
Web Services:
• Nuevo soporte UDDI Version 2.
• Soporte UDDI privado.
• Nuevo soporte de WSIL.
• Posibilidad de crear un web service a partir de un fichero ISD.
• Visualización de UDDI business entry para localización de web services
existentes.
7.4.
WEBSPHERE STUDIO APPLICATION DEVELOPER
203
• Creación de web services a partir de código existente (JavaBeans, RLSs,
DB2 XML Extender calls, procedimientos almacenados DB2 y queries
SQL).
• Crear wrappers SOAP y HTTP GET/POST de código existente.
• Generación de proxies desde el Web Services Client/Wizard para tratar
mensajes SOAP.
• Generación de una aplicación de ejemplo, a partir de la cual crear el
resto.
• Realizar el test de un web service local o remoto.
• Deployment de un web service sobre el entorno de test de tanto WebSphere Application Server como Tomcat.
• Publicar web services en un UDDI business registry.
• Nuevos menús pop-up para la creación y consumo de web services, además de los típicos wizards.
XML:
• Entorno totalmente visual.
• Editor de XML con posibilidades de validación de documentos.
• Editor de DTD con posibilidades de validación de documentos.
• Editor de XML schemas.
• Editor de XSL.
• Debugger de XSL y herramienta de transformación para aplicar XSL a
XML.
• Editor de mapping XML - XML.
• Wizard de creación de XML a partir de queries SQL.
• Editor de mapping RDB - XML.
Desarrollo web:
204
CAPÍTULO 7. WEBSPHERE STUDIO
• Nuevo soporte para XHTML y Struts.
• Nuevo entorno visual de construcción de aplicaciones basado en struts.
• Editor visual de HTML y JSPs.
• Edición y validación de JavaScript.
• Soporte de JSP Custom tags (taglibs) 1.2.
• Edición de imágenes y animaciones.
• Edición de CSS.
• Importación via HTTP/FTP.
• Exportación vía FTP a un servidor.
• Visualización de links, broken links, etc.
• Wizards para la creación de servlets.
• Wizards para la creación de proyectos J2EE.
• Wizards para la creación de aplicaciones web.
Testing y Deployment:
• Incrementa la productividad de forma muy importante.
• Entorno ligero de carga rápida.
• Permite pruebas unitarias locales.
• Permite debugger de código en el servidor a través del debugger integrado.
• Permite configurar diferentes aplicaciones web.
• TCP/IP monitoring server.
• Permite instalar los siguientes entornos, tanto locales como remotos:
(WebSphere Application Server AEs Version 4.0.3 and Version 5, WebSphere Application Server - Express Version 5, Apache Tomcat).
7.4.
WEBSPHERE STUDIO APPLICATION DEVELOPER
205
Tracing, Monitoring y Performance:
• Performance Analyzer muestra los tiempos de ejecución y ayuda a detectar memory leaks.
• Muestra información de los objetos existentes.
• Tiene capacidades de “Pattern extraction”.
• Es posible monitorizar varios procesos simultáneamente, incluso corriendo en diferentes máquinas.
• Codificación por colores de las clases.
• Presentación de los resultados en modo gráfico y estadístico.
• Soporte de profiling a nivel de objetos.
• Análisis de los logs de WebSphere Application Server e interacción con
la bases de datos de problemas.
• Edición de items en la base de datos de problemas.
Debugger:
• Muy similar al existente en VisualAge for Java.
• Permite realizar debug tanto a código local como a código residente en
el servidor.
7.4.2
Desarrollando Aplicaciones Java
Los lineamientos que se deben seguir para crear una aplicación Java en WebSphere Application Developer son los siguientes:
• Crear un proyecto Java.
• Crear paquetes dentro del proyecto.
• Crear clases.
206
CAPÍTULO 7. WEBSPHERE STUDIO
• Ejecutar el programa.
• Localizar errores.
Para crear un proyecto Java se debe seleccionar archivo → Nuevo → Proyecto, de desplegará el cuadro de diálogo de Nuevo Proyecto, se debe seleccionar Java y proyecto Java en el diálogo y hacer click en siguiente para iniciar el
asistente de creación de proyectos. Luego se debe indicar en la primer página
el nombre del proyecto y click en aceptar; (ver figura 7.5 de la página 206).
Figura 7.5: Asistente de Proyecto Java.
El proyecto es creado con las opciones que se hayan configurado anteriormente en las preferencias o con las que tiene por defecto. Estas preferencias
puede ser modificadas dirigiendose al menu Ventana → Preferencias y luego
Java → Proyecto Nuevo.
Se pueden agregar paquetes al proyecto para tener una estructura más
ordenada de la aplicación. Para ello se debe seleccionar en la vista de exploración de paquetes Nuevo → Paquete en el menú. En la ventana de diálogo
se tiene que indicar el nombre del paquete y hacer clic en finalizar; ver figura
7.6 de la página 207.
7.5. WEBSPHERE APPLICATION SERVER
207
Figura 7.6: Paquete Java.
Luego de haber finalizado el código y compilado los errores, se puede ejecutar el programa. Se tiene que seleccionar la opción ejecutar de la barra de
herramientas.
Si es la primera vez que se ejecuta ese código se abre el diálogo ejecutar
configuraciones. Como se puede ver en la figura 7.7 de la página 208 se puede
seleccionar el tipo de configuración para ejecutar el programa.
7.5
7.5.1
WebSphere Application Server
Introducción
El WebSphere Application Server representa una familia de software para servidores de aplicaciones. Permite a las empresas responder a los mercados
cambiantes sin migrar a tecnologías diferentes preservando las inversiones hechas en tecnología previamente disponible en la organización, soporta normas
abiertas vigentes en las organizaciones, proporciona soporte pleno a la plataforma abierta Java 2 y Java 2 Enterprise Edition (J2EE) y también provee
soporte para servicios bajo normas abiertas en la Web [23].
208
CAPÍTULO 7. WEBSPHERE STUDIO
Figura 7.7: Diálogo de Configuración de Ejecución.
WebSphere Application Server, es una plataforma de alto desempeño y extrema escalabilidad para diseminar aplicativos dinámicos de e-business, proporciona las funciones esenciales de e-business de manipulación de transacciones y ampliación de datos back-end del negocio y aplicativos para la Web.
La plataforma ayuda a construir aplicativos que ejecutan esas funciones
con seguridad sólida, fiabilidad y escalabilidad.
7.5.2
WebSphere Application Server Como Plataforma Para
el Comercio Electrónico
Brinda un soporte amplio para aplicaciones de comercio electrónico. Se caracteriza por su flexibilidad para adaptarse a cambios en los mercados y en los
objetivos comerciales.
Construyendo aplicaciones en esta robusta plataforma, se pueden integrar
diversos ambientes de las IT (Tecnología de Información), para aprovechar al
máximo las inversiones existentes.
Se pueden instalar aplicaciones comerciales existentes para su acceso desde
7.5. WEBSPHERE APPLICATION SERVER
209
Figura 7.8: WebSphere para e-bussines.
la Web y escalar estas aplicaciones para adecuarlas a las necesidades de los
cambios y de la demanda.
En la figura 7.8 de la página 209 se puede observar la plataforma del
Software de WebSphere para e-bussines.
7.5.3
Application Server - Advanced Edition
La Edición Avanzada es la oferta del principal servidor de aplicativo dirigido
a desarrolladores profesionales de tecnología Java que necesitan funcionalidad
de servicios J2EE y Web para aplicativos dinámicos de e-business.
Esta Edición del WebSphere Application Server, está disponible en tres
configuraciones:
• Edición Avanzada:
— Proporciona integración sólida a las bases de datos, middleware
orientado a mensajes, y sistemas preexistentes y aplicativos, en conjunto con soporte de agrupación. Esta configuración se ajusta a la
210
CAPÍTULO 7. WEBSPHERE STUDIO
mayoría de los escenarios de la empresa e interesa a los negocios que
necesitan construir aplicativos altamente transaccionales, administrables, disponibles y escalables que ofrecen seguridad distribuida
y administración remota.
• Edición Avanzada del Single Server :
— Proporciona el mismo modelo de programación esencial J2EE y
Web Services con administración simplificada. Esta configuración
interesa a departamentos, negocios de tamaño mediano y aplicativos piloto que necesitan un costo bajo, opción de ejecución rápida,
distribución de carga de trabajo o administración remota asociados
a administración de multi-servidor.
• Edición Avanzada del IBM WebSphere Application Server, para Linux
en zSeries:
— La Edición Avanzada del WebSphere Application Server, para Linux en zSeries continúa cumpliendo el compromiso de IBM en cuanto a mantener cobertura amplia para plataformas para el WebSphere Application Server.
— Este producto WebSphere tiene la combinación potente de un rico
conjunto de dispositivos y soporte a estándares abiertos del WebSphere Application Server y el ambiente operacional familiar del sistema operativo Linux.
— También contiene los recursos de administración, alta fiabilidad, y
la intensa velocidad de comunicación de datos internos del hardware
de la plataforma zSeries.
7.5.4
Application Server - Enterprise Edition
La Edición empresarial del IBM WebSphere Application Server, en conjunto
con IBM WebSphere Studio Application Developer Integration Edition, ofrece
una combinación potente de tiempo de ejecución y herramientas que permiten
integrar activos IT existentes, mejorar la productividad del desarrollador y
crear y mantener aplicativos de e-business flexibles.
Juntos, el IBM’s WebSphere Application Server Enterprise Edition y el
WebSphere Studio Application Developer Integration Edition permiten a los
desarrolladores la capacidad de:
7.5. WEBSPHERE APPLICATION SERVER
211
• Coreografiar visualmente y componer servicios de la Web y componentes
de aplicativo J2EE a través de una interfase simple drag-and-drop.
• Construir potentes adaptadores de aplicativo basados en J2EE Connector Architecture (JCA) para integrar sistemas back-end con servicios
Web y aplicativos J2EE.
• Obtener una infraestructura completa de servicios Web que impulse un
ambiente único, eficaz en cuanto a costo de tiempo de ejecución del
servidor del aplicativo administrativo y operacional.
• Evitar la repetición del desarrollo y diseminación de aplicativos debido a
condiciones cambiantes del mercado, separando las políticas del negocio
de la lógica de aplicativos esenciales.
• Crear una paleta de componentes de aplicativos que puede ser rápidamente montada para desarrollar nuevos aplicativos fácilmente publicada
como servicio Web.
7.5.5
Application Server - Standard Edition
La Edición Estándar para desarrolladores de la web y autores de contenido
incluye mejorías de facilidad de uso en toda su extensión, comprendiendo un
Quick Installation que elimina conjeturas en cuanto al Enhanced Java, impulsando el Software Development Kit del Java 2 V1.2.2 en todos los sistemas
operativos soportados.
7.5.6
Servidor HTTP
IBM WebSphere Application Server trabaja con un servidor HTTP para manejar las peticiones de servlets y otros contenidos dinámicos desde las aplicaciones Web.
El servidor HTTP y el servidor de aplicaciones se comunican utilizando
el plug-in HTTP de WebSphere para el servidor HTTP. El plug-in HTTP
utiliza un archivo de configuración XML de fácil lectura para determinar si la
petición la debe gestionar el servidor Web o el servidor de aplicaciones. Utiliza
el protocolo HTTP estándar para comunicarse con el servidor de aplicaciones.
212
7.5.7
CAPÍTULO 7. WEBSPHERE STUDIO
Servidor de Aplicaciones
El servidor de aplicaciones colabora con el servidor Web intercambiando peticiones de clientes y respuestas de aplicaciones. Puede definir varios servidores
de aplicaciones, cada uno de ellos ejecutándose en su propia Máquina Virtual
Java (JVM).
7.5.8
Contenedor de EJB
El contenedor de EJB proporciona los servicios de tiempo de ejecución necesarios para desplegar y manejar componentes EJB, conocidos como enterprise
beans. Es un proceso de servidor que maneja peticiones para beans de sesión
y beans de entidad.
Los enterprise beans (dentro de los módulos EJB) instalados en un servidor de aplicaciones no se comunican directamente con el servidor; en su lugar,
el contenedor de EJB ofrece una interfaz entre los enterprise beans y el servidor. Juntos, el contenedor y el servidor proporcionan el entorno de tiempo de
ejecución del bean.
El contenedor proporciona muchos servicios de bajo nivel, incluido el soporte de hebras y transacciones. Desde un punto de vista administrativo, el
contenedor gestiona el almacenamiento y la recuperación de datos para los
beans que contiene. Un solo contenedor puede gestionar más de un archivo
JAR de EJB.
7.5.9
Contenedor Web
Los servlets y los archivos JSP (Java Server Pages) son componentes del servidor que se utilizan para procesar peticiones de clientes HTTP como, por
ejemplo, navegadores Web. Se encargan de la presentación y el control de
la interacción del usuario con los datos de aplicación subyacentes y la lógica
empresarial.
El contenedor Web procesa servlets, archivos JSP y otros tipos de inclusiones de servidor. Los servlets anteriores a J2EE se ejecutarán en un motor
de servlets. Cada contenedor Web contiene automáticamente un único gestor
de sesiones.
7.5. WEBSPHERE APPLICATION SERVER
213
Cuando se manejan los servlets, el contenedor Web crea un objeto de
petición y un objeto de respuesta, e invoca el método de servicio de servlets.
El contenedor Web invoca el método destroy() del servlet cuando corresponda
y descarga el servlet, y después la JVM ejecuta la recolección de basura.
7.5.10
Contenedor de Clientes de Aplicaciones
Los clientes de aplicaciones son programas Java que se ejecutan normalmente
en un sistema de sobremesa con una interfaz gráfica de usuario (GUI). Tienen
acceso a toda la gama de componentes y servicios del servidor J2EE.
El contenedor de clientes de aplicaciones maneja programas de aplicaciones de Java que acceden a los beans enterprise, Java Database Connectivity
(JDBC) y las colas de mensajes de Java Message Service. El programa Cliente
de aplicaciones J2EE se ejecuta en las máquinas cliente.
Este programa sigue el mismo modelo de programación Java que otros
programas Java; no obstante, el cliente de aplicaciones J2EE depende del
tiempo de ejecución del cliente de aplicaciones para configurar su entorno de
ejecución, y utiliza el espacio de nombres JNDI (Java Naming and Directory
Interface) para acceder a los recursos.
7.5.11
Sistema Principal Virtual
Un sistema principal virtual es una configuración que permite que una única
máquina de sistema principal parezca varias máquinas de sistema principal.
Los recursos asociados con un sistema principal virtual no pueden compartir
datos con recursos asociados con otro sistema principal virtual, incluso si los
sistemas principales virtuales comparten la misma máquina física.
Los sistemas principales virtuales permiten al administrador asociar aplicaciones Web con un sistema principal particular configurado para la máquina
que ejecuta la aplicación.
7.5.12
Virtual Hosts (Hosts Virtuales)
Un host virtual es una configuración que permite a una sola máquina host
aparentar ser múltiples máquinas hosts. Permite que una sola máquina física
214
CAPÍTULO 7. WEBSPHERE STUDIO
configure y administre independientemente varias aplicaciones administradas.
No está asociado a un nodo particular (máquina). Es una configuración, diferente de un “objeto vivo”, indicando que puede crearse, pero no arrancarse o
detenerse.
Cada host virtual tiene un nombre lógico y una lista de uno o más seudónimos de DNS por los cuales es conocido. Un seudónimo de DNS es el nombre
TCP/IP del host y el número del puerto que use la petición del servlet, por
ejemplo su nombre Host:80.
El WebSphere Application Server proporciona un host virtual predefinido, denominado “el default_host”, con algunos seudónimos comunes, como
el IP de la máquina, nombre corto del host, y el nombre del host completo. El seudónimo comprende la primera parte del camino para el acceso a un recurso, como un servlet. Por ejemplo, localhost:80 en la petición
http://localhost:80/servlet/snoop.
Los hosts virtuales le permiten al administrador aislar y manejar independientemente los múltiples grupos de recursos en la misma máquina física.
7.6
Workplace Client Technology Micro Edition
Workplace Client Technology Micro Edition (WCTME) es una plataforma intergrada para la extensión de aplicaciones empresariales existentes hacia dispositivos clientes manejados por servidor como ser un computador de escritorio,
sistemas móviles, PDAs, y otros dispositivos móviles y pervasivos.
El paquete integrado combina las herramientas WebSphere Studio Device
Developer y Micro Environment Toolkit for WebSphere Studio, con los tiempos
de ejecución de WebSphere Everyplace Micro Environment, Service Management Framework (SMF), y WebSphere Everyplace Custom Environment, y
el middleware (DB2e, MQe, Web Services), para construir, testear y lanzar
software cliente manejado por servidor en dispositivos pervasivos.
En escencia WCTME es la plataforma base para la familia WCT que ofrece
IBM y provee una plataforma robusta que soporta dispositivos desde teléfonos
celulares, PDAs y otros dispositivos con teclado, móviles y hasta sistemas de
escritorio.
Independientemente de que si la computadora está siempre, ocasionalmen-
7.6. WCTME
215
te o rara vez conectada, el modelo WCTME permite extender las aplicaciones
y modelos de programación usando los estándares de la industria y sin tener
que volver a reescribir todo usando estos dispositivos.
La plataforma WCTME está construida como una combinación de una
plataforma cliente rica basada en el modelo de Eclipse (originalmente ideado
para herramientas, y motivado para ser una plataforma de aplicación más genérica) al igual que el modelo basado en navegador. Eclipse es una plataforma
para la construcción de herramientas de desarrollo de software potentes y ricas
aplicaciones de escritorio [24].
7.6.1
WebSphere Everyplace Micro Environment
WebSphere Everyplace Micro Environment es una implementación de IBM de
la especificación J2ME que cumple con la autorización y líneas guías funcionales definidas por Sun Microsystem para obtener “Java Powered Logos”.
7.6.2
WebSphere Everyplace Custom Environment
Similar a Websphere
Custom Environment
habilitar a clientes y
run times específica,
establecidos.
7.6.3
Everyplace Micro Enviroment, WebSphere Everyplace
provee un conjunto mayor de librerías y funciones para
asociados a crear versiones más a medida de la Java
sin necesariamente tener que cumplir con estándares
J9
La J9 es una implementación independiente de IBM de la Maquina Virtual
de Java. La combinación de la J9 junto con la configuración y los perfiles
conforman el ambiente de ejecución o run times.
Las configuraciones y perfiles son librerías de clases en Java.
7.6.4
WebSphere Studio Device Developer
WebSphere Studio Device Developer es un IDE de IBM para J2ME que extiende Eclipse para el desarrollo de aplicaciones Java o C/C++ que corren en
216
CAPÍTULO 7. WEBSPHERE STUDIO
dispositivos pervasivos, y forma el núcleo del WCTME.
7.6.5
Java 2 Micro Edition (J2ME)
J2ME es un plataforma Java para dispositivos embebidos.
Al igual que las plataformas Enterprise J2EE y escritorio J2SE, J2ME
es un conjunto de APIs Java estándar que entrega el poder y los beneficios
de la tecnología Java a medida para los dispositivos embebidos, incluyendo
interfaces de usuario flexibles, modelo de seguridad robusto, gran rango de
protocolos de red y soporte para aplicaciones conectadas y desconectadas a la
red.
7.7
WebSphere Studio Device Developer
Device developer es un IDE (Integraded Development Enviroment) para el
desarrollo, depuración y despliegue de aplicaciones que serán lanzadas en computadoras de mano y otros dispositivos pequeños [24].
Esto ayuda a los desarrolladores a crear aplicaciones que habilitan a los
dipositivos (teléfonos celulares, PDAs, y computadoras de mano) a formar
parte de una solución “e-businnes end-to-end”.
El entorno de desarrollo integrado también viene con una copia del WebSphere Micro Environment (IBM-compatible con J2ME JVM), con licencia para el desarrollo.
Con WebSphere Studio Device Developer se extiende las capacidades del
workbench permitiendo:
• Crear aplicaciones WebSphere Studio Device Developer y correrlas localmente.
• Crear una Suite de MIDlet y correla localmente (en un emulador de
MIDlet).
• Lanzar y depurar aplicaciones en varios dispositivos.
7.7. WEBSPHERE STUDIO DEVICE DEVELOPER
7.7.1
217
Componentes de WebSphere Studio Device Developer
El Workbrenck de Device Developer incluye como componetes a una J9, utilidades, y un paquete de herramientas para el desarrollo más el SmartLinker
para el preenlazado de archivos .class en la aplicación.
J9 Runtimes, Utilidades y Herramientas
El WebSphere Studio Device Developer incluye como componentes a un paquete de J9 runtimes, utilidades y herramientas, para construcción y lanzamiento
de aplicaciones Java en el ambiente de desarrollo.
Actualmente, los ambientes de desarrollos soportados son:
• Windows XP/2000.
• Red Hat Linux 8.
MicroAnalyzer
MicroAnalyzer es usado para perfilar y analizar la ejecución de los programas
en un dispositivo embebido.
En la vista Analizer se pueden agregar eventos de usuario al código y
rastrear su ejecución en una prueba física corriendo en una maquina virtual
J9. Esta información puede ser usada para optimizar los programas en cuanto
a velocidad, tamaño y eficiencia global.
7.7.2
Herramienta de Desarrollo C (CDT) para Eclipse
Device Developer incluye el CDT (C Development Tooling) de Eclipse que
permite escribir código C e integrar con aplicaciones Java.
Se pueden crear proyectos en lenguaje C en el espacio de trabajo, construir
y compilar estos proyectos y enlazarlos a otros proyectos (estos son, WebSphere
Studio Device Developer o otros proyectos Java) en el espacio de trabajo o
WorkSpace.
218
CAPÍTULO 7. WEBSPHERE STUDIO
7.7.3
Arquitectura de Device Developer
WebSphere Studio Device Developer forma parte de la familia WebSphere. Todo producto WebSphere Studio tiene un apecto en común, el WebSphere Studio
Workbench (WSWB ), que es la versión de IBM de la plataforma Eclipse.
Eclipse es un IDE de código abierto (open-source). Utiliza un plug-in
diseñado para ampliar su funcionalidad básica, ya que solo hace muy poco.
Debido a que es de código abierto, se podrá contribuir a su desarrollo.
Periódicamente, IBM toma una instantánea de Eclipse y los distribuye
como el WebSphere Studio Workbench, que está diseñado para ser una plataforma de desarrollo para socios de negocio para ampliar la arquitectura básica
y complementos.
Estas herramientas también deben ser capaces de conectar a Eclipse, así
como los miembros de la familia de productos de WebSphere Studio.
7.7.4
Utilización del IDE
WebSphere Studio Device Developer utiliza el concepto de espacio de trabajo
o workspace, un directorio que contiene el código de trabajo (un subdirectorio
por cada proyecto), y un subdirectorio de metadatos que contienen información
sobre el código.
La creación de un acceso directo es importante cuando se desee utilizar
múltiples espacios de trabajo, puesto que se puede usar la bandera “-data”
para poner un específico espacio de trabajo en ejecución, por ejemplo, wsdd.exe
-data “C:\user_workspace\project”, se utilizará el subdirectorio project en el
directorio user_workspace como su espacio de trabajo.
WebSphere Studio Device Developer también utiliza el concepto de proyecto, una colección de paquetes que componen la totalidad de una aplicación, ya
sea Java u otra. Por ejemplo, se podrá crear un proyecto Java, J2ME, MIDlet,
C u otro tipo.
Se puede pensar a un proyecto como un super-paquete.
La pantalla de bienvenida actúa como un archivo readme para la versión
de la herramienta, y se muestra automáticamente la primera vez que se invoca
7.7. WEBSPHERE STUDIO DEVICE DEVELOPER
219
Figura 7.9: Barra de herramientas de WSDD.
el producto. También se encuentra en el menú Ayuda.
La herramienta se divide en Perspectivas, barras de herramientas, vista, y
editores. La pantalla entera es a veces llamado el Workbench.
Una perspectiva es una colección predefinida de barras de herramientas,
vistas y editores [25].
Barra de Herramientas
La barra de herramientas superior que se encuentra bajo el menú principal,
contiene a todos los asistentes disponibles de WebSphere Studio Device Developer (ver figura 7.9 de la página 219).
Los asistentes se pueden utilizar para crear aplicaciones, probar código,
crear estructuras Java, crear proyectos, crear dispositivos, configurar dispositivos, generar construcciones de un proyecto para su distribución.
La barra izquierda de herramientas contiene todas las perspectivas y / o
vistas abiertas.
220
CAPÍTULO 7. WEBSPHERE STUDIO
Perspectiva, Editores y Vistas
Una perspectiva es un grupo de vistas y editores en la ventana del espacio de
trabajo diseñadas para centrarse en una determinada tarea.
En una ventana del espacio de trabajo pueden existir una o varias perspectivas.
Cada perspectiva contiene una o varias vistas y editores.
Dentro de una ventana, cada perspectiva puede tener un conjunto distinto
de vistas, pero todas las perspectivas comparten el mismo conjunto de editores.
También se puede personalizar perspectivas y guardarlas.
Una vista es un componente visual del espacio de trabajo.
Se suele utilizar para navegar en una jerarquía de información (como los
recursos del espacio de trabajo), abrir un editor o visualizar propiedades del
editor activo.
Las modificaciones efectuadas en una vista se guardan inmediatamente.
Sólo puede existir una instancia de un tipo de vista concreto en una ventana
del espacio de trabajo.
Un editor se utiliza para modificar los archivos, y es específico para el tipo
de archivo que está siendo editado.
Con WebSphere Studio Device Developer, se puede especificar editores externos para determinados tipos de archivo.
Sólo un editor puede estar activo en cualquier momento, varios editores se
podrán abrir, pero todos estarán en la misma ventana, disponible a través de
pestañas.
El editor del código fuente es una de las ventanas principales del WSDD.
Este editor está siempre presente, aunque cambiemos entre las distintas
perspectivas.
Como su nombre lo indica, en este editor se muestra el código fuente de la
clase con todos sus elementos. Pero además incluye diversas funcionalidades
para ayudar al desarrollador, entre ellas se tiene:
7.7. WEBSPHERE STUDIO DEVICE DEVELOPER
221
Figura 7.10: Métodos de un Objeto.
• Utiliza distintos colores para diferenciar entre palabras reservadas, comentarios, cadenas de texto, y nombres de variables. De este modo se
puede encontrar e identificar más fácilmente una línea de texto o una
instrucción.
• Muestra los campos y métodos pertenecientes al objeto al que se está
haciendo referencia según se va escribiendo (ver figura 7.10 de la página
221). De esta forma, se puede elegir el que se quiera a través de la lista.
• Además, en la lista de métodos de los objetos, se indican los parámetros
necesarios en la llamada al mismo, y el tipo del valor que devuelve, junto
con una breve descripción del mismo.
• Incluye una función automática para cerrar paréntesis y corchetes.
• En caso de cometer algún error de sintaxis, remarca la parte de código
errónea en rojo.
• Utiliza advertencias que son subrayados amarillos. Las advertencias no
serán causa de error, pero ayudan a mejorar el código; por ejemplo,
importar alguna clase que no se utilice nunca.
Dispositivos
Cada dispositivo requiere una configuración separada. Todos los dispositivos se comparten, por lo que cualquier proyecto puede ser desplegado en un
dispositivo específico.
222
CAPÍTULO 7. WEBSPHERE STUDIO
WebSphere Studio Device Developer soporta dispositivos Palm (a través de
HotSync), emulador Palm, y dispositivos PocketPC (a través de ActiveSync)
directamente.
WebSphere Studio Device Developer también ejecutará proyectos a nivel local JVM, y aplicaciones MIDP pueden ser desplegados en un emulador MIDP.
Otros proveedores pueden incluir emuladores soportados a través de plugins Eclipse. Estos deben estar disponibles a través del gestor de actualizaciones, o directamente desde el proveedor.
Añadir Emuladores
Una manera de probar las aplicaciones que se diseñan es añadiendo emuladores
que proveen los fabricantes. Webphere Studio Device Developer permite añadir
emuladores de distintos fabricantes.
Capítulo 8
Descripción de la Aplicación
8.1
Introducción
El presente trabajo consiste en la creación de una aplicación con Software
de Computación Móvil Multiplataforma, que permita el acceso a información
situada en bases de datos multiplataforma en un servidor Web, a través de
dispositivos móviles tales como PDAs.
El objetivo esencial de este trabajo es llevar a la práctica la comunicación
entre un PDA y un Servidor Web, teniendo acceso a los datos almacenados en
un motor de bases de datos alojado en el servidor.
Para esto se ha enfocado el problema dentro de un caso de estudio, el cual
es la concepción llevada a la realidad de lo que podría ser un sistema comercial
para un restaurant, aplicando las últimas tecnologías para lograr así no solo
alcanzar el objetivo principal sino también proveer de ventajas competitivas
en el rubro para aquél restaurant que utilice sistemas de este tipo.
El sistema realizado pretende reducir los tiempos requeridos en la atención al cliente dentro del restaurant, cubriendo la mayor parte de operaciones
esenciales requeridas por una entidad dedicada a la gastronomía.
Para el desarrollo del trabajo se utilizó el lenguaje de programación Java,
debido a que sus características lo hacen adecuado para el propósito planteado:
seguridad, robustez y sobre todo, portabilidad.
La variedad de dispositivos existentes en el mercado condiciona que la apli223
224
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
cación deba ser compatible con todos ellos. Como es conocido, la portabilidad
es una de las características inherentes al lenguaje Java.
8.2
Estructuración
El sistema está compuesto por dos módulos principales, uno móvil que correrá
en el PDA al cual se lo ha llamado MobileChef, y otro Web al cual se lo ha
llamado J-Chef, este ultimo correrá en un servidor web en la Intranet del
restaurant. Se ha desarrollado también un tercer módulo que simula ser el
sitio web de un restaurant ficticio llamado Miarritze para completar el ideal
de lo que debería ser un sistema para un restaurant.
Los módulos principales J-Chef y MobileChef correrán en la Intranet del
restaurant, y las comunicaciones se realizarán a través de una conexión inalámbrica wi-fi.
El sistema está pensado para que trabaje con distintos tipos de perfiles
de usuario, donde cada perfil tendrá funciones específicas de acuerdo al cargo
que representan los usuarios. A continuación se verán los distintos perfiles de
usuario y a que módulos pertenecen:
• Módulo Intranet J-Chef :
— Administrador.
— Jefe de Cocina.
— Cajero.
• Módulo Móvil MobileChef :
— Mozo.
• Módulo Internet Miarritze:
— Administrador Web.
— Cliente Web.
El sistema principal está formado por los módulos J-Chef y MobileChef,
por lo tanto se muestra en la figura 8.1 de la página 225 los casos de uso que
involucran a los usuarios de ambos módulos.
8.2. ESTRUCTURACIÓN
Figura 8.1: Casos de uso del Sistema Principal. J-Chef y MobileChef.
225
226
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.2: Casos de Uso del módulo Miarritze.
En la figura 8.2 de la página 226 se muestran los casos de uso con respecto
a los usuarios del módulo complementario Miarritze.
8.3
Modelo de datos
El manejador de bases de datos que utiliza el sistema es el DB2 UDB V. 8.1.
A continuación se detallará el modelo de datos del sistema principal, el
mismo se puede apreciar en la figura 8.3 de la página 227.
La base de datos del sistema principal tiene por nombre CHEFDB y las
entidades que la componen son las siguientes:
• CARGOS.
• CATEGORIAS.
• CONFIGURACIONES.
8.3. MODELO DE DATOS
227
Figura 8.3: Modelo de datos del Sistema Principal.
• FACTURAS.
• ITEM_MENU.
• PEDIDOS_CABECERA.
• PEDIDOS_DETALLES.
• SUB_CATEGORIAS.
• TIPO_ITEM_MENU.
• USUARIOS.
Ahora se verán los campos que conforman cada tabla.
CONFIGURACIONES: Esta tabla contiene las configuraciones necesarias para el correcto funcionamiento del sistema. Por ejemplo la fecha de
última modificación del menú y también la cantidad de mesas con las que
operará el sistema, los campos que la componen son los siguientes.
228
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
• ID_CONF: Es el campo clave de la tabla. Contiene el número único de
la configuración.
• NOMBRE_CONF: Es el nombre que se le da a la configuración.
• VALOR_CONF: Es el dato propiamente dicho de la configuración.
CARGOS: Contiene los distintos cargos que pueden asumir los usuarios
del sistema, está compuesta por los siguientes campos.
• ID_CARGO: Es el campo clave de la tabla. Contiene el número único
del cargo.
• NOMBRE_CARGO: Contiene el nombre del cargo.
USUARIOS: Contiene los datos de los usuarios del sistema principal.
Los campos que la componen son:
• ID_USUARIO: Es el campo clave de la tabla. Es el identificador único
de cada usuario.
• CARGO: Actúa como clave foránea estableciendo la relación con la tabla
CARGOS, indica el cargo del usuario.
• NOMBRE: Es el nombre del usuario.
• APELLIDO: Es el apellido del usuario.
• FEC_NAC: Es la fecha de nacimiento del usuario.
• USUARIO: Es el pseudónimo que el usuario utilizará para logearse al
sistema.
• PASS: Es la contraseña que el usuario utilizará para logearse al sistema.
• HR_ENTRADA: Indica la hora en que el usuario debe empezar a trabajar en el restaurant.
• HR_SALIDA: Indica el horario de finalización de la jornada laboral del
usuario.
• TELEFONO: Es el número de teléfono del usuario.
8.3. MODELO DE DATOS
229
• DNI: Es el número del Documento Nacional de Identidad del usuario.
• MAIL: Es la dirección de email del usuario.
• CANT_FACTURAS: Indica la cantidad de facturas que ha facturado el
usuario, solo se cargará si el usuario es un cajero.
• CANT_PEDIDOS: Indica la cantidad de pedidos que ha levantado el
usuario, solo se cargará si el usuario es un mozo.
TIPO_ITEM_MENU: Contiene los distintos tipos de ítems de menú
con los que funciona el sistema, estos son Comidas o Bebidas, y los campos
que la componen son:
• ID_TIPO: Es el campo clave de la tabla. Es el identificador del tipo de
ítem de menú.
• NOMBRE_TIPO: Contiene el nombre del tipo de ítem de menú.
CATEGORIAS: Contiene las distintas categorías de los ítems de menú,
está compuesta por los siguientes campos.
• ID_CAT: Es el campo clave de la tabla. Es el identificador de la categoría a la cual pertenece un ítem de menú.
• ID_TIPO: Es la clave foránea que relaciona la tabla CATEGORIAS con
TIPO_ITEM_MENU.
• NOMBRE_CAT: Es el nombre de la categoría.
SUB_CATEGORIAS: Contiene las distintas sub categorías de los ítems
de menú. Está compuesta por los siguientes campos.
• ID_SUB: Es el campo clave de la tabla. Es el identificador único de la
sub categoría.
• ID_CAT: Funciona como clave foránea estableciendo la relación con la
tabla CATEGORIAS.
• NOMBRE_SUB: Es el nombre de la sub categoría.
230
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
ITEM_MENU: Esta tabla contiene todos los ítems de menú que forman
la carta del restaurant. Está compuesta por los siguientes campos:
• ID_ITEM: Es el campo clave de la tabla. Es el identificador único de
cada ítem.
• ID_CAT: Es una clave foránea que relaciona esta tabla con CATEGORIAS.
• ID_SUB: Es una clave foránea que relaciona esta tabla con SUB_CATEGORIAS.
• NOMBRE_ITEM: Es el nombre del ítem de menú.
• DESCRIPCION: Es la descripción del ítem.
• PRECIO: Es el precio del ítem.
PEDIDOS_CABECERA: Contiene los datos principales de los pedidos
que levantan los mozos, los campos que componen esta tabla son:
• ID_PEDIDO: Es la clave de la tabla. Es el identificador único de un
pedido.
• ID_MOZO: Actúa como clave foránea estableciendo la relación con la
tabla USUARIOS, e identifica al usuario con cargo “mozo” que ha levantado el pedido.
• MESA_NRO: Es el número de mesa a cual corresponde este pedido.
• FECHA: Es la fecha en que se ha levantado el pedido.
• ESTADO: Indica el estado en que se encuentra el pedido.
• DIA_DE_SEMANA: Indica que día de la semana fue levantado el pedido.
• HOUR: Indica a qué hora fue levantado el pedido.
PEDIDOS_DETALLES: Contiene los detalles de un pedido_cabecera,
es decir contiene los ítems de menú que conforman el pedido de una mesa
determinada. Los campos que conforman esta tabla son:
8.3. MODELO DE DATOS
231
Figura 8.4: Modelo de datos del sitio web Miarritze.
• ID_DETALLE: Es el campo clave de la tabla. Es el identificador único
de un detalle de pedido.
• ID_PEDIDO: Actúa como clave foránea estableciendo la relación con
la tabla PEDIDOS_CABECERA.
• ID_ITEM: Actúa como clave foránea estableciendo la relación con la
tabla ITEM_MENU.
• CANTIDAD: Es la cantidad de porciones o unidades del ítem de menú
que se ha solicitado en la mesa.
• OBSERVACIONES: Representa algún tipo de observación que haya realizado un cliente acerca del ítem de menú que solicitó.
• ESTADO: Es el estado de un detalle de pedido.
A continuación se detallará el modelo de datos del sitio web Miarritze, el
mismo se puede apreciar en la figura 8.4 de la página 231.
La base de datos del mismo tiene por nombre WEBCHEF y las entidades
que la componen son las siguientes:
232
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
• CONFIGURACIONES.
• USUARIOS.
• TIPO.
• CATEGORIAS.
• SUB_CATEGORIAS.
• ITEM_MENU.
• RESERVA_CABECERA.
• RESERVA_DETALLES.
Ahora se verán los campos que conforman cada tabla.
CONFIGURACIONES: Esta tabla contiene las configuraciones necesarias para el correcto funcionamiento del sistema. Por ejemplo la dirección IP
y el Puerto donde el sitio web puede comunicarse con el servidor donde corre
J-Chef para convertir las reservas en pedidos, los campos que la componen son
los siguientes:
• ID_CONF: Es el campo clave de la tabla. Contiene el número único de
la configuración.
• NOMBRE_CONF: Es el nombre que se le da a la configuración.
• VALOR_CONF: Es el dato propiamente dicho de la configuración.
USUARIOS: Esta tabla contiene los datos de los usuarios web, estos
pueden ser de dos tipos, o administrador o cliente. Los campos que componen
esta tabla son:
• COD_USUARIO: Es el campo clave de la tabla. Es el identificador
único de cada usuario web.
• TIPO_USUARIO: Identifica el tipo de usuario, si es un administrador
o un cliente.
• USUARIO: Es el pseudónimo con el que el usuario se va a logear.
8.3. MODELO DE DATOS
233
• PASS: Es la contraseña con la que el usuario se va a logear.
• NOMBRE: Es el nombre del usuario.
• APELLIDO: Es el apellido del usuario.
• DNI: Es el Documento Nacional de Identidad del usuario.
• EMAIL: Es el email del usuario.
• TEL: Es el teléfono del usuario.
TIPO: Contiene los distintos tipos de ítems de menú con los que funciona
el sistema, estos son Comidas o Bebidas, y los campos que la componen son:
• ID_TIPO: Es el campo clave de la tabla. Es el identificador del tipo de
ítem de menú.
• NOMBRE_TIPO: Contiene el nombre del tipo de ítem de menú.
CATEGORIAS: Contiene las distintas categorías de los ítems de menú,
está compuesta por los siguientes campos.
• ID_CAT: Es el campo clave de la tabla. Es el identificador de la categoría a la cual pertenece un ítem de menú.
• ID_TIPO: Es la clave foránea que relaciona la tabla CATEGORIAS con
TIPO.
• NOMBRE_CAT: Es el nombre de la categoría.
SUB_CATEGORIAS: Contiene las distintas sub categorías de los ítems
de menú. Está compuesta por los siguientes campos.
• ID_SUB: Es el campo clave de la tabla. Es el identificador único de la
sub categoría.
• ID_CAT: Funciona como clave foránea estableciendo la relación con la
tabla CATEGORIAS.
• NOMBRE_SUB: Es el nombre de la sub categoría.
234
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
ITEM_MENU: Esta tabla contiene todos los ítems de menú que forman
la carta del restaurant. Está compuesta por los siguientes campos:
• ID_ITEM: Es el campo clave de la tabla. Es el identificador único de
cada ítem.
• ID_CAT: Es una clave foránea que relaciona esta tabla con CATEGORIAS.
• ID_SUB: Es una clave foránea que relaciona esta tabla con SUB_CATEGORIAS.
• NOMBRE_ITEM: Es el nombre del ítem de menú.
• DESCRIPCION: Es la descripción del ítem.
• PRECIO: Es el precio del ítem.
RESERVA_CABECERA: Contiene los datos principales de las reservas que solicitan los clientes web, los campos que componen esta tabla son:
• NRO_RESERVA: Es la clave de la tabla. Es el identificador único de
una reserva.
• COD_USUARIO: Actúa como clave foránea estableciendo la relación
con la tabla USUARIOS, e identifica al cliente que ha solicitado la reserva.
• FECHA: Es la fecha en que la reserva debe concretarse.
• HORA: Es la hora en que la reserva debe concretarse.
• CANT_PERSONAS: Indica la cantidad de personas que desean asistir
a la fecha y hora indicadas en la reserva.
• COMENTARIOS: Indica algun tipo de comentario que realiza el cliente
a la hora de solicitar la reserva.
• ESTADO: Indica el estado de la reserva.
RESERVA_DETALLES: Contiene los detalles de una reserva_cabecera,
es decir contiene los ítems de menú que conforman el pedido de una reserva
determinada. Los campos que conforman esta tabla son:
8.4. DESCRIPCIÓN DE MOBILECHEF
235
• ID_DET_RESERVA: Es el campo clave de la tabla. Es el identificador
único de un detalle de reserva.
• ID_RESERVA: Actúa como clave foránea estableciendo la relación con
la tabla RESERVA_CABECERA.
• ID_ITEM: Actúa como clave foránea estableciendo la relación con la
tabla ITEM_MENU.
• CANTIDAD: Es la cantidad de porciones o unidades del ítem de menú
que se ha solicitado el cliente web en la reserva.
8.4
Descripción de MobileChef
La interfaz gráfica de MobileChef es una interfaz simple, permite una fácil
interacción con el usuario, es estándar para todos los PDAs que soportan
J2ME.
Por razones de que se trata de una aplicación de negocios y para lograr
la mayor portabilidad posible del aplicativo, para desarrollar la interfaz de
usuario se eligió a las APIs de alto nivel, donde no se tiene un control total
del aspecto de los controles, ya que su estética depende exclusivamente del SO
del dispositivo donde se ejecute. Para más información acerca de interfaces
gráficas ver capítulo cinco (J2ME).
Otro aspecto muy interesante a la hora de desarrollar una aplicación móvil
utilizando J2ME es poder almacenar localmente cierta información útil en el
PDA para no tener que volver a realizar una petición al servidor sobre datos
solicitados anteriormente.
MobileChef proporciona la posibilidad de almacenar cierto tipo de información (como ser la totalidad de ítems de menú, categorías y sub categorías,
como también ciertas configuraciones) en la zona de almacenamiento persistente del PDA.
Para implementar esta funcionalidad, utiliza el sistema de gestión de registros, conocido como Record Management System (RMS). Más adelante se
describirá con más detalle la estructura de estos registros.
MobileChef posee conectividad con un servidor Web, para lograr esto utiliza una conexión wi-fi. Y al ser un dispositivo con capacidades limitadas
236
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
de almacenamiento y procesamiento la aplicación minimiza el intercambio de
datos.
Esto quiere decir que el PDA debe poseer conectividad wi-fi como requisito
para poder utilizar el sistema y por supuesto poder ejecutar aplicaciones Java.
Como se ha mencionado en el capítulo cinco (J2ME) las aplicaciones que
se desarrollan bajo la configuración CLDC (Conected Limited Device Configuration) y el perfil MIDP (Mobile Information Device Profile) se denominan
MIDlets. Por lo tanto como MobileChef se desarrolló bajo la configuración
CLDC 1.1 y el perfil MIDP 2.0 es un MIDlet.
En el desarrollo del sistema principal (J-Chef y MobileChef ) se estableció
que la utilización de PDAs se limitaba solo a aquellos usuarios cuyo cargo
fuese el de “Mozo”, siendo MobileChef un aplicativo de uso exclusivo de los
mismos.
El aplicativo fue probado en una Palm TX real, y de ella se obtuvieron
las capturas de pantalla.
En la figura 8.5 de la página 237 se ve la pantalla de Aplicaciones en una
Palm TX, en esta pantalla puede observase el icono de la aplicación MobileChef.
La figura 8.6 de la página 238 representa la pantalla inicial de MobileChef.
Esta pantalla inicial ofrece al usuario, tres posibles acciones, estas son:
• Entrar.
• Configuración.
• Salir.
Si el usuario presiona con el stylus el botón “Salir”, el aplicativo se cierra
y el usuario vuelve a ver la pantalla de la figura 8.5 de la página 237.
Antes de empezar a utilizar MobileChef, es necesaria una configuración
correcta del aplicativo, entonces si el “Mozo” presiona con el stylus el botón
“Configuración” podrá observar una pantalla como la que se ve en la figura
8.7 de la página 239. Cuando esta pantalla se ejecuta por primera vez en
el dispositivo móvil, se crea un Record Store llamado ConfCon, en el cual se
almacenan datos por defecto a fin de establecer los campos necesarios de la
8.4. DESCRIPCIÓN DE MOBILECHEF
237
Figura 8.5: Pantalla de Aplicaciones de una Palm TX con SO Garnet 5.4.9.
238
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.6: Pantalla Inicial de MobileChef.
8.4. DESCRIPCIÓN DE MOBILECHEF
239
Figura 8.7: Pantalla de Configuración de MobileChef.
configuración de MobileChef. Estos datos por defecto no garantizan que el
aplicativo se conecte correctamente al servidor, sino que solo son utilizados
para crear los registros necesarios. Luego el usuario deberá ingresar la dirección IP y el Puerto correspondientes para que la conexión con el servidor se
realice de manera correcta.
Los datos que se almacenan por defecto son:
• IP del Servidor: 192.168.1.101
• Puerto: 9080
• Fecha de última modificación del menú: Se almacena la fecha que se
obtiene al lanzar la pantalla por primera vez.
• Número de mesas: 10
240
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.8: Pantalla Default Settings.
Esta pantalla ofrece tres opciones al usuario: Guardar, Default Settings y
Volver.
Si el usuario presiona “Guardar” se actualizarán los campos en el Record
Store ConfCon.
Si el usuario presiona “Default Settings”, se cargarán los datos de ejemplo,
con una leyenda comunicando que estos datos son solo un ejemplo de lo que
el usuario debería introducir en estos campos como se puede observar en la
figura 8.8 de la página 240.
Si el usuario presiona “Volver”, volverá a ver la pantalla inicial de la figura
8.6 de la página 238.
Ahora bien, si el usuario presiona “Entrar” verá la pantalla que se muestra
en la figura 8.9 de la página 241, la cual representa el inicio del proceso de
login.
8.4. DESCRIPCIÓN DE MOBILECHEF
Figura 8.9: Inicio del Proceso de Login.
241
242
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.10: Pantalla de Alerta.
En este punto se pueden dar diversas situaciones que se detallarán a continuación.
Si el usuario presionara “Entrar” cuando alguno de los campos esté vacio,
el aplicativo mostraría una alerta como la que se ve en la figura 8.10 de la
página 242, indicando el error.
Ahora bien, suponiendo que el usuario ha llenado los campos correctamente, en este punto se iniciaría la conexión con la red wi-fi, este proceso de
conexión puede verse en el último ejemplo del capítulo cinco (J2ME).
Pero aunque el usuario haya llenado correctamente los campos “Usuario”
y “Contraseña”, puede haber olvidado configurar previamente el aplicativo,
por lo que si durante el proceso de login, el aplicativo no puede conectarse
al módulo J-Chef que se encuentra en el servidor, MobileChef mostrará una
pantalla como la “Pantalla 1” de la figura 8.11 de la página 243.
Supongamos ahora, que el usuario ha configurado correctamente el aplica-
8.4. DESCRIPCIÓN DE MOBILECHEF
243
Figura 8.11: Posibles situaciones del Proceso de Login.
tivo, y ha llenado correctamente los campos requeridos, esto nos lleva a tres
nuevos posibles desenlaces en el proceso de login.
Una posibilidad es que el usuario que se logea desde el PDA, haya llenado
correctamente los campos, pero que esos datos no coincidan con datos registrados en el server, los cuales corresponden a usuarios válidos. En esta situación
MobileChef informará al usuario que intenta logearse con una pantalla como
la “Pantalla 2” que vemos en la figura 8.11 de la página 243 donde se aprecia
el mensaje que dice que los datos ingresados no coinciden con los registrados.
Otra posibilidad es que algún usuario registrado en el sistema principal
intente logearse desde un PDA, es decir un “Administrador”, “Cajero” o “Jefe de Cocina” intente logearse desde el PDA. Este usuario posee datos que
coinciden con los registrados en la base de datos, por lo tanto el mensaje informativo es distinto y se lo puede apreciar en “Pantalla 3” de la figura 8.11
de la página 243.
Ahora veremos el desenlace que debería ser el habitual, es decir, un “Mozo”
que ha configurado correctamente el aplicativo y que ha llenado correctamente con sus datos los campos requeridos para el ingreso al sistema. En este
caso se podrá observar una pantalla como la que muestra la figura 8.12 de la
página 244. Donde en la pantalla se van añadiendo cadenas de texto que van
informando al usuario en que etapa del proceso de login se encuentra en cada
244
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.12: Progreso del Proceso de Login.
momento.
En el proceso de login, se realizan procesos intermedios destinados a almacenar los ítems de menú, las Categorías, y Sub Categorías en sus respectivos
Record Stores. Más adelante se explicarán en detalle tanto estructura como
funcionamiento de los mismos.
Este proceso “extra” Login, comienza solo si el proceso de login fue satisfactorio, y su primer chequeo es el de comparar la Fecha de última modificación
del menú que se registró en el Record Store ConfCon contra la Fecha de última
modificación del menú que se encuentra en la Tabla CONFIGURACIONES
de la base de datos del sistema principal, si estas fechas no coinciden se deben
cargar en el PDA todas las Categorías, Sub Categorías e Ítems de menú que
se leen de la base de datos CHEFDB.
También se actualiza el número de mesas con las que trabajará el restaurant.
8.4. DESCRIPCIÓN DE MOBILECHEF
245
Figura 8.13: Menú Principal de MobileChef.
Luego de todo este proceso, el sistema mostrará la pantalla principal de
MobileChef, la cual se puede observar en la figura 8.13 de la página 245.
Esta pantalla constituye el menú principal de MobileChef, el cual habilita tres posibles acciones, las cuales son: “Salir”, “Levantar Pedido” y “Ver
Pedidos”.
8.4.1
Levantar Pedidos
Si el mozo presiona en el menú principal “Levantar Pedidos” verá una pantalla
como la de la figura 8.14 de la página 246. Allí deberá seleccionar primero
un número de mesa, y luego seleccionar “Comidas” o “Bebidas” según lo que
solicite el cliente en ese momento. Si el mozo selecciona Comidas o Bebidas y
no ha seleccionado un número de mesa, el aplicativo muestra una pantalla de
error diciendo que debe seleccionar primero el número de mesa.
246
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.14: Pantalla donde el Mozo debe seleccionar el Nro de mesa, y si el
cliente solicitó una Comida o una Bebida.
8.4. DESCRIPCIÓN DE MOBILECHEF
247
Figura 8.15: Levantar Pedido.
Supongamos que el mozo ha seleccionado la Mesa Número 1, y luego “Comidas”, lo que verá inmediatamente después, serán las Categorías que se corresponden con el Tipo Comidas, esto se puede apreciar en “Pantalla 1” de la
figura 8.15 de la página 247.
Luego el mozo debe seleccionar una de esas categorías, para poder ver los
ítems de menú que se corresponden con la misma.
Supongamos que el mozo ha seleccionado “Plato Principal”, esta Categoría, posee Sub Categorías, las cuales se observan en “Pantalla 2” de la figura
8.15 de la página 247.
Luego supongamos que el mozo selecciona la Sub Categoría “Carnes”, en
ese momento se realiza la búsqueda de los ítems de menú en el Record Store
que los almacena, y se obtienen solo aquellos que se corresponden a esa Sub
Categoría, como se ve en “Pantalla 3” de la figura 8.15 de la página 247.
Luego el mozo, deberá seleccionar el ítem que ha solicitado el cliente, y
verá una pantalla que describe la información de dicho ítem, esto puede verse
en “Pantalla 1” de la figura 8.16 de la página 248. Allí podrá ingresar observaciones que provee el cliente, y también la cantidad de dicho ítem, ya que
varios comensales de la misma mesa podrían pedir el mismo ítem.
Luego, si presiona “Cargar”, este ítem se carga en un array localmente,
248
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.16: El item se ha cargado de manera local.
esto se puede ver en “Pantalla 2” de la figura 8.16 de la página 248, es decir,
en ese momento todavía no se envía la orden al servidor, esto es porque el
mozo puede seguir cargando ítems a la orden.
Si el mozo presiona “Atrás”, podrá por ejemplo cargar del mismo modo
una Bebida, y la orden podría quedar como se muestra en la figura 8.17 de la
página 249.
Antes de enviar el pedido al servidor, el mozo tiene la posibilidad de editar
el mismo. Si el mozo presiona el botón (...) que se ve en “Pantalla 2” de
la figura 8.16 de la página 248, se desplegará un menú como el que se ve
en “Pantalla 1” de la figura 8.18 de la página 250. Pudiendo así realizar la
edición del pedido como se describe en las pantallas que muestra la figura de
la página. Aquí podrá editar o quitar esa orden del pedido.
En “Pantalla 2” de la figura 8.18 de la página 250 se muestra una lista con
las ordenes que componen al pedido de la mesa en cuestión, el mozo podrá
8.4. DESCRIPCIÓN DE MOBILECHEF
Figura 8.17: Items de una Orden.
249
250
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.18: Editar Pedido.
seleccionar aquel ítem que desea modificar o quitar del pedido.
Una vez que el mozo haya finalizado de cargar las ordenes que solicitaron
los clientes, el pedido se puede enviar, presionando el botón “Enviar” que se
ve en la descripción del pedido, esto se muestra en la figura 8.17 de la página
249.
Hasta este momento se había realizado solo una comunicación entre MobileChef y J-Chef que se encuentra en el servidor.
Cuando el mozo presiona enviar se establece una nueva comunicación con
J-Chef para que este cargue en la base de datos CHEFDB los datos correspondientes al pedido recientemente levantado, si la transacción se completó correctamente el mozo recibirá como respuesta una pantalla como la que muestra
la figura 8.19 de la página 251, de otro modo recibirá una pantalla informando
el error.
8.4.2
Ver Pedidos
En esta sección el mozo puede ver las mesas para las cuales él mismo ha
levantado pedidos, y puede ver también los pedidos de cada mesa.
Si el mozo presiona en el menú principal “Ver Pedidos”, esto inicia una
8.4. DESCRIPCIÓN DE MOBILECHEF
Figura 8.19: El envío de los datos se realizó correctamente.
251
252
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.20: Mesas con pedidos del mozo.
comunicación con J-Chef, el cual consultará la base de datos para recuperar
aquellas mesas con pedidos del mozo que inicio la comunicación.
Esto hace que puedan darse dos situaciones.
Al momento de seleccionar “Ver Pedidos”, el mozo puede no tener ninguna
mesa con pedidos levantados por él, entonces MobileChef lo informará con una
pantalla como “Pantalla 1” de la figura 8.20 de la página 252.
Si el mozo al momento de solicitar este comando tuviese mesas con pedidos,
recibirá un listado de los números de mesa con pedidos, como se ve en “Pantalla
2” de la figura 8.20 de la página 252.
Si el mozo tiene mesas para atender, podrá ver los pedidos de las mismas
y podrá agregar nuevas ordenes al pedido.
También puede darse el caso de que un mozo tenga una mesa sin pedidos,
es decir debe atender una mesa a la cual él mismo no ha levantado pedidos,esta
8.4. DESCRIPCIÓN DE MOBILECHEF
253
Figura 8.21: El Administrador ha atendido una Reserva y la ha convertido en
Pedido Activo.
opción se da cuando el “Administrador” ha atendido una reserva y la pasó al
sistema como un pedido activo. Esta situación puede verse en la figura 8.21
de la página 253.
Nótese que cada orden que conforma un pedido, posee entre paréntesis
a su extremo derecho, su estado actual. Si dicho estado es Abierto el mozo
también podrá modificar esa orden. Esto se debe a que si el estado de la orden
es Abierto esto indica que no se ha atendido todavia esa orden en la cocina.
Los posibles estados que puede asumir una orden son los siguientes:
• Abierto: La orden no ha sido atendida por la cocina. Puede ser editada
o anulada.
• Anulado: La orden ha sido editada y se ha puesto en cero su cantidad.
• Atendiendo: La orden ha sido atendida en la cocina, es decir, se esta
254
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.22: Se ha habilitado el comando Cerrar debido a que todas las ordenes poseen un estado Entregado.
cocinando el plato que ha solicitado el cliente.
• Entregado: La orden ha sido entregada al mozo para que este la entregue
en la mesa correspondiente.
Solo los ítems de menú de tipo “Comidas”, pueden pasar de estado Abierto
a Atendiendo, debido a que necesitan ser preparados en la cocina.
En cambio, los ítems de tipo “Bebidas” nunca podrán tener estado Atendiendo debido a que estos solo se entregan, entonces estos pueden pasar de
Abierto a Anulado o bien a Entregado.
Ahora bien, si todas las ordenes del pedido poseen un estado Entregado
esto habilita el comando “Cerrar” como lo describe la figura 8.22 de la página
254.
El mozo cerrará un pedido cuando el cliente “Pida la Cuenta”, es decir
8.4. DESCRIPCIÓN DE MOBILECHEF
255
Figura 8.23: Formulario donde se capturan los datos necesarios para la posterior Facturación.
marca la finalización en el consumo por parte de los clientes de una mesa
determinada.
En este punto ese pedido está listo para ser facturado, este proceso lo
empieza el mozo, ya que cuando cierra un pedido aparecerá en la pantalla del
PDA un formulario como el de la figura 8.23 de la página 255.
En donde el mozo, solo cargará los datos de como el cliente desea que se
facture lo que ha consumido.
Será tarea del usuario “Cajero” facturar propiamente dicho, el pedido en
cuestión.
Cuando un pedido es cerrado este ya no aparecerá en la pantalla del “Jefe
de Cocina”, y luego de que el mozo cargue el formulario con los datos previos
a la facturación este pedido aparecerá en la pantalla del “Cajero”.
256
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.24: Se ha registrado correctamente el pedido para poder ser Facturado por el Cajero.
Luego de que el mozo haya cargado el formulario previo a la facturación del
pedido, recibirá una respuesta como la que muestra la figura 8.24 de la página
256, esto si se ha finalizado la transacción correctamente, de otro modo recibirá
una respuesta de error.
Al presionar “Continuar”, el mozo regresará al menú principal y podrá
continuar con su trabajo.
8.4.3
Estructura de los Record Stores de MobileChef
Gracias a la implementación del sistema de gestión de registros (RMS) se
puede guardar información en el PDA.
Sabiendo que los registros de un Record Stores están formados por pares
tipo clave - valor, donde:
8.4. DESCRIPCIÓN DE MOBILECHEF
257
— Clave: es el identificador único del registro.
— Valor: es el valor del registro propiamente dicho, almacenado en
un formato tipo “bytes”.
Se han utilizado los siguientes Record Stores:
— ConfCon
— Categorias
— SubCategorias
— ItemsMenu
Se presenta entonces su estructura.
Record Store ConfCon:
Cuando MobileChef ejecuta por primera vez la pantalla de configuración,
en esta se trata de leer este Record Store, pero para poder leerlo antes se lo
debe abrir.
Al abrir el Record Store ConfCon, se establece el atributo que indica que
si este no existe se lo debe crear.
Cuando se crea el Record Store ConfCon se registran los datos por defecto.
ConfCon solo almacena cuatro registros, los cuales se ven a continuación
con los datos por defecto que se asignan:
— IP del Servidor: 192.168.1.101
— Puerto: 9080
— Fecha de última modificación del menú: se ingresa la fecha en que
se ejecutó por primera vez la pantalla de Configuraciones.
— Cantidad de mesas: 10
Luego estos son editados con los valores correctos.
Al chequear la Fecha de última modificación del menú, si esta no coincide
con la Fecha de última modificación del menú que se encuentra en el servidor,
se deben cargar los Record Stores Categorias, SubCategorias e ItemsMenu.
Record Store Categorías:
258
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Está compuesto por los siguientes campos:
— Id_tipo
— Id_Categoria
— Nombre_Categoria
Para delimitar un campo de otro se utiliza “@”, de la siguiente manera:
— registro = Id_tipo@Id_Categoria@Nombre_Categoria
Donde registro es una cadena “String” y debe ser transformado a flujos de
bytes antes de ser insertado al RecorStore “Categorias”.
Record Store SubCategorias:
Maneja los siguientes campos:
— Id_Categoria
— Id_Sub
— Nombre_Sub
Para delimitar un campo de otro se utiliza “@”, de la siguiente manera:
— registro = Id_ Categoria@Id_ Sub@Nombre_Sub
Record Store ItemsMenu:
Maneja los siguientes campos:
—
—
—
—
—
—
Id_Categoria
Id_Sub
Id_Item
Nombre_Item
Descripcion
Precio
Para delimitar un campo de otro se utiliza “@”, de la siguiente manera:
— registro = Id_Categoria@Id_Sub@Id_Item@Nombre_Item@Descripcion@Precio
8.5. DESCRIPCIÓN DE J-CHEF
8.5
259
Descripción de J-Chef
J-Chef se desarrolló con el lenguaje de programación Java, utilizando las
tecnologías de Servlet y JSP.
La base de datos llamada CHEFDB es manejada por el motor DB2 UDB
8.1 de IBM.
En cuanto a su interfaz gráfica se ha buscado que la misma sea atractiva
pero lo suficientemente sencilla para facilitar la usabilidad del sistema. Es
decir, se ha optado por ejemplo el diseño de menús de navegación fijos y
no desplegables, ya que estos últimos son muy atractivos pero muchas veces
incómodos, y debido a que este será un sistema de uso muy frecuente por los
mismos usuarios, se ha optado por establecer menús fijos e intuitivos.
8.5.1
Estructura de J-Chef
Como se ha explicado anteriormente, J-Chef esta desarrollado para soportar
distintos perfiles de usuario, donde cada perfil tendrá su propio panel del
sistema donde debe realizar su trabajo.
Los distintos tipos de usuarios que utilizarán J-Chef son:
— Adminitrador.
— Jefe de Cocina.
— Cajero.
Cuando un usuario se logea en J-Chef, este es dirigido al panel que le
corresponde de acuerdo a su cargo.
La figura 8.25 de la página 260 muestra la pantalla inicial de J-Chef.
Si se presiona entrar y alguno de los campos está vacion se verá un mensaje
de error como se ve en la figura 8.26 de la página 260.
Primeramente se explicará que ocurre cuando un nuevo usuario ingresa
por primera vez al sistema. Todos los tipos de usuarios deben ingresar por
primera vez a travéz de J-Chef, inclusive los mozos.
Los usuarios son dados de “Alta” por el Administrador, más adelante se
explicará en detalle el proceso.
260
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.25: Pantalla inicial de J-Chef.
Figura 8.26: No se han rellenado correctamente los campos necesarios para el
proceso de Login.
8.5. DESCRIPCIÓN DE J-CHEF
261
Figura 8.27:
La primera vez que un usuario ingresa a J-Chef, lo debe realizar con los
siguientes datos:
— Usuario: Debe ingresar su nombre.
— Contraseña: Debe ingresar su Documento Nacional de Identidad.
Cuando el nuevo usuario se logea con estos datos podrá ver la pantalla que
se observa en la figura de la página, donde deberá seleccionar su Usuario y
Contraseña que desea utilizar para los posteriores ingresos al sistema.
Si los datos que ha seleccionado el nuevo usuarios son válidos, recibe un
mensaje comunicando que ha seleccionado correctamente sus datos de Usuario
y Contraseña, si se produce algún tipo de error, es decir, si ya existe ese usuario
o esa contraseña, el sistema lo comunica al usuario que está intentando logearse
por primera vez.
Luego de que un mozo ha seleccionado correctamente sus datos para el
login, solo podrá logearse desde un PDA.
Ahora veremos en detalle los distintos paneles de acuerdo a los perfiles de
usuario.
262
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.28: Inicio del Panel de Administrador.
Administrador
Cuando un Administrador se logea a J-Chef, si los datos que ingresó no son
correctos el sistema responde con un mensaje de error, pero si los datos coinciden con los registrados en la base de datos para el Administrador este será
dirigido a la pantalla inicial del panel de Administrador, la cual se puede ver
en la figura 8.28 de la página 262.
En la pantalla inicial del panel de Administrador se puede observar que
tiene un menú principal el cual está ubicado arriba de la pantalla, el cual está
compuesto por tres links: usuarios, menú y estadísticas.
A continuación se explicará cada uno.
Administrador −→ usuarios :
Al presionar el link usuarios se podrá ver la pantalla que se muestra en
la figura 8.29 de la pantalla 263. En esta pantalla se puede observar que ha
aparecido un submenú Administrador a la izquierda, este está compuesto por
tres links: los cuales son: Nuevo Usuario, Editar Usuario y Borrar Usuario.
Si se presiona Nuevo Usuario el administrador podrá dar de alta a un nuevo
usuario como se puede ver en la figura 8.30 de la página 264, al presionar el
botón “cargar”, el usuario se almacena en la base de datos, en sus campos
8.5. DESCRIPCIÓN DE J-CHEF
263
Figura 8.29: Usuarios.
Usario y Contraseña se grabarán su Nombre y DNI respectivamente.
Si se presiona Editar Usuario se podrá ver una pantalla como la que se
describe en la figura 8.31 de la página 264.
Si se presiona el botón modificar sin haber seleccionado un usuario, el
sistema muestra una alerta informando que debe seleccionar uno. Ahora si se
ha seleccionado el usuario a editar, se habilita una pantalla donde se permite al
administrador realizar las actualizaciones necesarias sobre los datos del usuario
seleccionado.
Si se presiona el link Borrar Usuario, se realiza un proceso similar a la
edición.
Administrador −→ menú :
Aquí aparecerá el submenú compuesto por: Nuevo Item de Menú, Editar
Item de Menú y Borrar Item de Menú, como se puede observar en la figura
8.32 de la página 265.
En esta sección cualquier acción que lleve a cabo el administrador es decir,
Alta, Baja o Modificación de algún ítem, produce la actualización inmediata
de la Fecha de última modificación del menú.
264
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.30: Nuevo Usuario
Figura 8.31: Se debe seleccionar el usuario a editar.
8.5. DESCRIPCIÓN DE J-CHEF
265
Figura 8.32: Gestión del Menú.
Este valor de configuración es muy importante para el sistema ya es el que
determina cuando MobileChef debe actualizar sus bases de datos internas.
Al presionar Nuevo Item de Menú se podrá observar una pantalla como la
que se muestra en la figura 8.33 de la página 266.
En esta pantalla se ha configurado mediante javascript una serie de cajas
de selección enlazadas para seleccionar el tipo, categoría y eventualmente sub
categoría si corresponde, de ítem de menú que se desea ingresar, luego de
realizar las selecciones correspondientes se habilitarán los campos donde se
introducirán los datos del nuevo ítem, esto se ve en la figura 8.34 de la página
266.
Luego de cargar el nuevo ítem de menú se mostrará una pantalla con los
datos del mismo.
Editar Item de Menú y Borrar Item de Menú son muy similares, se mostrarán las pantallas de la edición.
Al presionar Editar Item de Menú se podrá observar una pantalla como la
que muestra la figura 8.35 de la página 267.
En esta sección se ha implementado una llamada asíncrona AJAX.
266
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.33: Nuevo Item de Menú.
Figura 8.34: Luego de seleccionar Tipo, Categoría y Sub Categoría se habilitan
los campos a rellenar para el nuevo ítem de menú.
8.5. DESCRIPCIÓN DE J-CHEF
Figura 8.35: Editar Item de Menú.
267
268
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Cuando el administrador selecciona una categoría o una sub categoría dependiendo de que la categoría tenga o no sub categorías, en ese momento
cuando la caja de selección detecta un cambio lanza la ejecución de una función javascript para realizar el procedimiento AJAX, y así recuperar los ítems
de menú correspondientes.
Para esta llamada se ha utilizado la librería javascript jQuery, la cual
cuenta con la función $.getJSON(), con esta función se realiza la llamada
asíncrona.
Esta llamada difiere de lo que sería un AJAX “tradicional”, es decir aquella
que obtiene como respuesta una porción de código HTML, que eventualmente
puede ser el resultado del proceso de un script en lenguaje servidor o bien
puede ser un HTML el cual no requiere de proceso previo para obtenerlo.
En este caso de AJAX “tradicional”, la llamada asíncrona obtiene una
porción de código HTML y la inserta en un contenedor dentro de la página
desde la cual se ha iniciado dicha llamada. Esto tiene como beneficio que no
se debe recargar toda una página sino que se carga solo una porción de la
misma, mejorando así la performance de un sitio web ya que reduce el proceso
del servidor.
En el caso de la función $.getJSON() de jQuery, lo que obtiene como
resultado es un String con una estructura determinada, y no una porción de
código HTML.
Al recibir el String respuesta, esta función, la cual se encuentra en la
página web que el administrador está viendo en el browser de una máquina
cliente, parsea dicho String y con código javascript se elabora el formulario
que mostrará y enviará los datos del ítem a editar, y cuando ha terminado de
generar el formulario lo inserta en un contenedor (<div></div>) dentro de
esta página donde se incio la llamada.
Este método resulta aún más efectivo que el método “tradicional” debido
a que el proceso del armado del código HTML es realizado en la máquina
cliente, es decir, si libera aún mas al servidor.
El String respuesta recibido tiene una estructura similar a la siguiente:
({ items:
[
8.5. DESCRIPCIÓN DE J-CHEF
269
{ idItem: “6”, categ: “Plato Principal”, subcateg: “Carnes”, nombreItem: “Costillitas de cerdo con puré de habas”, descipcionItem:
“Costillas de cordero, habas, romero, aceite de oliva”, precioItem:
“63.38”},
{ idItem: “7”, categ: “Plato Principal”, subcateg: “Carnes”, nombreItem: “Bondiola con repollo”, descipcionItem: “Repollo, Bondiola
grande, cebollas”, precioItem: “42.59”},
{ idItem: “8”, categ: “Plato Principal”, subcateg: “Carnes”, nombreItem: “Ojo de Bife a la pimienta”, descipcionItem: “Ojo de bife,
pimienta, cebolla de verdeo, morrón picado, tomate, perejil picado”,
precioItem: “52.87”},
{ idItem: “9”, categ: “Plato Principal”, subcateg: “Carnes”, nombreItem: “Solomillos de cerdo”, descipcionItem: “Solomillos de cerdo con
quínoa estilo risotto y láminas de gruyere”, precioItem: “49.62”},
{ idItem: “10”, categ: “Plato Principal”, subcateg: “Carnes”, nombreItem: “Colita de cuadril rellena”, descipcionItem: “Colita de cuadril,
queso crema, jamón cocido, tomate, papines, batata, portobelos y
rúcula”, precioItem: “48.26”}
]
})
Luego de seleccionar el ítem que se desea editar se muestran los datos del
ítem para que el administrador pueda editarlos.
En el caso del borrado de ítems, cuando el administrador selecciona el ítem
a eliminar, se le presenta una alerta con la que se consulta si está seguro de
borrar dicho ítem, al responder que si, ese ítem es eliminado de la base de
datos.
Administrador −→ estadı́sticas :
Al clickear sobre estadísticas aparecerá un submenú compuesto por los
siguientes links: Ver Usuarios, Ver Menú y Ver Facturación como se ve en la
figura 8.36 de la página 270.
Cada uno de estos links a su vez tendrá subsubmenús, en la figura 8.37 de
la página 270 se ve la pantalla que se obtendría al presionar la siguiente ruta,
estadísticas - Ver Usuarios - Ver Todos.
270
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.36: Gestión de Estadísticas.
Figura 8.37: Todos los Usuarios.
8.5. DESCRIPCIÓN DE J-CHEF
271
Ahora se explicarán las posibilidades de extracción de estadísticas disponibles en J-Chef.
• Ver Usuarios.
Esta opción está compuesta por otros links: Ver Todos, Ver Mozos, Ver
Cajeros y Ver Jefes de Cocina.
En Ver Todos y Ver Jefes de Cocina, se mostrará una lista con los usuarios,
donde en el extremo derecho de cada fila, se dispone de un link Ver, este
mostrará los datos completos del usuario respresentado por dicha fila.
Para los links Ver Mozos y Ver Cajeros se habilitan otras posibilidades ya
que se permite saber cual es el mozo con más pedidos levantados y cual es el
cajero con más pedidos facturados.
Al precionar en Ver Mozos, se verá la pantalla que se muestra en la figura
8.38 de la página 272.
A continuación se nombran las opciones de selección:
Ver todos los mozos.
Ver el mozo con más pedidos levantados.
Ver el mozo con menos pedidos levantados.
Ver los Mozos que tienen un número fijo de pedidos levantados.
Ver los Mozos que tienen más o inclusive un número fijo de pedidos
levantados.
Ver los Mozos que tienen menos o inclusive un número fijo de pedidos
levantados.
Donde las tres últimas opciones habilitan una caja de texto para ingresar
un parámetro comparativo para realizar la consulta SQL, como se ve en la
figura 8.39 de la página 273.
Las opciones en Ver Cajeros son muy similares a las de Ver Mozos.
• Ver Menú.
272
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.38: Escoger opciones de selección en Estadísticas de Mozos.
8.5. DESCRIPCIÓN DE J-CHEF
Figura 8.39: Opción que requiere de una parámetro de comparación.
273
274
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.40: Ver Comidas.
Aquí se podrán ver las opciones Ver Todo, Ver Comidas y Ver Bebidas.
Ver Comidas puede observarse en la figura 8.40 de la página 274. Comos
se puede ver, las opciones de selección son:
Ver la Comida más pedida.
Ver la Comida menos pedida.
Seleccionar Categoría o Sub Categoría.
Considerar Fecha.
Considerar Hora.
El formato de selección podría ser algo así:
Ver la comida más pedida de la Sub Categoría Carnes, entre las fechas
10/11/09 y 15/11/09, entre las horas 12:00:00 y 23:00:00.
Luego se obtendrá un listado como muestra la figura 8.41 de la página 275.
El funcionamiento de las otras opciones es muy similar.
8.5. DESCRIPCIÓN DE J-CHEF
Figura 8.41: Listado de Items resultado de una consulta estadística.
275
276
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.42: Buscar facturas por monto.
• Ver Facturación.
Al presionar este link se obtendrán las opciones Buscar por Número y
Buscar por monto.
Al buscar por número se ingresa el número de factura que se desea buscar
y J-Chef responderá con una pantalla comunicando el resultado, si no existe
muestra una pantalla de error, y si existe muestra los datos de la factura.
Al buscar por monto, se habilitan distintas opciones las cuales se puede
apreciar en la figura 8.42 de la página 276.
Luego de seleccionar las opciones se muestra un listado de las facturas que
coinciden con los parámetros de búsqueda como se ve en la figura 8.43 de la
277 página. Si no existen facturas que coincidan se mostrará una pantalla que
informe al administrador de tal situación.
Administrador −→ Configuraciones :
8.5. DESCRIPCIÓN DE J-CHEF
277
Figura 8.43: Facturas que coinciden con los parámetros de búsqueda ingresados.
278
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.44: Cantidad de Mesas con las que va a trabajar el Restaurant.
Cantidad de Mesas
Al presionar este link se verá la pantalla que se muestra en la figura 8.44
de la página 278.
Aquí se debe establecer el número de mesas con el trabajará el restaurant.
La modificación de este valor de configuración también modifica la Fecha
de última modificación del menú.
El administrador debe escribir el número de mesas correspondientes y luego
presionar el botón cargar, y J-Chef responderá con un mensaje informando si
la transacción se realizó con exito o no.
Solo responderá que fue exitosa si también se ha modificado la Fecha de
última modificación del menú.
Modificar Perfil
En esta sección el administrador podrá cambiar sus datos, como también
su Usuario y Contraseña.
Verá una pantalla como la de la figura 8.45 de la página 279.
Logout
8.5. DESCRIPCIÓN DE J-CHEF
Figura 8.45: Modificar Perfil del Administrador.
279
280
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.46: Logout.
Todo usuario de J-Chef al realizar el logout verá una pantalla como la de
la figura 8.46 de la página 280.
Aquí se destruye la sesión del usuario.
Jefe de Cocina
Una vez que el usuario “Jefe de Cocina” se logea correctamente verá una
pantalla como la que se observa en la figura 8.47 de la página 281.
El tipo de usuario “Jefe de Cocina” es aquel que se encuentra en la cocina
y maneja el orden y los tiempos de atención de los pedidos.
Este usuario ordenará, a los cocineros, elaborar los distintos platos que se
van solicitando determinando cuando y como atenderá cada uno, con el fin de
que los platos de una misma mesa puedan estar listos para servir todos a la
vez.
Pero esto es algo que lo debe manejar el Jefe de Cocina de manera personal,
8.5. DESCRIPCIÓN DE J-CHEF
281
Figura 8.47: Inicio del panel de Jefe de Cocina.
el sistema J-Chef no se encargará de este tipo de cuestiones.
Si se presta atención a la pantalla inicial de este panel podrá observarse que
posee un menú de acciones acotado, se explicará a continuación como funciona
este panel.
El link más importante de este panel es sin dudas “Ver Pedidos”, este
link se verá repetido en distintas posiciones dentro de la misma página para
facilitar tener acceso a él.
Ver Pedidos
Cuando el Jefe de Cocina presione este link podrá observar una pantalla
como la que se muestra en la figura 8.48 de la página 282. Como se ve, en
ella aparecerá una lista con los distintos pedidos que los mozos han levantado
utilizando el aplicativo MobileChef.
Esta lista muestra por cada pedido, las ordenes que lo componen, pudiendo
Atender aquellos ítems que sean del tipo Comidas, cuando estos estén listos,
los podrá Entregar. Estas acciones cambian el estado de cada orden.
Las bebidas solo pueden ser entregadas como ya se ha explicado en la
descripción de MobileChef.
282
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.48: Ver Pedidos.
Puede observarse también un pedido sin ordenes con la leyenda “Al momento, no hay ordenes para este pedido. Proviene de una Reserva”. Esto
indica que el administrador de Miarritze ha Atendido una Reserva sin pedidos
y la insertó a J-Chef como un pedido.
Como se ha explicado en el funcionamiento de MobileChef, los pedidos que
posean todas sus ordenes Entregadas, estarán listos para ser Cerrados por el
mozo.
Aquellos pedidos cerrados ya no aparecerán en la lista de pedidos del Jefe
de Cocina.
Modificar Perfil
Cuando se presione este link se verá una pantalla similar a la de la figura
8.49 de la página 283. Donde el “Jefe de Cocina” puede modificar su Usuario
y Contraseña.
8.5. DESCRIPCIÓN DE J-CHEF
Figura 8.49: Modifcar Perfil del Jefe de Cocina.
283
284
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.50: Inicio del Panel de Cajero.
Cajero
Una vez que el usuario “Cajero” se logeado correctamente al sistema podrá
observar una pantalla como la que se observa en la figuar 8.50 de la página
284. Se puede ver que esta pantalla es muy similar a la del Jefe de Cocina,
posee cuatro links, los cuales son Ver Pedidos, Ver Facturas, Modificar Perfil
y Logout.
Cajero −→ V erP edidos :
Este link ofrecerá al cajero una lista de los pedidos cerrados a los cuales
el mozo, con el aplicativo MobileChef, ya ha cargado los datos necesarios para
llevar a cabo la facturación del mismo. Esto se puede ver en la figura 8.51 de
la página 285.
Luego el cajero debe presionar el link “Facturar” del pedido que desea
registrar, si el cliente eligió pagar con efectivo se habilita una caja de texto
donde el cajero debe ingresar el monto recibido por el cliente y el sistema le
responderá con el pedido factura y el vuelto que debe otorgarle al cliente.
Si la factura se va a pagar con tarjeta de crédito solo se registra el pedido.
Cajero −→ V er F acturas :
Al presionar este link podrá ver las facturas que ha registrado. Como se
8.5. DESCRIPCIÓN DE J-CHEF
Figura 8.51: Lista de Pedidos listos para Facturar.
285
286
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.52: Facturas.
ve en la figura 8.52 de la página 286.
Luego de seleccionar una factura y presionar el botón “Ver” podrá ver los
datos de la factura seleccionada.
Modificar Perfil
Aquí el Cajero podrá modificar su Usuario y Contraseña como se ve en la
figura 8.53 de la página 287.
8.6
Descripción de Miarritze
Miarritze al igual que J-Chef se desarrolló con el lenguaje de programación
Java, utilizando las tecnologías de Servlet y JSP.
La base de datos llamada WEBCHEF es manejada por el motor DB2 UDB
8.6. DESCRIPCIÓN DE MIARRITZE
Figura 8.53: Modificar Perfil del Cajero.
287
288
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.54: Pantalla Inicial de Miarritze.
8.1 de IBM.
Este módulo como se ha explicado anteriormente simula ser el sitio web de
un restaurant, por lo tanto este corre en Internet, y cualquier persona puede
registrarse en el mismo como “Cliente” y así solicitar reservas on-line.
La pantalla principal de Miarritze puede verse en la figura 8.54 de la página
288.
8.6.1
Estructuración de Miarritze
Miarritze acepta tres tipos de usuarios, los cuales se describen a continuación:
Internauta.
Cliente.
Administrador.
8.6. DESCRIPCIÓN DE MIARRITZE
289
Figura 8.55: Miarritze - Quienes Somos?.
Internauta
Este tipo de usuario solo puede navegar por el sitio pero no puede realizar
reservas.
Los links que tendrá habilitados un usuario de este tipo serán: Inicio,
Quienes Somos?, Servicios y Contacto.
En la figura 8.55 de la página 289 se puede ver la pantalla Quienes Somos?.
El link Servicios mostrará la pantalla que se ve en la figura 8.56 de la
página 290.
El link Contacto habilita una pantalla donde cualquier usuario podrá enviar mensajes vía email al administrador de Miarritze, esta pantalla se ve en
la figura 8.57 de la página 290.
Cliente
Cualquier persona que desee ser un Cliente de Miarritze y aprovechar los
beneficios de solicitar sus reservas y pedidos on-line, primero debe registrarse
como cliente.
En el cuadro Login, se encuentra el link Registrate!, el cual muestra una
pantalla como la de la figura 8.58 de la página 291, donde la persona debe
rellenar el formulario con los datos que en el se solicitan.
290
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.56: Miarritze - Servicios.
Figura 8.57: Miarritze - Contacto.
8.6. DESCRIPCIÓN DE MIARRITZE
291
Figura 8.58: Registro de Clientes de Miarritze
Una vez que la persona se ha registrado correctamente, se debe logear al
sistema, cuando realice esta acción verá una pantalla como la figura 8.59 de
la página 292.
Cuando un Cliente se logea correctamente se habilita el link Reservas y
este puede solicitar una. Esto se ve en la figura 8.60 de la página 292.
Aquí el Cliente puede seleccionar la Fecha, Hora y Cantidad de Personas.
También puede tildar la opción de Seleccionar Pedidos.
Un Cliente puede realizar dos tipos de reservas: Reservas o Reservas con
Pedidos.
En una Reserva, el Cliente solo solicita la reserva de una mesa para la
fecha, hora y cantidad de personas que ha seleccionado.
Ahora, en una Reserva con Pedidos el Cliente también realiza el pedido
de los platos que desea. Esta opción puede verse en la figura 8.61 de la página
293.
Luego el Cliente podrá introducir comentarios a su reserva, y registrarla.
Al registrar, es decir que la solicitud de la reserva se grabado en WEBCHEF, al Cliente se le mostrará una pantalla como la que se ve en la figura
292
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.59: Cliente Logeado.
Figura 8.60: Miarritze - Reservas y Pedidos.
8.6. DESCRIPCIÓN DE MIARRITZE
293
Figura 8.61: Solicitud de Reserva con Pedidos.
8.62 de la página 294, la cual describe un Reserva.
Al hacer clic sobre el link Logout se destruye la sesión y se mostrará la
pantalla inicial de Miarritze.
Administrador
El usuario Administrador debe logearse al sistema para realizar su trabajo,
cuando este se logea recibe una pantalla de bienvenida y se habilitan links para
ver las reservas y también se habilita un link Configuración.
Durante la explicación del sistema principal (J-Chef y MobileChef ) en
varias oportunidades se ha explicado que un administrador de Miarritze puede
Atender reservas convirtiendo las mismas en Pedidos activos en J-Chef. Para
esto es necesario que el sitio web que corre en Internet se conecte al servidor
donde corre J-Chef el cual se encuentra en la Intranet del restaurant.
Esta conexión se podrá realizar estableciendo correctamente la dirección
IP donde este servidor sea alcanzable por el sitio web, y también se deberá
configurar el puerto donde el servidor atenderá las solicitudes provenientes
desde Miarritze.
294
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.62: Reserva Registrada.
Cómo configurar esta conexión se puede ver en la pantalla que se muestra
en la figura 8.63 de la página 295.
Ver Reservas
Cuando un administrador se logea en Miarritze puede verse en la imágenes
que el menú del sitio cambia, y en este aparecen distintos links para ver las
reservas.
Se muestra un link por cada tipo de estado que puede asumir una reserva,
estos son:
Reservas Solicitadas.
Reservas Del Día.
Reservas Confirmadas.
Reservas Rechazadas.
Reservas Atendidas.
Todas las vistas de las distintas pantallas de las reservas son similares, lo
que cambia es el contenido de cada pantalla, ya que se cargan las reservas
correspondientes al link que se ha clickeado, es decir, solo aquellas que tengan
dicho estado.
8.6. DESCRIPCIÓN DE MIARRITZE
295
Figura 8.63: Miarritze - Configuración.
En la figura 8.64 de la página 296 se pueden ver las reservas solicitadas.
Al presionar en “Ver” en la lista, se pueden ver los datos de la reserva.
Si es una reserva Solicitada, el administrador puede Confirmar o Recharzar
dicha reserva como se ve en la figura 8.65 de la página 296.
Las Reservas Del Día son aquellas que fueron Confirmadas pero su consulta se realiza el mismo día para la cual fue solicitada. De este modo el
administrador podrá Atenderla.
Cuando se clickea el link Ver Res.Del Día se mostrará un listado de las
mismas. Las cuales serán verificadas por el administrador.
Al clickear sobre el link Ver de alguna de estas reservas del día presentes
en la lista, se verán sus datos y ademas se verá un botón Atender.
Al presionar este botón Atender, Miarritze se comunica con J-Chef, y
obtiene la lista de mozos y el número de mesas. Esto se puede ver en la figura
8.66 de la página 297.
Luego el administrador recibirá una pantalla de error si la transacción no
se concretó correctamente o si registro correctamente como un pedido recibira
como respuesta una pantalla como la que se muestra en la figura 8.67 de la
página 297.
296
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.64: Miarritze - Listado de Reservas según su Estado.
Figura 8.65: Confirmar o Rechazar una Reserva
8.6. DESCRIPCIÓN DE MIARRITZE
297
Figura 8.66: Atender Reserva.
Figura 8.67: La Reserva se ha registrado como pedido activo correctamente.
Capítulo 9
Concluciones
9.1
Concluciones Generales.
Es una realidad que tecnologías como el Comercio Electrónico, Java, Aplicaciones Móviles y Dispositivos Móviles, han revolucionado la manera en que
los distintos negocios se deben llevar a cabo. Ya que todas estas tecnologías
pueden aportar enormes ventajas competitivas en distintos rubros.
Estas distintas tecnologías aportan un marco muy completo para el desarrollo de aplicaciones que se adapten a las particularidades de cada negocio
debido a que ya no es necesario estar en un lugar físico para llevarlo a cabo.
En este trabajo se ha cumplido con el objetivo propuesto de desarrollar
una aplicación móvil que acceda a bases de datos multiplataforma, adicionalmente se desarrollaron también las aplicaciones web a fin de tener un sistema
completo desarrollado.
Se ha optado por desarrollar la aplicación móvil sin utilizar ninguna característica propia de ninguna marca del mercado (Palm, PoketPC ), por lo que
la aplicación debería funcionar en cualquier PDA que posea soporte para Java
y conectividad wi-fi.
La aplicación móvil se ha provado en:
• Emulador estándar de Websphere Application Device Developer.
• Simulador de Palm TX.
299
300
CAPÍTULO 9. CONCLUCIONES
También se ha probado en una Palm TX real con SO Garnet 5.4.9.
El resultado en las pruebas realizadas tanto en emuladores como en el
dispositivo real fue exitoso.
9.2
Conclusiones Acerca de las Tecnologías y Software Utilizados
Se ha podido comprobar las grandes ventajas de la utilización de tecnologías
y software, tanto de base de datos como de desarrollo de aplicaciones.
Los productos de WebSphere han demostrado ser herramientas muy potentes al momento de desarrollar tanto aplicaciones móviles como web, contando
con asistentes, corrección de errores y otras facilidades que hacen más rápido
y eficiente el trabajo.
Cabe destacar la gran utilidad del debugger de las herramientas WebSphere, ya que facilitan la detección y corrección de errores que no son detectados
en la compilación.
Con respecto al motor de bases de datos DB2, se debe destacar la escalabilidad, integridad y seguridad; interfaces sencillas y entendibles, completas,
intuitivas y con diversos asistentes, permitiendo de esa manera una mejor
comprensión en la utilización de la herramienta.
Resaltar también la gran utilidad del SQL Assist que brinda un apoyo
para realizar todo tipo de consultas SQL hacia las tablas.
Asimismo se pudo apreciar las facilidades del Scientific WorkPlace para
escribir libros, por la calidad del producto obtenido, la automatización en el
manejo de índices, la gestión dinámica de espacios, listas de figuras, de tablas,
referencias dinámicas a objetos, bibliografía, etc.
Se destaca la gran potencialidad de este conjunto de herramientas para el
desarrollo de aplicaciones de gran porte y alta complejidad, utilizables en una
amplia gama de sistemas operativos y con diversos motores de bases de datos.
9.3. LÍNEAS FUTURAS DE ACCIÓN
9.3
301
Líneas Futuras de Acción
A continuación se detallan las principales líneas futuras de acción del presente
trabajo:
• Dotar al módulo J-Chef de toda la salida impresa en facturación, cocina,
estadísticas, etc.
• Proveer la posibilidad de exportar los datos a planillas Excel ya que éstas
pueden ser de gran utilidad para la contaduría.
• Aumentar las opciones de extracción de estadísticas.
• Rediseñar el módulo Miarritze para que este pueda incluirse en sitios web
existentes de distintos restaurantes. Conciderando el desarrollo del mismo módulo en distintas versiones de acuerdo al lenguaje de programación
y motor de base de datos utilizados por los sitios de los restaurantes que
pretendan obtener este servicio.
• Proveer una conectividad total entre J-Chef y el módulo Miarritze, ya
que al momento la carga de los ítems se realizó de manera manual sobre
la base de datos y la edición o borrado de los ítems en J-Chef no se
reflejan en Miarritze.
Bibliografía
[1] Geraldo Gariboldi. Comercio Electrónico: Conceptos y reflexiones básicas. Banco Interamericano de Desarrollo. BID - INTAL. Documento de
Divulgación 4., 1999.
[2] Michael J. Cunningham. Como Desarrollar una Estrategia de Comercio
Electrónico. Pearson Educación, México, 2001.
[3] Isabel Gallego Fernández. Tesis doctoral: Modelo para comercio electrónico basados en sistemas intermediarios. Universidad Politécnica de
Catalunya, 2001.
[4] Friedemann Mattern. Revista de la ATI (Asociación de Técnicos de Informática) “Novática”, Octubre 2001.
[5] Alberto Los Santos Aransay. Computación Ubicua: Trabajo Individual.
Diseño de interacción centrada en el usuario. Universidad de Vigo, 2009.
[6] Gutiérrez Fernando Islas Octavio. La Sociedad de la Información £Utopía
o Panóptico? Revista Electrónica “Razón y Palabra”, Mayo 2004.
[7] Esteinou Javier. Hacia una Nueva Sociedad de la Comunicación y de la
Información. Revista Electrónica “Razón y Palabra”, Marzo 2003.
[8] Jorge Blanco López. TELEFONÍA MÓVIL: LAS PALABRAS EN EL
AIRE. Observatorio Tecnológico. Ministerio de Educación, Política Social
y Deportes. Gobierno de España., Junio 2006.
[9] Historia del teléfono móvil. Junio 2006.
[10] Martin Cooper - History of Cell Phone.
[11] Museum of Mobility History MuMoH. Apple Newton. Mayo 2008.
[12] Museum of Mobility History MuMoH. Pilot 5000. Mayo 2008.
303
304
BIBLIOGRAFÍA
[13] Ramón Ruiz Benito Raul Alvarez Barrio Antonio Sánchez Dotor, Isidro
Arroyo Garcia de Mateos. EL BLUETOOTH.
[14] Ing. Dario Yorio. Tesis de Magistratura:Identificación y clasificación de
patrones en el diseño de aplicaciones móviles. Universidad Nacional de
la Plata.
[15] E. Castillo; A. Cobo; P. Gómez; C. Solares. JAVA - Un Lenguaje de
Programación Multiplataforma para Internet. Paraninfo, España, 1997.
[16] L. Joyanes Aguilar; I. Zahonero Martínez. Estructura de Datos - Algoritmos, Abstracción y Objetos. Mc Graw Hill/Interamericana de España,
S.A.U., España, 1998.
[17] L. Joyanes Aguilar. Programación Orientada a Objetos - Segunda Edición. Mc Graw Hill/Interamericana de España, S.A.U., España, 1998.
[18] IBM. WebSphere Comerse V5.5 Architecture. IBM Press, USA, 2003.
[19] Lucas Ortega Díaz Sergio Gálvez Rojas. Java a Tope: J2ME. Universidad
de Málaga, Málaga, España, 2004.
[20] Jorge Cardenes Patricia Froufe Quintas Agustín. J2ME Java 2 Micro Edition Manual De Usuario y Tutorial. Alfaomega Grupo Editor Argentino
S.A., 2004.
[21] Korth Henry F. & Susarshan S. Silberschatz, Abraham. Aprenda Servlets
de Java como si estuviera en Segundo. Editorial McGraw-Hill, USA, 1993.
[22] VV.AA. Introducción a las Bases de Datos. THOMSON PARANINFO,
S.A., USA, 2005.
[23] Bart Jacob Carla Sadtler, John Ganci. WebSphere Product Family Overview and Architecture. IBM Press, USA, 2004.
[24] IBM Corp. IBM Workplace Client Technology Micro Edition Version
5.7.1. IBM, 2005.
[25] IBM Corp. WebSphere Studio Device Developer Product Documentation.
IBM, 2004.
Índice de Materias
AIV Extender, 184
AMS, 115, 116
aplicaciones móviles, 53—59, 62
AWT, 111
CLDC, 109
Conected Limited Device Configuration, 106
comentarios, 80
comercio electrónico, 1—7, 16, 21
computación pervasiva, 8, 16
computación ubicua, 8—11, 15, 16
computadora portátil, 32—34, 42, 43,
45, 48
comunicaciones en J2ME, 153
comunicaciones HTTP, 157
configuración, 106, 109
contenedor
cliente de aplicaciones de, 213
EJB de, 212
Web, 212
B2B, 196
B2C, 196
base de datos, 56, 57, 59, 61, 62
Bases de Datos
Introduccion, 175
Bases de Datos en Red
Modelo, 180
Bases de Datos Jerárquicas
Modelo, 179
Bases de Datos Relacional
Modelo, 180
bibliotecas de clases, 67
bifurcaciones, 81
if, 81
if else, 81
bloque try, catch, finally, 83
bluetooth, 42, 43, 49
bucles, 82
do while, 83
for, 82
while, 82
DB2
Introduccion, 175
db2 Data Links Manager, 186
DB2 UDB
Caracteristicas Generales, 183
Funciones Complementarias, 186
DB2 Warehouse Manager, 186
DBMS
Sistema de Administración de
Bases de Datos, 177
digitales
activos, 197
Dispositivos, 221
dispositivos móviles, 7, 53, 57
DNS, 214
C/C++, 80
CDC, 109
Conected Device Configuration,
106
Centro de Desarrollo, 186
305
306
doGet (), 87, 90
doPost (), 90
download, 197
e-commerce, 195
Eclipse, 218
Introduccíon y Conceptos, 198
ejemplo de
bifurcación if, 81
bifurcación if else, 81
bucle for, 82
bucle while, 82
comentario, 80
do while, 83
línea compuesta por tres sentencias, 79
ejemplo de clase, 72
enterprise beans, 212
estructuras de programación, 79
expresión, 79
GFC, 153, 155, 157
Generic Framework Conection,
153, 154
GPRS, 97
GUI, 213
herencia, 72
hosts virtuales, 213
HttpServletRequest, 87
HttpServletResponse, 87
instanciación e inicialización, 88
interfaz
Connection, 155
InputConnection, 156
OutputConnection, 156
StreamConnection, 157
irda, 43, 45
IT, 210
ÍNDICE DE MATERIAS
J2EE, 209
Java 2 Enterprise Edition, 98
J2ME, 97
Java 2 Micro Edition, 97, 98,
102
J2SE
Java 2 Standard Edition, 98
Java, 97
java, 57, 59, 63, 65, 67—69, 72—74,
76—80, 83, 84, 87, 90, 98
estructura general de un programa, 70
javax.servlet.HttpServlet, 87
JCA, 211
JDBC, 213
JDK, 80
JNDI, 213
JSP, 212
jsp, 58, 90, 91, 94
JVM, 97, 212
Java Virtual Machine, 98
ley de Moore, 9, 15
m-commerce, 6, 7
Mark Weiser, 8, 10, 15, 16
Martin Cooper, 26
memoria
administrador automático de la,
70
middleware, 209
MIDlet, 115, 118, 119, 139
MIDP, 110, 153
multi servidor, 210
multiplataforma, 55, 58, 62, 63, 68,
101, 183, 223
OOP, 70
operadores
aritméticos, 76
de asignación, 76
ÍNDICE DE MATERIAS
de concatenación de cadenas de
caracteres, 79
package, 73
packages, 71
Palm, 35, 39, 40
palm, 97
PDA, 214
pda, 34—37, 39, 41—43, 97, 223
perfil, 109
plataforma
de software, 194
plug-in, 211
Quick Installation, 211
rdbms, 61
record, 139
store, 139, 140
stores, 152
RMS, 137, 139, 141
sentencia, 79
Server
Application
Advanced Edition, 209
Enterprise Edition, 210
Standard Edition, 211
servidor
de aplicaciones, 212
HTTP, 211
servlets, 84, 85, 87, 90, 212
motor del, 88
sociedad de la información y el conocimiento, 17—20
Spatial Extender, 186
tecnologías de la información y la
comunicación, 19, 20
tecnologías de la información y la
comunicación, 19—22
307
teléfono móvil, 25—31, 36, 42, 45,
49, 50, 53, 54
teléfonos celulares, 103, 214
teléfono móvil, 97
telefonía celular, 26, 31
virtual
sistema principal, 213
wap, 49—51
WAS
WebSphere Application Server,
198, 207
WCTME
Workplace Client Technology Micro Edition, 214
Web Services, 210
WebSphere
Application Server, 207
Studio, 193
WebSphere Commerce, 195
WebSphere for Commerce
soluciones de portal, 196
soluciones digital media, 197
WebSphere for commerce
soluciones B2B, 195
soluciones B2C, 195
WebSphere Portal, 195
WebSphere Studio
Productos, 198
wi-fi, 36, 46—49
Workbench
banco de trabajo, 198
WSAD
Entorno de Desarrollo de WebSphere Studio, 198
WebSphere Studio Application
Developer, 198
WSADIE
308
WebSphere Studio Application
Developer Integration Edition, 198
WSED
WebSphere Studio Enterprise Developer, 198
WSSDA
WebSphere Studio Site Developer Advanced, 198
XML Extender, 184, 186
ÍNDICE DE MATERIAS
Documentos relacionados
Descargar
Colecciones de estudio