Sistema Web con Acceso a Bases de Datos Multiplataforma a Través de Teléfonos Celulares.

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 Teléfonos
Celulares
Sofia J. Vallejos - L.U.: 37.032
Prof. Coordinador: Agr. Castor Herrmann
Prof. Orientador: Mgter. David Luis la Red Martínez.
Licenciatura en Sistemas de Información
Corrientes - Argentina
2010
En memoria de mi abuelo Pedro R. Vallejos
Prefacio
En los últimos años, la evolución de la tecnología ha dado un salto inesperado. El boom tecnológico de la nueva generación se traduce en términos de
“telefonía celular e Internet”, las cuales, más que ser realidades separadas se
complementan.
Sin embargo, el desarrollo de estos dos tipos de tecnología llega a un punto
en el cual convergen, y es cuando la red de comunicaciones a nivel mundial
se abre y sobrepasa las expectativas de sus creadores; Internet deja de ser
para uso exclusivo de la milicia y el gobierno, y combinada con los servicios
de telefonía se transforma en un medio de interacción social que actualmente
está presente en todos los ámbitos de la vida diaria.
En la actualidad, estas tecnologías se combinan en una sola; los celulares ya
no se limitan a la función de comunicar a dos personas entre sí, sino que ahora
han evolucionado hasta incluir modalidades como el acceso a Internet en casi
todos sus aspectos (transmisión de datos, mp3, tele conferencia, transmisión
de archivos fotográficos y videos, etc.).
Esto trae consigo inumerables ventajas; acelera el ritmo de obtención de
información, facilita las comunicaciones, reduce los tiempos de emisión y respuesta; es decir, transforma la vida diaria en todo un acontecimiento tecnológico, todo esto anudado al crecimiento económico de las sociedades, y más allá,
a todos los cambios en el orden natural de las cosas que la tecnología genera.
Habiendo observado de manera amplia y constante los numerosos cambios
que la telefonía móvil y la Internet han dictado sobre la comunidad global,
surge en mi el interés por conocer más detalladamente los aspectos que delinean
esta revolución en nuestro propio entorno.
Para satisfacer lo anteriormente mencionado, en este trabajo se propuso el
desarrollo de una aplicación con software de computación móvil multiplataforma, que permita el acceso a información situada en una base de datos multiplataforma en un servidor Web, a través de dispositivos móviles tales como
teléfonos celulares.
La aplicación contempla el registro y seguimiento de información propia
de una entidad farmacéutica, es decir la información pertinente del cliente, la
compra de productos y medicamentos de venta libre.
Esto significa para los clientes la posibilidad de auto gestionar sus compras
en cualquier momento y en cualquier lugar sin tener que asistir físicamente a las
sucursales de la farmacia y con sólo la ayuda de un teléfono celular moderno.
A su vez se propuso el desarrollo de una plataforma Web de la aplicación
que sea accesible desde la Intranet, que contemple funciones adicionales como
ser: registro de usuarios, control de stock de los productos y medicamentos de
venta libre.
Se propuso también el desarrollo de un sitio Web accesible desde Internet, que simula ser el sitio de una farmacia, el cual contemple funciones de
e-commerce como ser: registro de clientes, venta de los productos y/o medicamentos on-line, permitiendo a un cliente poder realizar su compra de manera
virtual.
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 teléfonos celulares, que permita
acceder a información remota situada en una base de datos que se encuentra en un servidor web.
Desarrollo de la plataforma web de la aplicación con accesos a base de
datos, que sirva de apoyo a la aplicación móvil.
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 teléfonos celulares.
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 CD’s como en libros de dicha empresa, en el marco
de 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 referentes productos de software como los siguientes:
• Rational Application Developer for WebSphere Software versión 6.0.
• DB2 Express-C versión 9.7.
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 ExpressC para Windows.
Se ha realizado un detallado estudio del J2ME (versión de Java para
móviles), para la herramienta de desarrollo NetBeans IDE versión 6.7.1.
Se ha realizado un detallado estudio del software para el desarrollo de
la plataforma web de la aplicación, Rational Application Developer for
WebSphere Software versión 6.0.
Se ha desarrollado el aplicativo móvil con la utilización del lenguaje Java,
versión J2ME.
En el marco de la herramienta Rational Application Developer for WebSphere Software se desarrolló el módulo web del aplicativo utilizando
páginas XHTMLs y Servlets de Java.
Una vez finalizada la etapa de desarrollo se realizaron las siguientes actividades:
• Instalación y configuración del Rational Application Developer for
WebSphere Software, utilizando como servidor web al servidor Tomcat vesión 5.0, el cual se encuentra embebido en dicha herramienta.
• Empaquetado de la aplicación móvil para su distribución e instalación en los teléfonos celulares.
• Instalación de emuladores de teléfonos celulares que fueron descargados desde los sitios webs de los fabricantes de los mismos.
• Instalación y prueba de la aplicación tanto en los emuladores como
así también en teléfonos celulares reales.
• 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
Internet.
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 Express-C, Rational Application Developer for WebSphere,
NetBeans IDE 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 visión global acerca de las nuevas tecnologías de información y comunicaciones, como así también las principales características de la tecnología móvil, computación ubicua y de la
sociedad de la información y el conocimiento.
Comercio Electrónico: Se indican definiciones y las principales características del Comercio Electrónico.
El Mundo Móvil : Se indican las principales características de la evolución
de los sistemas de telefonía móvil.
Aplicaciones Móviles: Se explican los requerimientos necesarios para una
aplicación móvil.
Java: Se presentan los principales aspectos y destacadas características
referidas al lenguaje.
Java 2 Micro Edition: Se detallan conceptos y características del lenguaje Java para dispositivos electronicos 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.
Rational Application Developer for WebSphere Software: Presenta los
principales aspectos de este entorno de aplicaciones complejas.
NetBeans IDE: Presenta los principales aspectos de este entorno para el
desarrolo de aplicaciones moviles.
Tomcat: Presenta las principales características y aspectos de este servidor web con soporte de Servlets y JSPs.
Descripción de la aplicación: Se describen todos los aspectos de la aplicación desarrollada utilizando las herramientas antes mencionadas.
Conclusiones: Se presentan conclusiones a las que se ha llegado al finalizar el presente trabajo y 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.
Sofia J. Vallejos
Licenciatura en Sistemas de Información
Universidad Nacional del Nordeste
L.U.: 37032
Corrientes; 10 de Diciembre de 2010
Índice general
1. Introducción
1.1. Visión Global . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Computación Ubicua o Pervasiva . . . . . . . . . . . . .
1.2.1. Principios . . . . . . . . . . . . . . . . . . . . . .
1.2.2. Hacia las Cosas Inteligentes e Interconectadas . .
1.2.3. La Ley de Moore y la Visión de Weiser . . . . .
1.3. La Sociedad de la Información y el Conocimiento . . . .
1.3.1. Definición de Conocimiento . . . . . . . . . . . .
1.3.2. Proceso de Formación del Conocimiento . . . . .
1.3.3. Clases de Conocimiento . . . . . . . . . . . . . .
1.3.4. Ciclo del Conocimiento . . . . . . . . . . . . . .
1.3.5. Características de la Sociedad del Conocimiento
1.3.6. Gestión del Conocimiento . . . . . . . . . . . . .
1.3.7. Tecnologías de la Gestión del Conocimiento . . .
2. Comercio Electrónico
2.1. Visión Global . . . . . . . . . . . . . . . . . . . . . . .
2.2. Definiciones . . . . . . . . . . . . . . . . . . . . . . . .
2.3. Origen y Evolución Histórica . . . . . . . . . . . . . .
2.4. Ventajas del Comercio Electrónico . . . . . . . . . . .
2.4.1. Ventajas para los Clientes . . . . . . . . . . . .
2.4.2. Ventajas para las Empresas . . . . . . . . . . .
2.5. Tipos de Comercio Electrónico . . . . . . . . . . . . .
2.5.1. B2B (Business-to-Business) . . . . . . . . . . .
2.5.2. B2E (Business to Employe) . . . . . . . . . . .
2.5.3. B2C (Business-to-Consumer) . . . . . . . . . .
2.5.4. B2B2C . . . . . . . . . . . . . . . . . . . . . .
2.6. M-Commerce . . . . . . . . . . . . . . . . . . . . . . .
2.7. Comercio Electrónico en la Sociedad del Conocimiento
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
3
3
5
6
7
8
8
9
9
10
12
12
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
16
17
19
19
20
22
22
23
24
26
26
28
ÍNDICE GENERAL
2.8. Riesgos, Usos y Tecnología . . . . . . . . . . . . . . .
2.8.1. Riegos . . . . . . . . . . . . . . . . . . . . . .
2.8.2. Usos . . . . . . . . . . . . . . . . . . . . . . .
2.8.3. Teconolgías que emplea . . . . . . . . . . . .
2.9. Tipos de Relaciones, Cambios y Efectos . . . . . . .
2.9.1. Tipos de Relaciones que Pueden Presentarse
2.9.2. Cambios en las Empresas . . . . . . . . . . .
2.9.3. Efectos . . . . . . . . . . . . . . . . . . . . .
2.10. Los Intermediarios . . . . . . . . . . . . . . . . . . .
2.10.1. Tipos de Intermediarios . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
28
28
30
31
31
31
32
33
34
37
3. El Mundo Móvil
41
3.1. Evolución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.2. Teléfonos Móviles de Primera Generación . . . . . . . . . . . . 42
3.2.1. Sistema Avanzado de Telefonía Móvil . . . . . . . . . . 43
3.3. Teléfonos Móviles de Segunda Generación . . . . . . . . . . . . 45
3.3.1. D-AMPS - El Sistema Avanzado de Telefonía Móvil Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.3.2. GSM (Sistema Global Para Comunicaciones Móviles) . 46
3.3.3. CDMA (Acceso Múltiple por División de Código) . . . . 48
3.4. Teléfonos Móviles de Tercera Generación . . . . . . . . . . . . . 49
3.4.1. EDGE (Tasa de Datos Mejorada para la Evolución del
GSM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.4.2. GPRS (Servicio de Radio de Paquetes Generales) . . . . 50
3.5. Servicios Adicionales de las Empresas Telefónicas . . . . . . . . 51
3.5.1. Servicios Analógicos . . . . . . . . . . . . . . . . . . . . 51
3.5.2. Recepción y Envío de Mensajes de Texto . . . . . . . . 51
3.5.3. Servicios de Información . . . . . . . . . . . . . . . . . . 52
3.5.4. Mensajes Multimedia . . . . . . . . . . . . . . . . . . . 53
3.5.5. Juegos y Aplicaciones . . . . . . . . . . . . . . . . . . . 53
3.5.6. Internet Móvil . . . . . . . . . . . . . . . . . . . . . . . 54
3.6. WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.6.1. Introducción a WAP . . . . . . . . . . . . . . . . . . . . 56
3.6.2. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.6.3. Modelo de WAP . . . . . . . . . . . . . . . . . . . . . . 57
3.6.4. Tecnología . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.6.5. WAP 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4. Aplicaciones Móviles
67
4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
ÍNDICE GENERAL
4.2.
4.3.
4.4.
4.5.
Arquitectura de Aplicaciones Móviles .
Portal Para Aplicaciones Móviles . . .
Arquitectura de Bases de Datos . . . .
Aplicaciones Multiplataforma . . . . .
4.5.1. Java y Multiplataforma . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
68
70
73
76
76
5. Java
5.1. Introducción al Lenguaje . . . . . . . . . . . . . . .
5.1.1. Bibliotecas de Clases Estándares de Java .
5.1.2. Java es Multiplataforma . . . . . . . . . . .
5.1.3. Características del Lenguaje . . . . . . . . .
5.2. Estructura de un Programa Java . . . . . . . . . .
5.3. Conceptos Básicos . . . . . . . . . . . . . . . . . .
5.3.1. Clases . . . . . . . . . . . . . . . . . . . . .
5.3.2. Herencia . . . . . . . . . . . . . . . . . . . .
5.3.3. Interfaces . . . . . . . . . . . . . . . . . . .
5.3.4. Package . . . . . . . . . . . . . . . . . . . .
5.4. Variables de Java . . . . . . . . . . . . . . . . . . .
5.4.1. Datos de Objetos o Instancia . . . . . . . .
5.4.2. Datos de Clase . . . . . . . . . . . . . . . .
5.5. Operadores del Lenguaje Java . . . . . . . . . . . .
5.5.1. Operadores Aritméticos . . . . . . . . . . .
5.5.2. Operadores de Asignación . . . . . . . . . .
5.5.3. Operadores Unarios . . . . . . . . . . . . .
5.5.4. Operador Instanceof . . . . . . . . . . . . .
5.5.5. Operador Condicional . . . . . . . . . . . .
5.5.6. Operadores Incrementales . . . . . . . . . .
5.5.7. Operadores Relacionales . . . . . . . . . . .
5.5.8. Operadores de Concatenación de Caracteres
5.6. Estructuras de Programación . . . . . . . . . . . .
5.6.1. Sentencias o Expresiones . . . . . . . . . . .
5.6.2. Comentarios . . . . . . . . . . . . . . . . .
5.6.3. Bifurcaciones . . . . . . . . . . . . . . . . .
5.6.4. Bucles . . . . . . . . . . . . . . . . . . . . .
5.7. Servlets . . . . . . . . . . . . . . . . . . . . . . . .
5.7.1. Estructura de un Servlet . . . . . . . . . . .
5.7.2. Instanciación e Inicialización . . . . . . . .
5.7.3. Servicio de Demanda . . . . . . . . . . . . .
5.7.4. Terminación . . . . . . . . . . . . . . . . . .
5.7.5. Java Server Faces . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
79
79
81
82
83
84
85
85
86
87
87
88
90
90
91
91
91
91
92
92
92
93
93
94
94
94
95
96
99
100
104
105
105
106
ÍNDICE GENERAL
5.7.6. Desarrollando Aplicaciones . . . . . . . . . . . . . . . . 111
6. Java 2 Micro Edition
113
6.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.1.1. Comparación de Versiones . . . . . . . . . . . . . . . . . 114
6.1.2. Algunas Consideraciones al Desarrollar en J2ME . . . . 117
6.2. Componentes de J2ME . . . . . . . . . . . . . . . . . . . . . . . 118
6.2.1. Máquinas Virtuales J2ME . . . . . . . . . . . . . . . . . 119
6.2.2. Configuraciones . . . . . . . . . . . . . . . . . . . . . . . 122
6.2.3. Perfiles
125
6.3. Requerimientos Funcionales para Detectar una Aplicación J2ME 130
6.4. Los MIDlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.4.1. El Gestor de Aplicaciones . . . . . . . . . . . . . . . . . 132
6.4.2. Ciclo de Vida de un MIDlet . . . . . . . . . . . . . . . . 132
6.4.3. Estados de un MIDlet . . . . . . . . . . . . . . . . . . . 134
6.4.4. El Paquete javax.microedition.midlet . . . . . . . . . . . 134
6.4.5. La Clase MIDlet . . . . . . . . . . . . . . . . . . . . . . 135
6.4.6. Estructura de los MIDlets . . . . . . . . . . . . . . . . . 137
6.5. Interfaces Gráficas de Usuario . . . . . . . . . . . . . . . . . . . 139
6.5.1. La Clase Display . . . . . . . . . . . . . . . . . . . . . . 141
6.5.2. La Clase Displayable . . . . . . . . . . . . . . . . . . . . 141
6.5.3. Las Clases Command y CommandListener . . . . . . . . 141
6.5.4. Interfaz de Usuario de Alto Nivel . . . . . . . . . . . . . 145
6.6. RMS (Record Management System) . . . . . . . . . . . . . . . 154
6.6.1. Modelo de Datos . . . . . . . . . . . . . . . . . . . . . . 156
6.6.2. Record Stores . . . . . . . . . . . . . . . . . . . . . . . . 157
6.6.3. Creación de un Record Store . . . . . . . . . . . . . . . 158
6.6.4. Manipulación de Registros . . . . . . . . . . . . . . . . . 159
6.6.5. Operaciones con Record Stores . . . . . . . . . . . . . . 168
6.6.6. Búsqueda de Registros . . . . . . . . . . . . . . . . . . . 169
6.7. Comunicaciones en J2ME . . . . . . . . . . . . . . . . . . . . . 170
6.7.1. Clases y Conexiones del Generic Connection Framework 170
6.7.2. Comunicaciones HTTP . . . . . . . . . . . . . . . . . . 174
7. Introducción al DB2
185
7.1. Bases de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
7.1.1. Objetivos de las Bases de Datos . . . . . . . . . . . . . 186
7.1.2. Ventajas de las Bases de Datos . . . . . . . . . . . . . . 186
7.2. Sistema de Administración de Bases de Datos . . . . . . . . . 187
ÍNDICE GENERAL
7.3. Organización de Bases de Datos . . . . . . . . . . . . . . .
7.3.1. Bases de Datos Jerárquicas . . . . . . . . . . . . . .
7.3.2. Bases de Datos en Red . . . . . . . . . . . . . . . .
7.3.3. Bases de Datos Relacional . . . . . . . . . . . . . .
7.4. Introducción a DB2 UDB . . . . . . . . . . . . . . . . . . .
7.4.1. Características Generales del DB2 UDB . . . . . .
7.5. DB2 Express-C . . . . . . . . . . . . . . . . . . . . . . . . .
7.5.1. Información Técnica . . . . . . . . . . . . . . . . . .
7.5.2. DB2 para Linux, UNIX y Windows Características
Beneficios . . . . . . . . . . . . . . . . . . . . . . . .
7.5.3. Herramientas de DB2 . . . . . . . . . . . . . . . . .
. .
. .
. .
. .
. .
. .
. .
. .
y
. .
. .
189
189
190
190
192
193
196
196
8. Rational Application Developer
8.1. ¿Qué es RAD 6.0? . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.1. Rational Software Development Platform . . . . . . . .
8.1.2. Rational Application Developer for WebSphere Software
se extiende de Eclipse . . . . . . . . . . . . . . . . . . .
8.1.3. Desarrollo Web . . . . . . . . . . . . . . . . . . . . . . .
8.1.4. Desarrollo de Java . . . . . . . . . . . . . . . . . . . . .
8.1.5. Editor Visual de Java . . . . . . . . . . . . . . . . . . .
8.1.6. Servicios de Desarrollo Web . . . . . . . . . . . . . . . .
8.1.7. XML para el Desarrollo . . . . . . . . . . . . . . . . . .
8.1.8. Desarrollo de Base de datos . . . . . . . . . . . . . . . .
8.1.9. Desarrollo de Portales . . . . . . . . . . . . . . . . . . .
8.1.10. Desarrollo J2EE . . . . . . . . . . . . . . . . . . . . . .
8.1.11. Equipo de Desarrollo . . . . . . . . . . . . . . . . . . . .
8.1.12. Especificación de Arquitectura. UML . . . . . . . . . . .
8.1.13. Pruebas e Implementación . . . . . . . . . . . . . . . . .
8.1.14. Asistencia Técnica de Servidor . . . . . . . . . . . . . .
8.2. WebSphere Application Server . . . . . . . . . . . . . . . . . .
8.2.1. ¿Qué es WebSphere? . . . . . . . . . . . . . . . . . . . .
8.2.2. ¿Que es WebSphere Application Server? . . . . . . . . .
205
205
206
9. Tomcat
9.1. Descripción . . . . . . . . .
9.2. Entorno . . . . . . . . . . .
9.3. Estado de su Desarrollo . .
9.4. Estructura de Directorios .
9.5. Características del Producto
9.6. Historia . . . . . . . . . . .
225
225
225
226
226
226
227
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
197
199
208
209
210
211
211
212
212
213
214
214
215
215
216
216
216
217
ÍNDICE GENERAL
10.NetBeans
10.1. Introducción . . . . . . . . . . . . . . . . . . .
10.2. ¿Qué hay de nuevo en 6.7.1? . . . . . . . . . .
10.2.1. Tecnologías compatibles: . . . . . . . .
10.2.2. Servidores de Aplicaciones: . . . . . .
10.2.3. Requisitos del Sistema . . . . . . . . .
10.2.4. Configuraciones de hardware mínimos
10.2.5. Software Necesario . . . . . . . . . . .
10.2.6. Compatibilidad . . . . . . . . . . . . .
10.3. NetBeans y las Aplicaciones Moviles . . . . .
10.4. SDK de Nokia S60 . . . . . . . . . . . . . . .
10.5. Nuevo Proyecto Utilizando J2ME . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
229
229
230
230
231
232
232
232
232
233
233
235
11.Descripción de la Aplicación
239
11.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
11.2. Estructuración . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
11.3. Estructuración . . . . . . . . . . . . . . . . . . .
11.3.1. La Aplicación Móvil (Farmacia Corrientes
11.3.2. La Aplicación Web . . . . . . . . . . . . .
11.4. Estructuras de Datos Utilizadas . . . . . . . . . .
11.4.1. Modelo de datos . . . . . . . . . . . . . .
. . . .
Móvil)
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
241
243
264
284
285
12.Conclusiones
291
12.1. Conclusiones Generales . . . . . . . . . . . . . . . . . . . . . . . 291
12.2. Conclusiones Acerca de las Tecnologías y Software Utilizados . 292
12.3. Líneas Futuras de Acción . . . . . . . . . . . . . . . . . . . . . 293
Bibliografía
295
Índice alfabético
297
Índice de figuras
1.1. Mark Weiser (1952-1999), el Visionario de la Computación Ubicua 7
1.2. La Cadena del Conocimiento . . . . . . . . . . . . . . . . . . . 10
1.3. La Era de la Información . . . . . . . . . . . . . . . . . . . . . 11
3.1.
3.2.
3.3.
3.4.
3.5.
3.6.
3.7.
3.8.
Sistema Telefónico Móvil . . . . . . . .
Un canal D-AMPS con 3 y 6 usuarios.
Algunos Juegos Conocidos. . . . . . .
Modelo Wap. . . . . . . . . . . . . . .
Modelo de la Red Wap. . . . . . . . .
Pilas de Protocolos TCP/IP y WAP. .
Modelo de Programación Wap. . . . .
Modelo Proxy para WAP 2.0. . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
44
46
54
58
58
61
64
64
4.1. Arquitectura de un Portal Móvil. . . . . . . . . . . . . . . . . .
74
5.1.
5.2.
5.3.
5.4.
5.5.
5.6.
Mecanismo de Mensajes . . . . . . . . . . . . . . . . . . . . . . 81
Proceso Compilación y Ejecución . . . . . . . . . . . . . . . . . 83
Jerarquía y Métodos de las Principales Clases para Crear Servlets.101
Ciclo de Vida de un Servlet. . . . . . . . . . . . . . . . . . . . . 104
Requerimiento de un archivo JSP. . . . . . . . . . . . . . . . . 110
Requerimiento de un Servlet . . . . . . . . . . . . . . . . . . . . 110
6.1.
6.2.
6.3.
6.4.
6.5.
6.6.
6.7.
6.8.
Arquitectura de la Plataforma Java
Ubicación de las Tecnologías Java .
Proceso de Verificación . . . . . . .
Entorno de Ejecución de J2ME . .
Ciclo Vida de un MIDlet. . . . . .
Estados de un MIDlet. . . . . . . .
Jerarquía de Clases. . . . . . . . .
Un MIDlet y el RMS . . . . . . . .
2 de
. . .
. . .
. . .
. . .
. . .
. . .
. . .
Sun
. . .
. . .
. . .
. . .
. . .
. . .
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
115
117
121
126
133
135
140
156
ÍNDICE DE FIGURAS
6.9. Acceso a Un RMS a Través de Un MIDlet Suite
6.10. Estructura de Un Record Store . . . . . . . . .
6.11. Ejemplo en un emulador Nokia. . . . . . . . . .
6.12. Jerarquía de Interfaces . . . . . . . . . . . . . .
6.13. Estados de una Conexión HTTP . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
157
158
168
171
175
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 Control. . . . . . . . . . . . . . . . . . . . . . . . . .
Lanzando Centro de Control de DB2 desde la bandeja de Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.10. El Editor de Comandos DB2. . . . . . . . . . . . . . . . . . . .
7.11. El icono Editor de Comandos en El Centro de Control. . . . . .
7.12. El SQL Assist. . . . . . . . . . . . . . . . . . . . . . . . . . . .
188
188
190
191
192
195
195
200
7.1.
7.2.
7.3.
7.4.
7.5.
7.6.
7.7.
7.8.
7.9.
201
202
203
204
8.1. RAD. Entorno de Trabajo. . . . . . . . . . . . . . . . . . . . . 207
8.2. WebSphere para e-bussines. . . . . . . . . . . . . . . . . . . . . 218
10.1. Añadir Platforma Java . . . . . . . .
10.2. Ventana: Nuevo Proyecto. . . . . . .
10.3. Ventana: Nombre y Localización. . .
10.4. Ventana: Selección de la Plataforma.
10.5. Ventana: Configuración Adicional. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
234
235
236
237
237
11.1. Caso de Uso del Sitema. . . . . . . . . . . . .
11.2. Arquitectura del Sistema. . . . . . . . . . . .
11.3. Pantalla Principal Farmacia Corrientes Movil.
11.4. Inicio. . . . . . . . . . . . . . . . . . . . . . .
11.5. Pantallas de Ingreso al Sistema. . . . . . . . .
11.6. Pantalla Conectando . . . . . . . . . . . . . .
11.7. Pantalla Error. . . . . . . . . . . . . . . . . .
11.8. Pantalla Datos del Cliente. . . . . . . . . . .
11.9. Pantalla Catalogo(Rubros). . . . . . . . . . .
11.10.Inicio 2. . . . . . . . . . . . . . . . . . . . . .
11.11.Catalogo. . . . . . . . . . . . . . . . . . . . .
11.12.Pantalla Descripción de la Presentación. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
242
243
245
247
248
249
250
251
252
253
254
256
ÍNDICE DE FIGURAS
11.13.Pantalla Descripción de la Compra. . . . . . . . . .
11.14.Pantalla Carrito. . . . . . . . . . . . . . . . . . . .
11.15.Pantalla Forma de Pago. . . . . . . . . . . . . . . .
11.16.Pantalla Datos Relevantes de la Factura. . . . . . .
11.17.Pantalla para Configurar la URL del Servidor. . .
11.18.Pantalla Ayuda. . . . . . . . . . . . . . . . . . . .
11.19.Inicio. . . . . . . . . . . . . . . . . . . . . . . . . .
11.20.Pestaña Quienes Somos. . . . . . . . . . . . . . . .
11.21.Catálogo. . . . . . . . . . . . . . . . . . . . . . . .
11.22.Descripción del Producto. . . . . . . . . . . . . . .
11.23.Cliente. . . . . . . . . . . . . . . . . . . . . . . . .
11.24.Registrarse. . . . . . . . . . . . . . . . . . . . . . .
11.25.Contacto. . . . . . . . . . . . . . . . . . . . . . . .
11.26.Inicio (logueado por el cliente). . . . . . . . . . . .
11.27.Mi Carrito. . . . . . . . . . . . . . . . . . . . . . .
11.28.Pedido . . . . . . . . . . . . . . . . . . . . . . . . .
11.29.Factura Virtual. . . . . . . . . . . . . . . . . . . .
11.30.Mensaje Fin de la Compra . . . . . . . . . . . . . .
11.31.Farmacia Movil. . . . . . . . . . . . . . . . . . . .
11.32.Inicio (Operador / Administrador). . . . . . . . . .
11.33.Inicio - Administrador. . . . . . . . . . . . . . . . .
11.34.Nuevo Producto (pág1). . . . . . . . . . . . . . . .
11.35.Nuevo Producto (pág2). . . . . . . . . . . . . . . .
11.36.Nuevo Producto (pág. 3). . . . . . . . . . . . . . .
11.37.Nuevo Producto (pág. 4). . . . . . . . . . . . . . .
11.38.Nuevo Producto (pág. 5). . . . . . . . . . . . . . .
11.39.Nuevo Usuario. . . . . . . . . . . . . . . . . . . . .
11.40.Nueva Cuenta (pág.1). . . . . . . . . . . . . . . . .
11.41.Nueva Cuenta (pág. 2). . . . . . . . . . . . . . . .
11.42.Nueva Cuenta(pág. 3) . . . . . . . . . . . . . . . .
11.43.Tablas que Integran la Base de Datos del Sistema.
11.44.Modelado de Datos . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
257
258
260
261
262
263
265
266
267
267
268
268
269
271
272
272
273
274
275
276
277
278
279
279
280
280
281
282
283
283
284
285
Índice de cuadros
5.1.
5.2.
5.3.
5.4.
Categorías de Variables. .
Tipos Primitivos de Datos
Operadores de asignación.
Operadores relacionales. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
89
89
91
93
6.1. Librerías de configuración CDC . . . . . . . .
6.2. Librerías de configuración CLDC . . . . . . .
6.3. Librerías del Fondation Profile . . . . . . . .
6.4. Librerías del Personal Profile . . . . . . . . .
6.5. Librerías del MIDP Profile . . . . . . . . . . .
6.6. Clases del Paquete javax.microedition.midlet
6.7. Métodos de la Clase Display . . . . . . . . . .
6.8. Métodos de la Clase Displayable . . . . . . .
6.9. Tipos de Commands . . . . . . . . . . . . . .
6.10. Métodos de la Clase Command . . . . . . . .
6.11. Tipos de Alerta . . . . . . . . . . . . . . . . .
6.12. Métodos de la Clase List . . . . . . . . . . . .
6.13. Métodos de la Clase Form . . . . . . . . . . .
6.14. Métodos de la Clase StringItem . . . . . . . .
6.15. Métodos de la Clase ImageItem . . . . . . . .
6.16. Métodos de la Clase TextField . . . . . . . .
6.17. Métodos Generales de la Clase RecordStore .
6.18. Métodos Para Manejo de Registros . . . . . .
6.19. Métodos de la Clase Connector . . . . . . . .
6.20. Tipos de Permisos . . . . . . . . . . . . . . .
6.21. Métodos en la Etapa de Establecimiento . . .
6.22. Tipos de peticiones . . . . . . . . . . . . . . .
6.23. Campos de la Cabecera . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
124
125
127
128
130
135
142
143
144
144
146
148
150
152
154
155
160
161
172
173
176
176
177
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Capítulo 1
Introducción
1.1.
Visión Global
La implantación en la sociedad de las denominadas Nuevas Tecnologías
de la Comunicación e Información, está produciendo cambios insospechados
respecto a los originados en su momento por otras tecnologías, como fueron
la imprenta, y la electrónica. Sus efectos y alcance, no sólo se sitúan en el
terreno de la información y comunicación, sino que lo sobrepasan para llegar
a provocar y proponer cambios en la estructura social, económica, laboral,
jurídica y política. Y ello es debido a que no sólo se centran en la captación de
la información, sino también, a las posibilidades que tienen para manipularla,
almacenarla y distribuirla.
Las Nuevas Tecnologías de la Información y la Comunicación no son sólo
invenciones geniales, tienen su justificación social ya que contribuyen a disminuir los costos de producción de bienes de la sociedad al incrementar la
productividad e impulsar la investigación y el desarrollo.
Ha surgido la llamada “supercarretera de la información”: Internet, la red
de redes de computadoras, la gran autopista que conecta todas las redes de
ordenadores del mundo; en ella la información fluye libremente y sin interrupciones, “se comparte y se esparce”, nadie aún ha sido capaz de calcular el
volumen de información que almacena ni tampoco sus límites.
Las Nuevas Tecnologías de la Información y la Comunicación rompen las
barreras geográficas borrando las distancias físicas pero no rompen las barreras
1
2
CAPÍTULO 1. INTRODUCCIÓN
sociales, mantienen e incluso incrementan las distancias sociales entre ricos y
pobres. Una de sus ventajas es que en la actualidad el ritmo de producción
de los conocimientos ha crecido vertiginosamente y se ha reducido el tiempo
necesario para transformar el conocimiento básico en ciencia aplicada y ésta
en tecnología la cual se difunde ampliamente a través de diferentes vías.
Por tanto, las Nuevas Tecnologías de la Información y la Comunicación
a pesar de sus ventajas, no son accesibles a todos por igual; este acceso está
mediado por factores económicos, se tiene información si se dispone de recursos
necesarios para “adquirirla”.
El efecto social de las redes y servicios telemáticos es difícil de predecir. El
aumento del ancho de banda disponible será la base de las futuras innovaciones
que pueden afectar profundamente a la sociedad humana.
Las redes inalámbricas jugarán un papel muy importante, éstas hoy en
día son una realidad, estamos acostumbrados a ver ordenadores portátiles
conectados a Internet sin necesidad de cables, pequeños ordenadores de mano
conectados con los ordenadores de la oficina, cada día aumenta más la creación
de las redes inalámbricas ciudadanas, en la que voluntariamente y sin buscar
beneficios más allá del uso de las tecnologías disponibles y el afán de aprender
y practicar con ellas, hay ciudadanos que van poniendo a disposición de los
demás puntos de acceso a una red que cada día va creciendo más, y que cada
voluntario ayuda a que ésta crezca.
Y todo este avance tecnológico no es más que el inicio de un mundo de
posibilidades que se abren con este nuevo modelo de computación, denominado
computación pervasiva o computación ubicua.
Este modelo de computación ubicua significa básicamente la omnipresencia
de computadores muy pequeños interconectados sin cables que se incorporan
de forma casi invisible a cualquier objeto de uso cotidiano, y usando pequeños
sensores unidos a estos computadores pueden detectar el entorno que les rodea
y tienen capacidades tanto de procesar información como de comunicación.
Una de las posibilidades es el comercio electrónico, el cual está cambiando
la manera que los consumidores, comerciantes y empresas realizan sus transacciones. El comercio electrónico permite comprar, invertir, realizar operaciones
bancarias, vender, distribuir en cualquier lugar en donde se pueda disponer de
conexión a Internet y con la interconexión con las redes sin hilos con Internet
desde cualquier lugar y cualquier momento que se desee.
1.2. COMPUTACIÓN UBICUA O PERVASIVA
3
El uso de teléfonos móviles para el acceso a Internet abre nuevas posibilidades en el comercio electrónico. el m-commerce, involucra tres aspectos
básicos: oferta de los negocios y de servicios en un área circundante al usuario;
información oportuna, georeferenciada mientras el usuario está en movimiento
y posibilidad de completar la transacción en forma inmediata.
1.2.
Computación Ubicua o Pervasiva
Mark Weiser, en Septiembre de 1991, describió su visión de lo que él llamaba computación ubicua, hoy llamada computación pervasiva. La esencia de
su visión era la creación de entornos llenos de computación y de capacidad
de comunicación, todo integrado de forma inapreciable junto a las personas.
La visión de Weiser estaba bastante alejada de su época, entre otras razones
porque no existía la tecnología necesaria para llevarla a cabo. Pero después
de más de una década de progreso en el campo de los dispositivos hardware,
las criticadas ideas de Weiser en 1991 ahora son productos comercialmente
viables:
Ordenadores de bolsillo.
Redes inalámbricas.
Sensores muy avanzados.
Computación “vestible”.
1.2.1.
Principios
Uno de los principales objetivos de la computación ubicua es hacer desaparecer a los dispositivos computacionales haciéndolos situarse en un segundo
plano.
Este objetivo de crear dispositivos que se mezclen en la vida cotidiana hasta
que lleguen a ser indistinguibles supone una potencial revolución que puede
hacer cambiar el modo de vida diario. Las personas se centrarán en las tareas
que deben hacer, no en las herramientas que utilizan, porque se pretende que
esas herramientas pasen desapercibidas.
4
CAPÍTULO 1. INTRODUCCIÓN
El significado de enviar la computación a un “segundo plano” está referido a dos conceptos diferentes pero relacionados. El primero es el significado
literal de que la tecnología de la computación se debe integrar en los objetos,
cosas, tareas y entornos cotidianos. Y la segunda es que esta integración se
debe realizar de forma que la introducción de la computación en estas cosas
u objetos no interfieran con las actividades para las que son usadas, y que
siempre proporcionen un uso más cómodo, sencillo y útil de esos objetos.
Estos objetos cotidianos en los que se integra la tecnología de la computación pasan a tener una serie de propiedades que permiten la creación del
entorno ubicuo buscado.
Algunas de esas propiedades son:
Comunicación entre dispositivos: Todos estos objetos dotados de capacidad de computación también tienen capacidad de comunicación, y no
solo con el usuario, sino con los demás objetos integrados que haya a su
alrededor.
Poseen memoria: Además de poder comunicarse entre ellos e interactuar con los usuarios, estos dispositivos tienen capacidad de memoria y
pueden utilizar esta memoria para una mejor interacción con el resto de
dispositivos.
Son sensibles al contexto: Estos objetos son sensibles al contexto, es
decir, se adaptan a las posibles situaciones, como la situación geográfica,
los dispositivos que hay a su alrededor, las preferencias de los usuarios,
y actúan dependiendo de ese entorno que los rodea.
Son reactivos: Estos objetos reaccionan al ocurrir determinados eventos,
que pueden percibir en su entorno mediante sensores o a través de la
interacción con otros dispositivos.
El computador personal, Internet y la World-Wide Web han influido ya en
muchos aspectos del mundo de los negocios y hay señales evidentes de una amplia convergencia de industrias enteras como la de los medios de comunicación,
entretenimiento, electrónica de consumo, telecomunicaciones y tecnología de
la información. La siguiente ola de la revolución tecnológica puede afectar
directamente y en todos los aspectos de la vida cotidiana.
Durante más de 30 años la conocida ley de Moore, según la cual la funcionalidad de un procesador se duplica cada 18 meses, ha demostrado ser cierta.
1.2. COMPUTACIÓN UBICUA O PERVASIVA
5
Una mejora similar en prestaciones se aplica también a algunos otros parámetros importantes de la tecnología. Se afirma que la tendencia actual continuará
durante unos cuantos años más, lo que hace que toda esta área de desarrollo
sea tan intrigante. Ahora parece que el futuro próximo estará caracterizado
por pequeños computadores que se comunican de forma espontánea, que por
su pequeño tamaño y por su bajo precio, se integrarán en casi todos los objetos
cotidianos. La tecnología de la información por lo tanto se volverá ubicua e
invadirá todos los aspectos de la vida de las personas.
Los teléfonos móviles con acceso a Internet y los Asistentes Digitales Personales (Personal Digital Assistants, PDAs) que se comunican sin cables con
otros dispositivos próximos a ellos son los primeros indicios de la era “post-PC ”
venidera.
Al principio, el principal objetivo es permitir el acceso a la información de
cualquier tipo desde cualquier lugar y en cualquier momento, lo que evidencia los esfuerzos actuales de la industria por integrar aparatos de información
móviles y utilizables en procesos de negocios basados en la Web y escenarios de
comercio electrónico. Sin embargo, a largo plazo, esta continua tendencia tecnológica puede dar lugar a la fusión del computador con los objetos cotidianos
típicos para que se vuelva literalmente invisible.
1.2.2.
Hacia las Cosas Inteligentes e Interconectadas
Hoy, Internet conecta casi todos los computadores del mundo. Desde un
punto de vista tecnológico, se podría describir a la computación ubicua como la posibilidad de conectar todo lo que hay en el mundo a Internet, para
proporcionar información acerca de cualquier cosa, en cualquier momento, en
cualquier sitio. Por decirlo de otra forma, el término computación ubicua significa la omnipresencia de computadores muy pequeños interconectados sin
cables que se incrustan de forma casi invisible en cualquier tipo de objeto
cotidiano. Usando pequeños sensores, estos procesadores incrustados pueden
detectar el entorno que les rodea y equipar a su objeto con capacidades tanto
de procesar información como de comunicación.
6
1.2.3.
CAPÍTULO 1. INTRODUCCIÓN
La Ley de Moore y la Visión de Weiser
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.
Y esta ley se ha venido cumpliendo hasta el día de hoy, la capacidad de cómputo de los procesadores avanza muy rápidamente. Pero no solo la capacidad
de cómputo de los procesadores, sino también la capacidad de almacenamiento, el ancho de banda para las comunicaciones, en resumen, cada poco tiempo
se tiene dispositivos más baratos, más pequeños y más potentes. Y no parece
que se vaya a parar este crecimiento, sino todo lo contrario.
El término computación ubicua , fue acuñado hace más de diez años por
Mark Weiser; ver fig. 1.1 de la pág. 7, 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 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 sus capacidades de procesamiento de la información [20].
Weiser ve el término computación ubicua en un sentido más académico e
idealista centrada en la persona, como una visión de tecnología discreta, mientras que la industria ha acuñado por eso el término computación pervasiva,
o ampliamente difundida 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 [18].
Mark Weiser fue un principal científico de Xerox Parc y ampliamente considerado como el padre de la computación ubicua (conocida también como
ubicomp).
Weiser nació en Harver, un barrio exterior de Chicago, Illinois; estudió
ciencias de la computación y comunicación en la Universidad de Michingan,
1.3. LA SOCIEDAD DE LA INFORMACIÓN Y EL CONOCIMIENTO
7
Figura 1.1: Mark Weiser (1952-1999), el Visionario de la Computación Ubicua
se dedicó a la docencia durante ocho años en ciencias de la computación en la
Universidad de Maryland, Clollege Park.
Mientras Weiser trabajaba para una variedad de compañías relacionadas a
la computación, su trabajo fue en el campo de la computación ubicua mientras
dirigía el laboratorio de ciencias de computación de Parc, al cual se unió en
1987, Se convirtió en la cabeza del laboratorio de ciencias de la computación
en 1988 y el oficial primero de la tecnología en 1996, simultáneamente fue
autor de más de 75 publicaciones.
1.3.
La Sociedad de la Información y el Conocimiento
“Es un hecho de la realidad que los vertiginosos avances que presentan las
TICs (Tecnologías de la Información y de las Comunicaciones) han convertido
al planeta en lo que se ha de llamar la aldea global ” [1], permitiendo que la
sociedad sea conocida como la Sociedad de la Información y el Conocimiento
o Cibersociedad, en la cual la profusión de redes de datos ha permitido interconectar una diversidad de equipos informáticos de diferentes tecnologías de
hardware y de software constituyendo una enorme red mundial multiplataforma, que ha generado una nueva forma de interacción de las personas y de la
empresas, impactando en la educación, las actividades sociales, el comercio,
etc.
8
CAPÍTULO 1. INTRODUCCIÓN
1.3.1.
Definición de Conocimiento
El conocimiento es materia de estudio de distintas disciplinas, tales como
la filosofía, la gestión empresarial, y más recientemente la informática, por ello
se encuentran distintas definiciones del término conocimiento según el punto
de vista e interés de quienes se pronuncien.
Antes de definir conocimiento algunos autores se apoyan a las definiciones
de otros dos conceptos: dato e información.
Dato: antecedente necesario para llegar al conocimiento exacto de una
cosa o para deducir las consecuencias legítimas de un hecho.
Información: acción y efecto de informar e informarse.
Conocimiento: acción y efecto de conocer. Noción, ciencia, sabiduría.
También se puede definir al conocimiento como:
“Es el conjunto de experiencias valores e informaciones dotadas de significado que facilitan el marco idóneo para evaluar nuevas informaciones e
incorporar nuevas experiencias” [11].
1.3.2.
Proceso de Formación del Conocimiento
Comprende los siguientes pasos:
Datos: Hechos y expresiones percibidos, por ejemplo una secuencia de
números, letras.
Información: Datos organizados bajo patrones explicativos; conjunto coherente de datos que transmite un mensaje.
Conocimiento: Información elaborada de modo que comporta significado
y puede ser utilizada en la toma de decisiones.
Sabiduría: Conocimiento reutilizado y proceso de retroalimentación de
los conocimientos.
1.3. LA SOCIEDAD DE LA INFORMACIÓN Y EL CONOCIMIENTO
1.3.3.
9
Clases de Conocimiento
El conocimiento puede dividirse en:
Conocimiento tácito
Conocimiento explícito
El conocimiento tácito es aquel que no está registrado por ningún medio y
que solo se obtiene mediante la adquisición de conocimientos de manera práctica y solo es posible transmitir y recibir consultando directa y específicamente
al poseedor de estos conocimientos.
También el conocimiento tácito es aquel conocimiento que no está registrado (el que se tiene en la cabeza). Es la intuición, opinión, las creencias, la
experiencia.
El conocimiento tácito como la percepción subjetiva o las emociones, no se
puede instrumentalizar y se transmite en determinados contextos y acciones.
El conocimiento tácito es el conocimiento que poseen las personas y que es inseparable de su experiencia y puede ser compartido o intercambiado, mediante
contactos directos.
El conocimiento explícito se trata del conocimiento basado en datos concretos, con lo que sería suficiente su conocimiento para el aprovechamiento
de los mismos, sin necesidad de interpretación alguna, expresándolo de una
manera simple, es “la teoría”.
El conocimiento explícito es el conocimiento tácito codificado y vertido en
algún soporte de almacenamiento y comunicación. Este conocimiento se puede
expresar mediante palabras y números, y es fácil de transmitir. Es un conocimiento formal que puede plasmarse en documentos de una organización tales
como informes, patentes, manuales, imágenes, esquema, software, productos,
diagramas organizativos, etc.
1.3.4.
Ciclo del Conocimiento
Se fundamenta en dos pilares:
• La cadena del conocimiento.
10
CAPÍTULO 1. INTRODUCCIÓN
• La transformación del conocimiento tácito y explícito.
El conocimiento tácito encauzado de forma correcta, genera conocimiento
explícito (ejemplo almacenándolo en una base de datos).
El ciclo de vida del conocimiento depende de la distinción entre conocimiento tácito y conocimiento explícito; (ver fig. 1.2 de la pág. 10). Ambos tipos
de conocimientos son necesarios y se produce una realimentación continua entre ambos.
Comprende la trasformación de:
•
•
•
•
Datos en Información.
Información en conocimiento.
Conocimiento en acciones/decisiones.
La experiencia del conocimiento en sabiduría.
Figura 1.2: La Cadena del Conocimiento
1.3.5.
Características de la Sociedad del Conocimiento
Es una realidad que la nueva sociedad está basada en el conocimiento más
que en la información. El conocimiento es información almacenada por las
personas.
La materia prima es la información, el producto es el conocimiento; ver fig.
1.3 de la pág. 11.
1.3. LA SOCIEDAD DE LA INFORMACIÓN Y EL CONOCIMIENTO 11
Figura 1.3: La Era de la Información
Es dificil predecir cómo será la nueva sociedad y, por lo cual, difícil de
definir con precisión sus características básicas. La nueva sociedad plantea
nuevos requisitos para las personas, que deberán adquirir y mantener una
cultura de la información.
Se puede diferenciar entre una economía de la información y una sociedad
del conocimiento. Un país puede entrar en una economía de la información
mediante un esfuerzo de inversión de equipos y sistemas, o con políticas de
fomento de las redes de comunicación, pero estas características no incluyen
necesariamente el desarrollo de la nueva sociedad que dependerá más de la
existencia de una cultura de la información suficientemente desarrollada.
Es preciso fomentar la creación de redes, equipos y sistemas de información
y favorecer el ingreso de la población en la cultura de la información, a partir
de un pacto social. Este nuevo pacto debería ser plural, uniforme y no dirigido,
diseñado desde la realidad más cercana de los ciudadanos. Los requisitos de la
nueva sociedad plantean la necesidad de realizar un esfuerzo permanente de
adaptación individual y colectiva.
La persona instruída (persona con conocimiento) pasará a ser el nuevo protagonista de la sociedad del conocimiento, que aplica su saber a los problemas
presentes y ayuda a asentar las bases del futuro.
12
CAPÍTULO 1. INTRODUCCIÓN
1.3.6.
Gestión del Conocimiento
La Gestión del Conocimiento corresponde al conjunto de actividades desarrolladas para utilizar, compartir, desarrollar y administrar los conocimientos
que posee una organización y los individuos que en esta trabajan, de manera
de que estos sean encaminados hacia la mejor consecución de sus objetivos.
Inicialmente la gestión del conocimiento se centró exclusivamente en el
tratamiento del documento como unidad primaria, pero actualmente se han
producido grandes avances. Hoy es necesario buscar, seleccionar, analizar y
sintetizar críticamente o de manera inteligente y racional la gran cantidad de
información disponible, con el fin de aprovecharla con el máximo rendimiento
social o personal.
Esta disciplina no es nueva, sino que sus raíces se remontan a la inteligencia artificial, cuyo objetivo final ha sido la sintetización del comportamiento
humano mediante ordenadores.
Las Bases de Conocimiento son depósitos o almacenes de datos (repositorios) del conocimiento del negocio (funciones, reglas, cálculos, informes)
totalmente independiente de la plataforma de ejecución, que mediante tecnologías de inteligencia artificial son capaces de deducir, generar y mantener
automáticamente estructuras normalizadas de bases de datos y programas.
La atención que se está prestando a la gestión del conocimiento está creciendo a una velocidad impresionante. Revistas, diarios de economía y libros
publican innumerable teorías y casos sobre gestión del conocimiento y sus
tópicos.
1.3.7.
Tecnologías de la Gestión del Conocimiento
Las tecnologías de GC deben permitir:
Identificar conocimientos necesarios.
Identificar dónde y quién tiene el conocimiento o si necesita ser creado.
Reunir y capturar el conocimiento encontrado.
Resumir y sintetizar la información.
1.3. LA SOCIEDAD DE LA INFORMACIÓN Y EL CONOCIMIENTO 13
Distribuir la información a distintos niveles.
Actualizar, eliminar y modificar el conocimiento obsoleto.
La Gestión del Conocimiento es la mezcla de los siguiente factores:
Personas: Aquellas que producen y aquellas que utilizan conocimiento
que será la base para la acción.
Contenido: El flujo de datos, información y conocimiento importantes
en el éxito del negocio.
Tecnología: Se refiere a la infraestructura técnica que se encarga de la
captura, almacenamiento y distribución del contenido a aquellas personas que lo necesitan, en el lugar y momento oportuno.
Capítulo 2
Comercio Electrónico
2.1.
Visión Global
Las redes mundiales de información están transformando al mundo y acercando más a la gente a través de la innovación de las comunicaciones mundiales,
lo cual posibilita cambios en todos los ámbitos de la actividad humana, por
ejemplo la competitividad, el empleo y la calidad de vida de las naciones. Con
las nuevas tecnologías, el tiempo y la distancia dejan de ser obstáculos, los
contenidos pueden dirigirse a una audiencia masiva o a un pequeño grupo de
expertos y buscar un alcance mundial o meramente local. Las redes mundiales
de información, como Internet no conoce fronteras.
Internet es un medio de comunicación global, que permite el intercambio
de información entre los usuarios conectados a la red y que conecta a unos 8
millones de servidores encargados de servicios de información y de todas las
operaciones de comunicación y de retransmisión; llega hasta unos 250 millones de usuarios en más de 100 países. Internet ofrece una oportunidad única,
especial y decisiva a organizaciones de cualquier tamaño.
La rápida difusión y el gran interés en el mundo de la informática, ha permitido la creación de tecnología Internet/ Web, una herramienta fundamental
para redes de computadoras y sus usuarios. Internet ofrece un nuevo mercado que define la “economía digital”. Los productores, proveedores de bienes /
servicios y usuarios logran tener acceso y transmisión mundial de la información y esparcimiento en forma sencilla y económica, sea con fines comerciales
15
16
CAPÍTULO 2. COMERCIO ELECTRÓNICO
o sociales. La apertura de mercados es fundamental para el rápido crecimiento del uso de nuevos servicios y la asimilación de tecnologías nuevas. En la
práctica, las empresas están comenzando a usar Internet como un nuevo canal
de ventas, sustituyendo las visitas personales, correo y teléfono por pedidos
electrónicos, ya que gestionar un pedido por Internet cuesta 5 % menos que
hacerlo por vías tradicionales. Nace entonces el comercio electrónico, como
una alternativa de reducción de costos y una herramienta fundamental en el
desempeño empresarial.
Sin embargo, la aparición del comercio electrónico obliga claramente a replantearse muchas de las cuestiones del comercio tradicional, surgiendo nuevos
problemas, e incluso agudizando algunos de los ya existentes. En ese catálogo
de problemas, se plantean cuestiones que van, desde la validez legal de las
transacciones y contratos sin papel, la necesidad de acuerdos internacionales
que armonicen las legislaciones sobre comercio, el control de las transacciones
internacionales, incluido el cobro de impuestos, la protección de los derechos
de propiedad intelectual, la protección de los consumidores en cuanto a publicidad engañosa o no deseada, fraude, contenidos ilegales y uso abusivo de datos
personales, hasta otros provocados por la dificultad de encontrar información
en Internet, comparar ofertas y evaluar la fiabilidad del vendedor y del comprador en una relación electrónica, la falta de seguridad de las transacciones
y medios de pago electrónicos, la falta de estándares consolidados, la proliferación de aplicaciones y protocolos de comercio electrónico incompatibles y la
congestión de Internet [5]
2.2.
Definiciones
“Es la aplicación de la avanzada tecnología de información para incrementar la eficacia de las relaciones empresariales entre socios comerciales”.
“La disponibilidad de una visión empresarial apoyada por la avanzada
tecnología de información para mejorar la eficiencia y la eficacia dentro
del proceso comercial”.
“Es el uso de las tecnologías computacional y de telecomunicaciones que
se realiza entre empresas o bien entre vendedores y compradores, para
apoyar el comercio de bienes y servicios”.
Conjugando estas definiciones se puede decir que el comercio electrónico es
2.3. ORIGEN Y EVOLUCIÓN HISTÓRICA
17
una metodología moderna para hacer negocios que detecta la necesidad de las
empresas, comerciantes y consumidores de reducir costos, así como mejorar la
calidad de los bienes y servicios, además de mejorar el tiempo de entrega de
los bienes o servicios. Por lo tanto no debe seguirse contemplando el comercio electrónico como una tecnología, sino que es el uso de la tecnología para
mejorar la forma de llevar a cabo las actividades empresariales. Ahora bien, el
comercio electrónico se puede entender como cualquier forma de transacción
comercial en la cual las partes involucradas interactúan de manera electrónica
en lugar de hacerlo de la manera tradicional con intercambios físicos o trato
físico directo.
Actualmente la manera de comerciar se caracteriza por el mejoramiento
constante en los procesos de abastecimiento, y como respuesta a ello los negocios a nivel mundial están cambiando tanto su organización como sus operaciones. El comercio electrónico es el medio de llevar a cabo dichos cambios
dentro de una escala global, permitiendo a las compañías ser más eficientes
y flexibles en sus operaciones internas, para así trabajar de una manera más
cercana con sus proveedores y estar más pendiente de las necesidades y expectativas de sus clientes. Además permiten seleccionar a los mejores proveedores
sin importar su localización geográfica para que de esa forma se pueda vender
a un mercado global [3].
2.3.
Origen y Evolución Histórica
El comercio, actividad ancestral del ser humano, ha evolucionado de muchas
maneras. Pero su significado y su fin en siempre el mismo. Según el diccionario
consultor de economía, el comercio “ es el proceso y los mecanismos utilizados,
necesarios para colocar las mercancías, que son elaboradas en las unidades de
producción, en los centros de consumo en donde se aprovisionan los consumidores, último eslabón de la cadena de comercialización. Es comunicación y
trato”.
En líneas generales, y con un sentido amplio, el comercio implica la investigación de mercado con el fin de interpretar los deseos del consumidor, la
publicidad que anuncia la existencia del producto, la posibilidad de adquirirlo,
y en qué lugar, a la vez que se utilizan los métodos de persuasión, la venta al
por menor y finalmente, la adquisición por parte del público.
Según lo expuesto, a través de los años han aparecido diferentes formas
18
CAPÍTULO 2. COMERCIO ELECTRÓNICO
o tipos de comercio. A principio de los años 1920 en Los Estados Unidos
apareció la venta por catálogo, impulsado por las grandes tiendas de mayoreo.
Este sistema de venta, revolucionario para la época, consiste en un catálogo con
fotos ilustrativas de los productos a vender. Este permite tener mejor llegada
a las personas, ya que no hay necesidad de tener que atraer a los clientes hasta
los locales de venta. Esto posibilitó a las tiendas poder llegar a tener clientes en
zonas rurales, que para la época que se desarrolló dicha modalidad existía una
gran masa de personas afectadas al campo. Además, otro punto importante
de esto es que los potenciales compradores pueden escoger los productos en
la tranquilidad de sus hogares, sin la asistencia o presión, según sea el caso,
de un vendedor. La venta por catálogo tomó mayor impulso con la aparición
de las tarjetas de crédito; además de determinar un tipo de relación de mayor
anonimato entre el cliente y el vendedor.
A mediados de 1980, con la ayuda de la televisión, surgió una nueva forma
de venta por catálogo, también llamada venta directa. De esta manera, los
productos son mostrados con mayor realismo, y con la dinámica de que pueden
ser exhibidos resaltando sus características. La venta directa es concretada
mediante un teléfono y usualmente con pagos de tarjetas de crédito.
A principio de los años 1970, aparecieron las primeras relaciones comerciales que utilizaban una computadora para transmitir datos. Este tipo de intercambio de información, sin ningún tipo de estándar, trajo aparejado mejoras
de los procesos de fabricación en el ámbito privado, entre empresas de un mismo sector. Es por eso que se trataron de fijar estándares para realizar este
intercambio, el cual era distinto con relación a cada industria. Un ejemplo
conocido de esto es el caso del Supermercado mayorista Amigazo. A mediados
de los años 1980 esta empresa desarrolló un sistema para procesar ordenes de
pedido electrónicas, por el cual los clientes de esta empresa emitían ordenes de
pedido desde sus empresas y ésta era enviada en forma electrónica. Esta implementación trajo importantes beneficios a Amigazo, ya que se eliminaron gran
parte de errores de entregas y se redujeron los tiempos de procesamiento de
dichas ordenes. El beneficio fue suficiente como para que la empresa Amigazo,
instale un equipo a sus clientes habituales.
Por otra parte, en el sector publico el uso de estas tecnologías para el intercambio de datos tuvo su origen en las actividades militares. A fines de los
años 1970 el Ministerio de Defensa de Estados Unidos inició un programa de
investigación destinado a desarrollar técnicas y tecnologías que permitiesen
intercambiar de manera transparente paquetes de información entre diferentes redes de computadoras; el proyecto encargado de diseñar esos protocolos
2.4. VENTAJAS DEL COMERCIO ELECTRÓNICO
19
de comunicación se llamo “Internetting Project” (de este proyecto de investigación proviene el nombre del popular sistema de redes), del que surgieron
el TCP/IP (Transmission Control Protocol) / (Internet Protocol) que fueron
desarrollados conjuntamente por Vinton Cerf y Robert Kahn y son los que
actualmente se emplean en Internet.
A través de este proyecto se logró estandarizar las comunicaciones entre
computadoras y en 1989 aparece un nuevo servicio, la WWW (World Wide
Web, Telaraña Global), cuando un grupo de investigadores en Ginebra, Suiza,
ideó un método a través del cual empleando la tecnología de Internet enlazaban documentos científicos provenientes de diferentes computadoras, a los que
podían integrarse recursos multimedia (texto, gráficos, música, entre otros). Lo
más importante de la WWW es su alto nivel de accesibilidad, que se traduce
en los escasos conocimientos de informática que exige de sus usuarios.
El desarrollo de estas tecnologías y de las telecomunicaciones ha hecho que
los intercambios de datos crezcan a niveles extraordinarios, simplificándose cada vez más y creando nuevas formas de comercio, y en este marco se desarrolla
el Comercio Electrónico [9].
2.4.
Ventajas del Comercio Electrónico
2.4.1.
Ventajas para los Clientes
Permite el acceso a más información.
La naturaleza interactiva del Web y su entorno hipertexto permiten búsquedas profundas no lineales que son iniciadas y controladas por los clientes,
por lo tanto las actividades de mercadeo mediante el Web están más impulsadas por los clientes que aquellas proporcionadas por los medios tradicionales.
Facilita la investigación y comparación de mercados.
La capacidad del Web para acumular, analizar y controlar grandes cantidades de datos especializados permite la compra por comparación y acelera el
proceso de encontrar los artículos.
Abarata los costos y precios.
20
CAPÍTULO 2. COMERCIO ELECTRÓNICO
Conforme aumenta la capacidad de los proveedores para competir en un
mercado electrónico abierto se produce una baja en los costos y precios, de
hecho tal incremento en la competencia mejora la calidad y variedad de los
productos y servicios.
2.4.2.
Ventajas para las Empresas
Mejoras en la Distribución.
El Web ofrece a ciertos tipos de proveedores (industria del libro, servicios
de información, productos digitales) la posibilidad de participar en un mercado interactivo, en el que los costos de distribución o ventas tienden a cero.
Por poner un ejemplo, los productos digitales (software) pueden entregarse
de inmediato, dando fin de manera progresiva al intermediarismo. También
compradores y vendedores se contactan entre sí de manera directa, eliminando así restricciones que se presentan en tales interacciones. De alguna forma
esta situación puede llegar a reducir los canales de comercialización, permitiendo que la distribución sea eficiente al reducir sobrecosto derivado de la
uniformidad, automatización e integración a gran escala de sus procesos de
administración. De igual forma se puede disminuir el tiempo que se tardan
en realizar las transacciones comerciales, incrementando la eficiencia de las
empresas.
Comunicaciones de Mercadeo.
Actualmente, la mayoría de las empresas utiliza el Web para informar a
los clientes sobre la compañía, a parte de sus productos o servicios, tanto
mediante comunicaciones internas como con otras empresas y clientes. Sin
embargo, la naturaleza interactiva del Web ofrece otro tipo de beneficios conducentes a desarrollar las relaciones con los clientes. Este potencial para la
interacción facilita las relaciones de mercadeo así como el soporte al cliente,
hasta un punto que nunca hubiera sido posible con los medios tradicionales.
Un sitio Web se encuentra disponible las 24 horas del día bajo demanda de los
clientes. Las personas que realizan el mercadeo pueden usar el Web para retener a los clientes mediante un diálogo asincrónico que sucede a la conveniencia
de ambas partes. Esta capacidad ofrece oportunidades sin precedentes para
ajustar con precisión las comunicaciones a los clientes individuales, facilitando
que éstos soliciten tanta información como deseen. Además, esto permite que
2.4. VENTAJAS DEL COMERCIO ELECTRÓNICO
21
los responsables del área de mercadeo obtengan información relevante de los
clientes con el propósito de servirles de manera eficaz en las futuras relaciones
comerciales. Los sitios Web más sencillos involucran a los clientes mediante
botones para enviar mensajes de correo electrónico a la empresa. En otros
centros más sofisticados, los clientes rellenan formularios, con el objeto de que
desarrollen una relación continua con la compañía, cuyo fin es informar tanto
sobre los productos y servicios como obtener información sobre las necesidades
que los clientes tienen sobre los mismos. De esta manera, se obtiene publicidad, promoción y servicio al cliente a la medida. El Web también ofrece la
oportunidad de competir sobre la base de la especialidad, en lugar de hacerlo
mediante el precio, ya que desde el punto de vista del mercadeo, rara vez es
deseable competir tan sólo en función del precio. El mercadeo intenta satisfacer las necesidades de los clientes en base a los beneficios que buscan, lo que
quiere decir que el precio depende de la valorización del cliente, y no de los costos; tales oportunidades surgen cuando lo ofrecido se diferencia por elementos
de mercadeo distintos al precio, lo cual produce beneficios cargados de valor,
como por ejemplo, la comodidad producida por el reparto directo mediante la
distribución electrónica de software.
Beneficios Operacionales.
El uso empresarial del Web reduce errores, tiempo y sobrecostos en el
tratamiento de la información. Los proveedores disminuyen sus costos al acceder de manera interactiva a las bases de datos de oportunidades de ofertas,
enviar éstas por el mismo medio, y por último, revisar de igual forma las concesiones; además, se facilita la creación de mercados y segmentos nuevos, el
incremento en la generación de ventajas en las ventas, la mayor facilidad para
entrar en mercados nuevos, especialmente en los geográficamente remotos, y
alcanzarlos con mayor rapidez. Todo esto se debe a la capacidad de contactar
de manera sencilla y a un costo menor a los clientes potenciales, eliminando
demoras entre las diferentes etapas de los subprocesos empresariales.
22
CAPÍTULO 2. COMERCIO ELECTRÓNICO
2.5.
Tipos de Comercio Electrónico
2.5.1.
B2B (Business-to-Business)
Definición
Es la transmisión de información referente a transacciones comerciales electrónicamente, normalmente utilizando tecnología como la Electronic Data Interchange (EDI), presentada a finales de los años 1970 para enviar electrónicamente documentos tales como pedidos de compra o facturas.
Más tarde pasó a incluir actividades que serían más precisamente denominadas “Comercio en la Red”, como la compra de bienes y servicios a través
de la World Wide Web vía servidores seguros (véase HTTPS, un protocolo de
servidor especial que cifra la realización confidencial de pedidos para la protección de los consumidores y los datos de la organización) empleándose servicios
de pago electrónico como autorizaciones para tarjeta de crédito o monederos
electrónicos.
El B2B ha venido impulsado también por la creación de portales para
agrupar compradores. Así, encontramos, por ejemplo portales de empresas de
automoción, alimentación, químicas u hostelería, entre otros. Las compañías
se agrupan para crear dichas páginas aglutinando fuerzas lo que les permite
negociar en mejores condiciones. El mantenimiento de las páginas se produce
pidiendo un canon por cotizar o cobrando a los socios una comisión del negocio
realizado en el portal.
En términos generales la expresión “business to business” no se encuentra
limitada al entorno electrónico, sino que hace una referencia de exclusión para
destacar el origen y destino de una actividad que, por antagonismo no se
refiere ni al “B2C”, “B2G”, etc. Solo por establecer un ejemplo de referencia, el
“B2B” aplica a la relación entre un fabricante y el distribuidor de un producto
y también a la relación entre el distribuidor y el comercio minorista... pero NO,
a la relación entre el comerciante y su cliente final (consumidor), relación esta
última que quedaría ajustada entonces, al entorno del “B2C” (Business to
Consumer).
2.5. TIPOS DE COMERCIO ELECTRÓNICO
23
Ventajas
El comercio electrónico entre empresas es una utilidad más que aporta
Internet y que ha experimentado un gran auge en los últimos años.
Algunas de las ventajas que aporta el B2B para las empresas implicadas
son:
Rapidez y seguridad de las comunicaciones.
Integración directa de los datos de la transacción en los sistemas informáticos de la empresa.
Posibilidad de recibir mayor número de ofertas o demandas, ampliando
la competencia.
Despersonalización de la compra con lo que se evitan posibles tratos de
favor.
Abaratamiento del proceso: menos visitas comerciales, proceso de negociación más rápido, etc. Por tanto, los compradores pueden pedir una
reducción de precios en virtud del menor coste de gestión, o los vendedores incrementar su margen comercial.
2.5.2.
B2E (Business to Employe)
Definición
Es la relación comercial que se establece entre una empresa y sus propios
empleados. Por ejemplo, una empresa aérea puede ofrecer paquetes turísticos
a sus empleados a través de su propia intranet y, además de sus ofertas puede
incluir las de compañías aéreas asociadas.
El B2E es una nueva demostración de las muchas aplicaciones que ofrece
el comercio electrónico. Pero no sólo eso, además el concepto se amplía a la
propia gestión remota por parte del empleado de parte de sus responsabilidades
dentro de los procesos de negocio de la empresa. Esto podría incluir facturación
de comisiones de ventas, introducción de gastos de desplazamiento, etc. Es
en definitiva un pequeño portal para la utilización de algunos recursos de
la empresa por parte de los empleados de la misma, tanto en su que hacer
cotidiano, como en la vida privada.
24
CAPÍTULO 2. COMERCIO ELECTRÓNICO
Además existen diferentes políticas que se pueden adecuar a este modelo
de negocio.
Ventajas
Reducción de costes y tiempo en actividades burocráticas.
Formación en línea.
Mejora de la información interna.
Equipos de colaboración en un entorno web.
Agilización de la integración del nuevo profesional en la empresa.
Servicios intuitivos de gestión de la información.
Soporte para gestión del conocimiento.
Comercio electrónico interno.
Motivador, potenciador de la implicación del profesional. Fidelización
del empleado.
2.5.3.
B2C (Business-to-Consumer)
Definición
Se refiere a la estrategia que desarrollan las empresas comerciales para
llegar directamente al cliente o usuario final.
Un ejemplo de transacción B2C puede ser la compra de un par de zapatos
en una zapatería de barrio, por un individuo. Sin embargo, todas las transacciones necesarias para que ese par de zapatos esté disponible para la venta en
el establecimiento comercial, compra de la piel, suela, cordones, etc., así como
la venta de zapatos del fabricante al comerciante forman parte de lo que se
llama B2B.
A pesar del sentido amplio de la expresión B2C, en la práctica, suele
referirse a las plataformas virtuales utilizadas en el comercio electrónico para
comunicar empresas (vendedoras) con particulares (compradores). Por eso, el
uso más frecuente es comercio electrónico B2C.
2.5. TIPOS DE COMERCIO ELECTRÓNICO
25
Ventajas
La compra suele ser más rápida y más cómoda.
Las ofertas y los precios están siempre actualizados.
Los centros de atención al cliente están integrados en la web.
Las telecomunicaciones por banda ancha han mejorado la experiencia de
compra.
Tipos de Empresas en Comercio Electrónico B2C
Intermediarios on-line.
Los intermediarios on-line son compañías que facilitan las transacciones
entre compradores y vendedores, como contraprestación económica reciben un
porcentaje del valor de la transacción. La mayoría de las transacciones se realizan a través de estos intemediarios, que pueden ser brokers o “informediarios”,
genéricos o especializados, respectivamente.
Modelos basados en la publicidad.
En una publicidad basada en el sistema, las empresas tienen sitios web
de un inventario, que venden a las partes interesadas. Existen dos filosofías
rectores para esta práctica: de alto tráfico o de nicho. Los anunciantes tienen
un alto tráfico de enfoque al intentar llegar a un público más amplio. Estos
anunciantes están dispuestos a pagar una prima por un sitio que puede ofrecer un número elevado, por ejemplo, anuncios en Yahoo! o Google. Cuando los
anunciantes están tratando de llegar a un grupo más pequeño de compradores,
se llevan a un nicho. Estos compradores están bien definidos, claramente identificados, y deseable. El nicho de enfoque se centra en la calidad, no cantidad.
Por ejemplo, un anuncio de WSJ.com.
Modelos basados en la comunidad.
En una comunidad basada en el sistema, las empresas permiten a los usuarios en todo el mundo el acceso a interactuar unos con otros sobre la base
de áreas similares de interés. Estas empresas ganan dinero por medio de la
acumulación de leales usuarios y la orientación con la publicidad.
26
CAPÍTULO 2. COMERCIO ELECTRÓNICO
Modelos basados en tarifas.
En un sistema de pago basado en el sistema, una empresa cobra una tarifa
de suscripción para ver su contenido. Existen diversos grados de restricción
de contenidos y tipos de suscripción que van desde las tasas a tanto alzado a
pay-as-you-go.
2.5.4.
B2B2C
Designa una modalidad de comercio electrónico que agrupa el business to
business y el business to consumer . Se trata de una versión más sofisticada de
lo que podría ser la simple superposición de los dos negocios. Con la misma
plataforma online y la misma plataforma de distribución se trata de crear la
cadena de valor completa desde que un producto o servicio se fabrica hasta
que llega al consumidor final.
El B2B2C, también se emplea en algunos casos para definir a los mercados
llamados “mercados diagonales” en Internet, plataformas en línea (online) que
atienden tanto a transacciones comerciales entre negocios como entre negocios
y consumidores finales. Por lo general estos mercados diagonales suelen ser proporcionados por fabricantes o mayoristas que proporcionan una diferenciación
de precios y condiciones comerciales según se trate de una compra hacia un
distribuidor o minorista (otra empresa) o un consumidor final o ciudadano.
2.6.
M-Commerce (Comercio Electrónico a Través
de Dispositivos Móviles)
El comercio electrónico se está transformando lentamente en m-commerce,
un nuevo modelo de comercio on-line en el cual los teléfonos móviles, u otros
artefactos wireless (inalámbricos), jugarán un papel muy importante. Todos
los carriers importantes del mundo están desarrollando planes sobre este paradigma.
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
2.6. M-COMMERCE
27
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.
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.
Comercio Electrónico en la Sociedad del Conocimiento
A mediados de los noventa se inició la utilización de Internet con fines
comerciales, en ese momento nadie pudo predecir su impacto en la economía.
Se puede afirmar que Internet no es solo un canal de transmisión o comunicación de información, sino que lleva implícito un cambio cultural importante.
Por lo tanto la trascendencia de la economía digital permite hablar de un
nuevo marco de actuación, de una génesis parametral que traslada el desarrollo
organizativo a otro nivel. La economía digital es una economía de cambios
importantes, tanto en la forma de entender la gestión dentro y fuera de las
empresas como en la ampliación más allá de los límites nacionales para el
desarrollo de su actividad.
Efectivamente, la personalización de la relación con el cliente como la
necesidad de ofrecer valor, interactividad y el trato directo e inmediato constituyen elementos diferenciados de primer nivel, siendo uno de los ejemplos
más sólidos en la relación cliente-empresa, el B2C.
28
CAPÍTULO 2. COMERCIO ELECTRÓNICO
2.7.
Comercio Electrónico en la Sociedad del Conocimiento
A mediados de los noventa se inició la utilización de Internet con fines
comerciales, en ese momento nadie pudo predecir su impacto en la economía.
Se puede afirmar que Internet no es solo un canal de transmisión o comunicación de información, sino que lleva implícito un cambio cultural importante.
Por lo tanto la trascendencia de la economía digital permite hablar de un
nuevo marco de actuación, de una génesis parametral que traslada el desarrollo
organizativo a otro nivel. La economía digital es una economía de cambios
importantes, tanto en la forma de entender la gestión dentro y fuera de las
empresas como en la ampliación más allá de los límites nacionales para el
desarrollo de su actividad.
Efectivamente, la personalización de la relación con el cliente como la
necesidad de ofrecer valor, interactividad y el trato directo e inmediato constituyen elementos diferenciados de primer nivel, siendo uno de los ejemplos
más sólidos en la relación cliente-empresa, el B2C.
2.8.
Riesgos, Usos y Tecnología
2.8.1.
Riegos
Como medio comercial el Web presenta las siguientes deficiencias, derivadas
tanto de su tecnología como de su naturaleza interactiva:
Entorno empresarial y tecnológico cambiante
Empresas y clientes desean tener flexibilidad para cambiar, según su voluntad, de socios comerciales, plataformas y redes. No es posible evaluar el
costo de esto, pues depende del nivel tecnológico de cada empresa, así como
del grado deseado de participación en el comercio electrónico. Como mínimo
una empresa necesitará una computadora personal con sistema operativo Windows o Machintosh, un módem, una suscripción a un proveedor de servicios
de Internet, una línea telefónica. Una compañía que desee involucrarse más,
2.8. RIESGOS, USOS Y TECNOLOGÍA
29
deberá prepararse para introducir el comercio electrónico en sus sistemas de
compras, financieros y contables, lo cual implicará el uso de un sistema para
el intercambio electrónico de datos con sus proveedores y/o una intranet con
sus diversas sedes.
Privacidad y seguridad
La mayoría de los usuarios no confía en el Web como canal de pago. En
la actualidad, las compras se realizan utilizando el número de la tarjeta de
crédito, pero aún no es seguro introducirlo en Internet sin conocimiento alguno. Cualquiera que transfiera datos de una tarjeta de crédito mediante el
Web, no puede estar seguro de la identidad del vendedor. Análogamente, éste
no lo está sobre la del comprador. Quien paga no puede asegurarse de que
su número de tarjeta de crédito no sea recogido y sea utilizado para algún
propósito malicioso; por otra parte, el vendedor no puede asegurar que el
dueño de la tarjeta de crédito rechace la adquisición. Resulta irónico que ya
existan y funcionen correctamente los sistemas de pago electrónico para las
grandes operaciones comerciales, mientras que los problemas se centren en las
operaciones pequeñas, que son mucho más frecuentes.
Cuestiones legales, políticas y sociales
Existen algunos aspectos abiertos en torno al comercio electrónico:
-
Validez de la firma electrónica.
• No repudio.
• Legalidad de un contrato electrónico.
• Violaciones de marcas y derechos de autor.
• Pérdida de derechos sobre las marcas.
• Pérdida de derechos sobre secretos comerciales y responsabilidades.
• Por otra parte, deben considerarse las leyes, políticas económicas y
censura gubernamentales.
30
CAPÍTULO 2. COMERCIO ELECTRÓNICO
2.8.2.
Usos
El comercio electrónico puede utilizarse en cualquier entorno en el que se
intercambien documentos entre empresas: compras o adquisiciones, finanzas,
industria, transporte, salud, legislación y recolección de ingresos o impuestos.
Ya existen compañías que utilizan el comercio electrónico para desarrollar los
aspectos siguientes:
Creación de canales nuevos de mercadeo y ventas.
Acceso interactivo a catálogos de productos, listas de precios y folletos
publicitarios.
Venta directa e interactiva de productos a los clientes.
Soporte técnico ininterrumpido, permitiendo que los clientes encuentren
por sí mismos, y fácilmente, respuestas a sus problemas mediante la
obtención de los archivos y programas necesarios para resolverlos.
Mediante el comercio electrónico se intercambian los documentos de las
actividades empresariales entre socios comerciales. Los beneficios que se obtienen en ello son: reducción del trabajo administrativo, transacciones comerciales más rápidas y precisas, acceso más fácil y rápido a la información, y
reducción de la necesidad de reescribir la información en las computadoras.
Los tipos de actividad empresarial que podrían beneficiarse mayormente de la
incorporación del comercio electrónico, son:
Sistemas de reservas. Centenares de agencias dispersas utilizan una base
de datos compartida para acordar transacciones.
Existencias comerciales. Aceleración a nivel mundial de los contactos
entre mercados de existencias.
Elaboración de pedidos. Posibilidad de referencia a distancia o verificación por parte de una entidad neutral.
Seguros. Facilita la captura de datos.
Empresas que suministran a fabricantes. Ahorro de grandes cantidades
de tiempo al comunicar y presentar inmediatamente la información que
intercambian.
2.9. TIPOS DE RELACIONES, CAMBIOS Y EFECTOS
2.8.3.
31
Teconolgías que emplea
El comercio electrónico utiliza un amplio rango de tecnologías como son:
Intercambio Electrónico de Datos (Electronic Data Interchange).
Correo Electrónico (E-mail o Electronic Mail).
Transferencia Electrónica de Fondos (EFT- Electronic Funds Transfer) .
Aplicaciones Internet: Web, News, Gopher, Archie.
Aplicaciones de Voz: Buzones, Servidores.
Transferencia de Archivos.
Diseño y Fabricación por Computadora (CAD/CAM).
Multimedia.
Tableros Electrónicos de Publicidad.
Videoconferencia.
2.9.
Tipos de Relaciones, Cambios y Efectos
2.9.1.
Tipos de Relaciones que Pueden Presentarse
El comercio electrónico es un método contemporáneo para la transacción
empresarial que enfoca la necesidad percibida, tanto por las empresas como
por sus clientes, de disminuir los costos de los bienes y servicios, manteniendo la cantidad e incrementando la velocidad de entrega. Las actividades de
manejo de la información que se realizan en el comercio electrónico mediante
transacciones empresariales pueden clasificarse en las siguientes categorías:
Transacciones entre una empresa y sus clientes mediante una red pública
de telecomunicaciones (teléfono + módem) con el propósito de realizar
compras desde el hogar (“home shopping”), o el banco en su casa (“home
banking”) utilizando técnicas de cifrado para manejar los aspectos de
seguridad y dinero electrónico.
32
CAPÍTULO 2. COMERCIO ELECTRÓNICO
Transacciones con socios comerciales usando EDI.
Transacciones para la obtención de información: investigación de mercados utilizando exploradores de códigos de barras, tratamiento de información para la toma de decisiones directivas o la solución de problemas
organizativos, y la manipulación de información para la organización de
operaciones, como la administración de la cadena de proveedores de una
empresa.
Transacciones para la distribución de información con clientes potenciales, tales como mercadeo, publicidad, y ventas interactivas.
La conectividad entre los participantes es una cuestión esencial para la
viabilidad del comercio electrónico, e Internet lo consigue a un costo bajo.
2.9.2.
Cambios en las Empresas
El continuo avance en el mejoramiento de la infraestructura de las telecomunicaciones ha proporcionado los medios para el intercambio casi instantáneo
de los datos. El comercio electrónico hace uso de estos flujos de datos de una
forma eficaz. El intercambio eficiente de la información determina el éxito de
una empresa; cuando se logra asegurar que el personal de una compañía consume más tiempo en la producción o venta de productos y servicios, en lugar
de reprocesar innecesariamente los datos, se puede decir que ha iniciado la
optimización de su potencial.
Internet ha demostrado que se está viviendo en una comunidad global,
esto quiere decir que no importa las diferencias de horario, ni la ubicación
geográfica, lo que implica que la actividad empresarial puede realizarse con
cualquier persona y en cualquier parte del mundo de manera instantánea.
Esto significa que las empresas deben replantear sus estrategias empresariales,
sean cuales fueran sus objetivos: ampliación del mercado, obtención de bienes
por parte de proveedores nuevos, externalización de servicios (“outsourcing”),
o búsquedas de nuevas alianzas.
El comercio electrónico se introduce en las empresas en tres fases:
Sustitución de las operaciones manuales basadas en papel por alternativas electrónicas.
2.9. TIPOS DE RELACIONES, CAMBIOS Y EFECTOS
33
Replanteamiento y simplificación de los flujos de información.
Uso novedoso y dinámico de los flujos de información.
La sustitución de los sistemas basados en papel, tanto dentro de una empresa, como entre ellas, produce pocos beneficios reales. Es cierto que reduce
los costos administrativos y mejora el nivel de precisión en el intercambio de
datos, pero no aborda las cuestiones relacionadas con que las actividades comerciales se hagan eficientemente a la primera. Las aplicaciones del comercio
electrónico ayudan a reformar las maneras de realizar las actividades comerciales, y con frecuencia, actúan como un catalizador para que las empresas
utilicen la reingeniería de procesos empresariales.
2.9.3.
Efectos
A continuación se mencionan algunas consecuencias derivadas del desarrollo del comercio electrónico:
Empresas virtuales.
Es la oportunidad para utilizar socios comerciales externos sin una ubicación física, pues se establece una relación basada en transacciones electrónicas.
Los vendedores pequeños acceden al mercado global.
Tradicionalmente estos mercados que tan sólo han estado abiertos para las
multinacionales, se vuelven accesibles a las compañías más pequeñas debido a
la escasa cantidad de recursos necesarios para funcionar en el extranjero.
Transformación de tiendas de venta al menudeo.
El crecimiento de las compras desde el hogar y de la venta directa por parte
de los fabricantes provocará una disminución en los precios, y en consecuencia,
una reducción de las comisiones.
34
CAPÍTULO 2. COMERCIO ELECTRÓNICO
Presión sobre el servicio al cliente, el ciclo de desarrollo y los costos.
Aumentará la necesidad de la entrega rápida y directa. La cadena de valor
será cada vez menos tolerante con la necesidad de inventarios y almacenamiento. Será inevitable el incremento de la competencia, así como de la necesidad
de dinero electrónico.
2.10.
Los Intermediarios
El advenimiento de infraestructuras ubicuas de información ha provocado predicciones respecto a que uno de los efectos de los mercados será la
eliminación de los intermediarios, basándose en la capacidad de las redes de
telecomunicaciones. Sin embargo, la realidad puede ser bien distinta puesto
que las tecnologías de la información no sólo reforzarán la posición de los intermediarios tradicionales, sino que además promoverán la aparición de nuevas
generaciones de intermediarios. En un mercado tradicional puede considerarse
que los intermediarios proporcionan un servicio de coordinación, sin embargo,
es necesario definir con mayor precisión esta actividad para identificar cómo
afectará Internet a esta tarea:
Búsqueda y Evaluación.
Un cliente que elige una tienda especializada sobre unos grandes almacenes
escoge implícitamente entre dos alternativas de búsqueda y criterios de evaluación. En cualquier caso el cliente delega una parte del proceso de búsqueda del
producto en el intermediario, quien también suministra un control de calidad
y evaluación del producto.
Valoración de Necesidades y Emparejamiento de Necesidades.
En muchos casos no es razonable asumir que los clientes posean el conocimiento individual necesario para evaluar fidedignamente sus necesidades e
identificar los productos que las cumplirán eficazmente. Por lo tanto los intermediarios pueden suministrar un servicio valioso ayudando a sus clientes a
determinar sus necesidades. Proporcionando información no sólo del producto, sino sobre su utilidad, e incluso proporcionando la asistencia explícita de
2.10. LOS INTERMEDIARIOS
35
un experto para identificar las necesidades de los clientes, los intermediarios
proporcionan a los clientes servicios sobre la evaluación de los productos.
Manejo de los Riesgos del Cliente.
Los clientes no siempre tienen la información perfecta y por tanto pueden
comprar productos que no satisfagan sus necesidades, en consecuencia en cualquier transacción al detalle el cliente se enfrenta con ciertos riesgos. Estos
pueden ser el resultado de una incertidumbre en las necesidades del cliente,
un fallo en la comunicación con respecto a las características, o un fallo intencionado o accidental del fabricante al proporcionar un producto adecuado.
Otro servicio que proporcionan muchos intermediarios está relacionado con
el manejo de este riesgo, suministrando a los clientes la opción de devolver
los productos defectuosos o proporcionando garantías adicionales, los intermediarios reducen la exposición de los clientes a los riesgos asociados con los
errores de los fabricantes. Si el cliente tiene la opción de devolver los productos
por cualquier motivo, el intermediario reduce más la exposición del cliente a
los riesgos asociados con los fallos de los clientes para valorar las necesidades
con precisión y compararlas con las características del producto. Por lo tanto,
eligiendo un intermediario que proporciona estos servicios, los clientes están
comprando implícitamente al intermediario un seguro.
Distribución de Productos.
Muchos intermediarios juegan un papel importante en la producción, envasado y distribución de bienes. La distribución es un factor crítico en la
determinación del valor de la mayoría de los bienes de consumo. Por ejemplo
un litro de gasolina a mil Km del hogar de un cliente frente al que está a un
Km es significativamente diferente, debido principalmente a los servicios de
distribución proporcionados.
Difusión de Información sobre Productos.
Se trata de que el intermediario informe a los clientes sobre la existencia y
las características de los productos. Los fabricantes confían en una variedad de
intermediarios, incluyendo a las tiendas de venta al menudeo, casas de ventas
por correo / catálogo, agencias de publicidad y puntos de venta para informar
a los clientes.
36
CAPÍTULO 2. COMERCIO ELECTRÓNICO
Influencia sobre las Compras.
A fin de cuentas, a los fabricantes no sólo les interesa proporcionar información a los clientes, sino vender productos. Además de los servicios de
información, los fabricantes también valoran los servicios relacionados con la
influencia en las elecciones de compra de los clientes: la colocación de los
productos por parte de los intermediarios puede influir en la elección de los
mismos, como poder asesorarse explícitamente mediante un vendedor. Esquemas para la compensación de comisiones, pagos por el espacio en estanterías
y descuentos especiales son formas en las que los fabricantes ofrecen servicios
de asesorías de compras a los intermediarios.
Suministro de Información.
Esta información que es recogida por intermediarios especializados como
empresas de investigación de mercados, es utilizada por los fabricantes para
evaluar nuevos productos y planificar la producción de los existentes.
Manejo de los Riesgos del Fabricante.
El fraude y robo realizado por los clientes es un problema que tradicionalmente ha sido tratado por los detallistas e intermediarios crediticios. En el
pasado, estos intermediarios han proporcionado sistemas y políticas para limitar este riesgo. Cuando no podía eliminarse, eran los intermediarios quienes
afrontaban la exposición a este riesgo.
Integración de las Necesidades de los Clientes y de los Fabricantes.
Los intermediarios deben ocuparse de problemas que surgen cuando las
necesidades de los clientes chocan con las de los fabricantes. En un entorno
competitivo, un intermediario satisfactoriamente integrado proporciona un haz
de servicios que equilibra las necesidades de los clientes y de los fabricantes de
una forma aceptable para ambos.
2.10. LOS INTERMEDIARIOS
2.10.1.
37
Tipos de Intermediarios
A continuación se identifican diversos tipos de intermediarios basados en
Internet:
Directorios.
Ayudan a los clientes a encontrar productos clasificando instalaciones Web
y proporcionando menús estructurados para facilitar la navegación. En la actualidad son gratuitos, pero en el futuro podrían ser de pago. Existen tres
tipos de directorios:
- Generales:
Como por ejemplo, Yahoo que proporciona un catálogo general
de una gran variedad de diferentes sitios Web. Habitualmente existe
un esquema para organizar y elegir los sitios que serán incluidos.
Estas instalaciones suelen soportar “browsing” así como búsqueda
del catálogo mediante palabras clave.
• Comerciales:
•
Como El Indice que se centra en proporcionar catálogos de sitios
comerciales. No proporcionan infraestructura o servicios de desarrollo
para los fabricantes, sino que tan sólo actúan como un directorio de
instalaciones existentes. También pueden suministrar información sobre
una área comercial específica, con frecuencia a empresas que no tienen
Web. Estos intermediarios son equivalentes a los editores de guías en
papel.
• Especializados:
Están orientados a temas, y son incluso tan sencillos como
una página creada por una persona interesada en un tema. Estas
páginas pueden suministrar al cliente información sobre un bien o
fabricante en particular.
Servicios de Búsqueda.
Similares a AltaVista, proporcionan a los usuarios capacidades para realizar búsquedas basadas en palabras clave sobre grandes bases de datos de
páginas o instalaciones Web.
38
CAPÍTULO 2. COMERCIO ELECTRÓNICO
Centros comerciales.
Son instalaciones que proporcionan una infraestructura al fabricante o al
detallista a cambio de una cuota. Pueden estar compuestos de una gran variedad de tiendas que venden múltiples productos.
Editoriales.
Son generadores de tráfico que ofrecen contenidos de interés para los clientes,
que parecen periódicos o revistas interactivas. Las editoriales se convierten en
intermediarios cuando ofrecen vínculos con los fabricantes a través de publicidad o listas de productos relacionadas con sus contenidos.
Revendedores Virtuales.
Estos intermediarios existen para vender a los clientes centrándose en productos especializados que obtienen directamente de los fabricantes, quienes
pueden dudar en dirigirse directamente a los clientes por temor a alejar a los
detallistas de los que dependen.
Evaluadores de los sitios Web.
Los clientes pueden dirigirse a un fabricante a través de un sitio que
ofrece alguna forma de evaluación, lo que puede ayudar a reducir su
riesgo. Algunas veces las evaluaciones se basan en la frecuencia de acceso,
mientras que en otros casos son una revisión explícita de las instalaciones.
Auditores.
Tienen funciones similares a las de los servicios de medición de audiencia en
medios tradicionales. El comercio electrónico requiere de los mismos servicios
adicionales que facilitan el comercio tradicional. Los anunciantes requieren
información sobre las tasas de uso asociadas con la publicidad en el Web, así
como información fidedigna sobre las características de los clientes.
Foros, Clubes de Aficionados y Grupos de Usuarios.
2.10. LOS INTERMEDIARIOS
39
Estos tipos de instalaciones no son necesariamente intermediarios directos,
pero pueden jugar un gran papel al facilitar la retroalimentación entre clientes
y fabricantes, así como soportar la investigación de mercados. Los mejores
ejemplos de estos grupos son las listas relacionadas con productos que conectan
al fabricante con los clientes.
Intermediarios Financieros.
Cualquier forma de comercio electrónico debe permitir alguna manera de
realizar o autorizar pagos del comprador hacia el vendedor. Los sistemas de
pago podrán ser desde autorización de crédito, cheques electrónicos, pago en
efectivo y envío de correo electrónico seguro para autorizar un pago.
Redes de Trueque.
Es posible que las personas cambien un bien o un servicio por otro, en
vez de pagarlo con dinero. Aparecerán intermediarios similares a las casas de
subastas y bolsas de mercancías para capitalizar estas oportunidades.
Agentes Inteligentes.
Son programas que mediante un criterio preliminar de búsqueda proporcionado por el usuario, facilitan la localización de recursos a través de Internet,
aprendiendo de los comportamientos pasados para optimizar las búsquedas.
Esto puede convertirse en un nuevo servicio de intermediación que los clientes
adquieren cuando necesitan cierto bien o servicio.
Capítulo 3
El Mundo Móvil
3.1.
Evolución
En 1983, aparecieron en el mercado los primeros teléfonos celulares que
podían llevarse a todos lados. Desde esos comienzos, los teléfonos celulares
o móviles han sido vistos como la comunicación del futuro. Se trataba de
un equipo que permitía permanecer comunicado en todo momento y en todo
lugar, con amigos, familiares y con la empresa. Además cambiaba radicalmente
el modo de comunicarse: ya la comunicación no se realizaba con un lugar, sino
directamente con una persona.
En seguida fue adoptado por empresarios, corredores de bolsa, transportistas, hasta llegar a la época actual donde prácticamente cada integrante de una
familia puede llegar a tener su propio equipo celular.
La primera generación de teléfonos celulares comenzó en 1979 y se trataba
de conexiones estrictamente de voz y analógicas. Estas conexiones no tenían
seguridad y generaban muchos conflictos en las comunicaciones. La tecnología
que ha permitido esta comunicación se llamó AMPS (Advanced Mobile Phone
System) y todavía sigue siendo utilizada en lugares rurales y ciudades alejadas
de América.
Hacia 1990 la tecnología evolucionó a lo que se denominó 2G (Segunda
Generación) o PCS (Personal Communication Service). Esta etapa se caracterizó por ser digital y utilizar algoritmos de compresión y seguridad más
sofisticados en las comunicaciones. Sigue siendo la tecnología más utilizada
41
42
CAPÍTULO 3. EL MUNDO MÓVIL
actualmente en las comunicaciones móviles del mundo.
En esta etapa, se encuentran predominantemente 3 tipos de tecnologías
compitiendo en el mercado: CDMA, TDMA y GSM .
GSM es la tecnología que más ha evolucionado en ésta generación y por
ello, actualmente, posee más del 70 % del mercado mundial. Técnicamente es
un derivado de la tecnología TDMA [7].
El sistema 2G trajo consigo nuevas aplicaciones de datos sobre la red celular: fax, módem, SMS; aunque rápidamente su capacidad de ancho de banda
quedó limitada. Por esta limitación de la segunda generación (9,6 Kbps) y, al
darse cuenta que la próxima generación (la 3G) tardaría unos cuantos años
más en venir, los fabricantes crearon un intermedio llamado 2.5G que permitía
conexiones de datos más veloces, como lo es el protocolo GPRS que permite
velocidades de 64 Kbps o superiores.
En pocos países del mundo ya está instalada la 3G (Tercera Generación) de
telefonía celular. Esta tecnología tiene un mayor ancho de banda en las transmisiones de datos que permite, por ejemplo, video streaming, videoconferencias
y otras aplicaciones de alta performance. Las velocidades son superiores a los
144 Kbps.
Tres de las tecnologías más importantes en 3G al momento son: W-CDMA,
TD-SCDMA y CDMA2000. Las velocidades de transmisión de estas tecnologías
van de 384 Kbps a 4 Mbps, ya superan a conexiones de banda ancha hogareñas
en ADSL que están entre 1 Mbp y 1 Gbps. Se debe recordar que estas velocidades se logran en forma inalámbrica y en constante movimiento del equipo
(a mayor velocidad de movimiento, menor ancho de banda). También ya se
habla de una 4G que comenzaría a implementarse hacia 2010 y que traería
aparejado velocidades de 100 Mbps, equiparables con las velocidades actuales
de una red local.
3.2.
Teléfonos Móviles de Primera Generación
El sistema más antiguo fue el de los radioteléfonos móviles que se utilizaban de forma esporádica para comunicación marítima y militar durante las
primeras décadas del siglo XX. En 1946 se construyó el primer sistema de
teléfonos instalado en autos. Este sistema utilizaba un solo transmisor grande
colocado en la parte superior de un edificio y tenía un sólo canal que servía
3.2. TELÉFONOS MÓVILES DE PRIMERA GENERACIÓN
43
para enviar y recibir. Para hablar, el usuario tenía que oprimir un botón que
habilitaba el transmisor e inhabilitaba el receptor. Tales sistemas, conocidos
como sistemas de oprimir para hablar, se instalaron en algunas ciudades desde
finales de la década de 1950.
En la década del 60 se instaló el IMTS (Sistema Mejorado de Telefonía
Móvil), también utilizaba un trasmisor de alta potencia (200 watts), en la
cima de una colina, pero tenía dos frecuencias, una para enviar y la otra para
recibir, por lo que el botón de oprimir para hablar no era necesario.
IMTS manejaba 23 canales dispersos desde 150 hasta 450 Mhz. Debido
al número tan pequeño de canales, los usuarios a veces tenían que esperar
bastante tiempo antes de obtener el tono de marcar.
3.2.1.
Sistema Avanzado de Telefonía Móvil
La telefonía móvil terrestre utiliza estaciones terrestres. Éstas se encargan
de monitorizar la posición de cada terminal encendida, pasar el control de una
llamada en curso a otra estación, enviar una llamada a un terminal. Cada
estación tiene un área de cobertura, zona dentro de la cuál la comunicación
entre un terminal y ésta se puede hacer en buenas condiciones.
Las zonas de cobertura teóricamente son hexágonos regulares o celdas. En
la práctica, toman distintas formas, debido a la presencia de obstáculos y a
la orografía cambiante de la celda como se puede apreciar en la fig. 3.1 de la
pág. 44. Además se solapan unas con otras. Es por esto, que cuando un móvil
está cerca del límite entre dos celdas, puede pasar de una a otra, en función
de cuál de las dos le ofrezca más nivel de señal, y esto puede suceder incluso
durante el transcurso de una llamada sin que se perciba nada.
En todos los sistemas de telefonía móvil, una región geográfica se divide en
celdas, razón por la cuál los dispositivos se conocen como teléfonos celulares.
En AMPS (Sistema Avanzado de Telefonía Móvil, inventado por los laboratorios Bell e instalado por primera vez en los Estados Unidos) las celdas
normalmente tienen de 10 a 20 km de diámetro; en los sistemas digitales. Cada
celda utiliza un conjunto de frecuencias que no es utilizada por ninguna de sus
vecinas.
La idea clave que confiere a los sistemas celulares con más capacidad que
todos lo sistemas anteriores es el uso de celdas relativamente pequeñas y la
44
CAPÍTULO 3. EL MUNDO MÓVIL
Figura 3.1: Sistema Telefónico Móvil
reutilización de las frecuencias de transmisión en celdas cercanas (pero no
adyacentes).
Un sistema IMTS de 100 km de alcance puede tener una llamada en cada
frecuencia, un sistema AMPS podría tener 100 celdas de 10 km en la misma
área con 5 a 10 llamadas en cada frecuencia en celdas muy separadas. El diseño
celular incrementa la capacidad del sistema en un orden de magnitud conforme
las celdas se hacen más pequeñas en su área de cobertura. Además, al ser las
celdas más pequeñas se necesita menor potencia, lo cual conduce a dispositivos
más pequeños y económicos.
En el centro de cada celda se encuentra una estación base a la cuál transmiten todos los teléfonos de la celda. La estación base consiste en una computadora y un transmisor / receptor conectado a una antena. En un sistema
pequeño, todas las estaciones base se conectan a un mismo dispositivo llamado
MTSO (Oficina de Telefonía Móvil) o MSC (Centro de Conmutación Móvil).
En un sistema grande pueden ser necesarias varias MTSOs, las cuales se
conectan a una MTSO de segundo nivel y así sucesivamente.
En cualquier instante cada teléfono móvil está en una celda específica y
bajo el control de la estación base de esa celda. Cuando un teléfono móvil sale
de una celda, ésta le cede el control a otra estación circundante.
Cada estación trabaja con un rango de frecuencias, que delimita el número
máximo de llamadas simultáneas que puede soportar, puesto que a cada lla-
3.3. TELÉFONOS MÓVILES DE SEGUNDA GENERACIÓN
45
mada se le asigna un par de frecuencias diferentes: una para cada sentido de
la comunicación. Esto se denomina FDM, o multiplexación por división en la
frecuencia. Las celdas colindantes no pueden utilizar las mismas frecuencias,
para que no se produzcan interferencias.
Cada teléfono móvil en AMPS tiene un número de serie de 32 bits y un
número telefónico de 10 dígitos en su PROM. Cuando un teléfono se enciende,
examina una lista preprogramada de 21 canales de control para encontrar la
señal más potente.
Luego el teléfono difunde su número de serie de 32 bits y su número de
teléfono de 34 bits [17].
3.3.
Teléfonos Móviles de Segunda Generación
La primera generación de teléfonos móviles fue analógica; la segunda fue digital. De igual manera que en la primera generación no hubo una estandarización
mundial de tecnologías, tampoco hubo en la segunda generación. Existen cuatro sistemas en uso: D-AMPS; GSM; CDMA y PDC.
3.3.1.
D-AMPS - El Sistema Avanzado de Telefonía Móvil Digital
D-AMPS se describe en el estándar internacional IS-54 y su sucesor IS136. D-AMPS se diseñó con mucho cuidado para que pudiera coexistir con
AMPS, a fin de que tanto teléfonos móviles de primera generación como los
de segunda pudieran funcionar de manera simultánea en la misma celda.
D-AMPS utiliza los mismos canales de 30 KHz que AMPS y a las mismas
frecuencias a fin de que un canal pueda ser analógico y los adyacentes digitales.
Cuando D-AMPS se introdujo como un servicio, se puso disponible una
nueva banda de frecuencia para manejar la carga esperada creciente. Los
canales ascendentes estaban en el rango de 1850-1910 MHz y los canales descendentes correspondientes estaban en el rango de 1930-1990 MHz.
En un teléfono móvil D-AMPS, la señal de voz capturada por el micrófono se digitaliza y se comprime. La compresión se crea mediante un circuito
llamado vocoder y se realiza en el teléfono en lugar de en la estación base o
46
CAPÍTULO 3. EL MUNDO MÓVIL
la central, para reducir el número de bits que se envían a través del enlace
de aire. Con la telefonía fija, no hay beneficio de hacer que la compresión se
realice en el teléfono, debido a que la reducción del trafico en el circuito local
no incrementa la capacidad del sistema.
Gracias a que la digitalización y compresión se realiza en el teléfono, tres
usuarios pueden compartir un solo par de frecuencias que utilizan la multiplexión por división de tiempo. Cada par de frecuencias maneja 25 tramas / seg
de 40 mseg cada uno como se puede ver en la fig. 3.2 de la pág. 46. Además
cada trama se divide en seis ranuras de tiempo de 6.67 mseg cada una [17].
Figura 3.2: Un canal D-AMPS con 3 y 6 usuarios.
La estructura de control de D-AMPS es bastante complicada. En resumen,
se utilizan seis canales de control: configuración del sistema, control en tiempo
real, y en tiempo no real, localización, respuesta de acceso y mensajes cortos.
Cuando se enciende un teléfono móvil, hace contacto con la estación base
para anunciarse y después escucha un canal de control para llamadas entrantes.
La MTSO informa a la base doméstica del usuario dónde está, y las llamadas se pueden enrutar en forma correcta.
3.3.2.
GSM (Sistema Global Para Comunicaciones Móviles)
GSM es similar a D-AMPS. Los dos son sistemas celulares. En ambos se
utiliza la multiplexación por división de frecuencia, en el que cada dispositivo
móvil transmite en una frecuencia y recibe en una frecuencia mayor (80 MHz
más arriba para D-AMPS, 55 MHz más arriba para GSM).
3.3. TELÉFONOS MÓVILES DE SEGUNDA GENERACIÓN
47
Ademá, en los dos sistemas, se utiliza multiplexión por división de tiempo
para dividir un solo par de frecuencias en ranuras de tiempo compartidas por
múltiples teléfonos móviles. Sin embargo los canales GSM son mucho más
anchos que los AMPS (200 KHz en comparación de 30 KHz) y almacenan
relativamente pocos usuarios (8 en comparación con 3), lo que le da a GSM
una tasa de datos mucho más grande por usuario que D-AMPS.
Cada banda de frecuencia tiene una longitud de 200 KHz. Un sistema GSM
tiene 124 pares de canales simplex. Cada uno de ellos tiene una longitud de
200 KHz y maneja ocho conexiones por separado, mediante la multiplexión por
división de tiempo. En cada celda se pueden manejar hasta 992 canales, aunque
muchos de ellos no están disponibles, para evitar conflictos de frecuencias con
las celdas vecinas.
La transmisión y la recepción no suceden en la misma ranura de tiempo
porque los radios GSM no pueden transmitir y recibir al mismo tiempo.
Algunas de estas ranuras se utilizan para almacenar algunos canales de
control utilizados para manejar el sistema.
El canal de control de difusión es flujo continuo de salida de la estación
base que contiene la identidad de la estación base, así como el estado del canal.
Todas las estaciones móviles supervisan su fuerza de señal para ver cuándo se
han movido a una nueva celda.
El canal dedicado de control se utiliza para actualización de localización,
registro y establecimiento de llamada. En particular, cada estación base mantiene
una base de datos de la estaciones móviles actualmente bajo su jurisdicción.
La información necesaria para mantener esta base de datos se envía en el canal
dedicado de control.
Hay un canal de control común, que se divide en tres subcanales lógicos.
El primero de estos subcanales es el canal de localización, que la estación base
utiliza para anunciar llamadas entrantes. Cada estación móvil los supervisa
continuamente en busca de llamadas. El segundo es el canal de acceso aleatorio,
que permite que los usuarios soliciten una ranura del canal dedicado de control.
Si dos peticiones chocan, se distorsionan y se tienen que volver a realizar más
tarde. El tercer subcanal es el canal de otorgamiento de acceso [17].
48
CAPÍTULO 3. EL MUNDO MÓVIL
3.3.3.
CDMA (Acceso Múltiple por División de Código)
Se ve como la mejor solución técnica existente y como la base para los
sistemas móviles de la tercera generación. También se utiliza ampliamente en
los Estados Unidos en los sistemas móviles de segunda generación y compite
frente a D-AMPS.
CDMA es completamente diferente de AMPS, D-AMPS y GSM. En lugar
de dividir el rango de frecuencia permitida en algunos cientos de canales estrechos, CDMA permite que cada estación transmita todo el tiempo a través
de todo el espectro de frecuencia. CDMA no supone que las tramas que colisionan son totalmente distorsionadas. Asume que se agregan múltiples señales
en forma lineal.
Se considera la siguiente analogía: Una sala de espera de un aeropuerto con
muchas parejas de personas conversando. TDM (multiplexión por división de
tiempo) se compara con todas las personas que están en medio de la sala
pero que esperan su turno para hablar. FDM (multiplexión por división de
frecuencias) se compara con el hecho de que todas las personas que están en
grupos separados ampliamente y cada grupo tiene su propia conversación al
mismo tiempo; aunque de manera independiente, que los otros.
CDMA se compara con el hecho de que todas las personas estén en medio
de la sala hablando al mismo tiempo, pero cada pareja hablando en un lenguaje
diferente, la persona que habla francés se concentra con el francés, rechazando
todo lo que no se francés como si hubiera ruido. Por lo tanto la clave de
CDMA es tener la capacidad de extraer la señal deseada y rechazar todo lo
demás como ruido aleatorio.
A cada estación se le asigna un código único de m bits llamado secuencia
de chip.
Cada estación utiliza completamente el megahertzio, por lo que la tasa de
chips es de 1 megachip por segundo.
Cada estación tiene su propia y única secuencia de bits.
Funciona en una banda de 1.25 MHz, pero maneja muchos más usuarios
en esa banda que cualquiera de los otros sistemas.
3.4. TELÉFONOS MÓVILES DE TERCERA GENERACIÓN
3.4.
49
Teléfonos Móviles de Tercera Generación
Algunos factores que están impulsando a la industria:
El tráfico de datos ya exede el tráfico de voz en la red fija y está creciendo
de manera exponencial.
La industria telefónica de entretenimiento y de cómputo han adoptado
formatos digitales y están convergiendo rápidamente.
La telefonía móvil de tercera generación trata de encontrar un dispositivo
que sea portable y ligero que actúe como teléfono, reproductor de CDs, reproductor de DVDs, terminal de correo electrónico, interfaz para Web, máquina
de juegos, procesador de texto, etc.
La ITU trató de concretar esto y creó un diseño para alcanzarlo, llamado
IMT-2000 (Telecomunicaciones Móviles Internacionales), pero no cumplió con
nada de lo anterior.
Luego, se realizaron varias propuestas, y después de varias selecciones,
aparecieron las dos principales.
La primera, W-CDMA (CDMA de Banda Ancha), fue propuesta por Ericsson. Este sistema utiliza espectro disperso de secuencia directa. Se ejecuta en
una banda ancha de 5 MHz y se ha diseñado para interactuar con redes GSM
aunque no tiene compatibilidad hacia atrás con GSM.
Tiene la propiedad de que el invocador puede salir de una celda W-CDMA
y entrar a una celda GSM sin perder la llamada.
Este sistema se llamó UMTS (Sistema Universal de Telecomunicaciones
Móviles).
El CDMA 2000, propuesto por Qualcomm, es un diseño de espectro disperso de secuencia directa, básicamente una extensión de IS-95 y es compatible
hacia atrás con él.
Utiliza un ancho de banda de 5 MHz, pero no ha sido diseñado para interactuar con GSM y no puede entregar llamadas a una celda GSM (ni a una
celda D-AMPS ).
50
CAPÍTULO 3. EL MUNDO MÓVIL
Algunas de la diferencias técnicas con respecto a W-CDMA son las siguientes: una tasa de chip diferente, un tiempo de trama diferente, se utiliza
un espectro diferente y la sincronización de tiempo se realiza de una manera
diferente.
3.4.1.
EDGE (Tasa de Datos Mejorada para la Evolución del
GSM)
Mientras se espera la venida del 3G, algunos fabricantes dieron un paso
intermedio que se llama 2.5G.
Uno de los sistemas es EDGE. Es simplemente GSM con más bits por
baudio. El problema es que más bits por baudio significan más errores por
baudio, por lo que EDGE tiene nueve esquemas diferentes para modulación
y corrección de errores, que difieren en la cantidad de ancho de banda que se
dedica a arreglar los errores introducidos por la velocidad más alta [17].
3.4.2.
GPRS (Servicio de Radio de Paquetes Generales)
Es una red de paquetes superpuestos encima de D-AMPS o GSM. Permite
que las estaciones móviles envíen y reciban paquetes IP (protocolo de Internet)
en una celda que se ejecuta en un sistema de voz.
Cuando GPRS está en operación, algunas ranuras de tiempo en algunas
frecuencias se reservan para el tráfico de paquetes.
La estación base puede manejar de manera dinámica el número y la ubicación de las ranuras de tiempo, dependiendo de la tasa de voz sobre el tráfico
de datos de la celda.
Las ranuras de tiempo disponibles se dividen en varios canales lógicos utilizados para propósitos diferentes.
La estación base determina qué canales lógicos se asignan en qué ranuras
de tiempo.
Un canal lógico se utiliza para bajar paquetes de la estación base a algunas
estaciones móviles, y cada paquete indica a quién va destinado.
Para enviar un paquete IP, una estación móvil solicita una o más ranuras
3.5. SERVICIOS ADICIONALES DE LAS EMPRESAS TELEFÓNICAS 51
de tiempo enviando una petición a la estación base. Si la petición llega sin
daño alguno, la estación base anuncia la frecuencia y las ranuras de tiempo
asignadas al móvil para enviar el paquete. Una vez que el paquete llega a la
estación base, se transfiere a Internet mediante una conexión de cable.
3.5.
Servicios Adicionales de las Empresas Telefónicas
Los equipos celulares fueron pensados para transmitir voz. Lo primero que
se piensa cuando se habla de teléfonos móviles es en la comunicación vocal,
en comunicación a través de la voz de un punto a otro. Sin embargo, poco a
poco, se fue conociendo cómo las empresas que proveían el servicio de telefonía
celular han ido incorporando servicios adicionales a lo largo del tiempo de vida
de esta tecnología y, muchos de esos servicios se escapan del estricto uso de la
voz para la comunicación. Desde mensajería de texto, melodías personalizadas,
hasta conexión a Internet. En los siguientes apartados se verá con detalle los
servicios que los teléfonos celulares actuales pueden ofrecer.
3.5.1.
Servicios Analógicos
En esta categoría ingresan todos los servicios adicionales que no requieren
un equipo con capacidades digitales. Ni siquiera hace falta un teléfono con
pantalla. Desde los viejos equipos Motorola, hasta los primeros modelos de
teléfonos Motorota Startac (la línea 3000), las empresas de telefonía celular
han provisto de servicios adicionales al uso básico de la línea.
Estos servicios funcionaban a través de la red de voz, es decir la red analógica que ya estaba instaurada. Entre ellos, se puede mencionar contestador automático, alarmas, llamadas en conferencia, y servicios de información que se
proveían (y todavía se proveen) comunicándose a un número particular que
no pertenecía a la red fija de telefonía.
3.5.2.
Recepción y Envío de Mensajes de Texto
Este servicio comenzó a funcionar en los años 90 y requería poseer equipos
con la capacidad de recepción de mensajes de texto en la pantalla del telé-
52
CAPÍTULO 3. EL MUNDO MÓVIL
fono. Por ello, requieren equipos con pantalla alfanumérica y señal digital. Las
empresas permiten el envío de mensajes a un equipo celular a través de sus
sitios web, a través de una casilla de e-mail o desde otros equipos celulares. El
mensaje viaja por la red digital de la empresa y llega al equipo celular donde
podrá ser visualizado completamente en pantalla.
Estos mensajes tienen generalmente una longitud de 150 caracteres y son
conocidos también como SMS (Short Message System, Sistema de Mensajes
Cortos). El mensaje es enviado al destinatario instantáneamente, salvo que el
equipo receptor no esté encendido o esté fuera del área de cobertura. En este
caso, el mensaje queda latente, generalmente por unos días, para ser enviado
en el momento de restauración de la señal.
Con la gran aceptación que tuvo el Sistema de Mensajes Cortos comenzaron a aparecer equipos con la posibilidad, no sólo de recibir mensajes, sino
de emitirlos y así poder enviar mensajes a otros teléfonos, en un principio,
entre dos teléfonos móviles que utilizaban una misma empresa proveedora.
Los mensajes son transferidos al nodo central de la empresa y de ahí dirigidos al equipo destino. Es decir, la comunicación no se realiza teléfono a
teléfono directamente.
A través de una pasarela, es común la posibilidad de enviar mensajes, no a
otro teléfono, sino a una dirección de e-mail. Estas pasarelas son simplemente
números de destino donde el teléfono envía el mensaje y este equipo receptor
(provisto por el proveedor del servicio) se encarga de redireccionar el mensaje
vía Internet utilizando el protocolo SMTP.
Con el tiempo este servicio se amplió y las empresas comenzaron a interconectar sus redes de mensajería corta y ya prácticamente, es posible enviar y
recibir mensajes cortos desde cualquier empresa proveedora a cualquier otra
dentro del mismo país y, a veces, a otros países.
3.5.3.
Servicios de Información
Basados en el Servicio de Mensajería, las empresas proveedoras de la telefonía celular comenzaron a ofrecer servicios adicionales de información por
ese medio. Por ejemplo, es posible suscribirse a recibir información sobre: noticias, deportes, cotizaciones financieras, estados bancarios y otra información
que será enviada a todos los equipos celulares suscriptos.
3.5. SERVICIOS ADICIONALES DE LAS EMPRESAS TELEFÓNICAS 53
Otra modalidad es el envío de información mediante SMS bajo demanda.
Este servicio permite enviar cierto mensaje a un número predeterminado y
recibir a cambio alguna información de interés o solicitada. Estos servicios son
provistos por las mismas empresas o por terceros con convenios especiales.
También han surgido salas de chat con la posibilidad de enviar y recibir
mensajes a grupos de personas, comunicación con mensajeros instantáneos
(como ser el Microsoft Messenger o el Yahoo! Messenger ) y juegos interactivos
a través del Servicio de Mensajería. Algunos de estos servicios se ofrecen en
forma gratuita [7].
3.5.4.
Mensajes Multimedia
Los equipos móviles evolucionan a grandes pasos y debido a esto se pueden
ver equipos con capacidades multimedia. Por eso, se ha desarrollado una extensión al servicio SMS, llamado MMS (Multimedia Messaging System).
Este sistema de intercambio de mensajes permite, además de texto (ampliado a 900 caracteres), adjuntar cualquier otro tipo de archivo digital, como ser
fotos, imágenes animadas, sonidos o videos. El equipo receptor deberá soportar
también esta tecnología y estar correctamente configurado en el equipo.
Esta tecnología generalmente trabaja enviando un mensaje de texto al
teléfono receptor indicando una URL (dirección de la red) donde el equipo
podrá descargar el contenido completo del mensaje. Estos mensajes no son
enviados en forma completa al equipo receptor. Es por eso por lo que, si el
usuario no quiere recibir este tipo de mensajes puede configurar su equipo para
no recoger automáticamente sus Mensajes Multimedia.
3.5.5.
Juegos y Aplicaciones
Es una característica adicional provista por el fabricante del equipo. Gracias también al gran uso del SMS, los teléfonos comenzaron a ampliar el
tamaño visual de sus pantallas. De esta forma, algunos equipos comenzaron
a incluir algunos pequeños juegos en sus modelos de celulares, como se puede
apreciar en la fig. 3.3 de la pág. 54.
Tampoco las aplicaciones se habían quedado atrás y ya comenzaban a
aparecer en los equipos aplicaciones como calculadoras, agendas, calendarios,
54
CAPÍTULO 3. EL MUNDO MÓVIL
Figura 3.3: Algunos Juegos Conocidos.
conversores de medidas y monedas y otros aplicativos que se consideraban
útiles para el usuario.
De esta forma comenzaba una nueva era en los equipos celulares. Ya no se
los veía como un mero aparato comunicacional, sino como una microcomputadora. Comenzaron a aprovecharse capacidades de procesamiento (mínimas,
pero existentes) y, cuando esta capacidad de proceso se junta con la capacidad de conectividad de la red celular, se produce la revolución del software
móvil [7].
3.5.6.
Internet Móvil
Internet Móvil es la capacidad que tiene un equipo celular de navegar por
la red Internet. Si bien, con ciertas limitaciones, es posible leer e-mails, noticias
y ciertos sitios de Internet.
La tecnología que permite esta navegación por Internet es la llamada WAP
(Wireless Application Protocol) que hace de interfaz o pasarela entre la red
Internet y el protocolo HTTP con el que se reciben las páginas web y la red
celular.
Este protocolo tenía una limitación y es que no soportaban páginas HTML
como sí lo soportan los navegadores para equipos estándar de computación, co-
3.5. SERVICIOS ADICIONALES DE LAS EMPRESAS TELEFÓNICAS 55
mo Internet Explorer, Netscape u Opera. Los navegadores WAP de los equipos
celulares soportan solamente páginas en formato WML, que es una versión reducida de HTML y adaptada a las necesidades de contenido de un teléfono
celular.
El Fracaso y la Vuelta de Internet Móvil
El fracaso se debió a algunas razones, entre ellas:
Los proveedores de contenido no supieron adaptarse a las necesidades
de un navegante móvil. Sólo ofrecían una versión reducida de su mismo
contenido web.
Las empresas de telefonía móvil facturaron este servicio por tiempo de
aire consumido, lo que claramente era una bomba de tiempo para el
usuario que se encontraba navegando, o intentándolo.
La experiencia de navegar por un celular ha sido muy frustrante para
muchos usuarios. Una vez que se lograba configurar correctamente el
equipo, la navegabilidad de los equipos que, originalmente no estaban
preparados para tal fin (como ser ausencia de teclas, pantallas muy chicas), hicieron que los usuarios dejaran de lado esta tecnología.
No existieron gran cantidad de equipos con la capacidad de navegador
WAP.
La vuelta de Internet Móvil se debió a la aparición de nuevas tecnologías
que se ofrecen actualmente (como ser GSM, vía GPRS o CDMA2000x ), ahora
es posible tarifar al usuario por información transferida y no por tiempo de
aire, adicionando que los equipos tienen pantallas más grandes y con altas
resoluciones de colores y sistemas de navegación e introducción de texto más
cómodos [7].
Además de esta mejora tecnológica, el mercado ha ido evolucionando y
ya prácticamente todo equipo nuevo tiene navegador WAP y poco a poco,
comenzaron a surgir nuevos servicios WAP útiles para los usuarios, entre ellos:
Clima, Información Geográfica, Guías Telefónicas para Turistas, Mapas de
Calles y otra información que puede ser de suma utilidad para un usuario que
se encuentra fuera del alcance de una PC con conexión a la web.
56
CAPÍTULO 3. EL MUNDO MÓVIL
3.6.
WAP
3.6.1.
Introducción a 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 ejemplo 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
inalámbricos, se pueden utilizar para acceder a correo electrónico, grupo de
noticias y otro tipo de aplicaciones disponibles desde Internet.
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.
La telefonía móvil e Internet se combinaron y ahora se puede tener Internet
en un terminal móvil (teléfono celular) combinar la capacidad de Internet en
un entorno donde el usuario puede moverse y disponer conexión las 24 horas del
día, en cualquier lugar. De esta idea surge WAP, la arquitectura de protocolos
TCP/IP (protocolo de Internet) presenta una serie de dificultades al momento
de trabajar en entornos inalámbricos móviles.
Estos factores unidos al ancho de bandas limitados a la telefonía móvil
condicionan a los fabricantes mundiales a constituir el consorcio WAP Forum para desarrollar una nueva pila de protocolos adecuada a los entornos
inalámbricos con usuarios en movimientos [6].
Aunque WAP fue diseñado para utilizar cualquier tecnología móvil existente, la más utilizada por WAP es GSM. GSM es una tecnología digital de
acceso aéreo que incluye mecanismos de cifrado de comunicación entre terminal
móvil y la estación base.
3.6. WAP
3.6.2.
57
Motivación
Los terminales móviles son más potentes y livianos cada vez, permitiendo
que la comunicación sea cada vez más eficaz. Su gran número y sus capacidades
hacen muy interesante para los proveedores de servicios y contenidos disponer
de un entorno normalizado que permita ofrecer sus servicios a los usuarios de
las redes móviles.
WAP define un entorno de aplicación y una pila de protocolos para aplicaciones y servicios accesibles a través de terminales móviles. Consiste en un
conjunto de especificaciones, definidas por la Open Mobile Alliance / WAP
Forum, que permiten que los desarrolladores diseñen aplicaciones de interconexión para terminales móviles, típicamente teléfonos.
La tecnología WAP permite que los usuarios de estos dispositivos puedan
acceder a servicios disponibles en Internet. Sin embargo, existen algunas consideraciones a tener en cuenta al diseñar estos servicios para usuarios móviles,
fundamentalmente debidas a las características de los terminales: pantalla más
pequeña que la de un ordenador personal, teclados más limitados que los de un
ordenador, limitaciones en la memoria disponible, tanto memoria RAM como
memoria para almacenamiento persistente, y limitaciones en la capacidad del
procesador, en comparación con la memoria y procesador de un ordenador
personal típico.
Las redes de telefonía móvil ofrecen también unas prestaciones por lo general menores que los accesos a Internet, si bien con las redes de tercera generación
como UMTS las prestaciones mejoran de manera importante.
3.6.3.
Modelo de WAP
El modelo de aplicación WAP como se puede ver en la fig. 3.4 de la pág. 58,
es bastante similar al WWW, ya que todo el sistema WAP está en el anterior.
Este parecido permite facilidades tales como un modelo de programación
familiar, una arquitectura probada y la habilidad de utilizar herramientas existentes (servidores web, herramientas XML, estándares de Internet) también
debe indicarse que se ha intentado optimizar el modelo para un entorno inalámbrico [6].
Como se puede desprender de la fig. 3.5 de la pág. 58, el modelo opera de
58
CAPÍTULO 3. EL MUNDO MÓVIL
Figura 3.4: Modelo Wap.
Figura 3.5: Modelo de la Red Wap.
3.6. WAP
59
la siguiente manera:
El usuario teclea la URL en su teléfono móvil.
El agente usuario envía la petición URL a la pasarela WAP mediante el
protocolo WAP.
La pasarela WAP genera una petición convencional HTTP para la URL
pedida y la envía al servidor web.
El servidor web procesa la petición. Si es un fichero estático, toma el
fichero y le añade una cabecera HTTP. Si es CGI ( Common Gateway
Interface) u otra aplicación SCRIPT, lanza la aplicación.
El servidor Web devuelve la marca WML con la cabecera HTTP añadida, o la salida WML del CGI o SCRIPT.
La pasarela WAP verifica la cabecera HTTP y el contenido WML y
la codifica a una forma binaria. Crea la respuesta WAP conteniendo el
WML y lo envía al usuario.
El usuario recibe la respuesta WAP y muestra por pantalla el contenido
WML o SCRIPT.
El contenido se transporta usando la pila de protocolos. Además se dispone
de un Micro-navegador en el terminal móvil que hace de interfaz con el usuario.
WAP define un conjunto de componentes estándares que permiten la comunicación entre el cliente móvil y los servidores que deben incluir:
Modelo de nomenclatura: se utilizan los URLs estándar.
Representación del contenido: contenido consistente con el WWW.
Protocolo estándar: permiten la comunicación entre el navegador del
dispositivo inalámbrico y el servidor.
WAP utiliza la tecnología Proxy para conectar el dominio inalámbrico a
la Internet tradicional. Entre el terminal móvil y el servidor web existe una
pasarela. En este nodo se traducen los datagrama del protocolo WAP al protocolo HTTP- TCP/IP. Por tanto el cliente, desde su terminal con capacidad
WAP ve esta pasarela como el extremo de la comunicación [6].
60
CAPÍTULO 3. EL MUNDO MÓVIL
Entorno de Programación WAP
El cliente WAP se comunica con dos servidores en la red inalámbrica. La
pasarela WAP traduce las peticiones WAP en peticiones WWW y también
en dirección contraria (respuestas WWW en respuestas WAP).
Si el servidor web proporciona directamente contenido WAP (WML), la
pasarela WAP lo toma directamente del servidor. Sin embargo si el servidor
sólo proporciona contenido WWW (HTML). Las marcas WML son codificadas
WBXML antes de enviarlas al móvil WAP.
El servidor de Aplicación de Telefonía Inalámbrica WTA (Wirelees Telephony Application) es un ejemplo de servidor que responde peticiones directamente del cliente WAP sin pasar por ningún tipo de intermediarios.
Se utiliza fundamentalmente para aplicaciones propias del entorno inalámbrico.
La Capa de Aplicación WAE
La capa de aplicación (Wireless Application Enviroment) es la capa de
propósito general basada en una combinación de Word Wide Web (WWW)
y las tecnologías de telefonía móvil. Su principal objetivo es establecer un
entorno de interoperabilidad que permitirá a los usuarios y los proveedores
de contenido construir aplicaciones y servicios que puedan alcanzar una gran
variedad de plataformas inalámbricas de manera eficiente y útil.
WAE incluye un mini-navegador que tiene las siguientes funcionalidades:
Wireless Mark-up Language (WML) un lenguaje liviano, similar a HTML
pero optimizado para terminales móviles. , (WBML) es la versión codificada que se entrega a los dispositivos móviles para reducir el volumen
del tráfico al teléfono móvil.
WMLScript, un lenguaje de script de baja carga, similar a Javascript.
Wireless Telephony Application (WTA-WTAI) servicios de telefonía e
interfaces de programación.
Formatos de contenidos, un conjunto de formatos de datos bien definidos.
3.6. WAP
61
Figura 3.6: Pilas de Protocolos TCP/IP y WAP.
3.6.4.
Tecnología
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 como se puede ver
en la fig. 3.6 de la pag. 61: 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 JavaScript.
La incompatibilidad que existe en 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.
62
CAPÍTULO 3. EL MUNDO MÓVIL
WAP ha sido sujeto a diversas críticas en su implementación, como ser
el bajo soporte de gráficos en los terminales móviles, las diferencias de implantación en terminales móviles de distintos fabricantes y un problema muy
grave en cuanto a seguridad debido a que la capa WTLS no es robusta y
además por no ser compatibles con los mecanismos de seguridad que brinda
Internet.
La nueva versión de WAP, WAP 2.0, está presente en los teléfonos móviles
de nueva generación (a partir del 2004). Esta versión es una reingeniería de
WAP que utiliza XHTML-MP (XHTML Mobile Profile), un subconjunto de
XHTML que incluye el XHTML básico, y WCSS (WAP CSS), un subconjunto
de CSS más ciertas extensiones específicas para móviles, como lenguajes para
la presentación de contenidos mejorando, por ejemplo el soporte de los gráficos.
De esta forma se consigue que el diseño de contenidos con WAP 2.0 sea muy
similar al diseño de contenidos para la WWW para navegadores en dispositivos
no móviles.
En cuanto a los protocolos usados, en la capa de transporte se usa TCP y
en la de 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 cache web y para dar soporte a las opciones
de TCP y HTTP antes mencionadas.
3.6.5.
WAP 2.0
WAP 2.0 es la próxima generación de un conjunto de especificaciones que
a comparación de versiones previas, marca el actual esfuerzo de WAP Forum
para adoptar los más recientes protocolos y estándares de Internet. WAP 2.0
optimiza el uso de grandes anchos de banda y conexiones basadas en paquetes
en redes inalámbricas. Mientras utiliza y soporta el incremento en las capacidades de los últimos dispositivos inalámbricos, también provee compatibilidad
hacia atrás a contenidos WAP existentes, aplicaciones y servicios que utilizan
versiones previas de WAP.
Algunas características de WAP 2.0:
3.6. WAP
63
Soporte de pila de protocolo: Además de la pila WAP introducida,
WAP 2.0 añade soporte y servicios basados en la pila común de Internet
incluyendo soporte para TCP, TLS y HTTP. En comparación con ambas
pilas de protocolo, WAP 2.0 provee un modelo de conectividad en un
amplio rango de redes y portadoras inalámbricas.
Ambiente de aplicación WAP: Normalmente visto como “Navegador WAP”, el ambiente de aplicación de WAP 2.0 ha evolucionado para
aceptar el lenguaje de marca del navegador de Internet como estándar de
desarrollo. Esto ha llevado a la definición de un nuevo lenguaje llamado
“XHTML-MP” . XHTML-MP está basado en la modularidad del marco
de trabajo del eXtensible HyperText Markup (XHTML) lenguaje desarrollado por la W3C para reemplazar e incrementar el lenguaje HTML
usado actualmente.
Capacidades y servicios adicionales: Con WAP 2.0 existe un incremento en el número de características disponibles para desarrolladores,
operadores y usuarios.
Modelo de Programación WAP
El modelo de programación WAP está estrechamente alineado con el modelo de programación Web; ver fig. 3.6 de la pág. 61, usa el modelo Pull
(donde el cliente requiere contenido desde un servidor). De igual modo, WAP
2.0 extiende la arquitectura web añadiendo soporte a telefonía con WTA y
habilitando un modelo Push, donde el servidor puede enviar con iniciativa
contenido al cliente [?].
En versiones previas de WAP, WAP Proxy (referido como WAP gateway)
fue requerido para manipular los protocolos entre el cliente y el servidor origen. WAP proxy comunicado con el cliente usando los protocolos WAP que
están basados en gran parte en protocolos de comunicación de Internet, y
este comunicado con el servidor origen usando los protocolos estándares de
Internet.
WAP 2.0 no requiere la utilización del WAP proxy puesto que la comunicación entre el cliente y el servidor origen puede ser conducido usando HTTP.
De igual manera, colocando un WAP proxy se pueden optimizar los procesos
de comunicación y pueden ofrecer incrementos en los servicios móviles; ver
fig. 3.8 de la pág. 64. Además, un servidor proxy es necesario para ofrecer
64
CAPÍTULO 3. EL MUNDO MÓVIL
Figura 3.7: Modelo de Programación Wap.
funcionalidad Push.
Figura 3.8: Modelo Proxy para WAP 2.0.
Nuevas Características Añadidas y Servicios Mejorados
Además del ambiente de aplicación y el incremento de la capacidad del
micro-browser, WAP 2.0 también soporta otras características para mejorar
la experiencia del usuario. Estas características amplían las capacidades de
los dispositivos inalámbricos y mejoran la habilidad para entregar servicios y
aplicaciones útiles [?]. Algunas de las características adicionales de WAP 2.0
son las siguientes:
3.6. WAP
65
WAP push: Este servicio permite enviar contenido a dispositivos mediante aplicaciones basadas en servidor vía un push proxy. Esta funcionalidad ha sido mejorada por WAP 2.0. La funcionalidad de push es
especialmente relevante en aplicaciones de tiempo real que envían información a sus usuarios, como ser mensajes, precio de stock, alertas
actulizadas de tráfico.
User Agent Profile (UAProf ): Este servicio provee la descripción
de las capacidades de los clientes y las preferencias de los usuarios a
un servidor de aplicación. Mejorado por WAP 2.0, esto está basado en
la combinación Capabilities / Preference Profiles (CC/PP) trabajo de la
W3C, UAProf soporta el modelo de transacción cliente-servidor enviando
la información del usuario a servidores con la petición. Esta información
permite a los servidores adaptar su contenido y en consecuencia realizar
la preparación de la respuesta.
Data Synchronization: En un enfoque que ayuda a asegurar una solución común de marco de trabajo, el WAP Forum buscó una solución para
la sincronización de datos. Como resultado de ello, WAP 2.0 reconoce
la labor de la SyncML mediante la adopción del lenguaje SyncML como su opción para la solución de sincronización de datos. Los mensajes
SyncML se apoyan tanto con los protocolos WSP y HTTP/1.1
Multimedia Messaging Service (MMS): Este servicio prevee el marco de trabajo para implementar una solución de envio de mensajes ricas en características. MMS provee características y funcionalidades que
permiten repartir tipos variados de contenido. Dependiendo del modelo
de servicio, MMS permite un paradigma de entrega rápido (al igual que
SMS) o un método de almacén y reenvío (parecido al correo electrónico)
o debería permitir ambos modos para operar. Esta flexibilidad permite
a operadores ajustar el resultado a la experiencia del usuario.
66
CAPÍTULO 3. EL MUNDO MÓVIL
Capítulo 4
Aplicaciones Móviles
4.1.
Introducción
Los dispositivos de computación inalámbrica han crecido rápidamente, requeriendo 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 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.
67
68
CAPÍTULO 4. 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 se 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 [21].
4.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 seleccionar
4.2. ARQUITECTURA DE APLICACIONES MÓVILES
69
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 se 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.
70
CAPÍTULO 4. 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.
4.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 [21].
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.
4.3. PORTAL PARA APLICACIONES MÓVILES
71
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 interfase 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 sistema 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 reestablece, las copias locales y remotas se sincronican. 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
72
CAPÍTULO 4. 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 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
4.4. ARQUITECTURA DE BASES DE DATOS
73
requeridas, por lo tanto el prealmacenado de contenido debe 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
interfase del usuario, la mayoría esta 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 puede 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 fig.
4.1 de la pág. 74, la cual refleja varios tipos de modificaciones: agregado
de nuevos componentes (a los habituales de un portal no móvil).
4.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
74
CAPÍTULO 4. APLICACIONES MÓVILES
Figura 4.1: Arquitectura de un Portal Móvil.
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.
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 Manegadores de Bases de Datos Relacionales) hace esto posible a
través del uso de mecanismo interno de locking que previenen que más de un
usuario modifique un registro al mismo tiempo [21].
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
4.4. ARQUITECTURA DE BASES DE DATOS
75
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
las 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á mas dudas sobre la valides 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 aun arbitrario conjunto de datos.
Las desconexiones cliente / servidor deben ser transparentes al usuario.
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
76
CAPÍTULO 4. APLICACIONES MÓVILES
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 reestablecida. Mientras tanto el
usuario debe poder ser capaz de hacer referencia a la actualización aunque la
transmisión no se haya completado.
4.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 nungú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).
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.
4.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énti-
4.5. APLICACIONES MULTIPLATAFORMA
77
cas 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 5
Java
5.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.
79
80
CAPÍTULO 5. 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 5.1 de la página 81.
La tarea del programador es coordinar las acciones de los objetos y la
comunicación entre los mismos.
5.1. INTRODUCCIÓN AL LENGUAJE
81
Figura 5.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
[16].
Una gran ventaja de un lenguaje OO, son las bibliotecas de clases que se
pueden construir para la aplicación [12]. 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.
5.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.
82
CAPÍTULO 5. JAVA
Acceso a la red Internet..
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.
5.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.
5.1. INTRODUCCIÓN AL LENGUAJE
83
Figura 5.2: Proceso Compilación y Ejecución
El proceso de compilación y ejecución se pueden observar en la figura 5.2
de la página 83.
5.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”.
84
CAPÍTULO 5. JAVA
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
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.
5.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;
5.3. CONCEPTOS BÁSICOS
85
import java.awt.event.WindowEvent;
import java.util.*;
import java.awt.TextField;
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.
5.3.
Conceptos Básicos
5.3.1.
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
86
CAPÍTULO 5. JAVA
en la programación de clases [2]. 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
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 () {
}
}
5.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.
5.3. CONCEPTOS BÁSICOS
5.3.3.
87
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
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.
5.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.*;
88
CAPÍTULO 5. JAVA
5.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
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 5.1 de la página 89 se muestran las grandes categorías de tipos
para las variables en Java:
En la Tabla 5.2 de la página 89 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.
5.4. VARIABLES DE JAVA
89
Tipos Primitivos
int, short, byte, long
char, boolean
float, double
Referencias a Objetos
Strings
Arreglos
otros objetos
Cuadro 5.1: Categorías de Variables.
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
Cuadro 5.2: Tipos Primitivos de Datos
90
CAPÍTULO 5. JAVA
5.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.
5.4.2.
Datos de Clase
Son datos generales o globales a la ejecución de un aplicación.
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().
5.5. OPERADORES DEL LENGUAJE JAVA
5.5.
Operadores del Lenguaje Java
5.5.1.
Operadores Aritméticos
91
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 ( %).
5.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 5.3 de la pág. 91, muestra estos operadores y su equivalencia con el uso del operador igual (=).
Operador
+=
-=
=*
=/
%=
Utilización
op1 + = op2
op1 - = op2
op1 * = op2
op1 / = op2
op1 % = op2
ExpresiónEquivalente
op1 = op1 + op2
op1 = op1 - op2
op1 = op1 * op2
op1 = op1 / op2
op1 = op1 % op2
Cuadro 5.3: Operadores de asignación.
5.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
92
CAPÍTULO 5. JAVA
uso en Java es el estándar de estos operadores.
5.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.
5.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.
5.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
5.5. OPERADORES DEL LENGUAJE JAVA
93
se utilizan en una expresión más complicada, el resultado de utilizar estos
operadores en una u otra de sus formas será diferente.
5.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 5.4 de la pág. 93 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
Cuadro 5.4: Operadores relacionales.
5.5.8.
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”.
94
CAPÍTULO 5. JAVA
5.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.
5.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;
j = 5;
x = i + j;
5.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
5.6. ESTRUCTURAS DE PROGRAMACIÓN
95
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.
5.6.3.
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:
96
CAPÍTULO 5. JAVA
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
5.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.
5.6. ESTRUCTURAS DE PROGRAMACIÓN
97
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];
}
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.
98
CAPÍTULO 5. JAVA
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.
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
5.7. SERVLETS
99
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().
5.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.
Además los servlets son escalables, dando soporte para una multi-aplicación
de configuración del servidor. [10]
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.
100
CAPÍTULO 5. JAVA
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.
5.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 5.3 de la página 101,
se representan con letra normal las clases y las interfaces con cursiva.
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
5.7. SERVLETS
101
Figura 5.3: Jerarquía y Métodos de las Principales Clases para Crear Servlets.
102
CAPÍTULO 5. JAVA
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:
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, Set-
5.7. SERVLETS
103
Cookie, 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
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.
104
CAPÍTULO 5. JAVA
Se finaliza el servlet y la basura es recolectada.
El ciclo de vida de un Servlet se puede apreciar en la figura 5.4 de la página
104.
Figura 5.4: Ciclo de Vida de un Servlet.
5.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
5.7. SERVLETS
105
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
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.
5.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.
5.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.
106
CAPÍTULO 5. JAVA
5.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 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.
5.7. SERVLETS
107
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.
• 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”;
108
CAPÍTULO 5. JAVA
int intContador = 0;
%>
</BODY>
</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.
5.7. SERVLETS
109
<%
String strNombre = request.getParameter(“nombre”);
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.
110
CAPÍTULO 5. JAVA
Figura 5.5: Requerimiento de un archivo JSP.
Figura 5.6: Requerimiento de un Servlet
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
5.5 de la página 110.
Cuando el servidor Web recibe un requerimiento para un archivo JSP, el
servidor envía ese requerimiento al servidor de aplicaciones. El servidor de
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 5.6 de la página 110.
5.7. SERVLETS
111
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
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.
5.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 6
Java 2 Micro Edition
6.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.
113
114
CAPÍTULO 6. JAVA 2 MICRO EDITION
6.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:
6.1. INTRODUCCIÓN
115
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.
Figura 6.1: Arquitectura de la Plataforma Java 2 de Sun
La fig. 10.1 de la pág. 234 muestra la arquitectura de Java2.
116
CAPÍTULO 6. JAVA 2 MICRO EDITION
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” [14].
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. 6.2 de la
pág. 117): en realidad cada una de las ediciones está enfocada a ámbitos de
aplicación muy distintos [14].
6.1. INTRODUCCIÓN
117
Figura 6.2: Ubicación de las Tecnologías Java
6.1.2.
Algunas Consideraciones al Desarrollar en J2ME
Algunas consideraciones son las siguientes:
1. 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.
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.
2. 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
118
CAPÍTULO 6. JAVA 2 MICRO EDITION
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.
3. ¿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 [8].
6.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 [8].
Perfiles: Son unas bibliotecas Java de clases específicas orientadas a
implementar funcionalidades de más alto nivel para familias específicas
de dispositivos.
6.2. COMPONENTES DE J2ME
6.2.1.
119
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.
120
CAPÍTULO 6. 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.
6.2. COMPONENTES DE J2ME
121
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 fig. 6.3 de la pág. 121.
Figura 6.3: Proceso de Verificación
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.
122
CAPÍTULO 6. JAVA 2 MICRO EDITION
2. Tiempo de espera bajo para el recolector de basura.
3. Separación completa de la VM del sistema de memoria.
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).
6.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
6.2. COMPONENTES DE J2ME
123
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:
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 [14].
La tabla 6.1 de la pág. 124 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.
124
CAPÍTULO 6. 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
Cuadro 6.1: Librerías de configuración CDC
• 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:
◦ 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 ).
6.2. COMPONENTES DE J2ME
◦
◦
◦
◦
125
Un subconjunto de las bibliotecas del núcleo de Java.
Soporte para acceso a redes.
Soporte para E/S básica.
Seguridad.
La tabla 6.2 de la pág. 125 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
Cuadro 6.2: Librerías de configuración CLDC
6.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.
126
CAPÍTULO 6. JAVA 2 MICRO EDITION
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.
Figura 6.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 fig. 6.4 de la pág. 126 se puede ver cómo quedaría el esquema del
entorno de ejecución al completo.
6.2. COMPONENTES DE J2ME
127
A continuación se describirá con más detenimiento cada uno de estos perfiles:
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 [14].
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 6.3 de la pág. 127.
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
Cuadro 6.3: Librerías del Fondation 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 6.4 de la pág. 128 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.
128
CAPÍTULO 6. 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
Cuadro 6.4: Librerías del Personal Profile
6.2. COMPONENTES DE J2ME
129
Las siguientes propiedades se han eliminado del J2SE RMI v1.3 :
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.
En este momento este perfil se encuentra en fase de definición.
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:
130
CAPÍTULO 6. JAVA 2 MICRO EDITION
La aplicación (semántica y control de la aplicación MIDP).
Interfaz de usuario.
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 6.5 de la pág. 130 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
Cuadro 6.5: Librerías del MIDP Profile
6.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.
6.4. LOS MIDLETS
131
Otros mecanismos como Bluetooth, cable serie, etc, pueden ser soportados
por el dispositivo y a partir de estas conexiones se pueden instalar aplicaciones
(MIDlets).
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.
6.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.
Este preverificación, se debe hacer debido a las limitaciones de la máquina
virtual usada en estos dispositivos.
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.
132
CAPÍTULO 6. JAVA 2 MICRO EDITION
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 ”.
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”).
6.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.
6.4.2.
Ciclo de Vida de un MIDlet
Como puede ilustrarse en la fig. 6.5 de la pág. 133 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:
6.4. LOS MIDLETS
133
Figura 6.5: Ciclo Vida de un MIDlet.
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 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.
1. 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
134
CAPÍTULO 6. JAVA 2 MICRO EDITION
instalación como de si existiese algún problema durante ésta.
1. 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.
2. 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.
3. 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.
El AMS es el encargado de eliminar el MIDlet pidiendo una confirmación
del proceso
antes de continuar.
6.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 fig. 6.6 de la pág. 135.
Como se puede ver en la fig. 6.6 de la pág. 6.6, 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.
6.4.4.
El Paquete javax.microedition.midlet
El paquete javax.microedition.midlet define las aplicaciones MIDP y su
comportamiento con respecto al entorno de ejecución.
6.4. LOS MIDLETS
135
Figura 6.6: Estados de un MIDlet.
En la tabla 6.6 de la pág. 135 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
Cuadro 6.6: Clases del Paquete javax.microedition.midlet
6.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,
136
CAPÍTULO 6. JAVA 2 MICRO EDITION
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:
• 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”.
6.4. LOS MIDLETS
137
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)
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.
6.4.6.
Estructura de los MIDlets
Es posible decir que los MIDlets, al igual que los applets carecen de la
función main().
Aunque 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{
138
CAPÍTULO 6. JAVA 2 MICRO EDITION
public MiMidlet() {
/* Éste es el constructor de clase. Aquí se deben
* inicializar las variables.
*/
}
public startApp(){
/* Aquí se pueden incluir el código que el
* MIDlet ejecute cuándo se active.
*/
}
public pauseApp(){
/* Aquí se puede incluir el código que el
* MIDlet ejecute cuándo entre en el estado de pausa
* es opcional
*/
}
public destroyApp(){
/* Aquí se puede incluir el código que el
* MIDlet ejecute 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{
6.5. INTERFACES GRÁFICAS DE USUARIO
139
private Display pantalla;
private Form formulario = null;
public HolaMundo(){
pantalla = Display.getDisplay(this);
formulario = new Form(”Hola Mundo”);
}
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.
6.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,
140
CAPÍTULO 6. JAVA 2 MICRO EDITION
Figura 6.7: Jerarquía de Clases.
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.
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 fig. 6.7 de la pág. 140se puede apreciar la
organización de estas clases.
6.5. INTERFACES GRÁFICAS DE USUARIO
6.5.1.
141
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 6.7 de la pág. 142 se puede ver los métodos incluidos en esta
clase.
6.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 6.8 de la pág. 143.
6.5.3.
Las Clases Command y CommandListener
Un objeto de la clase Command mantiene información sobre un evento.
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á a el Command.
142
CAPÍTULO 6. JAVA 2 MICRO EDITION
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
Cuadro 6.7: Métodos de la Clase Display
6.5. INTERFACES GRÁFICAS DE USUARIO
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)
143
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
Cuadro 6.8: Métodos de la Clase Displayable
144
CAPÍTULO 6. JAVA 2 MICRO EDITION
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 6.9de la pág 144.
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
Cuadro 6.9: Tipos de Commands
Ejemplo de un Command con la etiqueta “Atras”:
new Command(“Atras”,Command.BACK,1)
La tabla 6.10 de la pág. 144 muestra los métodos de la clase Command.
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
Cuadro 6.10: Métodos de la Clase Command
6.5. INTERFACES GRÁFICAS DE USUARIO
145
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.
6.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.
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 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:
146
CAPÍTULO 6. JAVA 2 MICRO EDITION
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 6.11 de la pág. 146.
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
Cuadro 6.11: Tipos de Alerta
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.
6.5. INTERFACES GRÁFICAS DE USUARIO
147
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 6.12 de la pág. 148 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.
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.
148
CAPÍTULO 6. JAVA 2 MICRO EDITION
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()
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ón determinada
Almacena el estado de selección
en un array
Obtiene el ndice del elemento seleccionado
Obtiene el texto del elemento indicado por pos
Determina si est 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
Cuadro 6.12: Métodos de la Clase List
6.5. INTERFACES GRÁFICAS DE USUARIO
149
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.
Si no se cumple esta regla, se lanzaría la excepción IllegalStateException.
La tabla 6.13 de la pág.150 muestra los 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
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.*;
150
CAPÍTULO 6. JAVA 2 MICRO EDITION
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
(ItemStateLis tener 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 lo posición num
Elimina todos los Items del formulario
Devuelve el Item que se encuentra en
la posició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 n num
Determina si est seleccionado el elemento
Establece un listener p/ capturar eventos
Devuelve el número de Items del formulario
Cuadro 6.13: Métodos de la Clase Form
6.5. INTERFACES GRÁFICAS DE USUARIO
151
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”);
}
}
}
152
CAPÍTULO 6. JAVA 2 MICRO EDITION
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 6.14 de la
pág. 152
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
Cuadro 6.14: Métodos de la Clase StringItem
La Clase ImageItem
La clase ImageItem brinda la posibilidad de incluir imágenes en un formulario.
6.5. INTERFACES GRÁFICAS DE USUARIO
153
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 6.15 de la
pág. 154.
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:
154
CAPÍTULO 6. JAVA 2 MICRO EDITION
Métodos
String getAltText()
Int getAppearanceMode()
Image getImage()
Int getLayout()
void setAltText(String textoalt)
void setImage(Image imagen)
void setLayout(int layout)
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
Cuadro 6.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 6.16 de la pág. 155
6.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.
El objetivo del RMS es almacenar datos de tal forma que estén disponibles
una vez que el MIDlet pare su ejecución.
6.6. RMS (RECORD MANAGEMENT SYSTEM)
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()
155
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
Cuadro 6.16: Métodos de la Clase TextField
156
CAPÍTULO 6. JAVA 2 MICRO EDITION
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).
6.6.1.
Modelo de Datos
Como ya se ha dicho, el RMS está implementado en una base de datos
basada en registros; ver fig. 6.8 de la pág. 156.
Figura 6.8: Un MIDlet y el RMS
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 a la misma suite,
es decir pertenezcan al mismo grupo, como se puede ver en la fig. 6.9 de la
pág 157.
6.6. RMS (RECORD MANAGEMENT SYSTEM)
157
Figura 6.9: Acceso a Un RMS a Través de Un MIDlet Suite
6.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:
158
CAPÍTULO 6. JAVA 2 MICRO EDITION
Figura 6.10: Estructura de Un Record Store
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.
Un array de bytes destinados a almacenar la información deseada.
En la fig. 6.10 de la pág. 158 se ilustra la estructura de un Record Store.
6.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 por parte 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:
6.6. RMS (RECORD MANAGEMENT SYSTEM)
159
static RecordStore openRecordStore(String name, boolean createIfNeccesary,
int autorización, boolean writable).
static RecordStore openRecordStore(String name, String vendorName, String
suiteName).
El primero de ello usa 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 el.
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 6.17 de la pág. 160 se pueden apreciar los métodos que proporcionan operaciones con los Record Stores.
6.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 6.18 de la pág.161.
160
CAPÍTULO 6. JAVA 2 MICRO EDITION
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)
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 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
Cuadro 6.17: Métodos Generales de la Clase RecordStore
6.6. RMS (RECORD MANAGEMENT SYSTEM)
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)
161
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 o del registro id
Sustituye el registro id
con el valor de datonuevo
Cuadro 6.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.
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{
protected Display d;
protected Form form;
protected TextField textField;
protected TextField textField1;
protected Command ingresar, volver;
protected Alert alert;
protected TextField textField2;
162
CAPÍTULO 6. JAVA 2 MICRO EDITION
private RecordStore rs;
protected List list;
protected Form form2;
protected String[] respuesta;
// 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;
}
public TextField getTextField() {
if (textField == null) {
textField = new TextField(“Nombre jugador”, “”, 255,
TextField.ANY);
6.6. RMS (RECORD MANAGEMENT SYSTEM)
163
}
return textField;
}
public TextField getTextField1() {
if (textField1 == null) {
textField1 = new TextField(“documento”,“”, 255, TextField.ANY);
}
return textField1;
}
public Command getCommand(){
if (ingresar == null){
ingresar = new Command(“Cargar”,Command.OK,1);
}
return ingresar;
}
public Command getBack(){
if (volver == null){
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();
}
164
CAPÍTULO 6. JAVA 2 MICRO EDITION
}
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(“informacion”, “Los datos se estan cargando
espere...”, null, AlertType.INFO);
alert.setTimeout(3000);
}
return alert;
public TextField getTextField2() {
if (textField2 == null) {
textField2 = new TextField(“Puntaje”, “”, 2, TextField.NUMERIC);
}
return textField2;
}
private void cargarDatos(){
abrirRecordStore();
// luego se graban los datos y despues cierra la conexion
6.6. RMS (RECORD MANAGEMENT SYSTEM)
escribirRegistro(textField.getString(),
textField1.getString(),textField2.getString());
cerrarRecordStore();
}
private void abrirRecordStore(){
try{
rs = RecordStore.openRecordStore(“Clientes”,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 cliente, String doc, String pun){
byte[] registro;
ByteArrayOutputStream baos;
DataOutputStream dos;
try{
baos = new ByteArrayOutputStream();
dos = new DataOutputStream(baos);
dos.writeUTF(cliente);
dos.writeUTF(doc);
dos.writeUTF(pun);
165
166
CAPÍTULO 6. JAVA 2 MICRO EDITION
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() + “ documento: ” +
dis.readUTF()+“ puntaje” + dis.readUTF();
bais.reset();
}
bais.close();
dis.close();
}catch(Exception e){
System.out.println(“error al leer registros”);
6.6. RMS (RECORD MANAGEMENT SYSTEM)
}
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(){
167
168
CAPÍTULO 6. JAVA 2 MICRO EDITION
d.setCurrent(getForm2());
}
}
En la fig. 6.11 de la pág. 168 se puede apreciar las pantallas del ejemplo
en un emulador de Nokia.
Figura 6.11: Ejemplo en un emulador Nokia.
6.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);
6.6. RMS (RECORD MANAGEMENT SYSTEM)
169
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.
6.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:
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.
170
CAPÍTULO 6. JAVA 2 MICRO EDITION
6.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.
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 fig. 6.12 de la pág. 171 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.
6.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.
Clase Connector
Como se he dicho anteriormente, el GCF proporciona la clase Connector
que esconde los detalles de la conexión. De esta forma se pueden realizar
6.7. COMUNICACIONES EN J2ME
171
Figura 6.12: Jerarquía de Interfaces
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
un objeto que implementa la interfaz Connection.
En la tabla 6.19 de la pág. 172 se puede apreciar los métodos de la clase
Connector.
172
CAPÍTULO 6. JAVA 2 MICRO EDITION
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ón 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
Cuadro 6.19: Métodos de la Clase Connector
6.7. COMUNICACIONES EN J2ME
173
Los tipos de permisos se pueden ver en la tabla 6.20 de la pág 173.
Modo
READ
READ_WRITE
WRITE
Descripción
Permiso de solo lectura
Permiso de lectura y escritura
Permiso de solo escritura
Cuadro 6.20: Tipos de Permisos
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:
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 (ver Tabla).
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();
174
CAPÍTULO 6. JAVA 2 MICRO EDITION
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 (ver Tabla).
La conexión a través de esta interfaz se realiza de la misma forma a la
interfaz
InputConnection.
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);
}
6.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
6.7. COMUNICACIONES EN J2ME
175
Establecimiento
de
conexión
Conectado
Sin
Conexión
Figura 6.13: Estados de una Conexión HTTP
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 fig.
6.13de la pág 175.
Establecimiento de la Conexón
En este estado es donde se van a establecer los parámetros de la comunicación.
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 6.21 de la pág.
176
CAPÍTULO 6. JAVA 2 MICRO EDITION
176 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
Cuadro 6.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 6.22 de la pág. 6.22.
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
Cuadro 6.22: Tipos de peticiones
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 6.23 de la pág. 177 se pueden
ver algunos de los más importantes.
Peticiones GET
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
6.7. COMUNICACIONES EN J2ME
Campo
public void setRequestMethod
(String tipo)
User-Agent
User-Agent
Content-Language
Content-Length)
Accept
Connection
Cache-Control
Expires
If-Modified-Since
177
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
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
Cuadro 6.23: Campos de la Cabecera
178
CAPÍTULO 6. JAVA 2 MICRO EDITION
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
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();
6.7. COMUNICACIONES EN J2ME
179
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:
1xx: Código de información.
2xx: Código de éxito.
3xx: Código de redirección.
4xx: Código de error del cliente.
180
CAPÍTULO 6. JAVA 2 MICRO EDITION
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 codigo del MIDlet como del Servlet
que recibe la peticion y devuelve una respuesta.
Codigo del MIDlet
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javx.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class HiloConexionMidlet extends MIDlet implements CommandListener, Runnable{
private Display mDisplay;
private Form mMainScreen;
6.7. COMUNICACIONES EN J2ME
public HiloConexionMidlet() {
mMainScreen = new Form(”HTTPMIDlet”);
mMainScreen.append(
”Press OK to create an HTTP connection.”);
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);
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) {
// Put up a wait screen.
Form waitForm = new Form(”Connecting...”);
181
182
CAPÍTULO 6. JAVA 2 MICRO EDITION
mDisplay.setCurrent(waitForm);
Thread t = new Thread(this);
t.start();
}
}
// metodo Runnable
public void run() {
String url = ”http://localhost:9080/hiloServer/ServerHilo”;
Form resultsForm = new Form(”Results”);
Command backCommand =
new Command(”Back”, 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=qm”.getBytes());
os.write(”&clave=hi”.getBytes());
os.flush();
// se toma la respuesta.
in = hc.openInputStream();
6.7. COMUNICACIONES EN J2ME
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) {
try { in.close(); }
catch (IOException ioe) {}
}
if (hc != null) {
try { hc.close(); }
catch (IOException ioe) {}
}
}
mDisplay.setCurrent(resultsForm);
}
Codigo del Servlet
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 {
183
184
CAPÍTULO 6. JAVA 2 MICRO EDITION
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(”qm”) && password.equals(”hi”)) {
out.println(”Login successful.”);
} else {
out.println(”Login failed.”);
}
}
}
Capítulo 7
Introducción al DB2
7.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 [15].
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
185
186
CAPÍTULO 7. 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” [19].
7.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.
7.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.
7.2. SISTEMA DE ADMINISTRACIÓN DE BASES DE DATOS
187
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.
7.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 7.1 de la página 188.
Un DBMS es un conjunto de programas que maneja todos los accesos a
las bases de datos; ver figura 7.2 de la página 188.
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.
188
CAPÍTULO 7. INTRODUCCIÓN AL DB2
Figura 7.1: Estructura de Una Base de Datos
Figura 7.2: Sistema de Administración de Bases de Datos
7.3. ORGANIZACIÓN DE BASES DE DATOS
7.3.
189
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.
7.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
7.3 de la página 190).
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.
190
CAPÍTULO 7. INTRODUCCIÓN AL DB2
Figura 7.3: Modelo de Bases de Datos Jerárquica.
7.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 7.4 de la
página 191).
Cada Producto puede ser distribuido por más de un Vendedor, así mismo
cada Vendedor puede encargarse de diferentes Ciudades.
7.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
7.3. ORGANIZACIÓN DE BASES DE DATOS
191
Figura 7.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 7.5 de la página 192).
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).
192
CAPÍTULO 7. INTRODUCCIÓN AL DB2
Figura 7.5: Modelo de Bases de Datos Relacional.
No soporta Recursividad.
Falta de Procesamiento/Disparadores.
No admite Herencia.
7.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
7.4. INTRODUCCIÓN A DB2 UDB
193
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.
7.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).
194
CAPÍTULO 7. 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.
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 7.6 de la
página 195) .
Documentos XML ( XML Extender) (ver figura 7.7 de la página 195).
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,
7.4. INTRODUCCIÓN A DB2 UDB
Figura 7.6: AIV Extender.
Figura 7.7: XML Extender.
195
196
CAPÍTULO 7. INTRODUCCIÓN AL DB2
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.
7.5.
DB2 Express-C
Es una edición de la comunidad sin costo del servidor de datos DB2. Es
ideal para las pequeñas empresas y empresas con múltiples sucursales, así como los desarrolladores y socios de negocios que sirven a estos clientes. DB2
Express-C se puede configurar rápidamente, es fácil de usar, e incluye capacidades de auto-gestión. También incorpora la totalidad de las principales
características de las ediciones de DB2 más escalable, incluyendo la revolucionaria tecnología pureXML para la alimentación de una nueva generación
de la Web 2.0 y las soluciones basadas en SOA.
DB2 Express-C está disponible para su descarga e instalación sin cargo.
Está disponible para los usuarios que requieren apoyo técnico o funcionalidades
adicionales, tales como clustering de alta disponibilidad y replicación de datos.
La suscripción anual para DB2 Express (Licencia de Plazo Fijo) está disponible
con un precio por servidor métricas. [13]
7.5.1.
Información Técnica
Recursos:
Se limite la utilización de recursos totales de la siguiente manera:
• Procesador: 2 núcleos.
• Memoria: 2 GB.
Sistemas operativos:
• Linux (32 bits, 64 bits, POWER).
7.5. DB2 EXPRESS-C
197
• Windows (32 bits, 64 bits).
• Solaris (Intel de 64 bits).
• Mac OS X (de 64 bits de Intel beta * *)
7.5.2.
DB2 para Linux, UNIX y Windows Características y
Beneficios
Autónomas
El costo de administración de base de datos puede ser de gran supere el
coste de la base de datos de software y hardware por lo que es fundamental
que el tiempo que el administrador de base de datos se utilizan con eficacia
y eficiencia. DB2 incluye numerosas características autónomas, como el Administrador de memoria de ajuste automático, sin que los administradores de
bases de datos de muchas tareas comunes de administración. Como resultado,
los administradores de base de datos pueden dedicar menos tiempo a la gestión
del sistema y más tiempo a centrarse en otras actividades que beneficien a la
empresa.
Compresión de Datos
Las empresas con grandes volúmenes de datos sabe lo caro de almacenamiento puede ser. DB2 puede reducir ese costo con la industria líder en
tecnologías de compresión de datos que comprimen filas, índices, tablas temporales, LDN, XML, y los datos de back-up con tasas de compresión que
puede alcanzar más del 80 %. Por otra parte, debido a la compresión permite
a DB2 para mantener más y datos en la memoria, evitando así el rendimiento robando / S de disco, el rendimiento de base de datos puede aumentar
considerablemente.
Rendimiento
DB2 ha dominado los puntos de referencia clave de rendimiento en muchas
ocasiones en los últimos años, tanto en línea de procesamiento de transacciones
(OLTP) y On-Line Analytical Processing (OLAP) puntos de referencia. Lo que
esto significa que el rendimiento de clase mundial para empresas con base de
datos es que pueden hacer más trabajo con su hardware existente, a fin de
evitar o retrasar las costosas actualizaciones del servidor.
198
CAPÍTULO 7. INTRODUCCIÓN AL DB2
Escalabilidad
DB2 pureScale utiliza un cluster basado en la arquitectura de disco compartido para ofrecer una fácil escalabilidad y alta disponibilidad. DB2 pureScale
evita muchos de los inconvenientes de las soluciones de disco compartido basado en clusters de otros proveedores. Otras soluciones de incurrir en una çabeza
de racimo", que limita su capacidad de escalar más allá de unos pocos nodos,
mientras que DB2 pureScale crece con una eficiencia casi lineal. Otras soluciones tardar minutos en reanudar el proceso después de un fallo del nodo,
mientras que DB2 pureScale sigue funcionando sin degradación del rendimiento. Adición de servidores a otras soluciones de sintonización complejo y requiere cambios a código de la aplicación, mientras que DB2 pureScale permite
ampliar la base de datos sin ajuste del sistema y requiere cambios mínimos en
el código de aplicación.
Seguridad
Acceso no autorizado de datos es una amenaza siempre presente de que
puede terminar costando sumas considerables de dinero de negocios, su reputación, o ambos. DB2 ofrece un conjunto completo de funciones de seguridad
que con eficacia y decisión minimizar esta amenaza. DB2 proporciona mayor
tranquilidad con el mecanismo ligero de auditoría de seguridad que se pueden
utilizar para comprobar que no ha habido acceso a datos no autorizados.
Fiabilidad
Para muchas empresas, el tiempo de inactividad de base de datos es igual
a dinero y la oportunidad perdida. DB2 puede reducir al mínimo el tiempo de
inactividad asociado con muchas actividades previstas - como la modificación
de una tabla - y muchos eventos no planificados - por ejemplo un corte de
energía - ya sea eliminando el tiempo de inactividad total o reducir su duración
a unos pocos segundos.
XML Puro
XML puede reducir significativamente el coste de desarrollo y mantenimiento de aplicaciones en continua evolución con las capacidades de entrada o
7.5. DB2 EXPRESS-C
199
de información - tales como formularios en línea impuesto sobre la renta. Con
el avance de XML nativo único apoyo proporcionado por DB2, las ventajas
de XML se extiende a la base de datos e incluyen la capacidad de evolucionar
fácilmente un esquema XML en cuestión de minutos para que coincida con
la aplicación cambia sin actualizar el esquema de tabla existente o los datos
XML existentes en esa tabla.
Varios proveedores de SQL y el apoyo de la API
Las empresas no pueden permitirse el lujo de tener sus equipos de desarrollo
de aplicaciones luchando con desconocidos sintaxis SQL y las API de base
de datos de extranjeros. Con DB2, desarrolladores de aplicaciones no DB2
puede realmente comenzar a ejecutar gracias al apoyo entre proveedores de
muchas API como JDBC, ODBC y NET., Así como el apoyo ricos de SQL,
las funciones de un proveedor de base de datos, y tipos de datos.
7.5.3.
Herramientas de DB2
Centro de Control (Control Center)
La herramienta primaria para la administración de DB2 es el Centro de
Control, ilustrado en la figura 7.8 de la página 200.
El Centro de Control es una herramienta de administración centralizada
que te permite:
Ver el sistema, instancias, bases de datos y objetos de la base de datos;
Crear, modificar y manejar objetos de las bases de datos;
Lanzar otras herramientas gráficas de DB2.
Hay varias formas de lanzar el Centro de Control :
Navegando a través del menú de inicio de Windows.
Ejecutando db2cc en la línea de comandos.
Dando clic en el icono de el Centro de Control en la barra de herramientas
de cualquier otra herramienta gráfica de DB2.
200
CAPÍTULO 7. INTRODUCCIÓN AL DB2
Figura 7.8: Centro de Control.
7.5. DB2 EXPRESS-C
201
Desde el icono DB2 en Windows como se muestra en la figura 7.9 de
la página 201 (Da clic sobre el icono verde DB2 y selecciona la opción
Central de Control de DB2).
Figura 7.9: Lanzando Centro de Control de DB2 desde la bandeja de Windows.
El Editor de Comandos DB2
Usando el Editor de Comandos DB2 (editor de comandos), se pueden ejecutar comandos DB2, sentencias SQL y XQuery, analizar el plan de ejecución
de una sentencia, y ver o actualizar resultados de consultas.
En la figura 7.10 de la página 202 se muestra el editor de comandos DB2.
En el área de entrada, puedes ingresar varias sentencias, tan largas hasta
que se presente el caracter de finalización. Si se presiona el botón ejecutar,
las sentencias serán ejecutadas una después de otra. Si tú seleccionas explícitamente una sentencia, sólo esa sentencia será ejecutada. Debe existir una
conexión a la base de datos para devolver sentencias SQL, sin embargo, una
de esas sentencias puede ser una sentencia de conexión.
Lanzando el Editor de Comandos Se podrá lanzar el Editor de Comandos de varias formas:
Desde el menú de inicio de Windows:
202
CAPÍTULO 7. INTRODUCCIÓN AL DB2
Figura 7.10: El Editor de Comandos DB2.
7.5. DB2 EXPRESS-C
203
Start -> Programs -> IBM DB2 -> DB2COPY1 (Default) -> Command
Line Tools -> Editor
de Comandos.
Desde la línea de comandos, escribe db2ce.
Desde el menú herramientas en El Centro de Control.
Dentro de el Centro de Control.
• Dar clic derecho en el icono de la base de datos SAMPLE en el
árbol de objetos del panel de el Centro de Control y selecciona el
elemento del menu Query.
• Siempre que un objeto consultable esté seleccionado (base de datos,
tabla, etc.), se puede lanzar el Editor de Comandos dando clic en
la liga de Query que está en el panel de detalle de objetos de el
Centro de Control.
Desde el Centro de Control , dar clic en el icono de Editor de Comandos
en la barra de herramientas como muestra la figura 7.11 de la página
203.
Figura 7.11: El icono Editor de Comandos en El Centro de Control.
SQL Assist Wizard La figura 7.12 de lq página 204 muestra el SQL Assist
Wizard. Es bastante claro su uso. Primero indica el tipo de sentencia SQL
para la cual necesitas asistencia (SELECT, INSERT, UPDATE, DELETE).
Dependiendo de que sentencia se haya elegido, diferentes opciones aparecerán.
En la parte baja de la ventana verás cómo la sentencia SQL es construida a
partir de diferentes elecciones en el asistente.
Figura 7.12: El SQL Assist.
Capítulo 8
RAD for WebSphere
8.1.
¿Qué es RAD 6.0?
Rational Application Developer es el cambio de marca de WebSphere Studio Application Developer. IBM construyó WebSphere Studio Application Developer en la parte superior de Eclipse - un proyecto de código abierto para
desarrollar un entorno abierto, extensible, de desarrollo integrado (IDE) y personalizado que para el desarrollo J2EE específicamente para WebSphere. Con
la adquisición de la familia de productos de Rational de IBM ha ampliado
WebSphere Studio Application Developer y la cartera de Rational para incluir
una familia totalmente integrada de productos.
IBM Rational Software Development Platform, que permitirá a los desarrolladores y equipos de proyecto para colaborar en la proyecto completo ciclo
de vida.
Acelera el desarrollo de J2EE y Portal y mejora la calidad del código. IBM
R
Rational Application Developer Eclipse se extiende con un rápido desarrollo. Ayuda a los desarrolladores de Java a diseñar, desarrollar, ensamblar,
probar y desplegar el perfil Java/J2EE de alta calidad, Portal Web, servicios
Web y aplicaciones SOA. IBM Rational Application Developer es integrada y
optimizada para IBM WebSphere Application Server e IBM WebSphere Portal
Server. Además incluye entornos de prueba para estos productos. Utiliza sólidas capacidades para crear aplicaciones SOA, incluyendo la capacidad de crear
automáticamente SOA, componentes necesarios tales como WSIL y archivos
205
206
CAPÍTULO 8. RATIONAL APPLICATION DEVELOPER
WSDL.
Rational Application Developer incluye herramientas para mejorar la calidad del código:
Una herramienta de perfiles de Java ayuda a analizar el rendimiento de
una aplicación, uso de memoria y problemas de los subprocesos.
Una herramienta de análisis de software identifica patrones y antipatrones en el código de la aplicación, y compara el código de normas de
codificación.
Para administrar el código fuente, se configurar Rational Application Developer para trabajar con un sistema de repositorio.
El producto se entrega con conectores para:
IBM Rational ClearCase, para el control de código fuente.
IBM Rational ClearQuest para la gestión de defectos.
IBM Rational Team Concert cliente que puede ser utilizado para control
de código fuente y de gestión de defectos.
El banco de trabajo incluye herramientas para la implementación de una
aplicación a un servidor local o remoto.
Contiene los entornos de prueba para IBM WebSphere Application Server
e IBM WebSphere Portal . También es compatible con Apache Tomcat . El
uso de estas herramientas utilizando el entorno de desarrollador de software
permite probar la aplicación a nivel local antes de publicarlo en un servidor
de producción.
Debido a que Rational Application Developer está basado en Eclipse, puede
soportar los plug-ins para Eclipse, así como plug-ins específicamente para las
herramientas de Rational.
8.1.1.
Rational Software Development Platform
IBM Rational Software Development Platform es un entorno común de
desarrollo basado en Eclipse que es compartida por los siguientes productos:
8.1. ¿QUÉ ES RAD 6.0?
207
R
R
IBM Rational Web Developer
R
R
IBM Rational Application Developer
R
R
IBM Rational Software Modeler
R
R
IBM Rational Software Architect
R
R
IBM Rational Tester funcional
R
R
IBM Rational Performance Tester
Con la instalación de Rational Software Architect, se tiene una versión
completa de Rational Application Developer.
En la figura 8.1 de la página 207 se puede obrservar el entorno de trabajo
del Rational Software Development Platform.
Figura 8.1: RAD. Entorno de Trabajo.
208
CAPÍTULO 8. RATIONAL APPLICATION DEVELOPER
8.1.2.
Rational Application Developer for WebSphere Software se extiende de Eclipse
Ayuda a los desarrolladores de Java a diseñar rápidamente, desarrollar,
ensamblar, probar y desplegar el perfil Java/J2EE de alta calidad, Portal Web,
servicios Web y aplicaciones SOA.
Aumenta la productividad y reduce los ciclos de desarrollo y pruebas,
ya que extiende el entorno Eclipse 3.2.
Características de un proceso de instalación flexibles diseñados para proporcionar a los desarrolladores con sólo las funciones que necesitan.
Está integrada y optimizada para IBM WebSphere Application Server
e IBM WebSphere Portal Server y incluye productos para entornos de
prueba.
Acelera J2EE, portales, servicios web y desarrollo de aplicaciones SOA.
Acorta la curva de aprendizaje de Java a través del diseño visual, con
auto-sincronizado modelo de código.
Utiliza las capacidades robustas para crear aplicaciones SOA, incluyendo
la capacidad de crear automáticamente los componentes necesarios SOA,
como los archivos WSDL y WSIL.
Aplica técnicas visuales de desarrollo de portales para acelerar el desarrollo.
Le permite colaborar y compartir recursos de todo el equipo utilizando
una función de control de versiones de Rational ClearCase LT, la integración con otras facetas del ciclo de vida-incluidos los requisitos, gestión
del cambio y la orientación del proceso.
Simplifica el desarrollo de páginas Web y la gestión.
Sistemas operativos soportados: Linux, Windows.
Eclipse 3.2 Integración
Eclipse 3.2 es un entorno abierto que trae la integración y extensibilidad
para el entorno de desarrollo.
8.1. ¿QUÉ ES RAD 6.0?
209
Extiende Eclipse 3.2 con herramientas de desarrollo visual, JSF, y soporte de IBM WebSphere.
Interfaz de usuario común.
Gestión de proyectos.
Vistas disponibles: lista de tareas, Navigator, Contorno, enlaces, etc.
Perspectivas Personalizable.
Ayuda de escritorio y los marcos.
Código de Ayuda.
Servicios de depuración.
Productividad
Instalación flexible: permite el acceso sólo a las características que usted
necesita.
Hojas de trucos para los patrones de desarrollo común.
Las plantillas de aplicación y la biblioteca de plantillas.
Procedimientos y tutoriales basados en escenarios .
Introducción y guía de instalación .
8.1.3.
Desarrollo Web
Las herramientas RAD y asistentes llevan a todos los aspectos del desarrollo Web en una interfaz común y permiten a los desarrolladores con diversos
antecedentes técnicos, e incluso aquellos no familiarizados con Java, para construir rápidamente las aplicaciones.
JavaServer Faces support: aplicación JSF de referencia, componentes
JSF y herramientas visuales.
JSF informe basado en la visualización de componentes para incrustar
informes en las aplicaciones Web.
210
CAPÍTULO 8. RATIONAL APPLICATION DEVELOPER
Diseño Web del sitio para administrar y analizar visualmente los sitios
Web.
JSP y servlets asistentes
Struts support.
Plantillas y muestras.
Soporte para HTML, DHTML, XHTML, CHTML, WML, Struts y etiquetas visuales personalizadas.
Diseñador de páginas con round-trip para editar capacidad de diseño
WYSIWYG de páginas JSP.
R
Activa la depuración de scripts de JavaScript y Visual Basic Script.
Crystal Report: para la elaboración de informes de datos visuales.
Prueba y licencia de desarrollo de Crystal Enterprise Server para la presentación de informes en toda la empresa.
8.1.4.
Desarrollo de Java
Crear aplicaciones ricas utilizando una variedad de editores visuales, los
asistentes y la generación de código, la fusión y herramientas de re-factoring.
Entorno de desarrollo integrado.
Java Runtime Environment configurable (JRE).
Java Development Kit (JDK), la versión 5 de apoyo.
Bloc de notas para probar fragmentos de código.
Re-factoring.
Modelado visual de código con sincronización automática de código y
modelos.
8.1. ¿QUÉ ES RAD 6.0?
8.1.5.
211
Editor Visual de Java
Editor Visual para Java con manejo de eventos de Java para crear interfaces gráficas de aplicaciones de usuarios con tecnolgía AWT, Swing, y los
componentes SWT, incluye Javadoc
Diseño de componentes JSF.
Construcción de GUI Swing.
SWT GUI construcción.
8.1.6.
Servicios de Desarrollo Web
Servicios integrales de Internet y herramientas de desarrollo SOA para
simplificar y automatizar el proceso de construcción de WS-I, además servicios
Web compatibles con las aplicaciones.
Los servicios Web para acelerar el desarrollo de servicios.
Soporte para UDDI 2.0 y v3, SOAP 1.1, WSDL 1.1, WSIL, J2EE 1.4, y
AXIS.
Crear, validar y detectar servicios web compatibles con WS-I.
Servicios Web de localización basados en WSIL.
Descubrir y publicar servicios para el Registro de empresas UDDI.
Crear o transformar los servicios Web a los artefactos existentes, tales
como Java beans, archivos DADX y componentes EJB.
Construir artefactos envolviendo en SOAP ydescribe en WSDL.
Editor de WSDL.
Desarrollar aplicaciones web de servicios para clientes a partir de muestras.
Implementación y prueba de servicios Web en WebSphere Application
Server o entornos de prueba Tomcat.
212
CAPÍTULO 8. RATIONAL APPLICATION DEVELOPER
Generar z-series nativos y los servicios Web COBOL.
Web services Explorer.
Proceso de orientación para el desarrollo de aplicaciones SOA.
8.1.7.
XML para el Desarrollo
Herramientas completa para crear, editar y transformar documentos XML
y la integración de datos relacionales y XML.
Esquemas y herramientas XML.
XML herramientas de autor - editor de XML, DTD editor, editor de
esquemas XML.
Herramientas de transformación XML: editor de mapas XML a XML,
generador XSLT.
Base de datos de herramientas de mapeo XML: constructor visual de
DAD para la asignación de RDB a XML, la escritura DAD.
XSL editor.
Xpath asistente.
8.1.8.
Desarrollo de Base de datos
Vistas, asistentes y editores, que sea fácil de desarrollar y probar los elementos de las aplicaciones
Base de datos Wizards para simplificar la creación de bases de datos.
R
Soporte para IBM DB2, Informix, Nubes IBM, Microsoft SQL Server
Oracle 9i, y Sybase.
DB Explorer para navegar o importar esquemas de bases de datos.
Vista de datos para crear y trabajar con esquemas de base de datos.
8.1. ¿QUÉ ES RAD 6.0?
213
Generador de consultas SQL y asistente para crear de forma visual y
ejecutar sentencias SQL.
Relational Schema Center: tablas de mapa para base de datos relacional
a XML.
Mapeo de obletos a relacional (top-down, meet-in-the-middle and bottomup).
Asignación de wizard.
Generar y poner a prueba de Acceso a Documentos Definición (DAD).
Generador de procedimiento almacenado.
SQLJ support.
8.1.9.
Desarrollo de Portales
Herramientas viuales para el desarrollo de portales y WebSphere Portal
que es el entorno de prueba para apoyar el desarrollo y testeo de portales
individuales y aplicaciones completas.
Visual desarrollo de portlets y WebSphere Portal ambiente de la unidad
de prueba.
Desarrollo visual de aplicaciones de portal y la edición de los temas y
skins que controlan su apariencia.
Soporte integrado para JSF y el framework Struts.
Desarrollo de negocios portlet utilizando IBM WebSphere Portal Application Integration (SAP, Seibel).
Plantillas de portlet .
Soporte para IBM Portlet API y el JSR 168 Portlet API estándar.
214
CAPÍTULO 8. RATIONAL APPLICATION DEVELOPER
8.1.10.
Desarrollo J2EE
Soporte Integral para el modelo de programación J2EE acelerando el desarrollo de componentes EJB y pruebas.
Concurrente para J2EE 1.2, 1.3, 1.4 especificaciones.
Apoyo a Servlet 2.2, 2.3, 2.4 y JSP 1.1, 1.2, 2.0.
Soporte para EJB
TM
1.1, 2.0, 2.1.
Soporte para Java Message Service (JMS) y Lenguaje de consulta de
EJB.
Apoyo a JAR, EAR, WAR.
Asistentes para la creación de beans de sesión y beans de entidad.
Apoyo a la persistencia administrada por beans (BMP) y la persistencia
gestionada por contenedor (CMP).
Soporte para el desarrollo de EJB utilizando anotaciones Java (etiquetas
Xdoclet foro).
O / R Mapping (de arriba hacia abajo y de abajo arriba).
Generated EJB Test Client EJB.
Apoyo a la creación de aplicaciones J2EE con JDK 5, dirigido a WebSphere Application Server v5.1, v6.0, v6.1.
EJB cliente JAR apoyo para automatizar la creación de clientes EJB.
EJB fragmento para simplificar la generación de código EJB de acceso
alcliente.
8.1.11.
Equipo de Desarrollo
Integración con IBM Rational ClearCase y Rational ClearQuest permite
una amplia gama de operaciones de gestión de cambio que se realiza directamente desde el entorno de desarrollo, proporciona una visión integrada de los
proyectos y aumenta tanto la productividad del equipo y la colaboración.
8.1. ¿QUÉ ES RAD 6.0?
215
Conectable repositorios de control de versiones.
Adaptadores para el sistema de versiones concurrentes.
Adaptadores para Rational ClearCase.
Rational ClearCase LT Server incluido.
Espacio de nombres de versiones de la integración con Rational ClearCase
LT.
RUP Developer Configuration.
8.1.12.
Especificación de Arquitectura. UML
UML Editor Visual para Java y EJB para visualizar y editar los componentes de Java y J2EE
Editos de diagramas de clases para clases e interfaces de Java y EJBs.
Vista de las tablas de datos y soporte del diagrama
Diagramas de secuencia.
La revisión de código (análisis estático): Proporciona sugerencias ’Quick
Fix’ y permite la personalización de las normas, a través de reglas de
plantillas.
8.1.13.
Pruebas e Implementación
Entorno de prueba para los HTML y JSP, Servlets.
EJB universal test client.
Ant secuencias de comandos y un marco de pruebas JUnit.
TCP / IP Monitor para supervisar las solicitudes y respuestas entre un
navegador y un servidor de aplicaciones.
Las herramientas automatizadas para administrar instancias del servidor
y las configuraciones de servidor, incluyendo la creación automática y la
presentación de secuencias de comandos wsadmin.
216
CAPÍTULO 8. RATIONAL APPLICATION DEVELOPER
Prueba de diferentes entornos en tiempo de ejecución local o remota.
TPTP perfiles de rendimiento y la explotación.
Herramientas mejoradas de análisis de tiempo de ejecución: la detección
de pérdida de memoria, detección de bloqueo de rosca, puntas de prueba
definidos por el usuario, la cobertura de código .
8.1.14.
Asistencia Técnica de Servidor
Unidad Integrada entorno de prueba es compatible con las pruebas locales
y remotas para agilizar las pruebas de aplicaciones y aumentar la calidad del
código.
WebSphere Application Server entornos de prueba de la unidad: v5, v5.1,
v6.0, V.6.1 (WebSphere Application Server v. 6.1 incluye para la prueba).
WebSphere Application Server - Express entornos de prueba de la unidad:
v5.0, v5.1, v6.0.
Tomcat Jakarta Yakarta Tomcat.
WebSphere Portal Server entornos unidad de prueba: v5.1, y v. 6.0 (WebSphere Portal Server v. 6.0 para la prueba).
8.2.
WebSphere Application Server
8.2.1.
¿Qué es WebSphere?
IBM WebSphere es una plataforma de IBM para 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.
8.2. WEBSPHERE APPLICATION SERVER
217
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 calidad-de-servicio mejor. También permite la
diferenciación de niveles de servicio con base en el tipo de cliente.
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.
8.2.2.
¿Que es WebSphere Application Server?
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 [4].
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.
218
CAPÍTULO 8. RATIONAL APPLICATION DEVELOPER
Figura 8.2: WebSphere para e-bussines.
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
la Web y escalar estas aplicaciones para adecuarlas a las necesidades de los
cambios y de la demanda.
En la fig. 8.2 de la pág. 218 se puede observar la plataforma del Software
de WebSphere para e-bussines.
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.
8.2. WEBSPHERE APPLICATION SERVER
219
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
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 coste 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 conjunto de dispositivos rico 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.
220
CAPÍTULO 8. RATIONAL APPLICATION DEVELOPER
Application Server - Enterprise Edition
La Edición empresarial del IBM WebSphere Application Server, en junto
con IBM WebSphere Studio Application Developer Integration Edition, ofrece
una combinación potente de tiempo de ejecución y herramienta que permite
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:
Coreografiar visualmente y componer servicios de la Web y componentes
de aplicativo J2EE a través de una interfase de 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 coste de tiempo de ejecución del
servidor de 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.
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.
8.2. WEBSPHERE APPLICATION SERVER
221
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.
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).
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.
222
CAPÍTULO 8. RATIONAL APPLICATION DEVELOPER
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.
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.
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 de 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.
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.
8.2. WEBSPHERE APPLICATION SERVER
223
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.
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
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.
Capítulo 9
Introducción al Servidor
Tomcat 5.0
9.1.
Descripción
Tomcat (también llamado Jakarta Tomcat o Apache Tomcat) funciona
como un contenedor de servlets desarrollado bajo el proyecto Jakarta en la
Apache Software Foundation. Tomcat implementa las especificaciones de los
servlets y de JavaServer Pages (JSP) de Sun Microsystems.
9.2.
Entorno
Tomcat es un servidor web con soporte de servlets y JSPs. Tomcat no
es un servidor de aplicaciones, como JBoss o JOnAS. Incluye el compilador
Jasper, que compila JSPs convirtiéndolas en servlets. El motor de servlets de
Tomcat a menudo se presenta en combinación con el servidor Web Apache.
Tomcat puede funcionar como servidor web por sí mismo. En sus inicios
existió la percepción de que el uso de Tomcat de forma autónoma era sólo
recomendable para entornos de desarrollo y entornos con requisitos mínimos
de velocidad y gestión de transacciones. Hoy en día ya no existe esa percepción
y Tomcat es usado como servidor Web autónomo en entornos con alto nivel
de tráfico y alta disponibilidad.
225
226
CAPÍTULO 9. TOMCAT
Dado que Tomcat fue escrito en Java, funciona en cualquier sistema operativo que disponga de la máquina virtual Java.
9.3.
Estado de su Desarrollo
Tomcat es mantenido y desarrollado por miembros de la Apache Software
Foundation y voluntarios independientes. Los usuarios disponen de libre acceso
a su código fuente y a su forma binaria en los términos establecidos en la
Apache Software Licence. Las primeras distribuciones de Tomcat fueron las
versiones 3.0.x. Las versiones más recientes son las 6.x, que implementan las
especificaciones de Servlet 2.5 y de JSP 2.1. A partir de la versión 4.0, Jakarta
Tomcat utiliza el contenedor de servlets Catalina.
9.4.
Estructura de Directorios
La jerarquía de directorios de instalación de Tomcat incluye:
bin - arranque, cierre, y otros scripts y ejecutables.
common - clases comunes que pueden utilizar Catalina y las aplicaciones
web.
conf - ficheros XML y los correspondientes DTD para la configuración
de Tomcat.
logs - logs de Catalina y de las aplicaciones.
server - clases utilizadas solamente por Catalina.
shared - clases compartidas por todas las aplicaciones web.
webapps - directorio que contiene las aplicaciones web.
work - almacenamiento temporal de ficheros y directorios.
9.5.
Características del Producto
Tomcat 3.x (distribución inicial)
9.6. HISTORIA
227
• Implementado a partir de las especificaciones Servlet 2.2 y JSP 1.1.
• Recarga de servlets.
• Funciones básicas HTTP.
Tomcat 4.x
• Implementado a partir de las especificaciones Servlet 2.3 y JSP 1.2.
• Contenedor de servlets rediseñado como Catalina.
• Motor JSP rediseñado con Jasper.
• Conector Coyote.
• Java Management Extensions (JMX), JSP Y administración basada
en Struts.
Tomcat 5.x
• Implementado a partir de las especificaciones Servlet 2.4 y JSP 2.0.
• Recolección de basura reducida.
• Capa envolvente nativa para Windows y Unix para la integración
de las plataformas.
• Análisis rápido JSP.
Tomcat 6.x
• Implementado de Servlet 2.5 y JSP 2.1.
• Soporte para Unified Expression Language 2.1.
• Diseñado para funcionar en Java SE 5.0 y posteriores.
• Soporte para Comet a través de la interfaz CometProcessor.
9.6.
Historia
Tomcat empezó siendo una implementación de la especificación de los
servlets comenzada por James Duncan Davidson, que trabajaba como arquitecto de software en Sun Microsystems y que posteriormente ayudó a hacer al
proyecto de código abierto y en su donación a la Apache Software Foundation.
Duncan Davidson inicialmente esperaba que el proyecto se convirtiese en
software de código abierto y dado que la mayoría de los proyectos de este tipo
228
CAPÍTULO 9. TOMCAT
tienen libros de O’Reilly asociados con un animal en la portada, quiso ponerle
al proyecto nombre de animal. Eligió Tomcat (gato), pretendiendo representar
la capacidad de cuidarse por sí mismo, de ser independiente.
Capítulo 10
NetBeans 6.7.1
10.1.
Introducción
El NetBeans IDE es de código abierto entorno de desarrollo integrado
de una base en la plataforma NetBeans y ha sido escrito completamente en
lenguaje Java. El IDE NetBeans apoya el desarrollo de todo tipo de aplicaciones Java (como Java SE , web, EJB y Java ME aplicaciones móviles). Entre
otras características clave son un sistema de proyectos basado en Apache Ant,
control de versiones, y herramientas de refactorización.
Para el desarrollo móvil, NetBeans proporciona muchas desarrollo rápido
de aplicaciones (RAD) funciones, como un diseñador visual de flujo, diseñador
visual de formularios, y herramientas para el desarrollo multitarget.
Para habilitar el uso de NetBeans para construir aplicaciones móviles Java
para dispositivos, Nokia ha prestado apoyo para el mismo en muchas de las
series 40 y S60 SDK , incluyendo todos los últimos de la Serie 40 5 a Edición
y S60 3rd Edition SDK.
Los desarrolladores de aplicaciones móviles Java para dispositivos también
podría estar interesado en UML plug-in. Este plug-in permite a los desarrolladores diseñar diagramas UML como diagramas de clase y para sincronizar
el código con ellos. El UML plug-in está disponible en el paquete Todo NetBeans o se pueden cargar en el IDE de NetBeans utilizando el plug-in de
administrador (si selecciona Herramientas -> Complementos en el menú).
229
230
CAPÍTULO 10. NETBEANS
10.2.
¿Qué hay de nuevo en 6.7.1?
NetBeans IDE 6.7.1 es una actualización menor de NetBeans IDE 6.7 e
incluye los siguientes cambios:
• La disponibilidad de los últimos IDE incluido con JavaFX SDK
1.2.1.
• Numerosas correcciones de errores de la comunidad nominado incluido en el parche 1 para NetBeans IDE 6.7.
Las siguientes actualizaciones de versión 6.5.1 incluye en la versión 6.7
también se aplican a 6.7.1.
• Maven ayuda a la creación de plugins y servicios web, así como el
apoyo a POM y J2EE.
• Kenai integración permite la creación y edición de Kenai proyectos
alojados desde el IDE.
• C + + soporte para el perfil, la biblioteca Qt, la refactorización de
código y expansión de macro.
• Web API Gateway plug-in permite el consumo de APIs en aplicaciones Web.
• Java ME apoyo a proyectos de los CDC en el paquete SDK Java
ME 3.0.
Tecnologías Soportadas
NetBeans IDE 6.7.1 soporta las siguientes tecnologías y ha sido probado
con los siguientes servidores de aplicaciones.
10.2.1.
Tecnologías compatibles:
Java EE 5 y J2EE 1.4.
JavaFX 1.2.1.
Java ME SDK 3.0.
Struts 1.2.9.
10.2. ¿QUÉ HAY DE NUEVO EN 6.7.1?
Spring 2.5 .
Hibernate 3.2.5.
API Java para Servicios Web REST (JAX-RS) 1.0.
Java API para XML basado en RPC (JAX-RPC) 1.6.
PHP 5.2.
Ruby 1.8.
JRuby 1.2.
Rails 2.1.
Groovy 1.5.
Grails 1.1.
VCS
• CVS: 1.11.x, 1.12.x.
• Subversion: 1.3.x, 1.4.x, 1.5.x.
• Mercurial: 1.x.
• ClearCase V7.0.
10.2.2.
Servidores de Aplicaciones:
Sun Java System Application Server 9.0 (GlassFish V1).
Sun GlassFish Enterprise Server v2.1.1 (GlassFish V2.1.1).
Sun GlassFish Enterprise Server v3 Prelude.
Sun Java System Application Server PE 8.2.
Tomcat 5.5.
Tomcat 6.0.18.
JBoss 4.0.4.
WebLogic 9.2.
WebLogic 10.
231
232
CAPÍTULO 10. NETBEANS
10.2.3.
Requisitos del Sistema
NetBeans IDE se ejecuta en sistemas operativos compatibles con la máquina
virtual de Java (máquina virtual) y ha sido probado en las plataformas se enumeran a continuación.
10.2.4.
Configuraciones de hardware mínimos
Microsoft Windows XP Professional SP3.
Microsoft Windows Vista.
Ubuntu 9.04.
Solaris OS version 10 (SPARC).
Solaris OS version 10 (x86/x64 Platform Edition).
Macintosh OS X 10.5 Intel.
Macintosh OS X 10.5 PPC.
10.2.5.
Software Necesario
NetBeans IDE se ejecuta en el Java SE Development Kit (JDK), que consiste en el entorno de ejecución de Java y herramientas de desarrollo para
compilar, depurar y ejecutar aplicaciones escritas en el lenguaje Java.
El JDK prueba para esta versión son:
JDK 6 Update 14.
JDK 5 Update 19.
10.2.6.
Compatibilidad
La primera vez que ejecute el IDE, puede importar un subconjunto de la
configuración que utilizó en anteriores versiones de NetBeans IDE. Si se decide
no importar la configuración de una versión anterior, el IDE se abre con la
configuración predeterminada.
10.3. NETBEANS Y LAS APLICACIONES MOVILES
10.3.
233
Características de NetBeans para el Desarrollo de Aplicaciones Móviles Java
Las siguientes son algunas de las principales características:
Diseñador de aplicaciones de flujo.
Diseñador de la pantalla.
Analizador de código.
Un sistema de construcción modular.
Aplicación portar apoyo.
Asistente de conexión inalámbrica (disponible en el paquete de todo).
Escalable 2D Vector Graphics API para J2ME
TM
(JSR 226) de apoyo.
Varias opciones de despliegue, incluyendo el despliegue de un dispositivo
Nokia con Nokia PC Suite.
Apoyo a proyectos.
Herramientas integradas de desarrollo.
J2MEUnit la realización de análisis.
Integrado la ofuscación y el apoyo de optimización.
10.4.
SDK de Nokia S60
Cómo instalar el SDK de Nokia S60 en NetBeans para el desarrollo J2ME
Después de instalar el SDK de Nokia S60, puesta en marcha de NetBeans,
debe hacer clic en el menú Herramientas | Plataformas Java. Usted debe
obtener un cuadro de diálogo que se muestra en la figura 10.1 de la página
234. Haga clic en la plataforma Java MIDP ME emulador. Luego haga
clic en Siguiente.
234
CAPÍTULO 10. NETBEANS
Figura 10.1: Añadir Platforma Java
Después de hacer clic en Siguiente, se le pedirá la ubicación de la carpeta
de la plataforma Java que desee agregar. En este caso, hay que seleccionar el
directorio donde instalaste el Nokia S60 SDK para J2ME. Como se muestra
en la pantalla de ejemplo siguiente, lo he instalado en C: \ S60. Sólo tienes
que seleccionar el directorio donde se instaló el SDK de Nokia S60 en su caso
si usted tiene instalado en otro directorio.
Una vez que haga clic en Buscar, el IDE NetBeans agregar un directorio
en la lista donde se ha detectado una válida plataforma Java. Usted debe
asegurarse de que la casilla está seleccionada y haga clic en Siguiente.
NetBeans luego de detectar las configuraciones válidas y dispositivos instalados en el directorio seleccionado. Una vez que NetBeans ha terminado,
verá la configuración detectado en el cuadro de diálogo. Seleccione la plataforma J2ME detectado y haga clic en Finalizar. En este punto, se ha instalado
soporte para el SDK de Nokia S60 para J2ME en NetBeans IDE.
10.5. NUEVO PROYECTO UTILIZANDO J2ME
10.5.
235
Creación de un Nuevo Proyecto Java ME con
NetBeans
Para crear un nuevo proyecto, seleccione Archivo -> Nuevo proyecto ...
en el menú de NetBeans o utilizar las teclas Ctrl + Mayúsculas + N atajo
de teclado. La ventana que se muestra en la figura sigiente 10.2 de la pagína
235 se abrirá.
Figura 10.2: Ventana: Nuevo Proyecto.
Debe elegir Java ME en la lista Categorías y, a continuación de aplicaciones móviles de la lista de proyectos. Al seleccionar el botón Siguiente se
abre el diálogo que se muestra en la siguiente figura 11.35 de la pagína 279.
Nombre del proyecto y elija una ubicación en el sistema de archivos en el
que se almacenara. Tenga en cuenta la opción Crear Hola MIDlet. Al elegir
esta opción creará un simple "Hello World"de estilo, pero lo más importante,
se abrirá la aplicación para que utilice los diseñadores visuales para el flujo de
aplicaciones y diseños de pantalla. Una vez más, seleccione el botón Siguiente,
236
CAPÍTULO 10. NETBEANS
Figura 10.3: Ventana: Nombre y Localización.
y el diálogo que se muestra en la figura siguiente 11.36 de la pagína 279 se
abre.
Si la opción Crear Hola MIDlet no está seleccionada, tendrá que crear
un MIDlet mismo después de que el proyecto se ha creado. Para ello, vaya a
Archivo -> Nuevo archivo ..., seleccione MIDP en la lista Categorías y
MIDlet en la lista Tipos de archivo. Pulse Siguiente, dele a su MIDlet un
nombre y pulse Finalizar.
Ahora selecciona la Plataforma emulador será la aplicación codificada . Se
puede utilizar la mayoría de los S60 y Series 40 SDK. En este caso, el S60 3rd
Edition Feature Pack 2 SDK para Symbian OS, para Java ha sido seleccionado.
En esta etapa, el dispositivo S60Emulator es seleccionado para permitir la
inspección de la aplicación en un PC, utilizando el emulador suministrado en el
kit SDK. Una vez más, seleccione Siguiente, y el siguiente cuadro de diálogo
que se muestra en la figura 11.38 de la pagína 280 es:
Este diálogo permite configuraciones adicionales que se agregan a un proyecto. Debe seleccionar Finalizar para completar el Asistente para nuevo proyecto.
Figura 10.4: Ventana: Selección de la Plataforma.
Figura 10.5: Ventana: Configuración Adicional.
238
CAPÍTULO 10. NETBEANS
Capítulo 11
Descripción de la Aplicación
11.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 teléfonos celulares.
El objetivo de la aplicación es la automatización de servicios orientados al
cliente, para que los mismos sean accesibles a través de teléfonos celulares y
estén disponibles en la Web, ya que los clientes cada vez requieren aplicaciones
de este tipo, que estén siempre disponible en cualquier momento y en cualquier
lugar.
Se trata de un sistema orientado a actividades de venta de Medicamentos de
venta libre y productos de la seción de perfumeria de una entidad farmacéutica.
Para el desarrollo del trabajo se utilizó el lenguaje de programación Java
JSE y su extensión J2ME, 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 aplicación deba ser compatible con todos ellos. Como es conocido, la portabilidad
es una de las características inherentes al lenguaje Java.
Como se ha visto en el capítulo cinco las tecnologías Java se agrupan en
varias familias, cada una de ellas adecuada para el desarrollo de distintos tipos
239
240
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
de aplicaciones:
Java 2 Standard Edition (J2SE): Orientada a ordenadores de sobremesa
(aplicaciones de usuario, applets, etc.).
Java 2 Enterprise Edition (J2EE): Orientada al desarrollo de aplicaciones para servidores utilizados en un entorno empresarial. Incluye la
clase Servlet para el desarrollo de aplicaciones en el servidor.
Java 2 Micro Edition (J2ME : Es un subconjunto de J2SE orientado
al desarrollo de aplicaciones Java destinadas a dispositivos con pocos
recursos y capacidades restringidas, como teléfonos móviles o asistentes
personales digitales (PDAs). Incluye la clase MIDlet para el desarrollo
de aplicaciones en el cliente.
11.2.
Estructuración
El sistema está compuesto por dos módulos principales, uno móvil que
correrá en un celular el cual se lo ha llamado Farmia Corrientes Movil, y otro
Web al cual se lo ha llamado Farmacia Corrientes. Se ha desarrollado también
un tercer módulo que simula ser el sitio web de una farmacia ficticia llamado
Farmacia Corrientes en Línea para completar el ideal de lo que debería ser
un sistema para una farmacia.
El sistema está pensado para que trabaje con distintos tipos de perfiles
de usuario, donde cada perfil tendrá funciones específicas de acuerdo al tipo
de usuario. A continuación se verán los distintos perfiles de usuario y a qué
módulos pertenecen:
Módulo Farmacia Corrientes:
• Administrador.
• Farmacéutico.
Módulo Móvil Farmacia Corrientes Móvil:
• Cliente Móvil.
11.3. ESTRUCTURACIÓN
241
Módulo Farmacia Corrientes en linea:
• Cliente Web.
• Usuario on line.
El sistema está pensado de forma tal que pueda ser utilizado por distintos
usuarios con distintos privilegios.
A continuación se detallan los perfiles usuarios que se contemplan:
Administrador.
Farmacéutico.
Cliente.
• Web.
• Móvil.
Usuario on line.
Cada uno de estos perfiles determina las funciones que están disponibles
para el usuario. En el caso de uso que muestra la fig. 11.1 de la pág. 242
se puede apreciar a grandes rasgos qué funciones del sistema se encuentran
disponibles de acuerdo al tipo de usuario.
11.3.
Estructuración
La aplicación está estructurada en dos partes:
La parte Web que está desarrollada en el lenguaje Java concretamente
J2SE que corre en un servidor Web y se accede a través de un navegador
de Internet.
La parte móvil que se encuentra desarrollada también en el lenguaje
Java, específicamente en J2ME (Java 2 Micro Edition), ésta corre en el
dispositivo móvil (celular ) y por lo tanto debe descargarse e instalarse
en el dispositivo en cuestión.
242
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.1: Caso de Uso del Sitema.
11.3. ESTRUCTURACIÓN
11.3.1.
243
La Aplicación Móvil (Farmacia Corrientes Móvil)
Para el desarrollo móvil se optó por usar el modelo cliente / servidor como
se ve en la fig. 11.2 de la pág. 243.
Figura 11.2: Arquitectura del Sistema.
En donde:
Gestión de datos: Comprende la parte de la aplicación encargada del acceso
a la base de datos para recuperar la información solicitada desde el dispositivo
móvil.
Emplea JDBC (Java Database Connectivity) como nivel intermedio entre
esta capa y la siguiente. De esta forma, un cambio en el gestor de la base de
datos empleado no requerirá modificaciones en la aplicación, sino que sólo será
necesario sustituir el driver JDBC por otro apropiado para el nuevo gestor.
244
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Lógica de negocio: Esta capa contiene los servlets de Java que recibe e
interpreta las peticiones del cliente y genera las consultas a la base de datos,
devolviendo la información solicitada.
Capa presentación: incluye el código Java 2ME ejecutado en el dispositivo
móvil.
La clase MIDlet es la clase general de toda aplicación móvil, como se
desarrolla con la configuración CLDC y el perfil MIDP. La aplicación contiene
a la clase Pantalla que hereda de MIDlet, por lo tanto es un Midlet.
Esta clase Pantalla es la clase principal que maneja todo el comportamiento de la aplicación, iniciar la aplicación, pausar la aplicación, destruir la aplicación y gestionar las pantallas que se muestran.
La Aplicación Móvil en Funcionamiento
El interfaz gráfico de Farmacia Corrientes Móvil es una interfaz simple,
permite una fácil interacción con el usuario, es estándar para todos los terminales móviles que soportan J2ME.
Por razones de que se trata de una aplicación de negocios y para lograr la
mayor portabilidad posible del aplicativo se eligió para desarrollar la interface
de usuario las APIs de alto nivel, donde no se tiene un control total del aspecto
de los controles, su estética depende exclusivamente 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
teléfono celular para no tener que volver a realizar una petición al servidor
sobre datos solicitados anteriormente.
Farmacia Corrientes Móvil posee conectividad con un servidor Web, para
lograr esto utiliza Internet móvil y la tecnología GPRS (General Packet Ratio
Service) donde no se factura al usuario por tiempo de conexión, sino por datos
enviados y recibidos.
Por lo tanto la aplicación minimiza el intercambio de datos, intercambiando
solamente datos puros. Esto quiere decir que el terminal móvil debe poseer
conectividad a Internet como requisito para poder utilizar el sistema y por
11.3. ESTRUCTURACIÓN
245
supuesto poder ejecutar aplicaciones Java.
Como se ha mencionado en el capítulo seis (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 Farmacia Corrientes Móvil como se desarrolló bajo la
configuración CLDC 1.1 y el perfil MIDP 2.0 es un MIDlet.
La fig. 11.3 de la pág. 245 representa la pantalla principal de la aplicación
móvil, Farmacia Corrientes Móvil.
Figura 11.3: Pantalla Principal Farmacia Corrientes Movil.
Esta pantalla (pantalla principal ) permanece activa hasta que el usuario
presione el comando iniciar.
Al presionar el comando iniciar inmediatamente se presenta al usuario el
Inicio del sistema que cuenta con los siguientes ítems:
INICIAR SESIÓN.
246
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
CONFIGURACIÓN.
AYUDA.
SALIR.
Iniciar sesión: En este ítem la aplicación trabajará en modo “on-line”,
solicitando previamente autenticación del usuario a través de un nombre cliente
y contraseña, donde éstos son entregados al usuario al registrarse en el sistema
Farmacia Corrientes en linea.
Configuración: Esta opción es útil para poder configurar la url única donde
reside el servidor por ejemplo, http://www.servidorFarmaciaCorrientesenlinea.com
, esta información se guarda en el almacenamiento persistente del móvil.
Antes de utilizar cualquier opción se debe primeramente cargar este valor.
Ayuda: Como su nombre lo indica, esta opción brinda información acerca
de la utilización de Farmacia Corrientes Móvil.
Salir : Esta opción permite al usuario salir de la aplicación.
Lo anteriormente mencionado se puede observar en la fig. 11.4 de la pág.
247.
Iniciar Sesión
Para acceder o iniciar sesión se debe completar un “nombre del cliente”
y “contraseña” e intentar conectarse. Para ello se le muestra al usuario la
pantalla de la fig. 11.5 de la pág. 248, donde antes de ser enviados los datos
son validados localmente, por ejemplo si se intenta enviar nombre cliente y
contraseña vacías o si la contraseña posee menos de ocho caracteres.
La aplicación le avisará al usuario a través de alertas en caso de que ocurran
algunos de los casos mencionados.
La fig. 11.5 de la pág. 248 muestra la pantalla de ingreso y cómo la aplicación avisa al usuario de determinados errores.
Una vez que los datos sean ingresados correctamente serán enviados al
servidor, donde también son validados por el mismo, se puede decir que existe una validación en las dos partes, en el cliente (MIDlet) y en el servidor
(Servlet).
11.3. ESTRUCTURACIÓN
247
Figura 11.4: Inicio.
248
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.5: Pantallas de Ingreso al Sistema.
11.3. ESTRUCTURACIÓN
249
Mientras los datos son enviados y procesados por el servidor, el aplicactivo muestra una pantalla informándole al usuario que se está realizando la
conexión. En la fig. 11.6 de la pág. 249 se puede ver la pantalla mencionada.
Figura 11.6: Pantalla Conectando
La clase Servlet es la encargada de realizar la conexión a la base de datos
y corroborar que los datos recibidos son realmente iguales a los datos almacenados en la base. Luego del proceso de búsqueda y verificación el Servlet envía
al celular un error (en la fig. 11.7 de la pág. 250 se puede ver la pantalla) o
bien la información del cliente otorgándole de esta manera la posibilidad de
poder observar el Catálogo.
Luego de realizar la autenticación del usuario, si resulta satisfactoria se
recibe la información del cliente con los siguientes datos:
Número de cliente.
Número de documento.
250
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.7: Pantalla Error.
Nombre y Apellido.
Dirección.
En una pantalla se muestra esta información del cliente, la misma se puede
apreciar en la fig. 11.8 de la pág. 251.
En una pantalla posterior el usuario puede visualizar la pantalla Catálogo
(ver fig. 11.9 de la pág. 252) con los ditintos rubros que dispone para operar
en una lista.
Pantalla Catálogo
A la pantalla Catalogo (ver fig. 11.9 de la pág. 252) se puede acceder de
dos formar:
Seleccionando la opcion Siguiente en la pantalla Datos del Cliente.
11.3. ESTRUCTURACIÓN
Figura 11.8: Pantalla Datos del Cliente.
251
252
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
O una vez iniciada la sesión, en la pantalla Inicio aparecerá otro elemento
en la lista que es CATALOGO (ver fig.11.10 de la pág 253).
Figura 11.9: Pantalla Catalogo(Rubros).
Al seleccionar uno de los rubros, se presenta una nueva pantalla en donde
podrá seleccionar la forma de busqueda (ver fig. 11.11 de la pág. 254 Pantalla
Marca / Nombre). En el márgen superior de la pantalla mencionada se podrá
observar el rubro que fue seleccionado.
Una vez seleccionada la forma de búsqueda aparecerá una nueva pantalla en
donde se encontrarán despleagados los datos sujetos a la selección anterior. Por
ejemplo si la forma de búsqueda es Marca se desplegará la pantalla Seleccione
Marca que se muestra en la figura 11.11 de la página 254.
Las opciones disponibles para la pantalla Catálogo - Selccione Marca son:
Aceptar:
11.3. ESTRUCTURACIÓN
Figura 11.10: Inicio 2.
253
254
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.11: Catalogo.
11.3. ESTRUCTURACIÓN
255
• Al seleccionar la opción Aceptar de la pantalla Seleccione Marca
que se muestra en la figura 11.11 de la página 254 se desplegará la
pantalla Seleccione Presentación (ver fig. 11.11 de la pág. 254).
Volver:
• Selecionando esta opción se vuelve a la pantalla Marca / Nombre
que se muestra en la figura 11.11 de la página 254.
Inicio:
• Sselecionando esta opción se vuelve a la pantalla que se muestra en
la figura 11.10 de la página 253.
Las opciones disponibles para la pantalla Catálogo - Seleccione Presentación
son:
Ver Descripción:
• La opción Ver Descripción es importante en aquellos dispositivos
móviles que tienen limitaciones para desplegar la totalidad de la
informacion en un ChoiceGroup. Sí se selecciona esta opción se
desplegará la Pantalla Descricpción, en la cual se podrá observar
de manera ordenada los datos de la Presentación seleccionada (ver
fig. 11.12 de la pág. 256).
Volver
• Selecionando esta opción se vuelve a la pantalla Seleccione Marca
que se muestra en la figura 11.11 de la página 254.
Inicio
• Selecionando esta opción se vuelve a la pantalla que se muestra en
la figura 11.10 de la página 253.
Comprar.
256
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.12: Pantalla Descripción de la Presentación.
• Si se selecciona la opción Comprar aparecerá la pantalla Descripción
de la Compra. En la figura 11.13 de la página 257 mustra la pantalla
antes mencionada, junto con el alerta en caso de que no se haya
ingresado la cantidad del producto y/o medicamento.
Pantalla Descripción de la Compra
Las opciones disponibles para la pantalla Descripción de la Compra son:
Seguir Comprando:
• Selecionando esta opción se vuelve a la pantalla que se muestra en
la figura 11.9 de la página 252, permitiendo de esta manera que
pueda seleccionar otro producto o medicamento.
Finalizar Compra:
11.3. ESTRUCTURACIÓN
257
Figura 11.13: Pantalla Descripción de la Compra.
• Seleccionando esta opción se despliega la pantalla Carrito. La misma se puede observar en la figura 11.14 de la página 11.14.
Cancelar Compra:
• Selecionando esta opción se vuelve a la pantalla que se muestra en
la figura 11.10 de la página 253.
Pantalla Carrito
En esta pantalla Carrito (ver fig. 11.14 de la pág 11.14) el cliente debe
confirmar su compra. Seleccionando todos los productos y/o medicamentos
que le interese comprar.
Las opciones disponibles para la pantalla Carrito son:
Continuar:
258
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.14: Pantalla Carrito.
11.3. ESTRUCTURACIÓN
259
• Selecionando esta opción se despliega la pantalla Forma de Pago
que se muestra en la figura 11.15 de la página 260.
Ver Descripción:
• La opción Ver Descripción es importante en aquellos dispositivos
móviles que tienen limitaciones para desplegar la totalidad de la
información en un ChoiceGroup. Sí se selecciona esta opción se
desplegará la Pantalla Descricpción, en la cual se podrá observar
de manera ordenada los datos de la Presentación seleccionada (ver
fig. 11.12 de la pág. 256).
Cancelar Compra:
• Selecionando esta opción se vuelve a la pantalla que se muestra en
la figura 11.10 de la página 253.
Pantalla Forma de Pago
En en el margen superior de la pantalla se puede observar el total de la
compra, debajo de éste se debe seleccionar la forma de pago.
Las Formas de Pagos son:
Cuentas Corrientes que son otorgadas a los clientes por medio del sistema
Farmacia Corrientes (ver fig. 11.15 de la pág 11.15).
Tarjeta de Crédito.
Las opciones disponibles para la pantalla Forma de Pago son:
Enviar.
Si se selecciona esta opción los datos son enviados para ser procesados
y poder facturar. A continuacion de despliega una pantalla informativa
con los datos mas relevantes de la factura (ver fig. 11.16 de la pág. 261).
Cancelar Compra.
• Selecionando esta opción se vuelve a la pantalla que se muestra en
la figura 11.10 de la página 253.
260
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.15: Pantalla Forma de Pago.
11.3. ESTRUCTURACIÓN
Figura 11.16: Pantalla Datos Relevantes de la Factura.
261
262
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Configuración
Como se mencionó anteriormente lo primero que debe hacer el usuario
del sistema para poder utilizar Farmacia Corrientes Movil es configurar la
dirección (url) del servidor para lograr una comunicación satisfactoria, ya que
el servidor alberga a los servlets de Java que reciben las peticiones y hacen el
proceso real de conectarse a la base de datos, solicitar información y verificar
si es un cliente válido.
Para poder realizar esta tarea el usuario debe seleccionar la opción “configuración”, en ese instante se mostrará la siguiente pantalla del sistema que
se ve en la fig. 11.17 de la pág. 262.
Figura 11.17: Pantalla para Configurar la URL del Servidor.
Esta información quedará guardada en la base de datos del celular y podrá
ser modificada en cualquier momento que se desee.
Una vez que se tiene configurado correctamente la dirección del servidor
se puede lograr la comunicación con el mismo. Se debe proporcionar los datos
11.3. ESTRUCTURACIÓN
263
de acceso (nombre del cliente y contraseña).
Ayuda
Este módulo está destinado a brindarle al usuario un texto informativo
sintético acerca de cómo utilizar la aplicación móvil. En la fig. 11.18 de la pág.
263 se puede observar la pantalla de ayuda.
Figura 11.18: Pantalla Ayuda.
Básicamente brinda información introductoria al sistema, e instrucciones
para operar el aplicativo, como ser:
La configuración del URL del servidor.
Cómo iniciar sesión en el sistema.
Cuáles son los tipos de operaciones disponibles para que el cliente pueda
realizar su compra.
264
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
11.3.2.
La Aplicación Web
Se desarrolló con el lenguaje Java, utilizando la tecnología de Servlet ,
la misma posee acceso a una base de datos que contiene la información que
maneja la aplicación.
Esta base de datos se encuentra manejada por el motor DB2 Express-C
version 9.7 de IBM. Para más información acerca de DB2 remitirse al capítulo
siete.
Pantallas de la Aplicación Web
El sistema está dividido en dos perspectivas:
La perspectiva orientada al cliente que pueden acceder los mismos a
través de la Internet, llamada Farmacia Corrientes en linea.
La perspectiva orientada al operador / Administrador donde se accede
a través de la Intranet, llamada Farmacia Corrientes.
Del Lado del Cliente (Farmacia Corrientes en línea)
En esta parte de la aplicación el usuario tiene disponibles casi las mismas
opciones que se utilizan en la aplicación móvil, con algunas opciones adicionales
como por ejemplo poder visualizar en qué consiste la aplicación móvil (Mobile
Banking), la posibilidad de poder descargarla e instalarla en el teléfono celular
y poder gestionar sus datos.
Esta porción de la aplicación automatiza la gestión de ventas de productos y/o medicamentos, brindándole al cliente una alternativa para realizar
sus compras, sin la necesidad de recurrir a la entidad farmacéutica, pudiendo
además el cliente acceder al sistema las 24 hs. del día.
Usuario on line
A continuación se muestra en la fig. 11.19 de la pág. 265 la página Inicio
del sitio.
11.3. ESTRUCTURACIÓN
265
Figura 11.19: Inicio.
La página Inicio cuenta con las siguientes secciones:
Inicio.
Quiénes Somos.
Catálogo.
Registrarse.
Contacto.
Quiénes Somos: En esta pestaña se podrá obeservar de manera breve la
informacion pertinente a la entidad farmacéutica (ver figura 11.20 de la página
266).
266
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.20: Pestaña Quienes Somos.
Catalgo: En esta pestaña (ver fig. 11.21 de la pág. 267) cualquier usuario on
line podra tener acceso a la visualizacion de los productos y/o medicamentos,
en caracter de promocionar los mismos. Al seleccionar un item de cualquiera
de las listas y presionar el botón Ver se pasara a la siguiente pagina (ver fig.
11.21 de la pág 267), en donde se desplegaran todos los productos con sus
respectivas descripciones.
Al presionar el botón Comprar si el usuario on line no es cliente de la
farmacia, no podrá realizar la compra. Se pasara a la pagina que se muestra
en la figura 11.23 de la página 268.
Si es cliente ingresa los datos solicitantes y podrá comprar.
Si no es cliente puede registrarse.
Registrarse: Para que el usuario on line sea cliente de la farmacia lo que
debe hacer es registrar sus datos (ver fig. 11.24 de la pág. 268).
Contacto: En esta pestaña (ver fig. 11.25 de la pág 269) se podra obtener
toda la información referente a la manera de contactarse con un representante
11.3. ESTRUCTURACIÓN
Figura 11.21: Catálogo.
Figura 11.22: Descripción del Producto.
267
268
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.23: Cliente.
Figura 11.24: Registrarse.
11.3. ESTRUCTURACIÓN
269
de la farmacia.
Figura 11.25: Contacto.
Para poder comprar el cliente debe ingresar sus datos de acceso, ingresando
el cliente y una contraseña en la sección Cuenta Cliente.
La aplicación del lado del cliente valida si se presionó el botón ingresar
y los campos del cliente y/o la contraseña están vacíos mediante el uso del
lenguaje JavaScritpt.
Cliente Web Validado
Una vez que el cliente se haya validado en el sistema, dispone de un menú
con las siguientes opciones:
Inicio.
Quiénes Somos.
Catálogo.
270
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Ver Carrito.
Contacto.
Farmacia Móvil.
Las pestañas Inicio, Quienes Somos y Contacto; son las mismas pestañas
mencionadas anteriormente con la diferencia que la sección Cliente es cambiada
por Bienvenido en donde el cliente podrá:
ver su cuenta.
• Luego al seleccionar Mi Cuenta disponible es posible ver la información del cliente como ser:
◦
◦
◦
◦
◦
◦
◦
◦
◦
Apellido y Nombre.
DNI.
Fecha de Nacimiento.
Dirección.
Nro. de Teléfono.
Nro. de Celular.
E-mail
Nombre del Cliente.
Contraseña.
Además se puede modificar los datos del Cliente.
Desconectarse.
En la figura de la página que se muestra en la figura 11.26 de la página
271 marcada con un cuadro rojo se puede observar la sección Bienvenido.
Catálogo: La página Catálogo es la misma que se mencionó antes con la
diferencia que si el cliente está logueado y presiona el botón comprar se pasará
a la página Mi Carrito que se muestra en la figura 11.27 de la página 272.
El cliente puede realizar las siguientes acciones sobre la página Mi Carrito:
Presionar el botón X Se elimira el producto del Carrito.
11.3. ESTRUCTURACIÓN
271
Figura 11.26: Inicio (logueado por el cliente).
Presionar el botón Continuar Comprando. Se pasará a la página Catálogo
para que el cliente continue con su compra.
Presionar el botón Realizar Pedido. Se pasará a la página Pedido (ver
fig. 11.28 de la pág. 272) para que el cliente seleccione la Forma de Pago.
272
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.27: Mi Carrito.
Figura 11.28: Pedido
11.3. ESTRUCTURACIÓN
273
El cliente puede realizar las siguientes acciones sobre la página Pedido:
Seleccionar la forma de pago.
Presionar el botón Cancelar.
Presionar el botón Continuar. Se pasará a la página Factura Virtual
(ver fig. 11.29de la pág. 273). Como es una Factura Virtual no se puede
utilizar como comprobante de pago.
Figura 11.29: Factura Virtual.
Al presionar el botón Finalizar de la página Factura Virtual (ver fig.
11.29de la pág. 273) se pasará a la pantalla Mensaje Fin de la Compra que se
muestra en la figura 11.30 de la página 274.
Ver Carrito: A través de esta sección del sistema, el cliente puede observar
todos los productos y/o medicamentos que contiene su carrito. Como muestra
la figura 11.27 de la página 272.
274
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.30: Mensaje Fin de la Compra
Farmacia Móvil : En esta página de la aplicación se puede obtener información acerca de Farmacia Corrientes Móvil (aplicativo móvil), como ser en
qué consiste, requisitos de los dispositivos para poder lanzar la aplicación, qué
operaciones se pueden realizar y también brinda un enlace que permite descargar el aplicativo en la PC para luego a través de una conexión con el celular,
ya sea bluetooth, cable USB o infrarrojos, se pueda instalar la aplicación en el
dispositivo celular en cuestión.
Otra alternativa de descarga de Farmacia Corrientes Móvil es ingresando
directamente en el navegador WAP del celular la dirección URL que muestra
esta página, descargando así directamente el aplicativo en el celular sin tener
que bajarlo en una PC. Este proceso demandará al usuario el costo por “bytes”
recibidos de la aplicación.
En la fig. 11.31 de la pág. 275 se muestra la ventana correspondiente a
Farmacia Corrientes en línea.
11.3. ESTRUCTURACIÓN
275
Figura 11.31: Farmacia Movil.
Del Lado del Operador / Administrador
Esta perspectiva del sistema Farmacia Corrientes funciona como backend, está orientada a ser operada dentro de la Intranet para que pueda ser
accedida por operadores para realizar tareas rutinarias de gestión y también
por administradores para tareas similares y además gestionar y auditar los
movimientos diarios y también realizar tareas de mantenimiento del sistema.
Se puede decir que es la base de las demás perspectivas, a partir de ésta
se crean las demás, ya que los clientes se deben dar de alta, crear sus cuentas
corrientes en esta perspectiva.
Además se debe gestionar todo lo referido a los productos y/o medicamentos.
Los usuarios que utilizarán esta parte del sistema deben existir como usuarios reales, esto quiere decir que algún administrador deberá insertarlo a la base
de datos de usuarios para poder operar en el sistema.
276
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
En la fig. 11.32 de la pág. 276 se puede observar la ventana que corresponde
a la página principal donde se solicitan datos de name y password para ingresar
al sistema Farmacia Corrientes.
Figura 11.32: Inicio (Operador / Administrador).
Administrador
El menú de opciones que brinda Farmacia Corrientes, si el que se ingreso
es un Admistrador es el siguiente:
Inicio.
• Inicio.
• LogOut.
Productos.
• Nuevo Producto.
• Modificar.
11.3. ESTRUCTURACIÓN
277
• Borrar.
• Consultar Productos.
• Consultar por Nombre.
Usuarios.
• Nuevo Usuario.
• Modificar.
• Borrar.
• Consultar.
Consultas.
• Consultar Clientes.
• Ira a Farmacia Corrientes en línea.
En la figura 11.33 de la página 277 se muestra la página de Inicio (Admistrador / Operador).
Figura 11.33: Inicio - Administrador.
278
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Productos
A continuación se explicará y mostrarán las funciones de la subseción Nuevo Producto:
En la primera página (ver figura 11.34 de la página 278) el administrador
debe seleccionar el rubro del producto y/o medicamentos que desea dar de
alta. Al presionar el botón siguiente se pasa a la siguiente página (ver figura
11.35 de la página 279) en donde debe seleccionar el nombre del producto.
Una vez seleccionado el nombre del producto y presionar el botón siguiente
se pasa a la página (ver figura 11.36 de la página 279) en donde se debe
seleccionar la presentación del producto.
Al seleccionar la presentación del producto y presionar el boton siguiente
se pasa a la página (ver figura 11.37 de la página 280) en donde el administrador debe ingresar el precio unitario, monto y seleccionar la ruta en donde
se encuentra la imagen del producto.
Si la carga de los datos del producto fue sastifactoria se pasa a la página
(ver figura 11.38 de la página 280) en donde se le informa al administrador
que los datos fuerón guardados con éxito.
Figura 11.34: Nuevo Producto (pág1).
11.3. ESTRUCTURACIÓN
Figura 11.35: Nuevo Producto (pág2).
Figura 11.36: Nuevo Producto (pág. 3).
279
280
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
Figura 11.37: Nuevo Producto (pág. 4).
Figura 11.38: Nuevo Producto (pág. 5).
11.3. ESTRUCTURACIÓN
281
Usuarios
A continuación se mostrarán las funciones de la subsección Nuevo Usurio
que se indican en la figura 11.39 de la página 281. El administrador debe
ingresar todos los datos requeridos por la página, en caso de ingresar un dato
erróneo en un campo, mediante la utilización de javascript se le informa al
administrador de su error.
Figura 11.39: Nuevo Usuario.
Farmacéutico
El menú de opciones que brinda Farmacia Corrientes si el que ingreso es
un Farmacéutico es el siguiente:
Inicio.
• Inicio.
• LogOut.
Cuentas Corrientes.
282
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
• Nueva Cuenta.
• Modificar.
• Borrar.
• Consultar.
Farmacéutico.
• Editar.
• Consultar.
Cuentas Corrientes
La primer página que se le presenta al farmacéutico al presionar subseción
Nueva Cuenta es la que se muestra en la figura 11.40 de la página 282, donde
debe ingresar el DNI del cliente que desea crear una cuenta. Una vez validado
el DNI del cliente, el farmacéutico debe ingresar el monto límite que tendrá
el cliente en la cuenta (ver figura 11.41 de la pág. 283). Luego de ingresar el
monto se pasa a la pantalla (ver figura 11.42 de la página 283) en donde se
ven reflejados los datos del cliente y el monto cargado .
Figura 11.40: Nueva Cuenta (pág.1).
11.3. ESTRUCTURACIÓN
Figura 11.41: Nueva Cuenta (pág. 2).
Figura 11.42: Nueva Cuenta(pág. 3)
283
284
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
11.4.
Estructuras de Datos Utilizadas
El manejador de base de datos que utiliza el sistema es el DB2 Express-C
version 9.7.
A continuación se describirán las tablas que conforman la base de datos.
Tanto la aplicación móvil como la aplicación Web utilizan la misma base
de datos, por lo tanto el manejador debe soportar concurrencia.
En el gráfico 11.43 de la pág. 284 que corresponde a la ventana del centro
de control de DB2 se puede apreciar la estructura de base que se utiliza.
Figura 11.43: Tablas que Integran la Base de Datos del Sistema.
11.4. ESTRUCTURAS DE DATOS UTILIZADAS
11.4.1.
285
Modelo de datos
La base de datos del sistema principal tiene por nombre TFASOFIA y las
entidades que la componen son las siguientes (ver fig. 11.44 de la pág 285):
Figura 11.44: Modelado de Datos
Las tablas que integran la base de datos son las siguientes:
USUARIO.
TIPO_USUARIO.
CUENTA.
CUENTA_CORRIENTE.
PRODUCTOS.
286
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
PRESENTACION.
NOMBRE_PRO.
MARCA_LAB.
RUBRO.
VENTAS.
DETALLES_VENTAS.
Ahora se verán los campos que conforman cada tabla.
USUARIO: Contiene toda la información referente a los distintos usuarios registrados en la farmacia.
Está compuesta por los siguientes campos de datos:
• USU_NYA: Contiene el apellido y el / los nombres del usuario.
• USU_DNI: Es el campo clave de la tabla. Almacena la información
del número de documento del usuario.
• USU_DIR: Contiene la dirección real del usuario.
• USU_MAIL: Contiene la dirección de correo electrónico del usuario.
• USU_ID: Contiene el número único del cliente, es un número generado por la aplicación.
• USU_NAME: Almacena la información del usuario para ingreso al
sistema.
• USU_PAS: Amacena la información de la contraseña secreta del
usuario para el ingreso al sistema.
• USU_FEC: Contiene la fecha exacta de nacimiento del usuario.
• USU_TEL: Contiene el teléfono del usuario.
• USU_CUIT: Contiene información a cerca del cuit del usuario.
• ID_TUSU: Es la clave foránea que relaciona la tabla Usuarios con
la tabla Tipo_Usuario.
TIPO_USUARIO: Contiene toda la información referente a los distintos
tipos usuarios registrados en la farmacia.
La tabla posee los siguientes campos de datos:
11.4. ESTRUCTURAS DE DATOS UTILIZADAS
287
• ID_TUSU: Es el campo clave de la tabla. Contiene el número único
del tipo de usuario.
• TUSU_DES:Contiene la desccripción del tipo de usuario.
CUENTA: La tabla çuentaçontiene toda la información de la cuenta que
posee el cliente.
La tabla posee los siguientes campos de datos:
• NRO_CUE: Es el campo clave de la tabla. Contiene un número
autogenerado que identifica a la cuenta.
• USU_ID: Es la clave foránea que relaciona la tabla Cuenta con la
tabla Rubro.
• ID_TUSU: Es la clave foránea que relaciona la tabla Cuenta con la
tabla Tipo_usuario. Contiene el número único del tipo de usuario
(4= Cliente).
• CUE_MON: Contiene el monto limite que el Usuario puede utilizar.
• CUE_EST: Contiene un carácter que identifica la activación de la
cuenta(A=activa; NA= no activa).
CUANTA_CORRIENTES: La tabla cuenta_corrientes alberga los datos
de las operaciones que se generan sobre las cuentas.
La tabla contiene los siguientes campos de datos:
• ID_CC: Es el campo clave de la tabla. Contiene un número autogenerado que identifica a la operacion.
• NRO_CUE: Contiene la identificación única de la cuenta. es un
campo relacional a la tabla cuenta.
• TIPO: Contiene información del tipo de transacción (extracción,
depósito, transferencia.)
• MONTO: Contiene el monto de la operación.
• FECHA: Contiene la fecha que se realizó la operación.
PRODUCTOS.
La tabla posee los siguientes campos de datos:
• ID_PRO: Es el campo clave de la tabla. Contiene un número autogenerado que identifica al producto.
288
CAPÍTULO 11. DESCRIPCIÓN DE LA APLICACIÓN
• ID_RUB: Es la clave foránea que relaciona la tabla Productos con
la tabla Rubro.
• ID_NOM: Es la clave foránea que relaciona la tabla Productos con
la tabla Nombre_Pro.
• ID_MAR: Es la clave foránea que relaciona la tabla Productos con
la tabla Marca_Lab.
• ID_PRE: Es la clave foránea que relaciona la tabla Productos con
la tabla Presentacion.
• PRO_PU: Contiene el precio unitario del producto.
• PRO_STOCK: Contiene el stock del producto.
• PRO_IMA: Contiene el nombre de la imagen.
PRESENTACION.
La tabla posee los siguientes campos de datos:
• ID_PRE: Es el campo clave de la tabla. Contiene un número autogenerado que identifica a la presentación
• PRE_DES: Contiene la descripción de la presentación.
• ID_RUB: Es la clave foránea que relaciona la tabla Presentación
con la tabla Rubro.
• ID_NOM: Es la clave foránea que relaciona la tabla Presentación
con la tabla Nombre_Pro.
• ID_MAR: Es la clave foránea que relaciona la tabla Presentación
con la tabla Marca_Lab.
NOMBRE_PRO.
La tabla posee los siguientes campos de datos:
• ID_NOM: Es el campo clave de la tabla. Contiene un número que
identifica a la nonbre del producto.
• NOM_DES: Contiene la descripción de la nombre del producto.
• ID_RUB: Es la clave foránea que relaciona la tabla Nombre_Pro
con la tabla Rubro.
MARCA_LAB.
La tabla posee los siguientes campos de datos:
11.4. ESTRUCTURAS DE DATOS UTILIZADAS
289
• ID_MAR: Es el campo clave de la tabla. Contiene un número que
identifica a la Marca del Producto.
• MAR_DES: Contiene la descripción de la marca del producto.
• ID_RUB: Es la clave foránea que relaciona la tabla Marca_Lab
con la tabla Rubro.
RUBRO.
La tabla posee los siguientes campos de datos:
• ID_RUB: Es el campo clave de la tabla. Contiene un número que
identifica al rubro del producto.
• RUB_DES: Contiene la descripción del rubro del producto.
VENTAS.
La tabla posee los siguientes campos de datos:
• ID_VEN: Es el campo clave de la tabla. Contiene un número autogenerado que identifica a la venta.
• ID_USU: Es la clave foránea que relaciona la tabla Ventas con la
tabla Usuario.
• VEN_FEC: Contiene la fecha en que se realizo la venta.
• VEN_HS: Contiene la hora en que se realizo la venta.
• VEN_TOTAL: Contiene el total de la venta.
• VEN_FP: Contiene la forma de pago de la venta.
DETALLES_VENTAS.
La tabla posee los siguientes campos de datos:
• ID_DVEN: Es el campo clave de la tabla. Contiene un número
autogenerado que identifica a la venta.
• IDVEN: Es la clave foránea que relaciona la tabla Detalles_ventas
con la tabla Ventas.
• ID_PRO: Es la clave foránea que relaciona la tabla detalles_Ventas
con la tabla Producto.
• DVEN_CANT: Contiene la cantidad del producto que se vendio.
Capítulo 12
Conclusiones
12.1.
Conclusiones Generales
Los dispositivos móviles y particularmente los teléfonos celulares, hoy en
día no son un lujo sino una necesidad.
Prácticamente cada integrante de una familia ya dispone de un teléfono
celular con buenas capacidades gráficas y de cómputo. Es por ésto que las
empresas están trabajando para brindarles a sus clientes nuevos servicios para
este tipo dispositivos.
Los desarrollos de las nuevas tecnologías de la información y las comunicaciones (NTICs) en los últimos años impulsan la implantación de sistemas
distribuidos que puedan ser accedidos a través de los teléfonos celulares. Cuando se habla de tecnologías se refiere a GSM, GPRS, WAP que permiten que
un teléfono celular pueda mantener conexiones de datos y poder consultar
cualquier tipo de información que se encuentre en Internet, o interactuar con
el servidor Web o aplicación Web de la empresa. Como por ejemplo una farmacia.
Las soluciones móviles están mostrando sus beneficios para la gestión de las
empresas en la mejora de la productividad, en la creación de nuevos servicios.
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 desarrolló también la aplicación web a fin de tener un sistema completo
291
292
CAPÍTULO 12. CONCLUSIONES
desarrollado.
Se ha optado por emplear una tecnología ampliamente extendida en la
actualidad, y de la que cada vez aparecen un mayor número de dispositivos,
de gama media-baja a un costo razonable. No se ha empleado ninguna característica propia de ninguna de las marcas del mercado (Nokia, Motorola, Sony
Ericsson), por lo que la aplicación desarrollada es compatible con cualquier
terminal que soporte la tecnología Java.
Se ha probado la aplicación móvil desarrollada en distintos emuladores.
Los mismos se detallan a continuación:
Emulador estándar de NetBeans.
Nokia Series 60 5th Edition SDK for Symbian , Feature Pack 3.
Sony Ericsson SDK 2.5.0.6.
También a lo largo del presente trabajo se ha probado la ejecución del
aplicativo en terminales reales. A continuación se detalla el modelo:
Nokia 2800.
El resultado de las pruebas en los distintos emuladores y terminales reales
cubrió ampliamente las expectativas.
12.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 del ambiente de desarrollo
de aplicaciones.
Con respecto al motor de bases de datos DB2, se debe destacar la escalabilidad, integridad y su facilidad de uso, disponiendo de intuitivos asistentes
para la creación de bases de datos, de tablas y la gran utilidad SQL asist que
brinda un apoyo para realizar todo tipo de consultas SQL hacia las tablas.
12.3. LÍNEAS FUTURAS DE ACCIÓN
293
En cuanto a las facilidades en el entorno de desarrollo, se pudo apreciar
que RAD posee un gran número de ventajas, al disponer de numerosas vistas,
perspectivas y un editor de código fuente inteligente apto para el desarrollo
de este tipo de aplicaciones. También se puede decir que RAD puede ser
usado desde la Intranet de una organización y/o desde la Internet, con lo
cual el sistema resulta más eficiente, más flexible y adaptable al cambio. Al
ser accesible desde la Intranet se pudo realizar la comunicación real de la
aplicación móvil con el servidor sin ningún tipo de inconvenientes.
Cabe destacar el editor gráfico NetBeans, que utiliza el concepto de Drag
and Drop para insertar elementos gráficos en el móvil y las facilidades de este
entorno para añadir nuevos dispositivos para las distintas pruebas del sistema.
Con la utilización del lenguaje Java (J2ME ) se comprobó la gran portabilidad que brinda al poder lanzar la aplicación en distintos modelos y marcas
de teléfonos celulares.
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.
12.3.
Líneas Futuras de Acción
A continuación se detallan las principales líneas futuras de acción del presente trabajo:
Mejorar la seguridad del trafico entre los dispositivos móviles y el servidor web mediante algoritmos de encriptación.
Desarrollar un módulo basado en el servidor para la generación de estadisticas de distinto tipo, las que podrán procesarse con software especifico de tipo OLAP y con algoritmos de Minería de Datos.
Bibliografía
[1] L. J. Aguilar. Cibersociedad. Mac Graw-Hill, 1997.
[2] L. J. Aguilar. Programación Orientada a Objetos - Segunda Edición. Mc
Graw Hill/Interamericana de España, S.A.U., España, 1998.
[3] L. Allende. Comercio Electrónico.Aspectos generales, normativos y contractuales. Revista El Derecho, 10 DE Julio 2001.
[4] B. J. Carla Sadtler, John Ganci. WebSphere Product Family Overview
and Architecture. IBM Press, USA, 2004.
[5] E. De la Rica. Marketing en Internet. Anaya Multimedia, ESIC Editorial.
España, 1997.
[6] I. G. Fernández. Tesis doctoral: Modelo para comercio electrónico basados
en sistemas intermediarios. Universidad Politécnica de Catalunya, 2001.
[7] M. R. Firtman. Programación para celulares. Mp Ediciones, Buenos Aires,
Argentina, 2005.
[8] J. C. P. Froufe Quintas Agustín. J2ME Java 2 Micro Edition Manual De
Usuario y Tutorial. Alfaomega Grupo Editor Argentino S.A., 2004.
[9] H. K. y. A. O. Halchmi, Z. Electronic Commerce. The Technion-Israel
Institute of Technology, 1996.
[10] IBM. WebSphere Comerse V5.5 Architecture. IBM Press, USA, 2003.
[11] D. L. L. R. Martinez. Material de apoyo de la catedra Diseño y Administración de Datos. Universidad Nacional del Nordeste, Corrientes,
Argentina, 2006.
[12] L. J. A. I. Z. Martínez. Estructura de Datos - Algoritmos, Abstracción y
Objetos. Mc Graw Hill/Interamericana de España, S.A.U., España, 1998.
295
296
BIBLIOGRAFÍA
[13] R. A. RAUL CHONG, IAN HAKES. Conociendo el DB2 Express-C.
Copyright IBM Corporation, 2007, 2008, Abril 2008.
[14] L. O. D. Sergio Gálvez Rojas. Java a Tope: J2ME. Universidad de Málaga,
Málaga, España, 2004.
[15] K. H. F. . S. S. Silberschatz, Abraham. Aprenda Servlets de Java como
si estuviera en Segundo. Editorial McGraw-Hill, USA, 1993.
[16] E. C. A. C. P. G. C. Solares. JAVA - Un Lenguaje de Programación
Multiplataforma para Internet. Paraninfo, España, 1997.
[17] A. S. Tanenbaum. Redes de Computadoras. Pearson Educación, Mexico,
2003.
[18] M.Ñ. T. U. Hansmann, L. Merk.
Springer,Verlag, 2001.
Pervasive Computing HandBook.
[19] VV.AA. Introducción a las Bases de Datos. THOMSON PARANINFO,
S.A., USA, 2005.
[20] M. Weiser. The computer for the 21st century. Scientific American, San
Francisco, CA, USA, 1991.
[21] I. D. Yorio. Tesis de Magistratura:Identificación y clasificación de patrones en el diseño de aplicaciones móviles. Universidad Nacinal de la
Plata.
Índice alfabético
2.5G, 50
2G, 41
3G, 42, 50
bucles, 96
do while, 98
for, 97
while, 97
AIV Extender, 194
C/C++, 94
AMPS, 45
Advanced Mobile Phone System, caso de uso, 241
CDC, 126
41
Sistema Avanzado de Telefonía Móvil, Conected Device Configuration, 123
CDMA, 42
43
Acceso Múltiple Por División de
AMS, 131, 132
Código, 48
aplicación, 239
celular,
262
Aplicaciones
Ciclo del Conocimiento, 9
Móviles, 67
Clases de Conocimientos, 9
AWT, 127
CLDC, 126
B2B, 22, 26
Conected Limited Device ConfigB2C, 22, 26
uration, 122
B2G, 22
clientes, 19
Bases de Datos
comentarios, 94
Introduccion, 185
comercio, 17, 23, 30, 31
Bases de Datos en Red
electrónico, 19
Modelo, 190
comercio
Bases de Datos Jerárquicas
electrónico, 16
Modelo, 189
comercio electrónico, 24, 27, 28, 31, 32
Bases de Datos Relacional
computación pervasiva, 3
Modelo, 190
Computacion Ubicua, 3
bibliotecas de clases, 81
comunicaciones en J2ME, 170
bifurcaciones, 95
comunicaciones HTTP, 174
if, 95
comunicaciones inalámbricas, 56
if else, 96
comunicaciones móviles, 42
bloque try, catch, finally, 98
configuración, 122, 125
297
298
conocieminto tácito, 9
conocimiento explícito, 9
contenedor
cliente de aplicaciones de, 222
EJB de, 221
Web, 222
ÍNDICE ALFABÉTICO
expresión, 94
FDM
multiplexión por división de frecuencias, 48
Gestión del Conocimiento, 12
GFC, 173, 174
D-AMPS
Generic Framework Conection, 170
Sistema Avanzado de Telefonía DiGPRS,
42, 113, 244
gital, 45
Servicio
de Radio de Paquetes GenDB2
erales, 50
Introduccion, 185
GSM,
26,
42, 50, 56
DB2 UDB
Sistema Global Para ComunicaCaracteristicas Generales, 193
ciones Móviles, 46
Funciones Complementarias, 194
GUI,
222
DBMS
Sistema de Administración de Bases herencia, 86
de Datos, 187
hosts virtuales, 223
definiciones, 16
HTML, 54
DNS, 223
HTTP, 54
doGet (), 102, 105
HttpServletRequest, 102
doPost (), 105
HttpServletResponse, 102
EDGE
Tasa de Datos Mejorada para la
Evolución del GSM, 50
EDI, 22, 29, 31
ejemplo de
bifurcación if, 95
bifurcación if else, 96
bucle for, 97
bucle while, 97
comentario, 95
do while, 98
línea compuesta por tres sentencias, 94
ejemplo de clase, 86
empresas, 20
enterprise beans, 221
estructuras de programación, 94
IMTS, 44
Sistema Mejorado de Telefonía Móvil,
43
instanciación e inicialización, 104
interfaz
Connection, 173
InputConnection, 173
OutputConnection, 174
StreamConnection, 174
intermedarios, 34
Internet, 1, 15, 19, 32, 37, 51, 54
móvil, 244
internet, 32
Internet , 34
IT, 220
J2EE, 214, 218
ÍNDICE ALFABÉTICO
Java 2 Enterprise Edition, 114
J2ME, 113
Java 2 Micro Edition, 113, 114,
118
J2SE
Java 2 Standard Edition, 114
Java, 113
java, 79, 81—84, 86, 88, 91, 92, 94, 95,
98, 99, 103, 106
estructura general de un programa, 84
javax.servlet.HttpServlet, 102
JCA, 220
JDBC, 222
JDK, 95
JNDI, 222
JSP, 222
jsp, 106, 109
juegos y aplicaciones, 53
JVM, 221
Java Virtual Machine, 114
299
Oficina de Telefonía Móvil, 44
multi servidor, 219
multiplataforma, 82, 193
mundo móvil, 41
NetBens, 229
NTICs
Nuevas Tecnologías de Informática y Comunicaciones, 1
nuevas tecnologias, 1
OMA
Open Mobile Alliance, 56
OOP, 84
operadores
aritméticos, 91
de asignación, 91
de concatenación de cadenas de
caracteres, 93
package, 87
packages, 85
PCS
Ley de Moore y la Vision de Weiser, 6
Personal Communications Services,
41
M-Commerce
Comercio Electrónico a Través de perfil, 125
plug-in, 221
Dispositivos Móviles, 26
proceso de formación del conocimienm-commerce, 3
to, 8
memoria
administrador automático de la,
84
mensajes multimedia, 53
middleware, 219
MIDlet, 131, 134, 135, 156
MIDP, 126, 170
MMS, 65
Multimedia Messaging System, 53
MSC
Centro de Conmutación Móvil, 44
MTSO
Quick Installation, 220
RAD, 205
Rational Application Developer, 205
record, 156
store, 156, 157
stores, 168, 169
RMS, 156, 158
Record Management System, 154
sentencia, 94
300
ÍNDICE ALFABÉTICO
telefonía celular, 42
Server
telefonía móvil, 43
Application
Tomcat
Advanced Edition, 218
Tomcat 5.0, 225
Enterprise Edition, 220
Standard Edition, 220
UMTS
servicios de información, 52
Sistema Universal de Telecomuniservidor
caciones Móviles, 49
de aplicaciones, 221
HTTP, 221
venta
servlets, 99, 100, 102, 103, 105, 222
directa, 18
motor del, 104
ventajas, 19
sistema avanzado de telefonía móvil,
ventas
43
por catálogo, 18
sistemas móviles de segunda generación,
virtual
48
sistema principal, 222
SMS, 26, 53
Short Message System, 52
W-CDMA, 49
SMTP, 52
CDMA de Banda Ancha, 49
Sociedad de la Informacion y el Cono- WAP, 26, 54
cimiento
wireless application protocol, 56
definición, 7
WAS
software móvil, 54
WebSphere Application Server, 216
WBML
TCP/IP, 19, 56
Wireless Binary mark-up Language,
TDM
60
multiplexión por división de tiem- Web Services, 219
po, 48
WebSphere
TDMA, 42
Application Server, 217
teléfonos
WebSphere Application Server, 206
móviles, 3
WML, 55
teléfonos celulares, 43, 67, 119
Wireless Mark-up Language, 60
teléfonos móviles, 51
WWW, 19
teléfonos móviles de primera generación,
42
XHTML-MP, 62
teléfonos móviles de segunda generación,XML Extender, 194
45
teléfonos móviles de tercera generación,
49
telefonía celular, 52
telefonía móvil, 43
Descargar