Acceso a Bases de Datos Multiplataforma Desde Dispositivos Móviles Manuales.

Anuncio
Universidad Nacional del Nordeste
Facultad de Ciencias Exactas y Naturales y Agrimensura
Trabajo Final de Aplicación
Acceso a Bases de Datos Multiplataforma
desde Dispositivos Móviles Manuales
Silvana Daniela Maidana - L.U.: 33.548
Prof. Coordinador: Agr. Castor Herrmann
Prof. Orientadores: Mgter. David Luis la Red Martínez y
Lic. Valeria Uribe.
Licenciatura en Sistemas de Información
Corrientes - Argentina
2008
A mi familia
Prefacio
En los últimos tiempos han habido importantes avances tecnológicos tanto en las áreas de comunicaciones móviles como en las de almacenamiento
de datos; asímismo los requerimientos de la población en la sociedad de la
información y el conocimiento (SIC), hacen necesario y conveniente estudiar
tecnologías que permitan obtener información útil del contenido de las bases
de datos, mediante dispositivos móviles.
Además, es un hecho de la realidad que en las grandes organizaciones la
computación móvil ha adquirido una relevancia sustancial como una etapa
dentro del acceso remoto a los datos, lo cual hace sumamente interesante su
estudio y el análisis de sus potencialidades, especialmente teniendo presente la
posibilidad de generar servicios de acceso remoto y móvil, desde dispositivos
de diferentes tipos, con software multiplataforma.
Asímismo es una constante en los últimos años que las tecnologías de la
computación móvil intentan hacer y de hecho lo logran en muchos casos, una
ampliación de las potencialidades del acceso mediante redes, en este caso, redes
inalámbricas.
Este trabajo se basa en el estudio de software de base que permite el
desarrollo de aplicaciones móviles con acceso a base de datos multiplataforma
situadas en un servidor web y en el desarrollo de una aplicación Web para la
administración y gestión de la información en la base de datos.
Contempla la posibilidad de poder consultar datos de la base de datos con
respecto a notas de distintas asignaturas por parte de los alumnos registrados
en las mismas desde un dispositivo móvil, y la gestión de dichos alumnos,
notas y usuarios desde el sistema de administración Web.
Objetivos
El objetivo inicialmente planteado fue la realización de una aplicación
móvil desarrollada en J2ME; otro objetivo también fijado como básico fue
el desarrollo de la aplicación Web en Java; ambos desarrollados en productos
de software de la familia de WebSphere.
Estos objetivos planteados al inicio del trabajo, fueron totalmente cumplidos.
Clasificación del Trabajo
vi
El trabajo se clasifica como de utilización de software de base que permite el
desarrollo de aplicaciones móviles con acceso a bases de datos multiplataforma.
Etapas de Desarrollo
• Se ha efectuado una amplia recopilación bibliográfica específica de los
temas pertinentes a la tarea planificada y a los productos de software
que se emplearon para la concreción del Trabajo Final.
• Se realizaron las traducciones de los manuales correspondientes a las
herramientas de desarrollo WebSphere Studio Application Developer,
versión 5.0 para Windows y del WebSphere Studio Device Developer,
versión 5.7.
• Como consecuencia de las gestiones realizadas por el Profesor Orientador ante IBM Argentina se han recibido materiales tanto en CD’s como
en libros de dicha empresa, en el marco del Scholars Program de la misma, destinado a Universidades de todo el mundo; se destacan por ser
necesarios para la realización del presente Trabajo Final los referentes
a productos de software tales como el WebSphere Studio Application
Developer versión 5.0, WebSphere Studio Device Developer Versión 5.7,
como así también el DB2 database para Linux, UNIX y Windows Versión
9.
• Se ha realizado un detallado estudio del lenguaje Java, utilizándose la
versión JDK 1.4.
• Se ha realizado un detallado estudio del entorno de trabajo Scientific
WorkPlace 2.5.0 para la escritura del libro correspondiente al informe
final.
• Se ha realizado un detallado estudio del software para el desarrollo de
la aplicación, es decir el estudio de la plataforma integrada de desarrollo
de aplicaciones Web, WebSphere Studio Application Developer.
• Se ha realizado el estudio del Manejador de Bases de Datos (DBMS)
multiplataforma DB2.
• Se ha realizado el desarrollo de la aplicación utilizando páginas HTML
y Servlets de Java en el marco de la herramienta WebSphere Studio
Application Developer en el entorno Windows.
vii
• Se ha realizado el correspondiente testeo de la aplicación móvil en diferentes emuladores y el de la aplicación web en diferentes navegadores.
• Una vez finalizada la aplicación se realizó la grabación en DVD de todo
el material correspondiente al trabajo final: una versión de cada uno de
los módulos, otra referente al libro en formato LaTex y el PDF generado.
También se icluyeron los instaladores de los productos utilizados para el
desarrollo, es decir DB2 UDB, WebSphere Studio Application Developer
y WebSphere Studio Devide Developer.
Objetivos Logrados
Se han alcanzado plenamente la totalidad de los objetivos planteados para
el presente trabajo.
Organización del Informe Final
El informe final comprende un libro impreso y un DVD.
El libro impreso está organizado en capítulos, los que se indican a continuación:
• Introducción: presenta una visión general de los sistemas de información
en la Sociedad de la Información y del Conocimiento, y una introducción
a Gobierno Electrónico.
• Java: describe las más destacadas características del lenguaje.
• Servlets: resume los aspectos más destacados de estas facilidades.
• J2ME : da una introducción a este lenguaje en pleno auge.
• DB2 : detalla las más relevantes características de esta familia de productos de gestión de bases de datos multiplataforma.
• WebSphere: presenta los principales aspectos de este entorno de desarrollo de aplicaciones complejas.
• Aplicación: detalla los aspectos más significativos de las aplicaciones
desarrolladas utilizando las facilidades antes mencionadas.
• Conclusiones: presenta las conclusiones a las que se ha llegado al finalizar
el presente trabajo.
viii
El DVD, adjunto al libro impreso, contiene lo siguiente:
• Instaladores del software utilizado.
• Libro del informe final.
• Presentación para la defensa final.
• Copia de seguridad de la base de datos de las aplicaciones.
• Aplicación desarrollada.
Silvana Daniela Maidana
Licenciatura en Sistemas de Información
Universidad Nacional del Nordeste
L.U.: 33548
Corrientes; 02 de Diciembre de 2008
Índice General
1 Introducción
1.1 Gestión del Conocimiento . . . . . . . . . . . . . . . . . . . . .
1.1.1 Una Visión Global . . . . . . . . . . . . . . . . . . . . .
1.1.2 Definición de Conocimiento . . . . . . . . . . . . . . . .
1.1.3 Ciclo de Vida del Conocimiento . . . . . . . . . . . . . .
1.1.4 Conocimiento: la Nueva Materia Prima de las Empresas
1.1.5 La Cultura en la Sociedad del Conocimiento . . . . . . .
1.1.6 Gestión del Conocimiento . . . . . . . . . . . . . . . . .
1.1.7 Portales del Conocimiento . . . . . . . . . . . . . . . . .
1.1.8 Necesidad de la Gestión del Conocimiento . . . . . . . .
1.1.9 Situación Actual en la GC . . . . . . . . . . . . . . . . .
1.1.10 Objetivos de la Gestión del Conocimiento . . . . . . . .
1.1.11 Globalización de la Economía y el Conocimiento . . . .
1.1.12 La Estrategia de Convertir Datos en Conocimieto . . . .
1.1.13 Nuevo Futuro del Conocimiento . . . . . . . . . . . . . .
1.2 Gobierno Electrónico . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2 Definición . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3 Modalidades del Gobierno Electrónico . . . . . . . . . .
1.2.4 Las estrategias de Gobierno Electrónico . . . . . . . . .
1
1
2
2
6
7
8
10
15
16
18
20
22
24
25
25
25
29
31
32
2 JAVA
2.1 Introducción al Lenguaje . . . . . . . . . . . . . .
2.1.1 Bibliotecas de Clases Estándares de Java
2.1.2 Java es Multiplataforma . . . . . . . . . .
2.1.3 Características del Lenguaje Java . . . . .
2.2 Estructura General de un Programa Java . . . .
2.3 Conceptos Básicos . . . . . . . . . . . . . . . . .
2.3.1 Clase . . . . . . . . . . . . . . . . . . . .
37
38
39
40
40
43
44
44
ix
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
x
ÍNDICE GENERAL
2.3.2
Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
2.3.3
2.3.4
Interface . . . . . . . . . . . . . . . . . . . . . . . . . . .
Package . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
45
.
.
.
.
46
47
49
50
Operadores Aritméticos . . . . . . . . . . . . . . . . . .
Operadores de Asignación . . . . . . . . . . . . . . . . .
Operadores Unarios . . . . . . . . . . . . . . . . . . . .
Operadores Incrementales . . . . . . . . . . . . . . . . .
Operadores Relacionales . . . . . . . . . . . . . . . . . .
Operador de Concatenación de Cadenas de Caracteres
(+) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.7 Precedencia de Operadores . . . . . . . . . . . . . . . .
2.6 Estructuras de Programación . . . . . . . . . . . . . . . . . . .
2.6.1 Sentencias o Expresiones . . . . . . . . . . . . . . . . . .
2.6.2 Comentarios . . . . . . . . . . . . . . . . . . . . . . . .
2.6.3 Bifurcaciones . . . . . . . . . . . . . . . . . . . . . . . .
2.6.4 Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7 Clases en Java . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7.1 Características Importantes de las Clases . . . . . . . .
2.7.2 Métodos o Funciones Miembros . . . . . . . . . . . . . .
2.8 Algunas Clases de Utilidad . . . . . . . . . . . . . . . . . . . .
2.8.1 Clase Arrays . . . . . . . . . . . . . . . . . . . . . . . .
2.8.2 Clases String y StringBuffer . . . . . . . . . . . . . . . .
2.8.3 Clase Double . . . . . . . . . . . . . . . . . . . . . . . .
2.8.4 Clase Integer . . . . . . . . . . . . . . . . . . . . . . . .
2.9 El AWT (Abstract Windows Toolkit) . . . . . . . . . . . . . . .
2.9.1 Qué es el AWT . . . . . . . . . . . . . . . . . . . . . . .
2.9.2 Creación de una Interface Gráfica de Usuario . . . . . .
2.9.3 Objetos “event source” y Objetos “event listener” . . .
2.9.4 Proceso a Seguir Para Crear Una Aplicación Interactiva
(Orientada a Eventos) . . . . . . . . . . . . . . . . . . .
2.10 Errores Frecuentes de Programación . . . . . . . . . . . . . . .
2.10.1 Scheduling de Hilos de Ejecución . . . . . . . . . . . . .
2.10.2 Errores en el Uso de las Características de Portabilidad
de Java . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.10.3 Uso de Directorios Definidos . . . . . . . . . . . . . . .
50
50
51
51
52
2.4
2.5
2.3.5 La Jerarquía de Clases de Java (API)
Variables Dentro del Lenguaje Java . . . . . .
2.4.1 Visibilidad y Vida de las Variables . .
Operadores en Java . . . . . . . . . . . . . .
2.5.1
2.5.2
2.5.3
2.5.4
2.5.5
2.5.6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
53
54
54
55
55
56
57
60
61
62
63
63
65
66
66
66
66
67
67
68
69
69
71
71
ÍNDICE GENERAL
2.10.4
2.10.5
2.10.6
2.10.7
.
.
.
.
74
75
76
76
.
.
.
.
.
.
.
.
.
.
.
.
.
77
78
78
79
81
81
81
82
83
84
85
85
86
86
4 J2ME
4.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Análisis Comparativo . . . . . . . . . . . . . . . . . . .
4.1.2 Nociones Básicas de J2ME . . . . . . . . . . . . . . . .
4.2 Los MIDlets . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1 El Gestor de Aplicaciones . . . . . . . . . . . . . . . . .
4.3 Interfaces Gráficas de Usuario . . . . . . . . . . . . . . . . . . .
4.3.1 Introducción a las Interfaces de Usuario . . . . . . . . .
4.3.2 La Interfaz de Usuario de Alto Nivel . . . . . . . . . . .
4.3.3 La Interfaz de Usuario de Bajo Nivel . . . . . . . . . . .
4.4 Record Management System . . . . . . . . . . . . . . . . . . . .
4.4.1 Conceptos Básicos . . . . . . . . . . . . . . . . . . . . .
4.4.2 Operaciones Con Record Stores . . . . . . . . . . . . . .
4.5 Comunicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.1 Conceptos Básicos . . . . . . . . . . . . . . . . . . . . .
4.5.2 Clases y Conexiones del Generic Connection Framework
4.5.3 Comunicaciones HTTP . . . . . . . . . . . . . . . . . .
4.5.4 Otras Conexiones . . . . . . . . . . . . . . . . . . . . . .
91
92
93
95
106
106
110
110
112
114
117
117
120
121
121
121
126
131
5 Introducción a DB2
135
3
Carga de Drivers JDBC . .
Terminación de Líneas . . .
Entrada/Salida por Archivo
Fuentes de Caracteres . . .
xi
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Servlet
3.1 Desarrollando Servlets . . . . . . . . . . . . . .
3.1.1 Principios de Codificación de Servlet .
3.1.2 Ciclo de Vida del Servlet . . . . . . . .
3.1.3 Instanciación e Inicialización . . . . . .
3.1.4 Servicio de Demanda . . . . . . . . . . .
3.1.5 Terminación . . . . . . . . . . . . . . . .
3.1.6 Modelos de Acceso JSP . . . . . . . . .
3.1.7 Procesadores JSP . . . . . . . . . . . . .
3.1.8 Compilación Batch de Archivos JSP . .
3.1.9 Desarrollando Aplicaciones . . . . . . .
3.1.10 Fases de Inicialización y de Terminación
3.1.11 Rasgos de Java Servlet API . . . . . . .
3.1.12 Patrones y Guías de Servlets/JSP . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
xii
ÍNDICE GENERAL
5.1
5.2
5.3
DB2 Universal Database (DB2 UDB) . . . . . .
Funciones Complementarias . . . . . . . . . . .
Configuraciones de Particiones Múltiples . . . .
5.3.1 Particiones con un Procesador . . . . .
5.3.2 Particiones con Múltiples Procesadores .
5.3.3 Particiones Lógicas de Base de Datos . .
5.4 Paralelismo Mejor Adaptable a cada EH . . . .
5.4.1 Herramientas de Administración . . . .
5.4.2 Estándares Soportados en DB2 . . . . .
5.5 Familia de DB2 UDB . . . . . . . . . . . . . .
5.6 DB2 UDB Versión 7.2 . . . . . . . . . . . . . .
5.7 Área de Ejecución de Instalación . . . . . . . .
5.7.1 Área de Ejecución del Depósito . . . . .
5.7.2 Primeros Pasos . . . . . . . . . . . . . .
5.7.3 Visión General Rápida . . . . . . . . . .
5.7.4 Centro de Información . . . . . . . . . .
5.7.5 Mejoras en los Asistentes . . . . . . . .
5.8 DB2 UDB Versión 8.1 . . . . . . . . . . . . . .
5.8.1 Centro de Desarrollo . . . . . . . . . . .
5.8.2 WebSphere . . . . . . . . . . . . . . . .
5.8.3 Mejoras en XML Extender . . . . . . .
5.8.4 DB2 Warehouse Manager . . . . . . . .
5.8.5 DB2 Warehouse Manager (cont.) . . . .
5.8.6 Centro de depósito de datos de DB2 . .
5.8.7 DB2 Spatial Extender . . . . . . . . . .
5.8.8 DB2 Spatial Extender (cont.) . . . . . .
5.8.9 Gestión de los Datos . . . . . . . . . . .
5.8.10 Duplicación (DB2 DataPropagator) . .
5.8.11 Nuevo Centro de duplicación . . . . . .
5.8.12 Posibilidades de Gestión . . . . . . . . .
5.8.13 Soporte de plataformas . . . . . . . . .
5.8.14 Compatibilidad de la Familia de DB2 .
5.9 Principales Ventajas del DB2 UDB . . . . . . .
5.10 Conclusión . . . . . . . . . . . . . . . . . . . .
6 WebSphere
6.1 Introducción . . . . . . . . . . . . . . .
6.2 Eclipse . . . . . . . . . . . . . . . . . .
6.2.1 Arquitectura de la Plataforma
6.3 Características del Workbench . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
136
138
141
141
142
143
143
144
146
147
148
150
150
150
151
151
151
156
157
157
157
158
159
159
160
161
161
162
162
163
164
164
165
168
.
.
.
.
171
172
173
173
176
ÍNDICE GENERAL
6.4
6.5
6.6
6.7
6.8
6.9
6.10
6.11
6.12
6.13
6.14
xiii
6.3.1 Herramientas Basadas en Plug-in . . . . . . . . . . . . . 176
6.3.2 Desarrollo de Herramientas Orientadas en Roles . . . . 177
6.3.3 Integración Vertical y Horizontal . . . . . . . . . . . . . 177
6.3.4 Estándares Abiertos . . . . . . . . . . . . . . . . . . . . 178
6.3.5 Ambiente de Trabajo Distribuido . . . . . . . . . . . . . 178
6.3.6 IDE Basado en Archivo . . . . . . . . . . . . . . . . . . 178
Productos WebSphere Studio . . . . . . . . . . . . . . . . . . . 178
6.4.1 WebSphere Studio Site Developer . . . . . . . . . . . . . 180
6.4.2 WebSphere Studio Application Developer . . . . . . . . 180
6.4.3 WebSphere Studio Application Developer Integration Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
6.4.4 WebSphere Enterprise Developer . . . . . . . . . . . . . 181
Herramientas de WSAD . . . . . . . . . . . . . . . . . . . . . . 181
6.5.1 Herramientas de Desarrollo Java . . . . . . . . . . . . . 183
6.5.2 Herramientas de Desarrollo de Aplicaciones Web . . . . 183
6.5.3 Herramientas de Desarrollo de Servicios Web . . . . . . 185
6.5.4 Herramientas de Desarrollo de Enterprise JavaBeans (EJB)187
6.5.5 Herramientas XML y XSL . . . . . . . . . . . . . . . . . 188
6.5.6 Herramientas de Base de Datos Relacional . . . . . . . . 188
6.5.7 Herramientas de Desarrollo de Aplicaciones Struts . . . 189
La Experiencia Pervasiva de IBM . . . . . . . . . . . . . . . . . 190
Modelo de Programación de WebSphere . . . . . . . . . . . . . 194
Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Alcance de la Arquitectura PvC . . . . . . . . . . . . . . . . . . 196
Modelo de Programación Extremo a Extremo . . . . . . . . . . 197
WebSphere y las Aplicaciones para Dispositivos . . . . . . . . . 198
La Plataforma de Servicios Pervasivos . . . . . . . . . . . . . . 198
Modelo de Programación de WebSphere . . . . . . . . . . . . . 200
WebSphere Studio Device Developer IDE . . . . . . . . . . . . 201
6.14.1 Developer IDE . . . . . . . . . . . . . . . . . . . . . . . 201
6.14.2 WebSphere Studio Device Developer . . . . . . . . . . . 201
6.14.3 Trabajar con el IDE . . . . . . . . . . . . . . . . . . . . 204
6.14.4 Configuración J2ME . . . . . . . . . . . . . . . . . . . . 208
6.14.5 Construcción y Ejecución en Dispositivos . . . . . . . . 208
7 Aplicación
7.1 Descripción General . .
7.2 Análisis del Sistema . .
7.2.1 Modelo de Datos
7.2.2 Casos de Uso . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
215
215
216
216
216
xiv
ÍNDICE GENERAL
7.3
7.4
Aplicación Móvil . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Aplicación Web . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
8 Conclusiones
241
Bibliografía
243
Índice de Materias
247
Índice de Figuras
1.1
1.2
1.3
1.4
1.5
Ciclo de Vida del Conocimiento. . . . . . . . . . . .
El Contexto del Capital Intelectual. . . . . . . . . .
La Cultura Propicia de la Gestión del Conocimiento.
El Proceso de Conocimiento. . . . . . . . . . . . . .
Proceso Clave en la Gestión del Conocimiento. . . .
.
.
.
.
.
7
9
10
13
16
3.1
3.2
3.3
Ciclo de Vida de un Servlet. . . . . . . . . . . . . . . . . . . . .
Requerimiento de un Archivo JSP. . . . . . . . . . . . . . . . .
Requerimiento de un Servlet. . . . . . . . . . . . . . . . . . . .
80
82
83
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13
Versiones de Java . . . . . . . . . . . . . . . . .
Relación entre las APIs de la plataforma Java.
Entorno de ejecución de J2ME . . . . . . . . .
Preverificación de clases en CDLC/KVM. . . .
Arquitectura del entorno de ejecución de J2ME
Ciclo de vida de un MIDlet. . . . . . . . . . . .
Estados de un MIDlet. . . . . . . . . . . . . . .
Jerarquía de clases derivadas de Display e Item
Comunicación entre un MIDlet y el RMS . . .
Acceso a un RMS a través de una MIDlet suite
Estructura de un Record Store . . . . . . . . .
Estructura completa de un Record Store . . . .
Jerarquía de interfaces . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
94
95
96
99
105
107
110
111
118
118
119
120
122
5.1
5.2
5.3
5.4
5.5
5.6
Almacenamiento de Documentos XML en DB2. .
Esquema Conceptual de los Almacenes de Datos.
Almacenamiento de Datos Espaciales . . . . . . .
Centro de Desarrollo . . . . . . . . . . . . . . . .
DB2 Warehouse Manager. . . . . . . . . . . . . .
Centro de Duplicación de DB2 versión 8.0. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
137
139
155
158
159
163
xv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
xvi
ÍNDICE DE FIGURAS
5.7
Replicación de Datos en DB2. . . . . . . . . . . . . . . . . . . . 167
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
6.10
6.11
6.12
6.13
6.14
6.15
6.16
6.17
6.18
6.19
6.20
Soluciones IBM WebSphere . . . . . . . . . . . . . . . . . . . .
Eclipse SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Plataforma Eclipse . . . . . . . . . . . . . . . . . . . . . . . . .
Productos WebSphere . . . . . . . . . . . . . . . . . . . . . . .
Entorno de desarrollo de WebSphere Studio Application Developer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Experiencia pervasiva de IBM . . . . . . . . . . . . . . . . . . .
Computación ubicua . . . . . . . . . . . . . . . . . . . . . . . .
Experiencia ubicua extendida a la plataforma WebSphere . . .
Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arquitectura PVC . . . . . . . . . . . . . . . . . . . . . . . . .
Modelo de programación extremo a extremo . . . . . . . . . . .
Paquete de la plataforma de servicios pervasivos. . . . . . . . .
Modelo de programación de WebSphere. . . . . . . . . . . . . .
WebSphere Studio Device Developer IDE . . . . . . . . . . . .
WebSphere Studio Device Developer . . . . . . . . . . . . . . .
Gestor de Actualizaciones. . . . . . . . . . . . . . . . . . . . . .
Barra de herramientas. . . . . . . . . . . . . . . . . . . . . . . .
Wizart par configurar construcciones. . . . . . . . . . . . . . .
Creación de dispositivos. . . . . . . . . . . . . . . . . . . . . . .
Ejecución de una aplicación. . . . . . . . . . . . . . . . . . . . .
182
191
192
193
195
196
197
199
200
202
203
204
206
209
211
213
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
7.10
7.11
7.12
7.13
7.14
7.15
7.16
Modelo de datos. . . . . . . . . . . . . . . . . . .
Diagrama de caso de uso de la aplicación móvil. .
Diagrama de caso de uso de la aplicación Web. .
Pantalla inicial. . . . . . . . . . . . . . . . . . . .
Menú principal. . . . . . . . . . . . . . . . . . . .
Registro en el sistema. . . . . . . . . . . . . . . .
Login. . . . . . . . . . . . . . . . . . . . . . . . .
Mensaje de error en el logueo. . . . . . . . . . . .
Menú de asignaturas. . . . . . . . . . . . . . . . .
Menú de opciones para la consulta de notas. . . .
Error en la elección de la asignatura. . . . . . . .
Resultado de la consulta. . . . . . . . . . . . . .
Pantalla de bienvenida . . . . . . . . . . . . . . .
Listado de alumnos de SO. . . . . . . . . . . . .
Alta de alumnos. . . . . . . . . . . . . . . . . . .
Edición de alumnos. . . . . . . . . . . . . . . . .
217
218
219
220
221
223
224
225
226
227
229
230
231
232
233
234
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
172
174
175
179
ÍNDICE DE FIGURAS
7.17
7.18
7.19
7.20
7.21
Consulta de alumnos. . . . .
Selección del archivo Excel. .
Lectura del archivo Excel. . .
Confirmación de la operación.
Estadísticas. . . . . . . . . . .
xvii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
235
236
237
238
239
Índice de Tablas
2.1
2.2
2.3
2.4
2.5
2.6
Tipos de Variables. . . . . . . .
Categorías de Variables. . . . .
Tipos Primitivos de Variables. .
Operadores de asignación. . . .
Operadores relacionales. . . . .
Precedencia de Operadores. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
48
48
49
51
52
54
4.1
4.2
4.3
4.4
4.5
4.6
Librerías de configuración CDC. . . . . . . . . . . . .
Librerías de configuración CLDC. . . . . . . . . . . . .
Tipo de listas. . . . . . . . . . . . . . . . . . . . . . . .
Código de teclas. . . . . . . . . . . . . . . . . . . . . .
Métodos relacionados con la etapa de establecimiento
Tipos de peticiones . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
102
103
113
115
128
128
5.1
Paralelismo mejor Adaptable a cada Entorno de Hardware . . . 144
xix
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Capítulo 1
Introducción
1.1
Gestión del Conocimiento
1
2
1.1.1
CAPÍTULO 1. INTRODUCCIÓN
Una Visión Global
Es un hecho de la realidad contemporánea que los vertiginosos adelantos registrados en las TIC (Tecnologías de la Información y de las Comunicaciones)
han convertido a nuestro planeta en lo que se ha dado en llamar “la aldea
global” [1, Joyanes], permitiendo que nuestra sociedad sea conocida como la
“sociedad de la información y el conocimiento” o “cibersociedad” [2, Joyanes,
Lombardo], en la cual la profusión de redes de datos ha permitido interconectar a diversidad de equipos informáticos de diferentes tecnologías de hardware
y de software constituyendo una verdadera red mundial multiplataforma, que
ha generado la posibilidad de nuevas formas de interacción de las personas
y de las empresas, impactando en la educación, las actividades sociales, el
comercio, etc.
Debido a que la información es poder, es muy importante el lugar en donde
se almacena, su organización y de qué forma se puede brindarla a las distintas
personas y entidades, independientemente de su localización geográfica y de
su plataforma tecnológica.
La necesidad de mejorar la manera de acceder y manejar los datos ha
evolucionado por lo que se debe profundizar el estudio de temas de gran interés,
como lo es la tecnología multiplataforma y su aplicación en la red en ambientes
comerciales y gubernamentales de dimensiones considerables.
El desarrollo del presente trabajo se ve motivado además por la posibilidad de desarrollar experiencias y conocimientos vinculados con entornos de
trabajo propios del ambiente universitario, de la seguridad que se precisa en el
manejo de la información y de la importancia actual de la interrelación de las
actividades de las organizaciones desde el punto de vista de su gestión interna y su interrelación con el medio mediante la Web, todo ello en el contexto
mayor de la sociedad de la información y el conocimiento.
1.1.2
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 diferentes definiciones según el punto de vista e interés de quienes
se pronuncien. Conviene conocer, en aras a un mejor entendimiento y colaboración más eficaz con personas de distintas culturas, diversas definiciones así
como la terminología que rodea al concepto conocimiento [3, Maestre].
1.1. GESTIÓN DEL CONOCIMIENTO
3
Para la definición de conocimiento varios autores interesados en la informática, se apoyan en las definiciones de otros dos conceptos: dato e información. Parece oportuno traer aquí las definiciones dadas por la Real Academia
Española al respecto:
• 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 o informarse.
• Conocimiento: acción y efecto de conocer. Noción, ciencia, sabiduría.
Cada una de las facultades sensoriales del hombre en la medida en que
están activas.
Como seguramente resultará útil para completar y para establecer diferenciaciones posteriores con otros términos, se adjuntan las definiciones dadas
por la misma institución a los conceptos informar y conocer:
• Informar : enterar, dar noticia de una cosa.
• Conocer : averiguar por el ejercicio de las facultades intelectuales la naturaleza, cualidades y relaciones de las cosas.
Además es oportuno traer hasta aquí la definición del Webster’s New Encyclopedia Dictionary sobre knowledge (conocimiento): Knowledge:
• understanding gained by actual experience (a knowledge of carpentry):
— the state of being aware of something or of having information.
— range of information or awareness.
• the act of understanding: clear perception of truth.
• something learned and kept in mind.
Que puede traducirse por: Conocimiento:
• comprensión obtenida por medio de la experiencia efectiva (conocimiento
de carpintería):
4
CAPÍTULO 1. INTRODUCCIÓN
— el estado de saber de algo o de tener información.
— rango de información o sapiencia.
• el acto de comprensión: clara percepción de la verdad.
• algo aprendido y retenido en la mente.
No completamente satisfechos con estas definiciones académicas, expertos
de las distintas disciplinas que se ocupan del conocimiento están aportando las
suyas. A continuación se exponen algunas de las muchas que, por su enfoque,
parecen más relevantes.
Stephen Denning, director de programas de gestión del conocimiento del
World Bank (Banco Mundial), declara: “En el lenguaje cotidiano se diferencia
entre información (datos estructurados en modo significativo) y conocimiento
(algo en lo que se cree que es cierto y fiable)”. No obstante, algunas objeciones
a los términos cierto y fiable están empañando la distinción. El uso indistinto
que a veces se hace de los términos información y conocimiento puede llevar a
la confusión si no se hace hincapié en que el término conocimiento se emplea
ahora con un sentido nuevo.
En un intento por definir el concepto conocimiento nos sirve de ayuda el
recordar que la mente humana es capaz de dos clases de conocimiento: el
racional y el intuitivo.
En el mundo occidental, el conocimiento intuitivo ha sido a menudo devaluado en favor del conocimiento racional científico. Sin embargo, la dificultad
de transferir el conocimiento de una persona a otra, ha llevado a intensificar la
importancia del conocimiento intuitivo. En el mundo oriental, el conocimiento intuitivo siempre ha sido considerado muy importante, hasta el punto de
considerarlo como el conocimiento superior mientras que asocian las ciencias
al conocimiento inferior.
Dos reconocidos expertos, Nonaka y Takeuchi, en el área de la Ciencia del
Conocimiento, tal como se instruye en Japón, afirman que: “el conocimiento
se puede definir como creencias justificadamente ciertas y técnicas adquiridas
empíricamente”.
Thomas H. Davenport, profesor de gestión de la información en la Escuela
de Negocios de la Universidad de Boston, y Donald A. Marchand, profesor de
gestión y estrategia de la información en el IMD International de Suiza coinciden en afirmar que “el conocimiento es información que se encuentra dentro
1.1. GESTIÓN DEL CONOCIMIENTO
5
de la mente de las personas; sin una persona que conozca y sea consciente de
ello, no existe el conocimiento”.
Estos profesores se interesan por el conocimiento desde el punto de vista de
la gestión empresarial. Y añaden: los datos, la información y el conocimiento
son distintos puntos a lo largo de un espectro sin solución de continuidad
caracterizado por un valor y una aportación humana cada vez mayores. Los
datos -los símbolos que representan los sucesos y actividades humanas a que
estamos expuestos cotidianamente- tienen poco valor en sí mismos, aunque
tienen la ventaja de ser fáciles de almacenar y manipular informáticamente. La
información es lo que obtenemos a partir de los datos cuando los interpretamos
y contextualizamos como humanos que somos.
Es asimismo el vehículo que utilizamos para expresar y comunicar el conocimiento, tanto en el seno de la empresa como en nuestras propias vidas. La
información tiene más valor que los datos y, al mismo tiempo, un mayor grado
de ambigüedad, como puede atestiguar cualquier directivo que haya discutido
alguna vez sobre las muchas interpretaciones que pueden darse de términos
como cliente, pedido y remesa dentro de una misma empresa.
El conocimiento tiene un gran valor, ya que los seres humanos crean a partir
de él nuevas ideas, visiones e interpretaciones y las aplican directamente al uso
de la información y la toma de decisiones.
Para otro conocido experto, Joseph Novak , el conocimiento es creado por
cada uno de nosotros asimilando lo que sabemos con lo que captamos por
medio de nuestras experiencias u observaciones.
La consultora PricewaterhouseCoopers conviene en definir el conocimiento
como información combinada con experiencia en su uso, situada en un contexto, junto con su interpretación y reflexión. Otra consultora, Arthur Andersen,
simplifica la definición de conocimiento afirmado que es información que tiene
valor. En la misma línea de pragmatismo, Ernst & Young define el conocimiento como mensajes con valor.
Pedro Maestre, conocido y respetado alto ejecutivo español en el campo
de las tecnologías de la información y comunicaciones, en su Diccionario de
Gestión del Conocimiento e Informática [3, Maestre] propone las definiciones
siguientes:
• Dato: cadena de caracteres, expresados en un determinado sistema de
codificación, asociada a un hecho o concepto.
6
CAPÍTULO 1. INTRODUCCIÓN
• Información: conjunto de datos interrelacionados de forma que aporten
utilidad en la gestión o dirección de una organización. En cierta medida,
la información, es la forma más elemental de conocimiento ya que, en sí
misma, no aporta predictibilidad.
• Conocimiento: resultado obtenido al aplicar una o varias reglas objetivas de actuación a una información o conjunto de informaciones. El
conocimiento implica cierta capacidad de hacer predicciones a partir de
unas determinadas informaciones y de unas reglas genéricas.
En el ámbito de la literatura sobre organización y gestión empresarial, el
concepto conocimiento, muy a menudo, se encuentra entremezclado y poco
diferenciado de los conceptos capacidad y habilidad.
1.1.3
Ciclo de Vida del Conocimiento
El ciclo de vida del conocimiento depende de la distinción entre conocimiento
tácito y conocimiento explícito. Ambos tipos de conocimientos son necesarios
y se produce una realimentación continua entre ambos.
El conocimiento tácito que se comparte con otras personas pasa a formar
parte del nuevo conocimiento tácito de estas últimas (socialización).
El conocimiento tácito que se almacena, se transforma en nuevo conocimiento explícito (exteriorización).
El conocimiento explícito al ser adquirido por una persona se transforma en
nuevo conocimiento tácito, ya que ésta añadirá su juicio, fruto de sus propios
conocimientos y experiencias previas (interiorización).
El conocimiento explícito puede combinarse con otros conocimientos explícitos dando lugar a nuevos conocimientos explícitos (combinación).
Lamentablemente la pérdida de una persona, bien sea por decisión propia
o como fruto de un proceso de reducción de costes supone una merma muchas veces irreparable de conocimiento tácito, y por tanto de la totalidad del
conocimiento de una organización.
El punto esencial del ciclo de vida del conocimiento radica en que el conocimiento que no fluye, no crece y a menudo envejece y se vuelve obsoleto e inútil;
por el contrario, el conocimiento que fluye, se comparte y se intercambia, ge-
1.1. GESTIÓN DEL CONOCIMIENTO
7
Figura 1.1: Ciclo de Vida del Conocimiento.
nera nuevo conocimiento. El flujo de conocimiento posibilita la interacción
entre el conocimiento tácito que poseen e intercambian las personas con el
conocimiento explícito que reside en documentos y librerías. Es por esto que
el flujo del conocimiento constituye el aspecto fundamental de la gestión del
conocimiento (ver figura 1.1 de la página 7).
1.1.4
Conocimiento: la Nueva Materia Prima de las Empresas
En la era digital que vivimos la riqueza de las empresas comienza a apoyarse
en el producto conocimiento. Conocimiento e información, no solo el conocimiento científico, sino noticias, informes, ocio, comunicación, servicios... se
han convertido en las materias primas principales de la economía y sus productos clave. El conocimiento hoy día se compra y se vende en cifras nunca
vistas. Los activos de capital que se necesitan para crear riqueza no son la
tierra ni el trabajo físico, ni las máquinas, herramientas o fábricas, son y serán
los activos del conocimiento.
Nos adentramos en la sociedad del conocimiento, que convive sin fisuras
con la sociedad de la información o cibersociedad. Las organizaciones empresariales y públicas disponen de un recurso vital e intangible que les permite
desarrollar su actividad esencial: el conocimiento. Los soportes básicos del
conocimiento son:
8
CAPÍTULO 1. INTRODUCCIÓN
1. Los recursos humanos que intervienen en los proceso de producción o de
soporte organizacional (formación, capacidades, cualidades personales,
etc.).
2. La información manejada en dichos procesos que capacita a estas personas a incrementar su formación o habilidades para el desarrollo de sus
tareas.
La función de estos dos factores hace emerger el conocimiento. La organización, en base a ello, necesita convertir los datos en conocimiento y difundirlos
rápidamente dentro de ella misma allá donde sea preciso. Esta concepción ha
hecho considerar a la organización como una suprarred de recursos humanos,
de información y de comunicaciones. Así aparece como un concepto vital en
las empresas la gestión del conocimiento y los sistemas y herramientas inteligentes:
• Los recursos humanos que intervienen en los proceso de producción o de
soporte organizacional (formación, capacidades, cualidades personales,
etc).
• La información manejada en dichos procesos que capacita a estas personas a incrementar su formación o habilidades para el desarrollo de sus
tareas.
El contexto del capital intelectual se grafica en la figura 1.2 de la página
9.
1.1.5
La Cultura en la Nueva Sociedad del Conocimiento
Las tecnologías de la información y comunicación han tenido un impacto considerable en la cultura. Es de gran importancia el impacto de los medios de
comunicación clásicos, y también la influencia de la multimedia, realidad virtual y autopistas de la información en el ámbito cultural y que se denomina
cibercultura: es el nuevo concepto que define la cultura, sociedad y vida de
los próximos años y es un término que engloba todo lo que sea movimiento,
evolución y en definitiva cultura a través del prefijo ciber que le proporciona
un nuevo estado, en el que el canal de desarrollo [4, Joyanes] es su propio flujo
tecnológico.
1.1. GESTIÓN DEL CONOCIMIENTO
Figura 1.2: El Contexto del Capital Intelectual.
9
10
CAPÍTULO 1. INTRODUCCIÓN
Innovar
Colaborar
Compartir
Cultura Propicia a la GC
Funciones y
Responsabilidades
Reconocimientos e
incentivos
Actividades y
medios
Figura 1.3: La Cultura Propicia de la Gestión del Conocimiento.
La cibercultura abarca todo el conjunto de posibilidades que ya existían,
añadiendo la ventaja del pensamiento artificial y unos interfaces que simulan
los procesos de creación y los transportan a gran velocidad, ya sea en el interior
de la propia computadora, o a otras computadoras situadas a distancia.
La cultura propicia a la gestión de conocimiento se grafica en la figura 1.3
de la página 10.
1.1.6
Gestión del Conocimiento
De todos los tipos de capital intelectual, el del conocimiento es el más complejo
y el más difícil de gestionar. 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.
1.1. GESTIÓN DEL CONOCIMIENTO
11
Las Bases de Conocimientos son depósitos o almacenes de datos (repositorios) del conocimiento del negocio (funciones, reglas, cálculos, informes, etc.)
totalmente independiente de la plataforma de ejecución, que mediante tecnologías de la inteligencia artificial son capaces de deducir, generar y mantener
automáticamente estructuras normalizadas de bases de datos y programas.
Desde hace algunos años se viene hablando de la gestión del conocimiento
(GC) de forma creciente en medios de comunicación, mesas redondas, conferencias, .... En el conjunto del Producto Interior Bruto de los países más
desarrollados, cada vez tiene un mayor peso la generación de riqueza por medio
de los servicios en detrimento del sector productivo.
Esto es, lo inmaterial está desplazando a lo material como base de la formación de riqueza de los países. No es extraño que cuando se consolida una
tendencia de esta naturaleza la preocupación por los activos inmateriales, por
lo intelectual, se acrecienta de forma muy significativa. Surge así el interés por
la gestión de los activos inmateriales.
“La necesaria y progresivamente acelerada adaptación a un contexto económico caracterizado por la globalidad y la competitividad, junto con su correlato de desregulación generalizada de los mercados, erige, cada vez con más
claridad, al factor humano y su gestión en las empresas como el elemento
determinante del diferencial de competitividad de las mismas”.
A diferencia de otros factores clave de todo proceso productivo, como la
tecnología y la organización de los procesos, no es directamente atribuible el
rendimiento del factor humano a un mayor o menor nivel de inversión en el
mismo, siendo necesaria una adecuada y compleja gestión de este recurso para
poder obtener el desarrollo diferencial [3, Maestre].
La atención que se está prestando a la gestión del conocimiento está creciendo a una velocidad impresionante. Revistas y diarios de economía y libros
publican innumerables teorías y casos sobre gestión del conocimiento y sus
tópicos; el número de conferencias organizadas por todo el mundo es muy
elevado y sigue aumentando.
¿Por qué se habla ahora tanto de gestión del conocimiento?
El comienzo del 2000 contempló la emergente y paulatina importancia de la
gestión del conocimiento, posiblemente porque después de las distintas teorías
de gestión como la calidad, que tuvo su trascendencia en los 80, la reingeniería
de procesos o el cambio estratégico, que tanto se han aplicado en los 90,
12
CAPÍTULO 1. INTRODUCCIÓN
surge la necesidad de un nuevo enfoque que integre modelos de gestión de
negocio anteriores y que se centre en las personas como instrumentos capaces
de apalancar los conocimientos y crear valores para la empresa.
Los gestores habituados a las reducciones de costes y al incremento continuo de la calidad, como instrumentos de gestión, vuelcan su atención al
crecimiento a través del conocimiento y la innovación.
Las encuestas indican que la mayoría de las empresas consideran la gestión
del conocimiento como un elemento decisivo de su estrategia. Pero el concepto
mismo de gestión del conocimiento es problemático. La abundancia de términos que lo rodean crea confusión, y ponerlo en práctica exige la existencia
previa de una sólida cultura del aprendizaje y puede ser caro.
La creciente aceptación de Internet permite a los trabajadores explorar
más y más oportunidades laborales. Los trabajadores son más demandantes y
tiene mayor movilidad que nunca. Las organizaciones reconocen que sus activos claves son los activos intelectuales y que sus prácticas de contratación y de
retención deben reflejar esta situación. Este reconocimiento está ocasionando
en las organizaciones alrededor de todo el mundo que desarrollen nuevos métodos de medida y gestión de estos activos. De hecho, el enfoque se desplaza de
una gestión de recursos humanos hacia la optimización de activos humanos.
(Oracle Corporation).
Parece muy claro que con independencia de su denominación (gestión del
capital intelectual, gestión del capital humano, gestión de recursos humanos,
gestión del factor humano, gestión del talento), la gestión del conocimiento ha
despertado un gran interés entre los distintos agentes del mundo empresarial
y económico.
El proceso del conocimiento se grafica en la figura 1.4 de la página 13.
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 identificado.
1.1. GESTIÓN DEL CONOCIMIENTO
13
Figura 1.4: El Proceso de Conocimiento.
• Determinar su importancia.
• Resumir y sintetizar la información disponible.
• Distribuir la información a distintos niveles.
• Actualizar, eliminar y modificar el conocimiento obsoleto.
• Guardar y organizar el conocimiento obsoleto, en su caso, para futuras
consultas.
¿Porqué gestionar el conocimiento?
La importancia del pensamiento sobre el conocimiento en términos de simplicidad es que se pueden: aplicar conceptos similares, recurriendo a situaciones que produzcan efectos predecibles:
• Aplicar conceptos a nuevas situaciones para producir innovaciones.
• Refinar directrices a través de aplicaciones repetidas y verificación.
La gestión del conocimiento es la mezcla de los siguientes componentes:
• Personas: Aquellas que producen y aquellas que utilizan conocimiento
que será la base para la acción.
14
CAPÍTULO 1. INTRODUCCIÓN
• Contenido: El flujo de datos, información y conocimiento importantes
en el éxito del negocio.
• Tecnología: La infraestructura técnica que facilita la captura, almacenamiento y entrega del contenido a aquellas personas que lo necesitan, en
el lugar oportuno y en el momento que lo necesitan.
La tecnología es un facilitador, pero no es la solución.
Se trata de comenzar la aplicación de conceptos básicos de GC para organizar personas, contenidos y tecnologías para una solución dirigida.
Conclusiones y Tendencias
Las Intranets/Extranets corporativas serán lugares clave para acceder a la
información de gestión y al conocimiento corporativo.
La interfaz de usuario será similar a los portales de Internet.
Los Portales Corporativos evolucionarán de ser lugares de inicio hasta convertirse en frontales de acceso personalizados de acuerdo con las necesidades
y preferencias de cada individuo.
Los paquetes de aplicaciones que proporcionan soluciones a la gestión del
conocimiento están todavía inmaduros. Su versatilidad depende de su capacidad de integración, al no ser soluciones totales (Soluciones completas/a
medida).
No parece probable la aparición de una solución integrada en un solo paquete de aplicaciones a corto plazo.
Investigación: La UPSAM (Universidad Pontificia de Salamanca) trabaja
en metodologías de valoración de GC y CI y su impacto en organizaciones
formales en entornos Cliente/Servidor Universales.
Herramientas capaces de transformar datos en conocimiento: Datawarehouse, Datamining, DSS, OLAP...etc.
Herramientas para la transferencia de conocimiento día a día: Servicios de
Colaboración, Groupware: Exchange, Lotus Notes 5, flujos de trabajo (workflow).
1.1. GESTIÓN DEL CONOCIMIENTO
15
Herramientas de Integración: ERP, EAI, Call-centers (Web/IP),...etc.
El futuro viene marcado por:
• Convergencia telefonía móvil/fija-Internet.
• Internet móvil.
• m-comercio / e-comercio.
• Tecnologías (WAP, GPRS, UMTS, Java, XML, CORBA, XHTML, IP,
...).
• El comercio electrónico competirá con el comercio tradicional en pocos
años y las formas más usuales serán:
— comercio-e (B2C).
— negocio-e (B2B).
— aprovisionamiento-e (e-procurement).
— negocio-e para empleados (B2E).
1.1.7
Portales del Conocimiento
La gestión del conocimiento es la nueva filosofía empresarial que pronto será
aceptada por universidades, organizaciones e instituciones de todo tipo, se ha
convertido en una necesidad más que en una moda. El nuevo activo de las empresas, el capital intelectual, está basado en el conocimiento y la experiencia
que toda organización tiene dentro de sí. Sin embargo, la estrategia de convertir datos en información, y esta a su vez en conocimiento para una correcta
toma de decisiones, requiere el uso de una interfaz con el usuario. Esta interfaz
se está configurando como un portal corporativo: el portal de conocimiento.
La planificación, diseño, construcción y mantenimiento de un portal de conocimiento requiere de tecnologías de la información y las comunicaciones que
se convierten en la espina dorsal de los programas de gestión de conocimiento.
El proceso clave en la gestión del conocimiento se puede observar en la
figura 1.5 de la página 16.
16
CAPÍTULO 1. INTRODUCCIÓN
Factor Humano
Tecnología
Conocimiento
Figura 1.5: Proceso Clave en la Gestión del Conocimiento.
1.1.8
Necesidad de la Gestión del Conocimiento
Ya durante la última década, hemos contemplado cómo la utilización del conocimiento y de otros activos intelectuales ha desplazado a otros factores como
fuente de ventaja competitiva. Otras circunstancias han contribuido, también,
al reconocimiento del conocimiento como un activo importante [3, Maestre].
En síntesis, se puede afirmar que los factores que han despertado al interés
por la gestión del conocimiento son:
• Las reestructuraciones y reajustes que han disuelto redes personales y
han ocasionado la pérdida de expertos que poseían los conocimientos y
experiencias para investigar, analizar problemas y encontrar soluciones.
• Las inversiones masivas en tecnologías de información y comunicaciones
que permiten un mejor acceso a la información interna y externa a las
corporaciones. Tecnologías que facilitan los medios para crear información y capturar el conocimiento.
• La necesidad de un contacto más estrecho con los clientes.
• La necesidad de difundir y compartir las experiencias con un mayor
número de empleados.
• Una mayor capacidad de los empleados para aportar soluciones.
• Un mayor interés por las técnicas para incorporar las mejores prácticas
existentes en otras corporaciones (benchmarking).
1.1. GESTIÓN DEL CONOCIMIENTO
17
• La necesidad de unificar y adaptar respuestas ante la globalización del
mercado.
• La demanda de los clientes de aprovecharse de las experiencias desarrolladas en cualquier punto de las corporaciones proveedoras.
• La necesidad de colaboración de los trabajadores del conocimiento.
• La necesidad de reducir los tiempos de respuesta en desarrollo de productos y atención a clientes.
El enfoque basado en los resultados, que empieza definiendo el móvil que
lleva a toda la corporación y situando la GC en ese contexto, fue el que utilizaron en una encuesta reciente sobre el conocimiento llevada a cabo por
la Cranfield School of Management en asociación con la revista Information
Strategy.
Entre otros temas, se pidió a las empresas europeas encuestadas que clasificaran por orden de importancia once posibles beneficios de los programas de
GC.
Sorprendentemente, la competitividad (ventaja competitiva) fue valorada
muy por encima de cualquier otro beneficio. El único elemento que recibió
una valoración equiparable fue la rentabilidad (aumento de beneficios), que
aparecía en segundo o tercer lugar en todos los países (excepto en Alemania,
donde ocupaba el octavo lugar).
El crecimiento de las ventas aparecía en casi todos los casos en último
lugar. En conjunto, esto indica que las empresas están buscando nichos de
altos márgenes. Y estos sólo pueden mantenerse si las empresas tienen algo
único que ofrecer, lo que a su vez, obliga a las organizaciones a aprovechar sus
conocimientos.
Las firmas consultoras, de las que la casi totalidad de ellas ha implantado
procesos internos de gestión del conocimiento, han visto un área clara de negocio en el ofrecimiento de servicios a sus clientes para ayudarles en su propia
gestión de conocimiento. Los objetivos que, según declaran, suelen perseguir
sus clientes por medio de la gestión del conocimiento son los siguientes:
• Incremento de la velocidad de entrega de productos y servicios.
• Mejora de los productos y servicios.
18
CAPÍTULO 1. INTRODUCCIÓN
• Aceleración de la capacidad de innovación.
• Mejora de la cuota de mercado.
• Incremento de la flexibilidad.
• Reducción de costes.
• Adquisición de nuevo conocimiento con mayor rapidez para anticiparse
a los cambios.
1.1.9
Situación Actual en la Gestión del Conocimiento
Muchas empresas han emprendido programas específicos de la gestión del conocimiento para que esa gestión contribuya a generar mayor valor para sus
clientes o destinatarios, sus empleados, y sus accionistas o propietarios. Los
pilares o elementos más comunes de esos programas son:
• Las personas que crean, guardan, comparten y usan los conocimientos.
Son el elemento básico, pero también el más complejo y su conocimiento
el más volátil.
• Los procesos que facilitan la identificación, selección, captura, elaboración, distribución y uso de los conocimientos.
• Los sistemas que almacenan, procesan, transmiten y apoyan la utilización de los conocimientos. No son el pilar central, pero permiten y
facilitan la gestión.
• La cultura de la organización. Contiene conocimientos profundos, estables y arraigados. Por esa razón la cultura puede constituir un poderoso
aliado o impulsor, o un enemigo encarnizado y una barrera para el proceso de utilización de los conocimientos.
No todos los programas de gestión del conocimiento conocidos tienen éxito,
pero los que se desarrollan exitosamente responden a varios criterios comunes:
• Relación con resultados, finales o intermedios, de la actividad, utilizando indicadores adecuados como: calidad del servicio, ingresos, gastos,
tiempos, ... Si el conocimiento es un activo, su gestión se orientará hacia
la eficacia y la rentabilidad.
1.1. GESTIÓN DEL CONOCIMIENTO
19
• Finalidad y objetivos claros, concretos y prácticos. Lenguaje comprensible y sin jerga técnica.
• Apoyo visible y sin reservas de la dirección. Encabezar las iniciativas vale
más que todos los discursos. Además, la dirección ha de proporcionar
los medios necesarios y clarificar los tipos de conocimientos clave para
la organización.
• Comienzo con una actitud flexible. Anticipar y adaptarse sin sorpresas
a los rápidos cambios que, con toda seguridad, aparecerán.
• Obtención inicial de algunos resultados rápidos que resuelvan situaciones o problemas comúnmente compartidos, buscando oportunidades y
poniendo en evidencia la utilidad del programa.
• Infraestructura técnica, organizativa y humana adecuadas. El énfasis está en las personas, no en las máquinas, pero estas sirven como soportes
y facilitadoras del proceso. Por ejemplo, conviene utilizar tecnologías
accesibles, fáciles, estándar, y orientadas al conocimiento como infraestructura básica (Internet, extranet, etc.).
• Estructura del conocimiento flexible y estándar. El conocimiento está
unido a las personas que lo crean, mantienen, y utilizan y puede ser más
o menos explícito. Sus categorías y significados cambian con frecuencia.
Las reglas para su actualización y uso deben ser simples, conocidas y
asumidas por los utilizadores.
• Canales múltiples para transferir los conocimientos, reforzándose mutuamente.
• Cultura abierta al conocimiento. La forma de trabajar creando, compartiendo, y utilizando los conocimientos, suele demandar un cambio
en los patrones actuales. La comunicación y la formación constituyen
herramientas de refuerzo para los nuevos modelos.
• Reconocimiento, valoración y recompensa de las conductas favorables
a la creación, transmisión y utilización de los conocimientos. Quizás
el factor de éxito más clave sea la motivación. Por tanto las actuaciones motivadoras para reforzar las conductas positivas están enfocadas
al medio y largo plazo, y se enlazan con los sistemas de evaluación de
resultados y desempeño, así como con la estructura retributiva.
Las corporaciones deberían realizar los siguientes acciones:
20
CAPÍTULO 1. INTRODUCCIÓN
• Evaluar el impacto de la gestión del conocimiento en la corporación o
analizar la magnitud y los componentes del capital intelectual en el valor
del mercado.
• Determinar si el capital intelectual debe ser reinvertido para alinearlo
con los objetivos corporativos.
1.1.10
Objetivos de la Gestión del Conocimiento
De la gestión del conocimiento se ocupan varias disciplinas y subsiguientes
teorías, tales como las ciencias sobre gestión o sobre educación, y sobre los
sistemas de información o sobre comunicación. A pesar de las diferencias que
pueden encontrarse según la óptica de estas disciplinas, podemos observar
cuatro objetivos comunes a la hora de aplicar la gestión del conocimiento.
Estos son:
• Explotar el conocimiento existente del mejor modo posible. El conocimiento que se encuentra disperso entre los empleados que trabajan en
localidades diferentes; el conocimiento que se haya almacenado en distintos medios tales como papel, audio, videos, bases de datos, etc. ¿Cómo
puede una organización crear sinergia entre todas estas fuentes y mejorar
su rendimiento permanentemente?
Esencialmente, el objetivo que se persigue es hacer que el conocimiento
existente sea más productivo.
• Renovar el conocimiento de las personas y de la organización por medio
de procesos de aprendizaje. Hay que aprender más rápidamente que los
competidores y aplicar el nuevo conocimiento con la mayor eficiencia
posible.
Este objetivo se encuentra muy próximo al concepto de organización que
aprende e innova.
• Transformar el conocimiento de las personas en capital estructural de la
organización. Los empleados constituyen el principal activo de la organización, pero estos pueden abandonarla en cualquier momento. Para
que las organizaciones puedan servir a sus clientes sin altibajos, es necesario que el conocimiento individual pase a ser colectivo. Ello elimina
los riesgos de pérdida de conocimiento y aumenta la velocidad a la que
el conocimiento sea productivo.
1.1. GESTIÓN DEL CONOCIMIENTO
21
• Alinear la estrategia corporativa con las capacidades y competencias. Ya
sea con las existentes así como con las nuevas que surgen para mejorar
la ventaja competitiva. Para aprovecharse de las nuevas oportunidades,
las organizaciones deben conocer sus competencias actuales.
Para lograr estos objetivos las organizaciones deberán poner en práctica
varias acciones que dependerán de los siguientes factores:
— Estilo directivo y liderazgo.
— Estructura organizativa y funcional.
— Cultura.
— Tecnología (facilitador).
Las organizaciones quieren modos sistemáticos para la identificación y conversión de las habilidades, conocimientos y experiencias individuales en conocimiento de la organización. La capacidad de la organización para que el
conocimiento se utilice depende sobretodo del grado de entusiasmo de las personas en compartirlo. Esto está muy ligado a la cultura, entendiendo por tal
como el ambiente que influye en el comportamiento..
Si el conocimiento es cuidadosamente identificado, desarrollado y aplicado
representa una fuente de ventaja competitiva ya que es potencialmente valioso,
escaso, difícil de imitar y complicado de sustituir.
Las áreas de aplicación, que son los objetivos primeros para la GC, pueden
ser clasificadas en dos grupos:
• Mejora de actividades.
• Comprensión de lo que existe.
La aplicación del conocimiento para que las personas realicen las tareas
mejor es un área de beneficios claro. Las personas pueden mejorar el diseño
de los productos, de los procesos o de los servicios así como las operaciones,
ventas y análisis de inversión.
Siendo las consecuencias de estas mejoras casi evidentes, los beneficios
deben ser medidos y analizados en términos de mejora de resultados corporativos. La GC es un medio para la mejora corporativa y no en fin en sí misma.
22
CAPÍTULO 1. INTRODUCCIÓN
Es esencial una colaboración estrecha con los usuarios del conocimiento para
determinar donde se encuentran las áreas de mayor potencial de mejora y si
ello sería visto como una contribución positiva.
El segundo grupo lo constituyen las acciones para entender mejor lo que
existe, lo que ocurre y como utilizarlo eficientemente. Un subgrupo de esta
área de aplicación consiste en utilizar mejor y proteger el capital intelectual
existente. Otro subgrupo lo constituye el uso de la GC para conocer tendencias
tecnológicas, nuevas previsiones económicas o nuevas demandas del mercado.
Aún cuando se capturen y se pongan a disposición los mejores conocimientos, si no se reutilizan no se obtendrán beneficios. Hay que motivar a los
usuarios a la reutilización.
Para ello los conocimientos deben cumplir las siguientes cualidades:
• Relevancia.
• Accesibilidad.
• Fiabilidad.
• Actualidad.
1.1.11
Globalización de la Economía y el Conocimiento
El proceso de creación de la cibersociedad entraña la extensión de la globalidad
a todos los aspectos de la vida. De todos estos aspectos, hoy día la economía
es el factor más influyente, y por consiguiente la formación de una economía
global es uno de los objetivos clave de la sociedad actual. Las tecnologías de
la información están contribuyendo a la globalización.
La globalización derrumba comodidades, rompe esquemas y rutinas, elimina privilegios y aumenta riesgos a comunidades políticas, empresas e instituciones, sin olvidar a los ciudadanos.
La información enriquece a los pueblos que, tradicionalmente aislados por
razones geográficas o políticas, acceden a las Tecnologías de la Información.
La revolución de la información ha modificado radicalmente la organización de
las grandes empresas, que se diseñaron con ideas y organización centralizadora
y que ahora han pasado a descentralizarse casi en su totalidad y con grandes
1.1. GESTIÓN DEL CONOCIMIENTO
23
beneficios para estructuras aisladas eficientes, y han abierto la posibilidad del
trabajo a domicilio.
Varias décadas atrás, respetables profetas del cambio social, tales como
Alvin Toffler y Peter Drucker, predijeron la emergencia de una nueva economía
en la que el poder del cerebro, en lugar del poder de las máquinas, se convertiría
en el centro de la economía y en el activo más crítico de las organizaciones.
Hoy en día estas predicciones son ya una realidad: hemos entrado en la
era del conocimiento en la que la mayoría de los trabajadores son considerados “trabajadores del conocimiento” y en la que el flujo de la información
y del conocimiento tienen más impacto en los resultados que el movimiento
de mercancías. Sin duda este desplazamiento de la economía es el resultado
del crecimiento y dominio de la industria de los servicios que constituye en
los países desarrollados el sector de mayor empleo y de mayor crecimiento (en
Europa aproximadamente un 65% de la población activa) [3, Maestre].
Durante la ultima década, hemos contemplado cómo la utilización del conocimiento y de otros activos intelectuales ha desplazado a otros factores como
fuente de ventaja competitiva, tanto para la reducción de costes como para
la pronta satisfacción de la demanda de clientes. Además, el porcentaje de
contenido inmaterial en un producto es cada vez más valorado por el mercado
en su conjunto.
El conocimiento en sus distintos ámbitos -acerca de nuestros clientes, nuestros competidores, nuestras personas, tecnologías, productos o servicios, procesos y sistemas- constituye una poderosa fuente de ventaja competitiva, probablemente la principal y, cuando el conocimiento es profundo, la más difícilmente adquirible externamente o desarrollable internamente y, por tanto, la
más valiosa. El conocimiento puede influir radicalmente en la forma de desarrollar la actividad de las organizaciones y puede incluso transformar la forma
de hacer negocio.
A medida que el comercio ha seguido desarrollándose, la contribución relativa de la información y el conocimiento al valor de las organizaciones continua
creciendo. Esto se traduce en la valoración bursátil de las empresas. Como es
notorio la valoración de las empresas en las que las expectativas de crecimiento o el conocimiento de marca son los puntos fuertes supera notablemente la
relación valor bursátil/facturación de otras empresas consolidadas correspondientes a sectores productivos tradicionales.
Los activos intangibles representan una proporción mayor del valor de mer-
24
CAPÍTULO 1. INTRODUCCIÓN
cado comparado a los activos tangibles de capital, terrenos, edificios y bienes
de equipo.
1.1.12
La Estrategia de Convertir los Datos en Conocimiento
para la Empresa
Las empresas están cambiando el modo de capturar, valorar y utilizar el conocimiento. El conocimiento corporativo se define como el quehacer diario y los
procesos que definen el modo en que una organización lleva a cabo los negocios. Es preciso convertir el conocimiento en negocio mediante una adecuada
gestión que mida y valore el conocimiento en los niveles clave: estratégico, del
negocio y operativo.
Las herramientas tecnológicas que requiere la empresa para una correcta
gestión del conocimiento son:
• Navegadores, como portales de acceso a la información, tanto a Internet,
a través de la red Intranet de la empresa, como a las redes Extranet de
socios y proveedores. Los navegadores deben incluir buscadores inteligentes.
• Almacenamiento de datos (datawarehousing) con buenos almacenes de
datos (datawarehouse).
• Minería de datos (datamining) para facilitar el acceso de información y
canales de distribución.
• Asistentes digitales personales (PDA).
• Tablones de anuncios electrónicos.
• Sistemas de audio.
• Groupware (trabajo en grupo). Incluyen tecnologías como correo-e, gestión documental, grupos de discusión, sistemas de apoyo a la decisión,
tales como Lotus Notes, Exchange, etc.
• Videoconferencias.
• ......
1.2. GOBIERNO ELECTRÓNICO
1.1.13
25
Nuevo Futuro del Conocimiento
La dimensión globalizadora se extenderá prácticamente a todas las actividades
de la sociedad. A medida que se globalice el mundo de los negocios e Internet
crezca, se producirá un lugar de trabajo sin fisuras.
La globalización facilita que disciplinas y proyectos que antes estaban divididos están ahora colaborando y no compiten entre sí. Está emergiendo un
lenguaje común que antes no existía y que permite a la gente entenderse sin
importar las fronteras. La misma puede observarse en la figura ?? de la página
??.
Internet va a crear una sociedad global que estará más conectada gracias
al correo electrónico y en breve por la videoconferencia y a las aplicaciones
Web (www) [4, Joyanes].
1.2
1.2.1
Gobierno Electrónico
Introducción
Las administraciones públicas del siglo XXI se enfrentan a un cambio en el
tipo de relación con los ciudadanos. Se está evolucionando de un esquema
administración - administrado hacia un modelo de oferente - demandante de
26
CAPÍTULO 1. INTRODUCCIÓN
servicios.
El e-Government es uno de los elementos clave de este nuevo escenario,
cuyas principales señas de identidad son la irrupción e incorporación masiva de
nuevas tecnologías, el incremento en la exigencia de calidad y la estructuración
de nuevos servicios públicos.
Al igual que ha venido ocurriendo con el sector privado, el sector público ha
visto cómo las tecnologías de la información y la comunicación han comenzado
a irrumpir en los procedimientos y en el funcionamiento de la administración
pública, proclamando mayores dosis de eficiencia, más transparencia y mayor
agilidad en la prestación de servicios a los ciudadanos [10].
La mayor parte de estas tecnologías han mostrado su valor añadido en el
mundo de la empresa y, con ligeras modificaciones, comienzan a ser abrazadas
por el sector público, en algunos casos en busca de eficiencias que impacten
positivamente las maltrechas finanzas públicas y, en otros, como respuesta
a una ciudadanía que demanda más información, más transparencia y más
eficiencia en la administración pública.
La adopción de las TIC se ha convertido para los gobiernos de todo el
mundo no sólo en un catalizador de una renovación desesperadamente necesitada, sino también en elemento central de desarrollo en la medida en que
empuja a ciudadanos y empresarios a participar de las posibilidades de la
nueva economía.
Sin entrar a valorar si la incorporación de la e en la administración pública
para convertirla en gobierno electrónico es buena o mala, resulta un hecho que
se trata de un fenómeno imparable y que la cuestión fundamental para los
gobiernos no es si deben o no embarcarse en un Plan de Gobierno Electrónico
sino cuándo y cómo deben hacerlo.
El gobierno es la industria más grande del mundo. Según la OCDE , las
compras gubernamentales suponen en promedio el 17% del PIB de cualquier
país, por tanto, el nivel de eficiencia en el funcionamiento de la administración
pública afecta de forma significativa a la competitividad del país en general.
Las empresas relacionadas con las TIC han llevado a cabo enormes esfuerzos de inversión que han permitido no sólo que la famosa Ley de Moore de que
la capacidad de procesamiento de un chip se duplica cada 18 meses se cumpla
con creces sino que, en general, la tecnología se haya hecho omnipresente en
nuestra vida cotidiana para facilitar la atención de forma más sencilla y más
1.2. GOBIERNO ELECTRÓNICO
27
rápida de necesidades como la compra de un billete de avión, la solicitud de
una línea telefónica o el envío de dinero a un hijo que está estudiando lejos
del hogar.
Por supuesto, los gobiernos de todo el mundo han seguido la estela del
sector privado y han incorporado tecnologías avanzadas tanto en el manejo
interno de sus operaciones como en la gestión de sus relaciones con la ciudadanía.
Los herramientas ERP (Enterprise Resource Planning) o CRM (Customer Relationship Management), inicialmente diseñadas para el mundo de la
empresa, han experimentado una importante nivel de adopción por parte del
sector público.
Si bien hay que reconocer la contribución de la tecnología a este proceso
modernizador, la experiencia aconseja que los responsables de los proyectos
de transformación de la administración pública no sitúen la tecnología en el
centro del proyecto sino como herramienta de apoyo fundamental.
En el diseño de estos proyectos resulta crítico evitar ciertos errores que se
han dado con relativa frecuencia:
• automatizar la ineficiencia.
• informatizar la corrupción.
• rediseñar la administración pública para que funcione de acuerdo con un
programa de software.
La tecnología debe situarse al servicio de la modernización de la administración, en lugar de diseñar la modernización en función de la tecnología.
Las posibilidades de transformación de la administración pública utilizando
las nuevas tecnologías son espectaculares y los gobiernos pioneros del gobierno electrónico como los de Australia o Canadá, no sólo muestran con orgullo
sus logros y los comparten con la comunidad internacional sino que refuerzan
constantemente sus ya de por sí ambiciosos planes de gobierno electrónico.
Conviene en cualquier caso, introducir cierta dosis de realismo en la magia del gobierno electrónico. Los ahorros tardan en llegar por dos razones
fundamentales.
En primer lugar, se requieren elevadas tasas de uso de la solución que lleva
un tiempo alcanzar.
28
CAPÍTULO 1. INTRODUCCIÓN
En segundo, el gobierno electrónico aún no sustituye la forma tradicional
de prestar servicios y el gobierno debe mantener ambas por un tiempo, lo cual,
inicialmente incrementa los costos en lugar de disminuirlos.
En realidad parece que el límite en las posibilidades de uso de las nuevas
tecnologías está en la mente de los seres humanos.
Suena a historia de ciencia ficción pensar que los cirujanos desde los Estados Unidos puedan realizar intervenciones quirúrgicas en pacientes que se
encuentran en Europa o Africa. Pues es ya una realidad, y un hospital estadounidense ha realizado ya 5 operaciones de este tipo. El cirujano en Estados
Unidos dirige el bisturí a través de un mando conectado vía internet con el
hospital en el que se encuentra el paciente mientras va siguiendo el proceso a
través de una pantalla de televisión.
Las posibilidades en el ámbito de la educación se presentan igualmente
motivadoras y el Instituto Tecnológico de Monterrey es un excelente ejemplo.
Según Douglas Holmes en su libro eGov: eBusiness Strategies for Government, el Tec de Monterrey es el sistema educativo geográficamente más
disperso en el mundo proporcionando cursos online a 43.000 (datos del año
2000) estudiantes de México y el resto de América Latina.
Volviendo al gobierno electrónico, algunas experiencias han estado operativas durante un período de tiempo suficientemente largo como para afirmar
que efectivamente su impacto es ampliamente positivo y justifica con creces la
inversión.
Todas estas experiencias muestran que la transformación de la administración pública es un proceso complejo, que debe estar bien planificado, que
requiere una aproximación gradual y, sobre todo, que debe ser participativo
y contar con las aportaciones de todos aquellos que se verán afectados por el
cambio: funcionarios del gobierno, empresarios, ciudadanos, sociedad civil y
la colectividad académica.
1.2. GOBIERNO ELECTRÓNICO
1.2.2
29
Definición
Se entiende por e-Government el conjunto de procesos y sistemas soporte
de los mismos, que permiten el acceso telemático interno (gestores) y externo (usuarios) a los servicios ofrecidos por una administración, tanto para la
consulta de información como para la teletramitación.
El e-Government, como elemento integrante del nuevo esquema de relación
entre la administración y los ciudadanos, exige una adaptación y evolución de
los sistemas de información públicos actuales.
En el sistema resultante, que tecnológicamente ha de sustentarse en un
modelo único e integrado, aparecen cuatro conceptos clave, sobre los que debe
pivotar su definición y alcance:
1. Accesibilidad.
Profundizando en una administración transparente y abierta al ciudadano, aumentando el número de servicios ofrecidos, mejorando la calidad de
los mismos, reforzando el papel de terceros colaboradores en los procesos
de gestión y avanzando hacia el modelo de ventanilla única.
Desde el punto de vista de los sistemas de información, la accesibilidad
hace referencia al acceso interno a aplicaciones y datos, así como, fundamentalmente, al acceso externo, en su doble vertiente de consulta y
teletramitación; ambos, bajo la cobertura de los aspectos relativos a la
seguridad, tanto desde un punto de vista técnico como normativo.
30
CAPÍTULO 1. INTRODUCCIÓN
2. Conocimiento.
Estructurando, consolidando e interrelacionando los datos de los sistemas de información para que, a partir de los mismos, sea posible generar
información y conocimiento de la realidad que nos rodea en todos sus
niveles de agregación: país / comunidad / provincia / municipio / ciudadano.
Tecnológicamente, esto implica diseñar y alimentar un repositorio de información corporativo, dotándolo de herramientas (Business Intelligence
y Data Warehouse) para explotar los datos en dos vertientes básicas:
información a terceros e información a los gestores públicos.
3. Eficacia.
Logrando optimizar la actividad operativa de las administraciones, facilitando la agilidad y flexibilidad de la gestión y la racionalización de
esfuerzos y recursos. Para ello, el sistema debe abarcar el conjunto de
procesos, actividades, tareas y flujos de información de la administración
de forma normalizada (procedimientos, documentos, formularios, etc.) e
integrada (dato único, imágenes).
En otras palabras, el sistema ha de comunicarse con los cuatro grandes grupos de procesos que operan en los sistemas de la administración
pública: la gestión económicofinanciera, la gestión de recursos humanos,
los procesos departamentales y la gestión de expedientes, que engloba,
estructura y da coherencia a todos ellos.
4. Solidez y evolución.
Desarrollando los componentes del sistema sobre una arquitectura de
sistemas de información basada en el modelo de proceso definido e implementando una plataforma tecnológica avanzada, robusta y con capacidad de evolución, que facilite la incorporación de nuevas herramientas
de gestión y permita la reutilización de componentes.
Una tentadora aproximación al e-Government desde una perspectiva únicamente de accesibilidad proporciona a corto plazo éxitos aparentes, pero choca inmediatamente con las necesidades derivadas de disponibilidad de información veraz y actualizada y con los requerimientos de la teletramitación, en
cuanto a la integración de sus resultados con la tramitación tradicional.
Frente a dicha tentación, que tantas experiencias frustradas ha generado,
el planteamiento de Ibermática se basa en diseñar un escenario completo e
1.2. GOBIERNO ELECTRÓNICO
31
integrado con los elementos definidos previamente.
A partir de dicho objetivo final, cada organización, en función de su situación actual, necesidades, prioridades y recursos, podrá abordarlo en diferentes
etapas, secuenciando sus diferentes componentes. Pero no debería perderse la
visión global del proceso, si se quiere que la implantación del proyecto sea, en
el corto, medio y largo plazo, un éxito.
1.2.3
Modalidades del Gobierno Electrónico
Existen 4 ámbitos de operación en la administración pública y el nombre de
cada uno define claramente el concepto al que alude [11] [10]:
1. Gobierno-Ciudadanos (G2C)
En este ámbito el gobierno debe centrarse en construir puntos únicos
de entrada que permitan un acceso fácil y eficiente a cualquier servicio
de la administración pública. Estos servicios pueden ser renovaciones de
licencia, certificados de nacimiento / muerte, certificados de matrimonio,
así como la asistencia a los ciudadanos en los servicios básicos tales como
la educación, la atención de la salud, bibliotecas, etc.
2. Gobierno-Empresarios (G2B)
En esta área el gobierno debe también construir puntos únicos de entrada, reducir procesos redundantes y facilitar la presentación de información, documentos legales, formularios de impuestos o cualquier otro documento de obligada presentación ante la administración pública. Entre
los servicios prestados a las empresas se incluyen la obtención de información empresarial actual, descarga de formularios de solicitud, renovación
de licencias, registro de las empresas, obtención de permisos, y el pago de impuestos. Los servicios ofrecidos a través de transacciones G2B
también pueden ayudar al desarrollo de las empresas, específicamente el
desarrollo de las pequeñas y medianas empresas.
3. Gobierno-Otros Gobiernos (G2G)
En este aspecto, el gobierno debe buscar mecanismos que faciliten el uso
compartido de información, eviten la duplicación de procedimientos y
faciliten la gestión de trámites y documentos entre los diferentes niveles
32
CAPÍTULO 1. INTRODUCCIÓN
de gobierno. Hay 2 (dos) niveles,: a nivel local o nacional y a nivel internacional. Los servicios G2G pueden ser utilizados como un instrumento
de las relaciones internacionales.
4. Intragobierno (IG)
En este ámbito el gobierno debe perseguir la eliminación de la corrupción, la reducción de costos, la mejora de los procedimientos internos de
operación y la prestación de un óptimo servicio a los ciudadanos.
1.2.4
Las estrategias de Gobierno Electrónico
A pesar de la relativa juventud del término gobierno electrónico o e-gobierno,
en los últimos tres años han proliferado los documentos denominados estrategias de gobierno electrónico o planes de gobierno electrónico que, a la par
que ordenan las acciones de los gobiernos que los diseñan, contribuyen a la
consolidación del concepto e-gobierno.
Si bien la aplicación de las tecnologías de la información al funcionamiento
de la administración pública es casi tan vieja como la historia de la computadora, la combinación de estas tecnologías con la tecnologías relacionadas
de telecomunicación con una visión renovadora del gobierno y su forma de
relacionarse con los ciudadanos, es mucho más reciente.
La generalización del término gobierno electrónico para referirse a lo descrito en la frase anterior, el establecimiento de departamentos de e-gobierno
en las empresas de consultoría y de tecnología, así como la intensificación de la
realización de estudios, rankings y ensayos sobre el e-gobierno es un fenómeno
de los últimos cinco años.
En cualquier caso, desde que en la primera mitad de los 90 internet cobra
vida de forma parecida a como lo conocemos hoy, no en sus orígenes como ARPANET hace más de treinta años cuando Larry Roberts y su equipo buscaban
un mecanismo seguro de comunicación ante un ataque a los mecanismos de
comunicación tradicionales, los esfuerzos aislados por utilizarlo en la administración pública se han sucedido y algunos han quedado para la historia como
pioneros del e-gobierno.
Como ya se ha mencionado, es justo reconocer en este punto, la valiosa
contribución en este aspecto de David Osborne y Ted Gaebler con su libro
Reinventing Government, el cual se convirtió en fuente de inspiración para
1.2. GOBIERNO ELECTRÓNICO
33
funcionarios públicos de todo el mundo durante la década de los 90, aluden
a las tecnologías de la información y la comunicación (TICs) como la excusa
que los gobiernos necesitaban para cambiar y que los medios de comunicación
precisaban para sentir cierta atracción por esta transformación.
Inspirados por este libro y otros documentos acerca de las posibilidades
de las TIC como herramienta de transformación de la administración pública,
algunos gobiernos, para ser precisos, algunas agencias o departamentos dentro
de los gobiernos, se lanzan a experimentar con la posibilidad de empezar a
manejar sus relaciones con los ciudadanos a través de internet.
En general, se trataba de esfuerzos aislados, dentro de agencias que tenían
la fortuna de contar con algún recurso financiero extra para experimentar con
las posibilidades del e-gobierno y, sobre todo, que contaban que con un líder
dispuesto a asumir ciertos riesgos y manejar todas las dificultades de este tipo
de procesos.
Estas actuaciones individuales, pronto se empiezan a extender y, a la vez
que permiten comenzar a mostrar resultados a los escépticos acerca de las
posibilidades del gobierno electrónico, generan inquietud acerca de como poner
orden en cada gobierno, acerca de este nuevo virus que se extiende de forma
imparable ya no sólo por la espíritu renovador de ciertos funcionarios públicos,
sino por demanda popular.
La población quiere que su gobierno sea eficiente, transparente y fácilmente
accesible, y descubre que internet puede aportar mucho en esa línea, así es
que comienza a demandar servicios públicos en línea, que además de ahorrar
tiempo y dinero de desplazamientos, están operativos las veinticuatro horas
del día, los siete días de la semana, durante todos los días del año.
La proliferación de estas iniciativas aisladas, comienza a generar la preocupación en los gobiernos acerca de cómo establecer mecanismos de coordinación
que garanticen tanto un óptimo aprovechamiento de los recursos públicos como la posibilidad de integración de las diferentes soluciones a medida que el
gobierno avanza en la senda del gobierno electrónico.
Es justo esta inquietud la que empuja a los gobiernos a establecer planes
o estrategias de gobierno electrónico y sentar las bases institucionales para
llevar a cabo las iniciativas de gobierno electrónico con el necesario orden y la
requerida eficiencia.
34
CAPÍTULO 1. INTRODUCCIÓN
Funciones de una Estrategia de Gobierno Electrónico
Un plan de gobierno electrónico cumple un rol que va más allá del aspecto
coordinador y racionalizador del gasto público.
Las principales contribuciones de un plan de gobierno electrónico podrían
resumirse en los siguientes puntos:
• Mapa-guía para el avance del e-gobierno, que orienta las actuaciones de
todos los implicados.
• Mecanismo de control, que permite asignar responsabilidades y monitorear el cumplimiento de las mismas.
• Elemento de referencia para la resolución de dudas operativas relacionadas con la implementación del e-gobierno.
• Instrumento de organización y manejo del cambio cultural necesario.
• Herramienta de marketing para la venta política del concepto que, bien
utilizado, permite conseguir el indispensable apoyo político.
• Mecanismo de captación de recursos financieros que puede servir de referente para el establecimiento de alianzas con el sector privado, para la
incorporación de inversores privados a proyectos de gobierno electrónico
y para la asignación de los recursos públicos a aquellos proyectos que
aporten mayor valor añadido al país.
Elementos Para la Creación de una Estrategia de Gobierno Electrónico
Uno de los pilares de las estrategias de gobierno electrónico de Estados Unidos, Reino Unido y Australia, entre otros países que han logrado avances
importantes en gobierno electrónico, es la definición de una serie de estándares tecnológicos que deben respetar todos los proyectos de gobierno electrónico
que se desarrollen en la órbita del respectivo gobierno mencionado.
La mayor parte de estas estrategias de gobierno electrónico no son documentos interminables e ininteligibles, por el contrario, tienen entre treinta y
cincuenta páginas y suelen estar bastante enfocados, incluyendo la siguiente
información:
1.2. GOBIERNO ELECTRÓNICO
35
• Análisis de la situación actual que permite identificar los problemas fundamentales.
• Visión estratégica del tipo de gobierno que se quiere construir.
• Objetivos a alcanzar para materializar esa visión.
• Areas de acción con su respectivo nivel de prioridad.
• Actividades a realizar en cada área, responsables e hitos.
• Aspectos institucionales para el desarrollo del plan de e-gobierno electrónico.
• Aspectos organizativos. Gestión del cambio institucional y manejo de
los recursos humanos.
• Aspectos legales.
• Estrategia de marketing interno y externo.
• Riesgos, dificultades y mecanismos para combatirlos.
• Calendario.
• Recursos.
Capítulo 2
JAVA
37
38
CAPÍTULO 2. JAVA
2.1
Introducción al Lenguaje
Java es un lenguaje orientado a objetos. Esto significa que posee ciertas
características que hoy día se consideran estándares en los lenguajes OO:
• Objetos.
• Clases.
• Métodos.
• Subclases.
• Herencia simple.
• Enlace dinámico.
• Encapsulamiento.
Para programar 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
[5, Castillo-Cobo-Solares].
Por qué entonces la ventaja de programar en un lenguaje OO, si se requiere
una experiencia que probablemente una persona nunca tendrá el tiempo de
práctica para llegar a obtenerla. La respuesta a este interrogante es que Java es
un lenguaje multiparadigma (como muchos otros lenguajes de programación).
No se necesita hacer un diseño de clases para programar una aplicación de mil
líneas.
Entonces otro interrogante podrá ser porque no programar con otro lenguaje más simples, como puede ser Visual Basic, si no se necesita que sea
OO. La respuesta a ésto es la gran ventaja de un lenguaje OO, que son las
bibliotecas de clases que se pueden construir para la aplicación [12, Joyanes
Aguilar-Zahonero Martínez]. Una biblioteca de clases cumple el mismo objetivo de una biblioteca de procedimientos en una lenguaje como C. Sin embargo:
2.1. INTRODUCCIÓN AL LENGUAJE
39
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.
Se puede distinguir entre varios tipos de programadores en Java:
— El diseñador de clases: es el encargado de definir qué clases ofrece
una biblioteca y cuál es la funcionalidad que se espera de estas clases. Esta persona tiene que ser muy hábil y de mucha experiencia.
Un diseño equivocado puede conducir a clases que son incomprensibles para los clientes de la biblioteca.
— El programador de clases de biblioteca: sólo programa la clases
especificadas por el diseñador de clases. Esta persona debe entender
orientación a objetos, pero no requiere mayor experiencia en diseño
de clases.
— El cliente de bibliotecas: es el programador de aplicaciones. Él sólo
usa las clases que otros han diseñado y programado. Como en el
caso anterior necesita entender orientación a objetos y conocer la
biblioteca que va usar, pero no necesita mayor experiencia.
Tanto programadores de clases como clientes de bibliotecas pueden llegar
a convertirse en buenos diseñadores de clases en la medida que adquieran
experiencia, comparando los diseños de las bibliotecas que utilicen.
Por lo tanto es importante destacar que no se necesita gran experiencia en
diseño orientado a objetos para poder aprovechar las ventajas de la orientación
a objetos [13, Joyanes Aguilar].
2.1.1
Bibliotecas de Clases Estándares de Java
Toda implementación de Java debe tener las siguientes bibliotecas de clases:
• Manejo de archivos.
• Comunicación de datos.
• Acceso a la red Internet..
• Acceso a bases de datos.
40
CAPÍTULO 2. JAVA
• Interfaces gráficas.
La interfaz de programación de estas clases es estándar, es decir en todas
ellas las operaciones se invocan con el mismo nombre y los mismos argumentos.
2.1.2
Java es Multiplataforma
Los programas en Java pueden ejecutarse en cualquiera de las siguientes plataformas, sin necesidad de hacer cambios:
Windows.
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.
2.1.3
Características del Lenguaje Java
• Robustez
En Java no se pueden cometer los cuatro errores que se mencionarán a
continuación:
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.
2.1. INTRODUCCIÓN AL LENGUAJE
41
Además, Java realiza chequeo de tipos durante la ejecución (cosa que C y
C++ no 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 levanta una excepción que informa al programador
la línea exacta en donde está la fuente del error.
Java posee un recolector de basuras que administra automáticamente la
memoria. Es el recolector el que determina cuando se puede liberar el espacio
ocupado por un objeto. El programador no puede liberar explícitamente el
espacio ocupado por un objeto.
Java no posee aritmética de punteros, porque es una propiedad que no se
necesita para programar aplicaciones. En C sólo se necesita la aritmética de
punteros para programa malloc/free o para programar el núcleo del sistema
operativo.
Por lo tanto Java no es un lenguaje para hacer sistemas operativos o
administradores de memoria, pero sí es un excelente lenguaje para programar
aplicaciones.
• 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, en cuyo caso se chequea en
tiempo de ejecución de que el objeto sea de un tipo compatible.
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. Por lo tanto Java
combina la robustez de Pascal con la flexibilidad de Lisp, sin que lo programas
pierdan legibilidad en ningún caso.
• 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 recolector de basuras el que
determina cuando se puede liberar la memoria ocupada por un objeto.
42
CAPÍTULO 2. JAVA
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.
Para entender mejor esta afirmación, se podría suponer que se realizó un
programa de 1000 líneas hace un par de meses y ahora se necesita hacer algunas
modificaciones. Ahora, para esta altura ya se habrán olvidado gran parte de
los detalles de la lógica de ese programa y no será sencillo determinar si un
puntero referencia un objeto que todavía existe, o si ya fue liberado. Peor aún,
supóngase que el programa fue hecho por otra persona y evalúe cuán probable
es cometer errores de memoria al tratar de modificar ese programa.
Volviendo al caso de un programa de 100000 líneas. Este tipo de programas los desarrolla un grupo de programadores que pueden tomar años en
terminarlo. Cada programador desarrolla un módulo que eventualmente utiliza objetos de otros módulos desarrollados por otros programadores. Entonces,
quién libera la memoria de estos objetos, cómo se ponen de acuerdo los programadores sobre cuándo y quién libera un objeto compartido, o cómo probar el
programa completo ante las infinitas condiciones de borde que pueden existir
en un programa de 100000 líneas.
Es inevitable que la fase de prueba dejará pasar errores en el manejo de memoria que sólo serán detectados más tarde por el usuario final. Probablemente
se incorporan otros errores en la fase de mantención.
Resumiendo, se puede concluir que: todo programa de 100000 líneas que
libera explícitamente la memoria tiene errores latentes, sin un recolector de
basuras no hay verdadera modularidad y un recolector de basuras resuelve
todos los problemas de manejo de memoria en forma trivial.
El interrogante sería cuál es el impacto de un recolector de basura en el
desempeño de un programa. El sobrecosto de la recolección de basuras no es
superior al 100%. Es decir si se tiene un programa que libera explícitamente la
memoria y que toma tiempo X, el mismo programa modificado de modo que
utilice un recolector de basuras para liberar la memoria tomará un tiempo no
2.2. ESTRUCTURA GENERAL DE UN PROGRAMA JAVA
43
superior a 2X. Este sobrecosto no es importante si se considera el periódico
incremento en la velocidad de los procesadores.
El impacto que un recolector de basura en el tiempo de desarrollo y en la
confiabilidad del software resultante es muchos más importante que la pérdida
en eficiencia.
2.2
Estructura General de un Programa Java
En el siguiente ejemplo se presenta la estructura habitual de un programa
realizado en cualquier lenguaje orientado a objetos u OOP (Object Oriented
Programming), y en particular en el lenguaje Java:
import java.awt.*;
import java.lang.String;
import java.lang.Integer;
import java.awt.event.WindowEvent;
import java.util.*;
import java.awt.TextField;
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 argv [ ]){
Simu menus = new Simu();
menus.setTitle(“Simulación de Redes”);
menus.setVisible(true);
}
}
44
CAPÍTULO 2. JAVA
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.
2.3
Conceptos Básicos
2.3.1
Clase
Una clase es una agrupación de datos (variables o campos) y de funciones
(métodos) que operan sobre esos datos. A estos datos y funciones pertenecientes a una clase se les denomina variables y métodos o funciones miembro. La
programación orientada a objetos se basa en la programación de clases [13, Joyanes]. 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 de modo similar a como se declaran las variables del lenguaje (int,
double, String). 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. Las clases pueden tener
variables static, que son propias de la clase y no de cada objeto [14, Bosz].
Ejemplo:
public abstract class FuncionActivacion implements Cloneable,Serializable{
/*constructor sin argumentos que permite la herencia */
public FuncionActivacion () {
}
}
2.3. CONCEPTOS BÁSICOS
2.3.2
45
Herencia
La herencia permite que se puedan definir nuevas clases basadas en clases
existentes, lo cual facilita reutilizar código previamente desarrollado. Si una
clase deriva de otra (extends) hereda todas sus variables y métodos. La clase
derivada puede añadir nuevas variables y métodos y/o redefinir las variables
y métodos heredados.
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.
2.3.3
Interface
Una interface es un conjunto de declaraciones de funciones. Si una clase implementa (implements) una interface, debe definir todas las funciones especificadas por la interface. Una clase puede implementar más de una interface,
representando una forma alternativa de la herencia múltiple.
Una interface puede derivar de otra o incluso de varias interfaces, en cuyo
caso incorpora todos los métodos de las interfaces de las que deriva.
Ejemplo: La clase TangenteHiperbólica se extiende de la clase FunciónActivación que implementa la interface Serializable.
/*función de activación tangente hiperbólica */
public class TangenteHiperbolica extends FuncionActivacion implements Serializable{
/*constructor sin argumentos */
public TangenteHiperbolica () {
}
}
2.3.4
Package
Un package es una agrupación de clases. Existen una serie de packages incluidos en el lenguaje.
46
CAPÍTULO 2. JAVA
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 interfase, utilizando la sentencia
package.
package myprojects.simu;
import myprojects.calculos.*;
import myprojects.interfase.*;
2.3.5
La Jerarquía de Clases de Java (API)
Durante la generación de código en Java, es recomendable y casi necesario
tener siempre a la vista la documentación on-line del API de Java 1.1 o Java
1.2. En dicha documentación es posible ver tanto la jerarquía de clases, es
decir la relación de herencia entre clases, como la información de los distintos
packages que componen las librerías base de Java.
Es importante distinguir entre lo que significa herencia y package. Un
package es una agrupación arbitraria de clases, una forma de organizar las
clases. La herencia sin embargo consiste en crear nuevas clases en base a otras
ya existentes. Las clases incluidas en un package no derivan en general de la
misma clase.
En la documentación on-line se presentan ambas visiones: “Package Index”
y “Class Hierarchy”. La primera presenta la estructura del API de Java
agrupada por packages, mientras que en la segunda aparece la jerarquía de
clases. Hay que resaltar el hecho de que todas las clases en Java son derivadas
2.4. VARIABLES DENTRO DEL LENGUAJE JAVA
47
de la clase java.lang.Object, por lo que heredan todos los métodos y variables
de ésta.
Si se selecciona una clase en particular, la documentación muestra una
descripción detallada de todos los métodos y variables de la clase. A su vez
muestra su herencia completa (partiendo de la clase java.lang.Object).
2.4
Variables Dentro del Lenguaje 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.
En Java hay dos tipos principales de variables:
1. 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. Esto significa que al asignar una variable entera a otra
variable entera, se copia el valor de la primera en el espacio que ocupa
la segunda variable.
2. 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. Al asignar una variable de tipo referencia a objeto a
otra variable se asigna la dirección y no el objeto referenciado por esa
dirección. Esto significa que ambas variables quedan referenciando el
mismo objeto. En Java una variable no puede almacenar directamente
un objeto, como ocurre en C y C++. Por lo tanto cuando se dice en
Java que una variable es un string, lo que se quiere decir en realidad es
que la variable es una referencia a un string.
Desde el punto de vista de su papel dentro del programa, las variables
pueden ser:
1. Variables miembro de una clase: Se definen en una clase, fuera de cualquier método; pueden ser tipos primitivos o referencias.
48
CAPÍTULO 2. JAVA
2. 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 2.1 de la pág. 48 se muestra una declaración, el nombre de la
variable introducida y el tipo de información que almacena la variable:
Declaración
int i;
String s;
int a [];
int[]b;
Identificador
i
s
a
b
Tipo
entero
referencia a string
referencia a arreglo de enteros
referencia a arreglo de enteros
Tabla 2.1: Tipos de Variables.
En la Tabla 2.2 de la pág. 48 se muestran las dos grandes categorías de
tipos para las variables en Java:
Tipos Primitivos
int, short, byte, long
char, boolean
float, double
Referencias a Objetos
Strings
Arreglos
otros objetos
Tabla 2.2: Categorías de Variables.
En la Tabla 2.3de la pág. 49 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.
Se dice que un tipo A es de mayor rango que un tipo B si A es un superconjunto de B. Esto quiere decir que las variables de tipo B siempre se pueden
asignar a variables de tipo A (eventualmente con pérdida de significancia).
Por ejemplo int es de mayor rango que short, que a su vez es de mayor
rango que byte. Float y double son de mayor rango que int. Double es de
mayor rango que float.
Esto se puede quedar resumido de la siguiente manera:
2.4. VARIABLES DENTRO DEL LENGUAJE JAVA
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
49
Ejemplos
0,1,5,-120,...
0,1,5,-120,...
0,1,5,-120,...
0,1,5,-120,...
false, true
‘a’,‘A’,‘0’,‘*’,...
1.2
1.2
Tabla 2.3: Tipos Primitivos de Variables.
double > float > long > int > short > byte
2.4.1
Visibilidad y Vida de las Variables
Se entiende por visibilidad, ámbito o scope de una variable, la parte de la
aplicación donde dicha variable es accesible y por lo tanto puede ser utilizada
en cualquier expresión. En Java todos las variables deben estar incluidas en
una clase. En general las variables declaradas dentro de unas llaves {}, es
decir dentro de un bloque, son visibles y existen dentro de estas llaves. Por
ejemplo las variables declaradas al principio de una función existen mientras
se ejecute la función; las variables declaradas dentro de un bloque if no serán
válidas al finalizar las sentencias correspondientes a dicho if y las variables
miembro de una clase (es decir declaradas entre las llaves {} de la clase pero
fuera de cualquier método) son válidas mientras existe el objeto de la clase.
Las variables miembro de una clase declaradas como public son accesibles
a través de una referencia a un objeto de dicha clase utilizando el operador
punto (.). Las variables miembro declaradas como private no son accesibles
directamente desde otras clases. Las funciones miembro de una clase tienen
acceso directo a todas las variables miembro de la clase sin necesidad de anteponer el nombre de un objeto de la clase. Sin embargo las funciones miembro
de una clase B derivada de otra A, tienen acceso a todas las variables miembro de A declaradas como public o protected, pero no a las declaradas como
private. Una clase derivada sólo puede acceder directamente a las variables y
funciones miembro de su clase base declaradas como public o protected. Otra
50
CAPÍTULO 2. JAVA
característica del lenguaje es que es posible declarar una variable dentro de un
bloque con el mismo nombre que una variable miembro, pero no con el nombre de otra variable local. La variable declarada dentro del bloque oculta a la
variable miembro en ese bloque. Para acceder a la variable miembro oculta
será preciso utilizar el operador this.
Uno de los aspectos más importantes en la programación orientada a objetos (OOP) es la forma en la cual son creados y eliminados los objetos. La
forma de crear nuevos objetos es utilizar el operador new. Cuando se utiliza
el operador new, la variable de tipo referencia guarda la posición de memoria
donde está almacenado este nuevo objeto. Para cada objeto se lleva cuenta
de por cuántas variables de tipo referencia es apuntado. La eliminación de
los objetos la realiza el denominado garbage collector, quien automáticamente
libera o borra la memoria ocupada por un objeto cuando no existe ninguna
referencia apuntando a ese objeto. Lo anterior significa que aunque una variable de tipo referencia deje de existir, el objeto al cual apunta no es eliminado
si hay otras referencias apuntando a ese mismo objeto.
2.5
Operadores en Java
Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Estos operadores se describen brevemente a continuación.
2.5.1
Operadores Aritméticos
Son operadores binarios (requieren siempre dos operandos) que realizan las
operaciones aritméticas habituales: suma (+), resta (-), multiplicación (*),
división (/) y resto de la división (%).
2.5.2
Operadores de Asignación
Los operadores de asignación permiten asignar un valor 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 = expression;
2.5. OPERADORES EN JAVA
51
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 2.4 de la pág. 51, 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
Tabla 2.4: Operadores de asignación.
2.5.3
Operadores Unarios
Los operadores más (+) y menos (-) unarios sirven para mantener o cambiar
el signo de una
variable, constante o expresión numérica. Su uso en Java es el estándar
de estos operadores.
2.5.4
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. Estos operadores se pueden utilizar de dos formas:
1. Precediendo a la variable (por ejemplo: ++i). En este caso primero se
incrementa la
variable y luego se utiliza (ya incrementada) en la expresión en la que
aparece.
52
CAPÍTULO 2. JAVA
2. Siguiendo a la variable (por ejemplo: i++). En este caso primero se
utiliza la variable en la expresión (con el valor anterior) y luego se incrementa.
En muchas ocasiones estos operadores se utilizan para incrementar una
variable fuera de una expresión. En este caso ambos operadores son equivalente. Si se utilizan en una expresión más complicada, el resultado de utilizar
estos operadores en una u otra de sus formas será diferente. La actualización
de contadores en bucles for es una de las aplicaciones más frecuentes de estos
operadores.
2.5.5
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 2.5 de la pág. 52 muestra los operadores
relacionales de Java.
Operador
>
>=
<
<=
==
! =
Utilización
op1 > op2
op1 >= op2
op1 < op2
op1 <= op2
op1 == op2
op1 != op2
El resultado es true
si op1 es mayor que op2
si op1 es mayor o igual que op2
si op1 es menor que op 2
si op1 es menor o igual que op2
si op1 y op2 son iguales
sio p1 y op2 son diferentes
Tabla 2.5: Operadores relacionales.
Estos operadores se utilizan con mucha frecuencia en las bifurcaciones y
en los bucles, que se verán luego.
Ejemplo de Operadores Incrementales y Operadores Relacionales en un
método.
public void cambiarParesEntrenamiento(double[ ] paresEntrenamiento){
2.5. OPERADORES EN JAVA
53
/* inicialización de sus valores a partir de los valores pasados como argumentos
*/
for(int i = 0; i< paresEntrenamiento.length; i++)
{for(int j = 0; j< numeroNeuronasEntrada; j++)
{entradaEntrenamiento[i][j] = paresEntrenamiento[i][j];
}
for(int j = 0; j< numeroSalidas; j++)
{salidaEntrenamiento[i][j] = paresEntrenamiento[i][j+numeroNeuronasEntrada];
}
}
}
2.5.6
Operador de Concatenación de Cadenas de Caracteres
(+)
El operador más (+) se utiliza también para concatenar cadenas de caracteres. Por ejemplo, para escribir una cantidad con un rótulo puede utilizarse la
sentencia:
editor.append(“Error Obtenido:” + String.valueOf(imprimoError) + “\n”);
editor.append(“Iteraciones:”+ String.valueOf(imprimoIteraciones) + “\n”);
editor.append(“Inicio: ” + horaInicial.toString() + “\n”);
editor.append(“Final: ” + horaFinal.toString() + “\n”);
donde el operador de concatenación se utiliza dos veces para construir la
cadena de caracteres que se desea imprimir. Las variables imprimoErrror,
imprimoIteraciones, horaInicial, horaFinal son convertidas en cadena de caracteres para poder concatenarlas.
54
CAPÍTULO 2. JAVA
2.5.7
Precedencia de Operadores
El orden en que se realizan las operaciones es fundamental para determinar
el resultado de una expresión. Por ejemplo, el resultado de x/y*z depende de
qué operación (la división o el producto) se realice primero. La Tabla 2.6 de
la pág. 54 muestra el orden en que se ejecutan los distintos operadores en una
sentencia, de mayor a menor precedencia:
Nombre
Postfijos
Unarios
De creación
Multiplicativo
Adición
Shift
Relacional
Igualdad
AND
Or Excluyente
Or Incluyente
Logico AND
Logico OR
Condicional
Asignación
Sintáxis
[ ] .(params) expr++ expr++expr —expr +expr -expr !
(type) expr
*/%
+<< >> >>>
<> <= >= instanceof
== ! =
&
^
|
&&
||
?:
= += -= *= /= %= &= ^= |= <<= >>= >>>=
Tabla 2.6: Precedencia de Operadores.
En Java, todos los operadores binarios, excepto los operadores de asignación, se evalúan de izquierda a derecha. Los operadores de asignación se
evalúan de derecha a izquierda, lo que significa que el valor de la izquierda se
copia sobre la variable de la derecha.
2.6
Estructuras de Programación
Las estructuras de programación o estructuras de control permiten tomar decisiones y realizar un proceso repetidas veces. Son los denominados bifurcaciones y bucles. En la mayoría de los lenguajes de programación, este tipo de
2.6. ESTRUCTURAS DE PROGRAMACIÓN
55
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.
2.6.1
Sentencias o Expresiones
Una expresión es un conjunto variables unidos 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;
2.6.2
Comentarios
Existen dos formas diferentes de introducir comentarios entre el código de Java
(en realidad son tres, como pronto se verá). Son similares a la forma de realizar comentarios en el lenguaje C/C++. Los comentarios son tremendamente
útiles para poder entender el código utilizado, facilitando de ese modo futuras
revisiones y correcciones. Además permite que cualquier persona distinta al
programador original pueda comprender el código escrito de una forma más
rápida. Se recomienda acostumbrarse a comentar el código desarrollado. De
esta forma se simplifica también la tarea 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
int a=1; // Comentario a la derecha de una sentencia
56
CAPÍTULO 2. JAVA
// Esta es la forma de comentar más de una línea utilizando
// las dos barras. Requiere incluir dos barras al comienzo de cada línea
/* Esta segunda forma es mucho más cómoda para comentar un número elevado de líneas ya que 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.
2.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:
protected void comprobarNuevoMinimo() {
if (error < errorMinimo)
{errorMinimo = error;
vectorDisMinimo = (double[ ])(vectorDis.clone());
} /* 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.
2.6. ESTRUCTURAS DE PROGRAMACIÓN
57
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:
public double decirSalidaActual(int indiceEtapa) {
if(pila != null)
{return pila[indiceEtapa];}
else
{System.out.println(“Fallo: Pila no creada”);
return 0;
}
}
2.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 cumpla
unas determinadas condiciones. Hay que prestar especial atención a los bucles
infinitos, hecho que ocurre cuando la condición de finalizar el bucle (booleanExpression) no se llega a cumplir nunca. Se trata de un fallo muy típico,
habitual sobre todo entre programadores poco experimentados.
Bucle while
En el siguiente ejemplo se muestra que se ejecutará la sentencia fin++ mientras
la expresión (capas.charAt(fin)!=‘,’ && capas.charAt(fin)!=-1) sea verdadera.
for (int j=0; j < numeroCapas; j++)
{int fin = principio;
try {
58
CAPÍTULO 2. JAVA
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.
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 ejecutados 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 */
2.6. ESTRUCTURAS DE PROGRAMACIÓN
59
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);
Sentencia return
Una forma de salir de un bucle es utilizar la sentencia return. Esta sentencia
sale también de un método o de una función. En el caso de que la función
devuelva alguna variable, este valor se deberá poner a continuación del return.
public double devuelveErrorMinimo()
{return errorMinimo;
}
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
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 ser recuperables. En este caso el programa debe dar al usuario la
60
CAPÍTULO 2. JAVA
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().
2.7
Clases en Java
Las clases son el centro de la Programación Orientada a Objetos (OOP Object Oriented Programming). Algunos conceptos importantes de la POO
son los siguientes:
1. Encapsulación: Las clases pueden ser declaradas como públicas (public)
y como package (accesibles sólo para otras clases del package). Las
variables miembro y los métodos pueden ser public, private, protected
y package. De esta forma se puede controlar el acceso y evitar un uso
inadecuado.
2.7. CLASES EN JAVA
61
2. Herencia: Una clase puede derivar de otra (extends), y en ese caso hereda
todas sus variables y métodos. Una clase derivada puede añadir nuevas
variables y métodos y/o redefinir las variables y métodos heredados.
3. Polimorfismo: Los objetos de distintas clases pertenecientes a una misma
jerarquía o que implementan una misma interface pueden tratarse de
una forma general e individualizada, al mismo tiempo. Esto facilita la
programación y el mantenimiento del código.
2.7.1
Características Importantes de las Clases
A continuación se enumeran algunas características importantes de las clases:
1. Todas las variables y funciones de Java deben pertenecer a una clase.
No hay variables y funciones globales.
2. Si una clase deriva de otra (extends), hereda todas sus variables y métodos.
3. Java tiene una jerarquía de clases estándar de la que pueden derivar las
clases que crean los usuarios.
4. Una clase sólo puede heredar de una única clase (en Java no hay herencia
múltiple). Si al definir una clase no se especifica de qué clase deriva, por
defecto la clase deriva de Object. La clase Object es la base de toda la
jerarquía de clases de Java.
5. En un fichero se pueden definir varias clases, pero en un fichero no puede
haber más que una clase public. Este fichero se debe llamar como la clase
public que contiene con extensión *.java. Con algunas excepciones, lo
habitual es escribir una sola clase por fichero.
6. Si una clase contenida en un fichero no es public, no es necesario que el
fichero se llame como la clase.
7. Los métodos de una clase pueden referirse de modo global al objeto de
esa clase al que se aplican por medio de la referencia this.
8. Las clases se pueden agrupar en packages, introduciendo una línea al
comienzo del fichero (package packageName;). Esta agrupación en packages está relacionada con la jerarquía de directorios y ficheros en la que
se guardan las clases.
62
CAPÍTULO 2. JAVA
2.7.2
Métodos o Funciones Miembros
Métodos de Objeto
Los métodos son funciones definidas dentro de una clase. Salvo los métodos
static o de clase, se aplican siempre a un objeto de la clase por medio del
operador punto (.). Dicho objeto es su argumento implícito. Los métodos
pueden además tener otros argumentos explícitos que van entre paréntesis, a
continuación del nombre del método.
La primera línea de la definición de un método se llama declaración o
header; el código comprendido entre las llaves {} es el cuerpo o body del
método. Considérese el siguiente ejemplo:
imprimoError=algor.devuelveErrorMinimo();
public double devuelveErrorMinimo()
{return errorMinimo;
}
La Clase Object
Como ya se ha dicho, la clase Object es la raíz de toda la jerarquía de clases
de Java. Todas las clases de Java derivan de Object.
La clase Object tiene métodos interesantes para cualquier objeto que son
heredados por cualquier clase. Entre ellos se pueden citar los siguientes:
1. Métodos que pueden ser redefinidos por el programador:
• clone(): Crea un objeto a partir de otro objeto de la misma clase. El
método original heredado de Object lanza una CloneNotSupportedException. Si se desea poder clonar una clase hay que implementar
la interface Cloneable y redefinir el método clone(). Este método
debe hacer una copia miembro a miembro del objeto original. No
debería llamar al operador new ni a los constructores.
• equals(): Indica si dos objetos son o no iguales. Devuelve true si
son iguales, tanto si son referencias al mismo objeto como si son
objetos distintos con iguales valores de las variables miembro.
2.8. ALGUNAS CLASES DE UTILIDAD
63
• toString(): Devuelve un String que contiene una representación del
objeto como cadena de caracteres, por ejemplo para imprimirlo o
exportarlo.
• finalize(): Este método ya se ha visto al hablar de los finalizadores.
2. Métodos que no pueden ser redefinidos (son métodos final ):
• getClass(): Devuelve un objeto de la clase Class, al cual se le
pueden aplicar métodos para determinar el nombre de la clase, su
super-clase, las interfaces implementadas, etc. Se puede crear un
objeto de la misma clase que otro sin saber de qué clase es.
• notify(), notifyAll() y wait(): Son métodos relacionados con los
threads (hilos).
2.8
2.8.1
Algunas Clases de Utilidad
Clase Arrays
Los arrays de Java (vectores, matrices, hiper-matrices de más de dos dimensiones) se tratan como objetos de una clase predefinida. Los arrays son objetos,
pero con algunas características propias.
Los arrays pueden ser asignados a objetos de la clase Object y los métodos
de Object pueden ser utilizados con arrays.
Algunas de sus características más importantes de los arrays son las siguientes:
1. Los arrays se crean con el operador new seguido del tipo y número de
elementos.
2. Se puede acceder al número de elementos de un array con la variable
miembro implícita length (por ejemplo, vect.length).
3. Se accede a los elementos de un array con los corchetes [ ] y un índice
que varía de 0 a length-1.
4. Se pueden crear arrays de objetos de cualquier tipo. En principio un
array de objetos es un array de referencias que hay que completar llamando al operador new.
64
CAPÍTULO 2. JAVA
5. Los elementos de un array se inicializan al valor por defecto del tipo correspondiente (cero para valores numéricos, la cadena vacía para Strings,
false para boolean, null para referencias).
6. Como todos los objetos, los arrays se pasan como argumentos a los métodos por referencia.
7. Se pueden crear arrays anónimos (por ejemplo, crear un nuevo array
como argumento actual en la llamada a un método).
Inicialización de Arrays
Los arrays se pueden inicializar con valores entre llaves {...} separados por
comas. También los arrays de objetos se pueden inicializar con varias llamadas
a new dentro de unas llaves {...}.
Si se igualan dos referencias a un array no se copia el array, sino que se
tiene un array con dos nombres, apuntando al mismo y único objeto.
Ejemplo de creación de una referencia a un array:
/*vector de pesos */
public double[ ] pesos;
También existen arrays bidimensionales, que se crean de un modo muy
similar al de C++ (con reserva dinámica de memoria). En Java una matriz
es un vector de vectores fila, o más en concreto un vector de referencias a los
vectores fila. Con este esquema, cada fila podría tener un número de elementos
diferente.
Una matriz se puede crear directamente en la siguiente forma:
/*vector de las entradas de los pares de entrenamiento*/
protected double[ ][ ] entradaEntrenamiento;
2.8. ALGUNAS CLASES DE UTILIDAD
2.8.2
65
Clases String y StringBuffer
Las clases String y StringBuffer están orientadas a manejar cadenas de caracteres. La clase String está orientada a manejar cadenas de caracteres constantes,
es decir, que no pueden cambiar. La clase StringBuffer permite que el programador cambie la cadena insertando, borrando, etc. La primera es más
eficiente, mientras que la segunda permite más posibilidades.
Ambas clases pertenecen al package java.lang, y por lo tanto no hay que
importarlas. Hay que indicar que el operador de concatenación (+) entre
objetos de tipo String utiliza internamente objetos de la clase StringBuffer y
el método append().
Los métodos de String se pueden utilizar directamente sobre literals (cadenas entre comillas), como por ejemplo: “Hola”.length().
Métodos de la Clase String
Algunos métodos de String y la función que realizan:
• String(...): Constructores para crear Strings a partir de arrays de bytes
o de caracteres.
• String(String str) yString(StringBuffer sb): Costructores a partir de un
objeto String o StringBuffer.
• charAt(int): Devuelve el carácter en la posición especificada.
• getChars(int, int, char[ ], int): Copia los caracteres indicados en la posición indicada de un array de caracteres.
• length(): Devuelve el número de caracteres de la cadena.
• toLowerCase(): Convierte en minúsculas (puede tener en cuenta el locale).
• toUpperCase(): Convierte en mayúsculas (puede tener en cuenta el locale).
• valueOf (): Devuelve la representación como String de sus argumento.
Admite Object, arrays de caracteres y los tipos primitivos.
66
CAPÍTULO 2. JAVA
2.8.3
Clase Double
La clase java.lang.Double deriva de Number, que a su vez deriva de Object.
Esta clase contiene un valor primitivo de tipo double.
Algunos Métodos de la Clase Double
• Double(double) y Double(String): Los constructores de esta clase.
• doubleValue(), floatValue(), longValue(), intValue(), shortValue(), byteValue(): Métodos para obtener el valor del tipo primitivo.
• String toString(), Double valueOf(String): Conversores con la clase String.
• isInfinite(), isNaN(): Métodos de chequear condiciones.
• equals(Object): Compara con otro objeto.
2.8.4
Clase Integer
La clase java.lang.Integer tiene como variable miembro un valor de tipo int.
Algunos Métodos de la Clase Integer
• Integer(int) y Integer(String): Constructores de la clase.
• doubleValue(), floatValue(), longValue(),intValue(), shortValue(), byteValue(): Conversores con otros tipos primitivos.
• Integer decode(String), Integer parseInt(String), String toString(), Integer ValueOf(String): Conversores con String del sistema a partir del
nombre de dicha propiedad.
2.9
2.9.1
El AWT (Abstract Windows Toolkit)
Qué es el AWT
El AWT (Abstract Windows Toolkit) es la parte de Java que se ocupa de
construir interfaces gráficas de usuario. Aunque el AWT ha estado presente
2.9. EL AWT (ABSTRACT WINDOWS TOOLKIT)
67
en Java desde la versión 1.0, la versión 1.1 representó un cambio notable, sobre
todo en lo que respecta al modelo de eventos. La versión 1.2 ha incorporado un
modelo distinto de componentes llamado Swing, que también está disponible
en la versión 1.1 como package adicional.
2.9.2
Creación de una Interface Gráfica de Usuario
Para construir una interface gráfica de usuario hace falta:
1. Un “contenedor” o container, que es la ventana o parte de la ventana
donde se situarán los componentes (botones, barras de desplazamiento, etc.) y donde se realizarán los dibujos. Se correspondería con un
formulario o una picture box de Visual Basic.
2. Los componentes: menúes, botones de comando, barras de desplazamiento, cajas y áreas de texto, botones de opción y selección, etc. Se
corresponderían con los controles de Visual Basic.
3. El modelo de eventos. El usuario controla la aplicación actuando sobre los componentes, de ordinario con el ratón o con el teclado. Cada
vez que el usuario realiza una determinada acción, se produce el evento
correspondiente, que el sistema operativo transmite al AWT.
El AWT crea un objeto de una determinada clase de evento, derivada de
AWTEvent. Este evento es transmitido a un determinado método para que
lo gestione. En Visual Basic el entorno de desarrollo crea automáticamente
el procedimiento que va a gestionar el evento (uniendo el nombre del control
con el tipo del evento mediante el carácter _ ) y el usuario no tiene más que
introducir el código. En Java esto es un poco más complicado: el componente
u objeto que recibe el evento debe “registrar” o indicar previamente qué objeto
se va a hacer cargo de gestionar ese evento.
2.9.3
Objetos “event source” y Objetos “event listener”
El modelo de eventos de Java está basado en que los objetos sobre los que
se producen los eventos (event sources) “registran” los objetos que habrán de
gestionarlos (event listeners), para lo cual los event listeners habrán de disponer de los métodos adecuados. Estos métodos se llamarán automáticamente
68
CAPÍTULO 2. JAVA
cuando se produzca el evento. La forma de garantizar que los event listeners
disponen de los métodos apropiados para gestionar los eventos es obligarles a
implementar una determinada interface Listener. Las interfaces Listener se
corresponden con los tipos de eventos que se pueden producir.
Las capacidades gráficas del AWT resultan pobres y complicadas en comparación con lo que se puede conseguir con Visual Basic, pero tienen la ventaja
de poder ser ejecutadas casi en cualquier ordenador y con cualquier sistema
operativo.
2.9.4
Proceso a Seguir Para Crear Una Aplicación Interactiva
(Orientada a Eventos)
Pasos que se pueden seguir para construir una aplicación orientada a eventos
sencilla, con interface gráfica de usuario:
1. Determinar los componentes que van a constituir la interface de usuario
(botones, cajas de texto, menúes, etc.).
2. Crear una clase para la aplicación que contenga la función main().
3. Crear una clase Ventana, sub-clase de Frame, que responda al evento
WindowClosing().
4. La función main() deberá crear un objeto de la clase Ventana (en el
que se van a introducir las componentes seleccionadas) y mostrarla por
pantalla con el tamaño y posición adecuados.
5. Añadir al objeto Ventana todos los componentes y menúes que deba
contener.
6. Definir los objetos Listener (objetos que se ocuparán de responder a los
eventos, cuyas clases implementan las distintas interfaces Listener) para
cada uno de los eventos que deban estar soportados. En aplicaciones
pequeñas, el propio objeto Ventana se puede ocupar de responder a los
eventos de sus componentes. En programas más grandes se puede crear
uno o más objetos de clases especiales para ocuparse de los eventos.
7. Finalmente, se deben implementar los métodos de las interfaces Listener
que se vayan a hacer cargo de la gestión de los eventos.
2.10. ERRORES FRECUENTES DE PROGRAMACIÓN
69
En la aplicación se podrá observar la gran variedad de componentes de
AWT que se utilizaron. También se acudió a los paquetes de Swing , por
ejemplo para la implementación de un hilo en la presentación de la aplicación.
El objetivo de este capítulo ha sido brindar nociones leves sobre este lenguaje de programación, mostrando algunos ejemplos que se pueden encontrar
en el código fuente de la aplicación.
2.10
Errores más Frecuentes en la Programación
con Java
A continuación se presenta una varios ejemplos de errores, vistos desde el
punto de vista de la portabilidad, porque quizá el sine qua non de Java, en
última instancia sea perseguir una verdadera independencia de plataforma.
Los errores no tienen ningún orden de dificultad, no son más que algunos
de ellos en los que puede caer cualquier programador.
Hay muchísimas formas cometer fallos a la hora de programar en Java; algunas se deben simplemente a malos hábitos y son muy difíciles de encontrar,
mientras que otros saltan a la vista al instante. Los errores de programación
más obvios, también son los que con más frecuencia cometen los programadores.
Quizás muchos de los fallos se evitarían si los programadores intentarán
aplicar calidad a sus programas desde el momento mismo de concebir el programa, y no la tendencia de aplicar pureza a la aplicación en el último momento.
2.10.1
Scheduling de Hilos de Ejecución
El scheduling de los hilos de ejecución, es decir, el tiempo que el sistema
destina a la ejecución de cada uno de los hilos de ejecución, puede ser distinto
en diferentes plataformas. Si no se tienen en cuenta las prioridades o se deja
al azar la prevención de que dos hilos de ejecución accedan a un mismo objeto
al mismo tiempo, el programa no será portable.
El siguiente programa, por ejemplo, no es portable:
class Contador implements Runnable
70
CAPÍTULO 2. JAVA
{
static long valor = 0;
public void run() {
valor += 1;
}
public static void main( String args[] )
{
try
{
Thread hilo1 = new Thread( new Contador() );
hilo1.setPriority( 1 );
Thread hilo2 = new Thread( new Contador() );
hilo2.setPriority( 2 );
hilo1.start();
hilo2.start();
hilo1.join();
hilo2.join();
Systtem.out.println( valor );
} catch( Exception e ) {
e.printStackTrace();
}
}
}
Este programa puede no imprimir “2” en todas las plataformas, porque los
dos hilos de ejecución no están sincronizados y, desgraciadamente, este es un
problema muy profundo y no hay forma de detectar su presencia ni adivinar
el momento en que va a ocurrir.
2.10. ERRORES FRECUENTES DE PROGRAMACIÓN
71
Una solución simple, y drástica, es hacer todos los métodos sincronizados.
Pero esto también tiene problemas porque puede presentar como puntos sin
retorno obvios, lo que en realidad es una corrupción de datos.
El scheduling de los hilos de ejecución es uno de los aspectos más problemáticos de la programación Java, porque la naturaleza del problema se vuelve
global, al intervenir varios hilos de ejecución. No se puede buscar el problema
en una parte del programa, es imprescindible entender y tratar el programa
en su globalidad.
Además, hay ejemplos de contención de hilos que no serán detectados. Por
ejemplo, en la clase Contador anterior no se detectará el problema ya que la
contención está en el acceso al campo, en lugar de en el acceso al método.
2.10.2
Errores en el Uso de las Características de Portabilidad
de Java
Hay características de portabilidad en el API de Java. Es posible, pero menos
portable, escribir código que no haga uso de estas características. Muchas de
las propiedades del sistema proporcionan información sobre la portabilidad;
por ejemplo, se pueden utilizar las propiedades del sistema para conocer cuál
es el carácter definido como fin de línea o el que se emplea como terminador del
archivo, para emplear el adecuado a la plataforma en que se está ejecutando
el programa.
Java proporciona dos métodos para facilitar la escritura de programas
portables en este sentido. Por un lado, utilizar el método println() en vez de
imprimir las cadenas seguidas del terminador de cadena embebido; o también,
utilizar la expresión System.getProperty(“line.separator”) para conocer cuál es
el terminado de línea que se utiliza en la plataforma en que se está ejecutando
el programa.
En general, el uso de las propiedades facilita en gran modo la portabilidad
y debería extenderse su uso siempre que fuese aplicable.
2.10.3
Uso de Directorios Definidos
Un error muy común y fácil de cometer entre los programadores, aunque igual
de fácil de corregir es la designación en el código de nombre de los archivos, que
72
CAPÍTULO 2. JAVA
pueden dar lugar a problemas de portabilidad, pero cuando se añade el directorio en que se sitúan, seguro que estos problemas aparecerán. Estos fallos son
más comunes entre programadores con viejos hábitos, que eran dependientes
del sistema operativo, y que son difíciles de olvidar.
La forma más portable de construir un File para un fichero en un directorio es utilizar el constructor File(File,String). Otra forma sería utilizar las
propiedades para conocer cuál es el separador de ficheros y el directorio inicial;
o también, preguntarle al operador a través de una caja de diálogo.
Otro problema es la noción de camino absoluto, que es dependiente del
sistema.
En Unix los caminos absolutos empiezan por /, mientras que en Windows
pueden empezar por cualquier letra. Por esta razón, el uso de caminos absolutos que no sean dependientes de una entrada por operador o de la consulta
de las propiedades del sistema no será portable.
El ejemplo siguiente proporciona una clase útil para la construcción de
nombres de archivos. La última versión del JDK es mucho más exhaustiva, y
detecta más fácilmente los errores cometidos en los directorios y nombres de
ficheros.
import java.io.File;
import java.util.StringTokenizer;
public class UtilFichero {
/* Crea un nuevo fichero con el nombre de otros. Si la base inicial es
* nula, parte del directorio actual
*/
public static File dirInicial( File base,String path[] ) {
File valor = base;
int i=0;
if( valor == null && path.length == 0 ) {
valor = new File( path[i++] );
}
2.10. ERRORES FRECUENTES DE PROGRAMACIÓN
for( ; i < path.length; i++ ) {
valor = new File( valor,path[i] );
}
return( valor );
}
public static File desdeOrigen( String path[] ) {
return( dirInicial( null,path ) );
}
public static File desdeProp( String nombrePropiedad ) {
String pd = System.getProperty( nombrePropiedad );
return( new File( pd ) );
}
// Utilizando la propiedad del sistema “user.dir”
public static File userDir() {
return( desdeProp( “user.dir” ) );
}
// Utilizando la propiedad del sistema “java.home”
public static File javaHome() {
return( desdeProp( “java.home” ) );
}
// Utilizando la propiedad del sistema “user.home”
73
74
CAPÍTULO 2. JAVA
public static File userHome() {
return( desdeProp( “user.home” ) );
}
/* Separa el primer argumento, utilizando el segundo argumetno como
* carácter separador.
* Es muy útil a la hora de crear caminos de ficheros portables
*/
public static String[] split( String p,String sep ) {
StringTokenizer st = new StringTokenizer( p,sep );
String valor[] = new String[st.countTokens()];
for( int i=0; i < valor.length; i++ ) {
valor[i] = st.nextToken();
}
return( valor );
}
}
2.10.4
Carga de Drivers JDBC
El interfaz JDBC, definido por el paquete java.sql, proporciona gran flexibilidad a la hora de codificar la carga del driver JDBC a utilizar. Esta flexibilidad
permite la sustitución de diferentes drivers sin que haya que modificar el código, a través de la clase DriverManager, que selecciona entre los drivers disponibles en el momento de establecer la conexión. Los drivers se pueden poner a
disposición de DriverManager a través de la propiedad del sistema jdbc.drivers
o cargándolos explícitamente usando el método java.lang.Class.forName().
También es posible la carga de una selección de drivers, dejando que el mecanismo de selección de DriverManager encuentre el adecuado en el momento
de establecer la conexión con la base de datos.
2.10. ERRORES FRECUENTES DE PROGRAMACIÓN
75
Hay que tener siempre en cuenta los siguientes puntos:
• La prueba de drivers se intenta siempre en el orden en que se han registrado, por lo que los primeros drivers tienen prioridad sobre los últimos cargados, con la máxima prioridad para los drivers listados en
jdbc.drivers.
• Un driver que incluya código nativo fallará al cargarlo sobre cualquier
plataforma diferente de la que fue diseñado; por lo que el programa
deberá recoger la excepción ClassNotFoundException.
• Un driver con código nativo no debe registrarse con DriverManager hasta que no se sepa que la carga ha tenido éxito.
• Un driver con código nativo no está protegido por la caja negra de Java,
así que puede presentar potenciales problemas de seguridad.
2.10.5
Terminación de Líneas
Las distintas plataformas de sistemas operativos tienen distintas convenciones
para la terminación de líneas en un fichero de texto. Por esto debería utilizarse
el método println(), o la propiedad del sistema line.separator, para la salida;
y para la entrada utilizar los métodos readLine().
Java internamente utiliza Unicode, que al ser un estándar internacional,
soluciona el problema a la hora de codificar; pero el problema persiste al leer
o escribir texto en un archivo.
En el JDK 1.1 se utilizan las clases java.io.Reader y java.io.Writer para
manejar la conversión del set de caracteres, pero el problema puede surgir
cuando se leen o escriben archivos ASCII planos, porque en el ASCII estándar
no hay un carácter específico para la terminación de líneas; algunas máquinas
utilizan \n, otras usan \r, y otras emplean la secuencia \r\n.
Enarbolando la bandera de la portabilidad, deberían utilizarse los métodos
println() para escribir una línea de texto, o colocar un marcador de fin de línea.
También, usar el método readLine() de la clase java.io.BufferedReader para
recoger una línea completa de texto.
Los otros métodos readLine() son igualmente útiles, pero el de la clase
BufferedReader proporciona al código también la traslación.
76
2.10.6
CAPÍTULO 2. JAVA
Entrada/Salida por Archivo
Las clases de entrada y salida del JDK 1.0 no son portables a plataformas que
no soporten formatos nativos de archivos no-ASCII. Es fácil para el programador suponer alegremente que todo el mundo es ASCII. Pero la realidad no
es esa, los chinos y los japoneses, por ejemplo, no puedes escribir nada con los
caracteres ASCII. Hay que tener esto en cuenta si se quiere que los programas
viajen fuera del país propio.
2.10.7
Fuentes de Caracteres
El tamaño y disponibilidad de varios tipos de fuentes varía de pantalla a pantalla, incluso en una misma plataforma hardware, dependiendo de la instalación
que se haya hecho. Esto es algo que no descalifica totalmente el programa,
porque se verá defectuosamente, pero el programa podrá seguir usándose; pero debería prevenirse, porque se presupone que el programador desea que su
software aparezca de la mejor manera posible en cualquier plataforma.
El modo mejor de evitar todo esto es no codificar directamente el tamaño
de los textos, dejar que los textos asuman su tamaño en relación al layout, y
utilizar los métodos de la clase FontMetrics para encontrar el tamaño en que
aparecen los caracteres de una cadena sobre un Canvas. Cuando se coloca una
fuente que no se encuentra entre las de defecto, hay que asegurarse siempre
de colocar alguna de respaldo en el bloque catch.
Cuando se crea un menú para seleccionar fuentes de caracteres, se debería
utilizar el método java.awt.Toolkit.getFontList(), en lugar de especificar una
lista de fuentes.
Cuando se actualice un programa del JDK 1.0 al JDK 1.1, hay que tener
en cuenta que los nombre de las fuentes de caracteres se han actualizado, tal
como se indica en la documentación del método getFontList().
Capítulo 3
Servlet
77
78
CAPÍTULO 3.
3.1
SERVLET
Desarrollando 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.
Los servlets son más eficientes que los programas (CGI) porque son cargados de una sola vez en la memoria, y cada demanda es manejada por un hilo
de la máquina virtual de Java, no por el sistema operativo.
Además los servlets son escalables, dando soporte para una multi-aplicación
de configuración del servidor. [17, IBM Press]
Permiten utilizar datos caché, acceso a información de base de datos, y
compartir datos con otro servlets, archivos JSP y (en algunos ambientes) con
los bean empresariales.
3.1.1
Principios de Codificación de Servlet
Para crear un servlet de HTTP, es necesario extender las clases:
javax.servlet.HttpServlet y sustituir cualquier método que se desee implementar en el servlet. Por ejemplo, un servlet reemplaza el método doGet para
manejar las demandas Get de los clientes.
El HttpServletRequest representa los requerimientos de un cliente. Este
objeto da acceso al servlet, a la información incluida como datos en formato
HTML, encabezados HTTP, etc.
El HttpServletResponse representa la respuesta del servlet.
El servlet usa este objeto para devolverle datos al cliente como errores
de HTTP (200, 404, y otros), encabezados de respuesta (Content-Type, SetCookie, y otros), y datos de salida para escribir cadenas de salida de respuesta
o salida impresa.
El principio de un servlet podría parecerse al siguiente ejemplo:
import java.io.*;
import javax.servlet.*;
3.1. DESARROLLANDO SERVLETS
79
import javax.servlet.http.*;
import java.util.*;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
3.1.2
Ciclo de Vida del Servlet
Las clases javax.servlet.http.HttpServlet definen métodos tales como:
• Iniciar un servlet.
• Solicitar servicios.
• Quitar un servlet del servidor.
Éstos son conocidos como métodos del ciclo de vida y son llamados en la
siguiente secuencia:
• Se construye el servlet.
• Se inicializa con el método INIT.
• Se manejan llamadas de los clientes al método de servicio.
• Se saca el servlet de servicio.
• Se destruye con el método destruir.
• Se finaliza el servlet y la basura es recolectada.
En la figura 3.1 de la página 80 se puede apreciar gráficamente el Ciclo de
Vida de un Servlet.
80
CAPÍTULO 3.
Figura 3.1: Ciclo de Vida de un Servlet.
SERVLET
3.1. DESARROLLANDO SERVLETS
3.1.3
81
Instanciación e Inicialización
El motor del servlet (la función del Servidor de Aplicaciones que procesa servlets, archivos JSP, y otros tipos de server-side incluyendo codificación) crea
una instancia del servlet. El motor del servlet crea el objeto de configuración
del servlet y lo usa para pasar los parámetros de inicialización del servlet al
método INIT. La inicialización de los parámetros persiste hasta que el servlet se destruye y es aplicada a todas las invocaciones de ese servlet hasta
destruirse.
Si la inicialización tiene éxito, el servlet está disponible para el servicio. Si
la inicialización falla, el motor del servlet descarga el servlet. El administrador
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.
3.1.4
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.
3.1.5
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
82
CAPÍTULO 3.
SERVLET
Figura 3.2: Requerimiento de un Archivo JSP.
servlet excediendo el timeout. La Máquina Virtual de Java realiza recolección
de basura después del destroy.
3.1.6
Modelos de Acceso JSP
Se puede acceder a los archivos JSP de dos maneras:
El browser envía un requerimiento para los archivos JSP.
Los archivos JSP acceden a los beans u otros componentes que generan
contenido dinámico para ser enviado al browser como se muestra en la figura
3.2 de la página 82.
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 3.3 de la página 83.
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
3.1. DESARROLLANDO SERVLETS
83
Figura 3.3: Requerimiento de un Servlet.
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.
3.1.7
Procesadores JSP
Cada procesador de JSP es un servlet que se puede adherir a una aplicación
Web para manejar todos los requerimientos JSP pertenecientes a la misma.
Cuando se instala el Application Server en un servidor Web, la configuración del servidor Web pasa los requerimientos HTTP para los archivos JSP
(archivos con la extensión .jsp) al Application Server.
El procesador de JSP crea y compila un servlet desde cada archivo JSP.
El procesador produce estos archivos para cada JSP:
• Archivos Java que contienen el código del lenguaje Java para el servlet.
84
CAPÍTULO 3.
SERVLET
• Archivos de clase que se compilan en el servlet.
El procesador de JSP pone los archivos .java, y .class en un camino específico al procesador. Los archivos .java y .class tienen el mismo nombre de
archivos. El procesador usa una convención de denominación que incluye el
agregado de subrayado de los caracteres y un sufijo para el nombre del archivo
JSP.
Por ejemplo, si el nombre del archivo JSP es simple.jsp, los archivos generados son: _simple_xjsp.java y _simple_xjsp.class.
Como todos los servlets, un servlet generado desde un archivo JSP se extiende desde javax.servlet.http.HttpServlet. El código Java de servlet contiene
declaraciones de importación para las clases necesarias y una declaración de
paquete, si la clase del servlet es parte de un paquete.
Si el archivo JSP contiene sintaxis de JSP (como directivas y scriptlets), el
procesador de JSP convierte la sintaxis de JSP al código Java equivalente. Si
el archivo JSP contiene etiquetas HTML, el procesador agrega el código Java
a fin de que el servlet realice la salida de HTML carácter por carácter.
3.1.8
Compilación Batch de Archivos JSP
WebSphere Application Server proporciona un compilador batch de JSP. Al
usar la función del compilador batch de archivos JSP, se habilitan respuestas
más rápidas al requerimiento inicial del cliente para los archivos JSP en el
servidor Web de producción.
El compilador batch ahorra recursos del sistema y proporciona seguridad en
el servidor de aplicaciones, especificando cuándo el servidor está chequeando
un archivo de clase o recompilando un archivo JSP. El servidor de aplicaciones
supervisará la compilación de los archivos JSP para cambios, y automáticamente compilará y recargará los archivos JSP, siempre que el servidor de aplicaciones descubra que el archivo JSP ha cambiado. Modificando este proceso,
se puede ahorrar tiempo y recursos consumidos por las compilaciones y asegurar que se tenga el control de la compilación de los archivos JSP. También es
útil como una manera rápida al sincronizar todos los archivos JSP para una
aplicación.
3.1. DESARROLLANDO SERVLETS
3.1.9
85
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.
3.1.10
Fases de Inicialización y de Terminación
Un motor del servlet crea una instancia de un servlet en los siguientes momentos:
• Automáticamente en el arranque de la aplicación, si esa opción se configura para el servlet.
• En la primera demanda del cliente para el servlet después del arranque
de la aplicación.
• Cuando el servlet se vuelve a cargar.
El método INIT ejecuta sólo una vez durante la vida del servlet. Ejecuta
cuando el motor del servlet carga el servlet. Con el Application Server se
puede configurar el servlet para ser cargado cuando comienza la aplicación o
cuando un cliente accede por primera vez al servlet. El método INIT no se
repite a menos que muchos clientes accedan al servlet.
El método destroy () ejecuta sólo una vez durante la vida del servlet. Eso
pasa cuando el motor del servlet detiene el servlet. Típicamente, se detienen
servlets como parte del proceso de detener la aplicación.
86
CAPÍTULO 3.
3.1.11
SERVLET
Rasgos de Java Servlet API
Algunos puntos de interés del Java Servlet API son:
• Un despachador de requerimientos asociado a cada recurso (servlet).
Un despachador de requerimientos de recursos que pueden procesar demandas HTTP (como servlets y archivos JSP) y los archivos relacionados a
esos recursos (como HTML estático y GIFs). El motor del servlet genera un
solo despachado de requerimiento por cada servlet o JSP cuando se produce
una instanciación. El despachador recibe el pedido del cliente y despacha la
demanda al recurso.
• Un contexto del servlet para la aplicación.
3.1.12
Patrones y Guías de Servlets/JSP
En esta sección se proporciona las pautas específicas sobre cómo organizar una
aplicación que usa servlets y JSPs.
• Patrones Servlet/JSP.
Con este modelo es posible organizar una aplicación Web en el servlets y
JavaServer Pages de manera tal que es fácil de mantener el código.
• Motivación.
Para aplicaciones que requieren modelado complejo sobre el nodo del servidor de aplicación Web, no es fácil definir la granularidad de servlets y cómo
interactúan los servlets. Pero sin un buen diseño para el servlets y JSP es
difícil mantener la aplicación.
Además en la fase del análisis de un proyecto, usa casos y diagramas de
transición de estados ampliamente usados para describir el resultado de la fase
del análisis. Podría ser útil trazar esos resultados en el diseño e implementación
de la fase.
3.1. DESARROLLANDO SERVLETS
87
En un caso se puede contemplar el servlet como el evento central y procesa
todas las demandas del cliente. Ejecuta la acción necesaria para ese evento
y envía el requerimiento a uno (de muchos) JavaServer Page por desplegar el
resultado. Usando esta solución, puede ser difícil de desarrollar ese servlet.
Así como es responsable para un conjunto de casos de uso, se puede tener que
llevar a cabo mucha lógica en ese servlet.
En otro caso se puede tener tantos servlets como JavaServer Pages y encadenarlos. Esto significa que un servlet obtiene un requerimiento, ejecuta la
acción correcta, y llama al JavaServer Page específico para ese servlet, para
desplegar el resultado. Un requerimiento de ese JSP entonces obtiene otro servlet, y así sucesivamente. Será difícil mantener muchos servlets y JSP, puede
confundirse al intentar entender el flujo de la aplicación.
Una solución que tiene una granularidad entre esos extremos es dividiendo la aplicación en estados diferentes. Se intenta transferir un diagrama de
transición de estados (por ejemplo, modelado con RationalRose) en páginas
HTML, servlets y JavaServer Pages.
• Applicabilidad.
Este modelo puede usarse en toda aplicación servlet /JSP. Es recomendable este modelo sobre todo en las aplicaciones Web complejas donde muchas
páginas Web y transiciones de páginas tienen que ser desarrolladas.
• Componentes.
Los componentes en esta estructura son:
— Servlet: un requerimiento dado recoge los datos requeridos para el
despliegue de un estado dado o invoca la acción que causa una transición fuera del estado. Esta responsabilidad lo hace el controlador
en un Modelo-Vista-Controlador (MVC) basado en la aplicación.
— JavaServerPage: es el indicador de la generación de código HTML
para un resultado del requerimiento dado.
— Wrapper de Tareas: encapsula el acceso al proceso empresarial de
negocios (datos back-end y función). Esta función realiza el modelo
de wrapper de tareas en una aplicación MVC.
88
CAPÍTULO 3.
SERVLET
— Páginas HTML: en caso de contenido estático y transiciones de estado, no es necesario tecnologías complejas. Un indicador de estado
estático de página HTML.
• Colaboradores.
Un flujo de aplicación Web puede capturarse en un diagrama de transición
de estado (que es, a propósito, una documentación buena para el flujo de la
aplicación). Un diagrama de transición de estado contiene nombres de estado
conectados con los nombres de las ramas.
La solución,es trazar cada componente del diagrama de transición de estado
a un componente de la arquitectura de e-business para que pueda manejarse
mediante WebSphere Aplication Server.
Se separa en el diagrama los estados estáticos y los estados dinámicos.
Las transiciones de estado estáticos son inherentes. Como ellos son estáticos en el controlador y en las transiciones, se puede codificar un estado como
una página HTML que debe ser nombrado después del estado: < el Estado
>.html.
Cuando hereda estados dinámicos, es un tanto más dificultoso. Conforme
a la arquitectura e-business, se divide el estado en modelo, vista y controlador.
• Controlador.
El servlet actúa como el controlador de estado en este escenario. Esto
significa que se captura un servlet por estado dinámico. Nombrando la convención, el servlet es llamado después del estado: < State>Servlet. Haciendo
esto se consigue un método fácil de documentación.
Pensando sobre cada interacción entre el navegador y el servidor de aplicaciones Web (por ejemplo, el servlet) como una sola unidad de trabajo, de
sólo lectura o de actualización. Hay dos flujos básicos de modelos de control,
ambos, llevado a cabo por el servlet. Uno se ocupa del despliegue para un
estado dado, y el otro maneja las acciones que causan un cambio de estado.
• Despliegue de Patrones.
3.1. DESARROLLANDO SERVLETS
89
Este modelo normalmente se manifiesta dentro de HTML como un link,
resultando en un requerimiento Get. El flujo de control para este modelo es:
— El servlet invoca el método apropiado de sólo lectura en el modelo
de estado (ese es el wrapper de la tarea) y selecciona el JSP para
ocuparse del resultado.
— El servlet inicializa el objeto de datos asociado con el JSP, carga el
resultado y coloca la vista del bean en un atributo HttpRequest.
— El servlet remite la demanda al JSP escogido.
— La Página de JavaServer genera el código del HTML.
— El servlet envía el requerimiento al JSP seleccionado.
— El JSP genera el código HTML.
• Vistas.
Las vistas se implementan como un JSP.
• Cosecuencias.
Usando este modelo, es posible conseguir un acercamiento bueno para diseñar una aplicación Web, mediante la utilización de servlets, JSPs, wrapper
de tareas y páginas HTML.
Capítulo 4
J2ME
91
92
4.1
CAPÍTULO 4. J2ME
Introducción
La empresa Sun Microsystems lanzó a mediados de los años 90 el lenguaje de
programación Java que, aunque en un principio fue diseñado para generar aplicaciones que controlaran electrodomésticos como lavadoras, frigoríficos, etc.,
debido a su gran robustez e independencia de la plataforma donde se ejecutase el código, desde sus comienzos se utilizó para la creación de componentes
interactivos integrados en páginas Web y programación de aplicaciones independientes [18].
Estos componentes se denominaron applets y casi todo el trabajo de los
programadores se dedicó al desarrollo de éstos. Con los años, Java ha progresado enormemente en varios ámbitos como servicios HTTP, servidores de
aplicaciones, acceso a bases de datos (JDBC).
Como se ve, Java se ha ido adaptando a las necesidades tanto de los usuarios como de las empresas ofreciendo soluciones y servicios tanto a unos como
a otros.
En estos últimos años Java ha desarrollado soluciones personalizadas para
cada ámbito tecnológico. Sun ha agrupado cada uno de esos ámbitos en una
edición distinta de su lenguaje Java. Estas ediciones son Java 2 Stantard Edition, orientada al desarrollo de aplicaciones independientes y de applets, Java
2 Enterprise Edition, enfocada al entorno empresarial y Java 2 Micro Edition,
orientada a la programación de aplicaciones para pequeños dispositivos.
La edición Java 2 Micro Edition 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 primera versión de
una nueva Java Virtual Machine (JVM) que podía ejecutarse en dispositivos
Palm.
Java Micro Edition 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.).
La tardía aparición de esta tecnología, puede ser debido a que las necesidades de los usuarios de telefonía móvil ha 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
4.1. INTRODUCCIÓN
93
del asentamiento en el mercado de otras, como GPRS, íntimamente asociada
a J2ME y que no ha estado a nuestro alcance hasta hace poco.
4.1.1
Análisis Comparativo
Sun, dispuesto a proporcionar las herramientas necesarias para cubrir las necesidades de todos los usuarios, creó distintas versiones de Java.
El paquete Java 2 se divide en 3 ediciones distintas.
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 C++, pero con componentes de alto nivel,
como soporte nativo de strings y recolector de basura.
• 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.
Esta versión de Java 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, etc.
Java 2 Platform, Enterprise Edition (J2EE): Esta versión está orientada
al entorno empresarial. El software empresarial tiene unas características propias marcadas: 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). De hecho, el sistema se monta sobre
varias unidades o aplicaciones.
En muchos casos, además, el software empresarial requiere que se sea capaz de integrar datos provenientes de entornos heterogéneos. Esta edición
94
CAPÍTULO 4. J2ME
Figura 4.1: Versiones de Java
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.
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, inclusión de un pequeño y rápido
recolector de basura y otras diferencias que se verán más adelante (ver fig. 4.1
de la pág. 94).
4.1. INTRODUCCIÓN
95
J2ME
J2SE
J2EE
javax.microedition
Figura 4.2: Relación entre las APIs de la plataforma Java.
J2ME representa una versión simplificada de J2SE. Sun separó estas dos
versiones ya que J2ME estaba 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 (ver fig. 4.2 de la pág. 95).
4.1.2
Nociones Básicas de J2ME
Los componentes que forman parte de esta tecnología son:
• Por un lado se tiene una serie de máquinas virtuales Java con diferentes
requisitos, cada una para diferentes tipos de pequeños dispositivos.
96
CAPÍTULO 4. J2ME
Figura 4.3: Entorno de ejecución de J2ME
• Configuraciones, que son un conjunto de clases básicas orientadas a conformar el corazón de las implementaciones para dispositivos de características específicas. Existen 2 configuraciones definidas en J2ME: Connected Limited Device Configuration (CLDC ) enfocada a dispositivos
con restricciones de procesamiento y memoria, y Connected Device Configuration (CDC ) enfocada a dispositivos con más recursos.
• Perfiles, que son unas bibliotecas Java de clases específicas orientadas a
implementar funcionalidades de más alto nivel para familias específicas
de dispositivos.
Un entorno de ejecución determinado de J2ME se compone entonces de
una selección de (ver fig. 4.3 de la pág. 96):
1. Máquina virtual.
2. Configuración.
3. Perfil.
4. Paquetes Opcionales.
4.1. INTRODUCCIÓN
97
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.
Como existen dos configuraciones (CLDC y CDC), cada una requiere su
propia máquina virtual. La VM (Virtual Machine) de la configuración CLDC
se denomina KVM y la de la configuración CDC se denomina CVM.
Las características principales de cada una de las máquinas virtuales son:
• KVM
Se corresponde con la Máquina Virtual más pequeña desarrollada por Sun.
Su nombre KVM proviene de Kilobyte (haciendo referencia a la baja ocupación
de memoria, entre 40Kb y 80Kb).
Se trata de una implementación de Máquina Virtual reducida y especialmente orientada a dispositivos con bajas capacidades computacionales y de
memoria. La KVM está escrita en lenguaje C, aproximadamente unas 24000
líneas de código, y fue diseñada para ser:
• 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.
98
CAPÍTULO 4. J2ME
• Lo más completa y rápida posible y sin sacrificar características para las
que fue diseñada.
Sin embargo, esta baja ocupación de memoria hace que posea algunas
limitaciones con respecto a la clásica Java Virtual Machine (JVM):
1. No hay soporte para tipos en coma flotante. No existen por tanto los tipos double ni float. Esta limitación está presente porque los dispositivos
carecen del hardware necesario para estas operaciones.
2. No existe soporte para JNI (Java Native Interface) debido a los recursos
limitados de memoria.
3. No existen cargadores de clases (class loaders) definidos por el usuario.
Sólo existen los predefinidos.
4. No se permiten los grupos de hilos o hilos daemon. Cuándo queramos
utilizar grupos de hilos utilizaremos los objetos Colección para almacenar
cada hilo en el ámbito de la aplicación.
5. No existe la finalización de instancias de clases. No existe el método
Object.finalize().
6. No hay referencias débiles1 .
7. 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.
8. Reflexión2 .
Aparte de la no inclusión de estas características, la verificación de clases
merece un comentario aparte.
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.
1
Un objeto que está siendo apuntado mediante una referencia débil es un candidato para
la recolección de basura. Estas referencias están permitidas en J2SE, pero no en J2ME.
2
La reflexión es el mecanismo por el cual los objetos pueden obtener información de otros
objetos en tiempo de ejecución como, por ejemplo, los archivos de clases cargados o sus
campos y métodos.
4.1. INTRODUCCIÓN
99
Figura 4.4: Preverificación de clases en CDLC/KVM.
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.
• 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 (ver fig. 4.4 de
la pág. 99).
• 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 de J2SE.
100
CAPÍTULO 4. J2ME
Está orientada a dispositivos electrónicos con procesadores de 32 bits de
gama alta y en torno a 2Mb o más de memoria RAM. Las características que
presenta esta Máquina Virtual son:
1. Sistema de memoria avanzado.
2. Tiempo de espera bajo para el recolector de basura.
3. Separación completa de la VM del sistema de memoria.
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).
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.
4.1. INTRODUCCIÓN
101
• Bibliotecas básicas de Java y APIs soportadas.
Existen dos configuraciones en J2ME: CLDC, orientada a dispositivos con
limitaciones computacionales y de memoria y CDC, orientada a dispositivos
con no tantas limitaciones.
Configuración de dispositivos con conexión, CDC (Connected Limited 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.
Esta Máquina Virtual es la CVM (Compact Virtual Machine). La configuración CDC está enfocada a dispositivos con las siguientes capacidades:
• Procesador de 32 bits.
• Disponer de 2 Mb o más de memoria total, incluyendo memoria RAM y
ROM.
• Poseer la funcionalidad completa de la Máquina Virtual Java2.
• Conectividad a algún tipo de red.
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 (ver table 4.1 de la pág.102).
Configuración de dispositivos limitados con conexión, CLDC (Connected
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. Un ejemplo de
éstos dispositivos son: teléfonos móviles, buscapersonas (pagers), PDAs, organizadores personales, etc.
102
CAPÍTULO 4. J2ME
Nombre de 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 e interfaces estándar de E/S.
Clases básicas del lenguaje.
Clases de referencia.
Clases e interfaces de reflection.
Paquete de matemáticas.
Clases e interfaces de red.
Clases e interfaces de seguridad
Clases de certificados de seguridad.
Paquete de texto.
Clases de utilidades estándar.
Clases y utilidades para archivos JAR.
Clases y utilidades para archivos ZIP y
comprimidos.
Clases e interfaces para conexión genérica
CDC.
Tabla 4.1: Librerías de configuración CDC.
CLDC está orientado a dispositivos con ciertas restricciones.
Algunas de éstas restricciones vienen dadas por el uso de la KVM, necesaria
al trabajar con la CLDC debido a su pequeño tamaño. 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.
• Ofrecer bajo consumo, debido a que éstos dispositivos trabajan con suministro de energía limitado, normalmente baterías.
• Tener conexión a algún tipo de red, normalmente sin cable, con conexión
intermitente y ancho de banda limitado (unos 9600 bps).
La CLDC aporta las siguientes funcionalidades a los dispositivos (ver table
4.1. INTRODUCCIÓN
103
4.2 de la pág. 103):
• Un subconjunto del lenguaje Java y todas las restricciones de su Máquina
Virtual (KVM).
• Un subconjunto de las bibliotecas Java del núcleo.
• Soporte para E/S básica.
• Soporte para acceso a redes.
• Seguridad.
Nombre de Paquete CLDC
java.io
java.lang
java.lang.ref
java.lang.reflect
Descripción
Clases e interfaces estándar de E/S.
Clases básicas del lenguaje.
Clases de referencia.
Clases e interfaces de reflection.
Tabla 4.2: Librerías de configuración CLDC.
Perfiles
El perfil es el que define las APIs que controlan el ciclo de vida de la aplicación,
interfaz de usuario, etc. Más 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 (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 puede encontrar grandes diferencias entre 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.
104
CAPÍTULO 4. J2ME
Un perfil siempre se construye sobre una configuración determinada. De
este modo, se podrá pensar en un perfil como un conjunto de APIs que dotan
a una configuración de funcionalidad específica.
Existen unos perfiles que se construirán sobre la configuración CDC y otros
sobre la CLDC.
Para la configuración CDC existen los siguientes perfiles:
• Foundation Profile.
• Personal Profile.
• RMI Profile.
Para la configuración CLDC los siguientes:
• PDA Profile.
• Mobile Information Device Profile (MIDP).
En la fig. 4.5 de la pág. 105 se puede ver cómo quedaría el esquema del
entorno de ejecución al completo.
Un perfil puede ser construido sobre cualquier otro. Sin embargo, una
plataforma J2ME sólo puede contener una configuración.
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.
Este perfil incluye gran parte de los paquetes de la J2SE, pero excluye
totalmente los paquetes “java.awt” Abstract Windows Toolkit (AWT) y “java.swing” que conforman la interfaz gráfica de usuario (GUI) de J2SE. Si una
aplicación requiriera una GUI, entonces sería necesario un perfil adicional.
Personal Profile: El Personal Profile es un subconjunto de la plataforma
J2SE v1.3, y proporciona un entorno con 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 Foundation Profile.
4.1. INTRODUCCIÓN
105
Figura 4.5: Arquitectura del entorno de ejecución de J2ME
RMI Profile: Este perfil requiere una implementación del Foundation Profile y se construye encima de él. 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.
PDA Profile: El 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 pixels (al menos 200x100
pixels) con un factor 2:1.
Mobile Information Device Profile (MIDP): Este perfil está construido sobre la configuración CLDC. Al igual que CLDC fue la primera configuración
definida para J2ME, 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
106
CAPÍTULO 4. J2ME
monocromo).
• Entrada de datos alfanumérica reducida.
• 28 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.
Las aplicaciones desarrolladas utilizando MIDP reciben el nombre de MIDlets (por simpatía con APPlets). Entonces un MIDlet es una aplicación Java
realizada con el perfil MIDP sobre la configuración CLDC.
4.2
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.
Estos dispositivos no disponen de líneas de comandos donde poder ejecutar las aplicaciones requeridas, si no que reside en él un software que es el
encargado de ejecutar los MIDlets y gestionar los recursos que éstos ocupan.
Este software no es otro que el gestor de aplicaciones.
4.2.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 las 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 la memoria del dispositivo, es decir, en ejecución.
4.2. LOS MIDLETS
107
Figura 4.6: Ciclo de vida de un MIDlet.
Ciclo de Vida de un MIDlet
El ciclo de vida de un MIDlet pasa por 5 fases (ver fig. 4.6 de la pág. 107):
descubrimiento, instalación, ejecución, actualización y borrado.
El AMS es el encargado de gestionar cada una de estas fases de la siguiente
manera:
1. Descubrimiento: Esta fase es la etapa previa a la instalación del MIDlet
y es dónde 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
108
CAPÍTULO 4. J2ME
diferentes maneras, dependiendo de las capacidades del dispositivo. Por
ejemplo, esta descarga se puede realizar mediante un cable conectado a
un ordenador o mediante una conexión inalámbrica.
2. Instalación: Una vez descargado el MIDlet en el dispositivo, comienza
el proceso de instalación. En esta fase el gestor de aplicaciones controla todo el proceso informando al usuario tanto de la evolución de la
instalación como de si existiese algún problema durante ésta. Cuándo
un MIDlet está instalado en el dispositivo, todas sus clases, archivos y
almacenamiento persistente están preparados y listos para su uso.
3. Ejecución: Mediante el gestor de aplicaciones se puede iniciar la ejecución de los MIDlets. En esta fase, el AMS tiene la función de gestionar los
estados del MIDlet en función de los eventos que se produzcan durante
esta ejecución.
4. Actualización: El AMS tiene que ser capaz de detectar después de una
descarga si el MIDlet descargado es una actualización de un MIDlet ya
presente en el dispositivo. Si es así, tiene que informar de ello, además
de dar la oportunidad de decidir si se desea realizar la actualización
pertinente o no.
5. Borrado: En esta fase el AMS es el encargado de borrar el MIDlet seleccionado del dispositivo. El AMS pedirá confirmación antes de proceder
a su borrado e informará de cualquier circunstancia que se produzca.
Hay que indicar que el MIDlet puede permanecer en el dispositivo todo
el tiempo que se desee. Después de la fase de instalación, el MIDlet queda
almacenado en una zona de memoria persistente del dispositivo MID.
El usuario de éste dispositivo es el encargado de decidir en qué momento
quiere eliminar la aplicación y así se lo hará saber al AMS mediante alguna
opción que éste suministre.
Estados de un MIDlet en Fase de Ejecución
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.
4.2. LOS MIDLETS
109
Cuándo un MIDlet comienza su ejecución, está en el estado “Activo” pero,
¿qué ocurre si durante su ejecución se recibe una llamada o un mensaje?. El
gestor de aplicaciones debe ser capaz de cambiar el estado de la aplicación en
función de los eventos externos al ámbito de ejecución de la aplicación que se
vayan produciendo.
En este caso, el gestor de aplicaciones interrumpiría la ejecución del MIDlet
sin que se viese afectada la ejecución de éste y lo pasaría al estado de “Pausa”
para atender la llamada o leer el mensaje.
Una vez que se termine de trabajar con el MIDlet y se salga de él, éste
pasaría al estado de “Destruido” dónde sería eliminado de la memoria del
dispositivo. Cuándo se dice que el MIDlet pasa al estado “Destruido” y es
eliminado de memoria, se refiere a la memoria volátil del dispositivo que es
usada para la ejecución de aplicaciones.
Una vez finalizada la ejecución del MIDlet se podrá volver a invocarlo las
veces que se desee ya que éste permanece en la zona de memoria persistente
hasta el momento que se desinstale.
Estados de un MIDlet
Un MIDlet durante su ejecución pasa por 3 estados diferentes:
• Activo: El MIDlet está actualmente en ejecución.
• Pausa: El MIDlet no está actualmente en ejecución. En este estado el
MIDlet no debe usar ningún recurso compartido. Para volver a pasar a
ejecución tiene que cambiar su estado a Activo.
• Destruido: El MIDlet no está en ejecución ni puede transitar a otro
estado. Además se liberan todos los recursos ocupados por el MIDlet.
La fig. 4.7 de la pág. 110 muestra el diagrama de estados de un MIDlet
en ejecución:
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.
110
CAPÍTULO 4. J2ME
Figura 4.7: Estados de un MIDlet.
Un MIDlet también puede cambiar de estado por sí mismo.
4.3
4.3.1
Interfaces Gráficas de Usuario
Introducción a las Interfaces de Usuario
Teniendo en cuenta la diversidad de aplicaciones que se podrán realizar para
los dispositivos MID (dispositivos que soportan MIDP), y los elementos que
proporcionan la configuración CLDC y el perfil MIDP, se dividirá a estos
elementos en dos grupos:
• Por un lado se verá los elementos que componen la interfaz de usuario
de alto nivel. Esta interfaz usa componentes tales como botones, cajas
de texto, formularios, etc. Estos elementos son implementados por cada
dispositivo y la finalidad de usar las APIs de alto nivel es su portabilidad.
Al usar estos elementos, se pierde el control del aspecto de la aplicación
ya que la estética de estos componentes depende exclusivamente del dis-
4.3. INTERFACES GRÁFICAS DE USUARIO
111
Figura 4.8: Jerarquía de clases derivadas de Display e Item
positivo donde se ejecute. En cambio, usando estas APIs de alto nivel
se gana un alto grado de portabilidad de la misma aplicación entre distintos dispositivos. Fundamentalmente, se usan estas APIs cuando se
desea construir aplicaciones de negocios.
• Por otro lado se tienen las interfaces de usuario de bajo nivel. Al crear
una aplicación usando las APIs de bajo nivel, se tendrá un control total
de lo que aparecerá por pantalla. Estas APIs darán un control completo
sobre los recursos del dispositivo y se podrá controlar eventos de bajo
nivel como, por ejemplo, el rastreo de pulsaciones de teclas. Generalmente, estas APIs se utilizan para la creación de juegos donde el control
sobre lo que aparece por pantalla y las acciones del usuario juegan un
papel fundamental.
El paquete javax.microedition.lcdui incluye las clases necesarias para crear
interfaces de usuario, tanto de alto nivel como de bajo nivel. En la fig. 4.8 de
la pág. 111 se ve la organización de estas clases.
112
CAPÍTULO 4. J2ME
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 podrán 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, además de ser capaz de
mostrar los objetos que componen las interfaces.
La Clase Displayable
La clase Displayable representa a las pantallas de la aplicación.
Cada objeto Display puede tener tantos objetos Displayable como se desee.
Las aplicaciones estarán formadas por varias pantallas que se crearán dentro del método constructor. Mediante los métodos getCurrent y setCurrent se
controlará qué pantalla estará visible y accesible en cada momento.
La clase abstracta Displayable incluye los métodos encargados de manejar
los eventos de pantalla y añadir o eliminar comandos.
4.3.2
La Interfaz de Usuario de Alto Nivel
La clase Screen es la superclase de todas las clases que conforman la interfaz
de usuario de alto nivel.
Algunas de estas clases son:
La Clase Alert
El objeto Alert representa una pantalla de aviso. Normalmente se usa cuando
se desea avisar al usuario de una situación especial como, por ejemplo, un
error. Un Alert está formado por un título, texto e imágenes.
4.3. INTERFACES GRÁFICAS DE USUARIO
113
La Clase List
La clase List permite construir pantallas que poseen una lista de opciones.
Esto será muy útil para crear menús de manera independiente. La clase List
implementa la interfaz Choice y esto da la posibilidad de crear tres tipos
distintos de listas (ver tabla 4.3 de la pág. 113).
Tipo
EXCLUSIVE
IMPLICIT
MULTIPLE
Descripción
Lista en la que un sólo elemento puede ser seleccionado
a la vez.
Lista en la que la selección de un elemento provoca un
evento.
Lista en la que cualquier número de elementos pueden
serseleccionados al mismo tiempo.
Tabla 4.3: Tipo de listas.
La Clase TextBox:
Una TextBox es una pantalla que permite editar texto en ella. Cuando se
crea un TextBox, se tendrá que especificar su capacidad, es decir, el número
máximo de caracteres.
Permite también poner restricciones al texto que se puede incluir en una
TextBox. Estas restricciones se encuentran en la clase TextField.
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 puede insertar en un formulario es variable.
114
CAPÍTULO 4. J2ME
4.3.3
La Interfaz de Usuario de Bajo Nivel
Todas las pantallas que se crean usando las APIs de bajo nivel heredan de la
clase Canvas.
La clase Canvas es la superclase de todas las pantallas que usan las APIs
de bajo nivel, al igual que Screen lo era para las pantallas que usaban las APIs
de alto nivel.
No existe ningún impedimento que permita usar en el mismo MIDlet pantallas tanto derivadas de Canvas como de Screen.
La clase Canvas permite manejar eventos de bajo nivel y dibujar cualquier
cosa por pantalla. Por esta razón se usa como base para la realización de
juegos.
Esta clase posee un método abstracto paint() que se debe implementar
obligatoriamente y es el que se encarga de dibujar en la pantalla del dispositivo
MID.
Eventos de Bajo Nivel
Los eventos dentro de la clase Canvas se manejan principalmente de dos formas
distintas:
• A través de Commands.
• A través de códigos de teclas. Este método es el que Canvas proporciona
para detectar eventos de bajo nivel. Estos códigos son valores numéricos
que están asociados a las diferentes teclas de un MID. Estos códigos se
corresponden con las teclas de un teclado convencional de un teléfono
móvil (0-9,*,#). La clase Canvas proporciona estos códigos a través de
constantes que tienen asociados valores enteros (ver tabla 4.4 de la pág.
115).
Con estos códigos anteriores se podrá conocer cuál es la tecla que ha pulsado el usuario.
Canvas, además proporciona unos métodos que permitirán manejar estos
eventos con facilidad. La implementación de estos métodos es vacía, por lo
4.3. INTERFACES GRÁFICAS DE USUARIO
Nombre
KEY_NUM0
KEY_NUM1
KEY_NUM2
KEY_NUM3
KEY_NUM4
KEY_NUM5
KEY_NUM6
KEY_NUM7
KEY_NUM8
KEY_NUM9
KEY_STAR
KEY_POUND
115
Valor
48
49
50
51
52
53
54
55
56
57
42
35
Tabla 4.4: Código de teclas.
que se debe implementar los que se necesiten en la aplicación de acuerdo con
el propósito de ésta.
Manipulación de Elementos en una Pantalla Canvas
El Método Paint() La clase Canvas posee un método abstracto paint (Graphics g) que se ocupa de dibujar el contenido de la pantalla.
Para ello, se usa un objeto de la clase Graphics que es el que contiene
las herramientas gráficas necesarias y que se pasa como parámetro al método
paint().
Cuando se implemente este método se debe tener en cuenta lo siguiente:
• El método paint() nunca debe ser llamado desde el programa. El gestor
de aplicaciones es el que se encarga de realizar la llamada a éste método
cuando sea necesario.
• Cuando se desee que se redibuje la pantalla actual debido a alguna acción en concreto del usuario o como parte de alguna animación, se debe
realizar una llamada al método repaint(). Al igual que ocurre con los
116
CAPÍTULO 4. J2ME
eventos de teclado, la petición se encolará y será servida cuando retornen
todas las peticiones anteriores a ella.
• La implementación del MID no se encarga de limpiar la pantalla antes
de cada llamada al método paint(). Por esta razón, éste método debe
pintar cada pixel de la pantalla para, de esta forma, evitar que se vean
porciones no deseadas de pantallas anteriores.
La Clase Graphics
Cuando se invoca al método paint(Graphics g) se
debe pasarle como parámetro un objeto Graphics. Este objeto proporciona la
capacidad de dibujar en una pantalla Canvas. Un objeto Graphics se obtendrá
sólo de dos maneras:
• Dentro del método paint() de la clase Canvas. Aquí se puede usar el
objeto Graphics para pintar en la pantalla del dispositivo.
• A través de una imagen.
La clase Graphics posee multitud de métodos que permiten seleccionar
colores, dibujar texto, figuras geométricas, etc.
Manejo de Colores La clase Graphics proporciona métodos con los que se
puede seleccionar colores, pintar la pantalla de un color determinado o zonas
de ellas, dibujar líneas, rectángulos, etc.
Se dispone de varios métodos que suministra la clase Display con los que
se puede saber si el dispositivo en cuestión cuenta con pantalla a color o escala
de grises (Display.isColor()), y también se puede conocer el número de colores
soportados (Display.numColors()).
En particular, la clase Graphics proporciona un modelo de color de 24 bits,
con 8 bits para cada componente de color: rojo, verde y azul.
Se puede seleccionar un color invocando al método Graphics.setColor(int
RGB) o Graphics.setColor(int rojo, int verde, int azul) donde se indica los
niveles de los componentes que conforman el color a usar.
Graphics g;
g.setColor(0,0,0) // Se selecciona el color negro
4.4. RECORD MANAGEMENT SYSTEM
117
g.setColor(255,255,255) // Se selecciona el color blanco
g.setColor(0,0,255) // Se selecciona el color azul
Manejo de Texto Es posible incluir texto en una pantalla Canvas. Al
igual que con los colores, es posible seleccionar un estilo de letra con el que
posteriormente se podrá escribir texto por pantalla. Para ello se tiene la clase
Font que permitirá seleccionar el tipo de letra y almacenarlo en un objeto de
este tipo para posteriormente usarlo en el Canvas.
Para seleccionar un tipo de letra se debe tener en cuenta los tres atributos
que definen una fuente: Aspecto, Estilo y Tamaño.
Realizando combinaciones de atributos se tienen bastantes tipos de fuentes
donde elegir.
4.4
4.4.1
Record Management System
Conceptos Básicos
El sistema de gestión de registros o RMS , permite almacenar información
entre cada ejecución del MIDlet.
Esta información será guardada en el dispositivo en una zona de memoria
dedicada para este propósito. La cantidad de memoria y la zona asignada para
ello dependerá de cada dispositivo.
Modelo de Datos
El RMS está implementado en una base de datos basada en registros (ver fig.
4.9 de la pág. 118).
Los MIDlets son los encargados de crear los Record Stores para comunicarse
con ellos. Estos Record Stores quedan almacenados en el dispositivo y pueden
ser accedidos por cualquier MIDlet que pertenezca a la misma suite (ver fig.
4.10 de la pág. 118).
118
CAPÍTULO 4. J2ME
Figura 4.9: Comunicación entre un MIDlet y el RMS
Figura 4.10: Acceso a un RMS a través de una MIDlet suite
4.4. RECORD MANAGEMENT SYSTEM
119
Figura 4.11: Estructura de un Record Store
Record Stores
Las propiedades de estos almacenes de registros son:
1. Cada Record Store está compuesto por cero o más registros.
2. Un nombre de Record Store es sensible a mayúsculas y minúsculas y está
formado por un máximo de 32 caracteres UNICODE.
3. Dentro de una suite no pueden coexistir dos Record Stores con el mismo
nombre.
4. Si una suite de MIDlets es borrada del dispositivo MID, todos los Record
Stores pertenecientes a esa suite se borrarán.
5. Es posible que un MIDlet acceda a un Record Store creado por otra
suite, siempre que ésta de permiso para ello.
Un Record Store tal como su nombre indica es un almacén de registros.
Estos registros son la unidad básica de información que utiliza la clase RecordStore para almacenar datos.
Cada uno de estos registros está formado por dos unidades:
• Un número identificador de registro (Record ID) que es un valor entero
que realiza la función de clave primaria en la base de datos.
• Un array de bytes que es utilizado para almacenar la información deseada
(ver fig. 4.11 de la pág. 119).
Además de un nombre, cada Record Store también posee otros dos atributos:
120
CAPÍTULO 4. J2ME
Figura 4.12: Estructura completa de un Record Store
• Número de versión: Es un valor entero que se actualiza conforme se
vayan insertando, modificando o borrando registros en el Record Store.
• Marca temporal: Es un entero de tipo long que representa el número de
milisegundos desde el 1 de enero de 1970 hasta el momento de realizar
la última modificación en el Record Store (ver fig. 4.12 de la pág. 120).
4.4.2
Operaciones Con Record Stores
Creación de un Record Store
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 abre el Record Store con el nombre pasado como parámetro o
crea uno si no existe cuando el parámetro createIfNeccesary es true. Además,
existen otra versión alternativa de este método:
• static RecordStore openRecordStore(String name, boolean createIfNeccesary, int autorización, boolean writable).
4.5. COMUNICACIONES
4.5
Comunicaciones
4.5.1
Conceptos Básicos
121
En J2ME y J2SE se usan streams para escribir y leer datos. Estas clases
están en el paquete java.io por lo que no forman parte del perfil MIDP. En
cambio, se dispone del paquete javax.microedition.io, el cual contiene las clases
que dan soporte para el trabajo en red y comunicaciones en las aplicaciones
MIDP. Este paquete existe en contraposición con el paquete java.net de J2SE.
Las aplicaciones MIDP usan 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.
De esta manera, el paquete java.io se encargará de proporcionar las clases
necesarias para leer y escribir en estas conexiones.
Las clases orientadas a la conexión en red y comunicaciones reciben el
nombre de Generic Connection Framwork. En la Figura 4.13 de la página 122
se ve cómo se organizan jerárquicamente. También se verá cómo se organizan
las interfaces que nos suministra la especificación MIDP y que están en un
nivel superior al GCF ya que implementan los detalles de diversos protocolos
de comunicación.
Como se ve, la raíz del árbol es la interfaz Connection que representa la
conexión más genérica y abstracta que podemos crear. El resto de interfaces
que derivan de Connection representan los distintos tipos de conexiones que
se pueden crear.
4.5.2
Clases y Conexiones del Generic Connection Framework
La anterior jerarquía de clases nos da una idea de la filosofía que sigue el
Generic Connection Framework. Los dispositivos MID, poseen bastantes restricciones. Por esta razón, se hace imposible poseer la implementación de los
distintos protocolos existentes. 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.
122
CAPÍTULO 4. J2ME
Figura 4.13: Jerarquía de interfaces
4.5. COMUNICACIONES
123
Clase Connector
public class Connector
El GCF proporciona la clase Connector que esconde los detalles de la
conexión. De esta forma se podrá realizar cualquier tipo de conexión usando
sólo esta clase y sin preocuparse de cómo se implementa el protocolo requerido.
La conexión se realiza mediante el siguiente mensaje genérico:
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.
Interfaz Connection
public abstract interface 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 él. Una conexión de tipo Connection se crea después de que un objeto Connector invoque al método open(). Esta interfaz representa a la conexión
más abstracta y genérica posible. Por esta razón, el único método que posee
esta interfaz es el de public void close() que cierra la conexión..
Interfaz InputConnection
public abstract interface InputConnection extends Connection
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
124
CAPÍTULO 4. J2ME
InputStreams, estos métodos son DataInputStream openDataInputStream() e
InputStream openInputStream().
El siguiente ejemplo ilustra cómo se realiza una conexión a través de esta
interfaz:
String url = www.midireccion.com;
InputConnection conexión = (InputConnection)Connector.open(url);
DataInputStream dis = conexion.openDataInputStream();
Interfaz OutputConnection
public abstract interface OutputConnection extends Connection
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, estos métodos son DataOutputStream openDataOutputStream() y OutputStream openOutputStream().
La conexión a través de esta interfaz se realiza de forma análoga a la
interfaz InputConnection.
Interfaz StreamConnection
public abstract interface StreamConnection extends InputConnection, OutputConnection
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.
El siguiente ejemplo ilustra cómo se crea una conexión de este tipo en la
que se va a crear un stream de entrada del que se leerá la información:
StreamConnection sc = (StreamConnection)Connector.open(url);
InputStream is = sc.openInputStream();
4.5. COMUNICACIONES
125
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int c;
while((c = is.read()) != -1){
baos.write(c);
}
Téngase en cuenta que la dirección url que se usa al crear la conexión puede
apuntar a un fichero (url = http://www.direccion.com/fichero1.txt) o a una
imagen (url = http://www.direccion.com/imagen.png); en cualquier caso, esa
información la guardamos en un ByteArrayOutputStream que podemos tratar
de la manera que más convenga.
Interfaz ContentConnection
public abstract interface ContentConnection extends StreamConnection
La interfaz ContentConnection extiende a la interfaz StreamConnection.
Esta interfaz representa conexiones que pueden describir su contenido de alguna forma. En las conexiones anteriores se transmitían bytes sin importar
su composición, pero en estas conexiones la estructura de bytes a transmitir
debe ser conocida de antemano.
Concretamente, esta interfaz representa a familias de protocolos en los que
se definen atributos los cuales describen los datos que se transportan.
Con esta interfaz podemos conocer de antemano la longitud de datos que
recibimos, con lo que las operaciones de lectura de datos se pueden simplificar
mucho haciendo uso de esta información. Este mecanismo de lectura se puede
apreciar en el siguiente ejemplo donde se sustituye el bucle usado para realizar
la lectura de datos por dos simples líneas de código:
ContentConnection cc = (ContentConnection)Connector.open(url);
is = cc.openInputStream();
byte[] datos;
int long = (int)cc.getLength();
126
CAPÍTULO 4. J2ME
if (long != -1) {
datos = new byte[long];
is.read(datos);
}
else // Realizamos bucle de lectura de datos
Este algoritmo mejora al bucle del ejemplo anterior ya que realizamos la
lectura de datos de una sola vez, en vez de byte a byte.
Interfaz StreamConnectionNotifier
public abstract interface StreamConnectionNotifier extends Connection
Esta interfaz deriva directamente de Connection. Representa al establecimiento de conexiones lanzadas por clientes remotos. Si la conexión se realiza
con éxito, se devuelve un StreamConnection para establecer la comunicación.
Interfaz DatagramConnection
public abstract interface DatagramConnection extends Connection
Esta interfaz define las capacidades que debe tener una conexión basada
en datagramas. A partir de esta interfaz se pueden definir distintos protocolos
basados en datagramas, pero su implementación habría que realizarla a nivel
del perfil.
4.5.3
Comunicaciones HTTP
Como se ha dicho, el GCF esconde los detalles de la conexión y además no
implementa ningún protocolo en concreto ya que esta implementación debe
estar en el nivel de los perfiles. En este punto se verá en detalle la interfaz
HttpConnection que implementa el protocolo 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
4.5. COMUNICACIONES
127
comunicación es la que suele realizarse entre un navegador web (cliente) y un
servidor web (servidor).
Una conexión HTTP pasa por tres estados, como ilustra la figura ?? de la
página ??.
Estados de una conexión HTTP
Estado de Establecimiento
En este estado es dónde se 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 sólo pueden ser invocados en este estado (ver
Tabla 4.5 en la pág. 128).
El primer método establece el tipo de petición que vamos a realizar. Esta
petición puede ser de los tipos indicados en la Tabla 4.6 de la pág. 128.
El segundo método establece cierta información adicional a la petición.
Esta información 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.
128
CAPÍTULO 4. J2ME
Método
public void setRequestMethod(String tipo)
public void setRequestProperty(String clave, String
valor)
Descripción
Establece el tipo de petición.
Establece una propiedad de la petición.
Tabla 4.5: Métodos relacionados con la etapa de establecimiento
Tipo
GET
POST
HEAD
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.
Tabla 4.6: Tipos de peticiones
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.
//Creamos la conexión
String url = http://www.midireccion.com/local?sala=1&luz=apagada;
HttpConnection hc = (HttpConnection)Connector.open(url);
// Informamos del tipo de petición que vamos a efectuar
hc.setRequestMethod(HttpConnection.GET);
//Establecemos algunos campos de cabecera
hc.setRequestProperty(User-Agent,Profile/MIDP-2.0
Configuration/CLDC-1.0);
hc.setRequestProperty(Content-Language,es-ES);
El código anterior establece la comunicación con el servidor y deja prepara-
4.5. COMUNICACIONES
129
da una conexión para intercambiar información con éste. Como se aprecia, 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 sala=1&luz=apagada. 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 una petición de este tipo, 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:
//Creamos la conexión
String url = http://www.midireccion.com;
HttpConnection hc = (HttpConnection)Connector.open(url);
// Informamos del tipo de petición que vamos a efectuar
hc.setRequestMethod(HttpConnection.POST);
//Establecemos algunos campos de cabecera
hc.setRequestProperty(User-Agent,Profile/MIDP-2.0
Configuration/CLDC-1.0);
hc.setRequestProperty(Content-Language,es-ES);
// Enviamos el cuerpo de la petición
OutputStream os = hc.openOutputStream();
os.write(sala=1.getBytes());
os.write(&luz=apagada.getBytes());
os.flush();
Estado de 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. Este es un buen momento para ver cómo se realiza la respuesta
130
CAPÍTULO 4. J2ME
del servidor hacia el cliente.
Respuesta del Servidor Al igual que la petición del cliente poseía distintas
partes, la respuesta del servidor se compone de:
• Línea de estado.
• Cabecera.
• Cuerpo de la respuesta.
La interfaz HttpConnection dispone de 35 códigos de estado diferentes.
Básicamente podemos dividirlos 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.
• 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 el 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().
4.5. COMUNICACIONES
4.5.4
131
Otras Conexiones
Interfaz HttpsConnection
public interface HttpsConnection extends HttpConnection
HTTPS es la versión segura del protocolo HTTP. Esta interfaz define los
métodos necesarios para establecer una conexión de este tipo. En esta conexión, los parámetros de la petición se deben establecer antes de que ésta se
envíe.
Un objeto de tipo HttpsConnection es devuelto invocando al método Connector.open(url) de la siguiente manera:
String url = https://www.direccion.com;
HttpsConnection conexion = (HttpsConnection)Connector.open(url);
Algunos métodos de esta interfaz pueden lanzar la excepción CertificateException para indicar distintos fallos mientras se establece una conexión
segura.
Interfaz UDPDatagramConnection
public interface UDPDatagramConnection extends DatagramConnection
Esta interfaz representa una conexión basada en datagramas en los que se
conoce su dirección final. Esta interfaz se usa cuando el parámetro url del
método Connector.open(url) tiene el siguiente formato:
url = datagram://<host>:<port>;
y la conexión se realiza de la siguiente manera :
UDPDatagramConnection dc =
UDPDatagramConnection)Connector.open(url);
Si la cadena de conexión omite el host y el port, el sistema deberá de
localizar un puerto libre.
132
CAPÍTULO 4. J2ME
Interfaz CommConnection
public interface CommConnection extends StreamConnection
Esta interfaz representa una conexión mediante un puerto serie. Tal y
como su nombre indica, en esta conexión los bits de datos se transmiten secuencialmente, en serie. Esta conexión se establece cuando el parámetro url
que le pasamos al método Connector.open(url) tiene el siguiente formato:
url = comm:<port><parámetros>;
y la conexión se realiza de la siguiente manera :
CommConnection cc = (CommConnection)Connector.open(url);
Los parámetros van separados por ; .
Por otro lado el nombre del puerto se debe indicar según el siguiente criterio:
• COM# para puertos RS-232.
• IR# para puertos IrDA IRCOMM.
donde # indica el número asignado al puerto.
Interfaz SocketConnection
public interface SocketConnection extends StreamConnection
Esta interfaz define una conexión entre sockets basados en streams. La
conexión con el socket de destino tiene el siguiente formato:
url = socket://<host>:<port>;
y la conexión se realiza de la siguiente manera :
SocketConnection sc = (SocketConnection)Connector.open(url);
Esta conexión está basada en la interfaz StreamConnection. Un StreamConnection puede ser tanto de entrada como de salida. Por otro lado si, por
4.5. COMUNICACIONES
133
ejemplo, el sistema proporciona un sistema de comunicación duplex, para cerrar la comunicación a través del socket es necesario cerrar los streams de
entrada y de salida.
Si tan sólo se cierra el canal de entrada, se puede seguir mandando información por el de salida. Incluso una vez cerrados ambos, es posible volverlos
a abrir si aún no se ha cerrado el socket.
Interfaz SecureConnection
public interface SecureConnection extends SocketConnection
Esta interfaz representa una conexión segura entre sockets. Esta conexión
se consigue invocando al método Connector.open(url) de la siguiente forma:
String url = ssl://<host>:<port>;
y la conexión se realiza de la siguiente manera :
SecureConnection ssc = (SecureConnection)Connector.open(url);
Si el establecimiento de la conexión falla, se lanzaría una excepción del
tipo CertificateException.
Interfaz ServerSocketConnection
public interface ServerSocketConnection extends StreamConnectionNotifier
Esta interfaz representa una conexión con un servidor de sockets. Este tipo
de conexión se establece cuando invocamos al método Connector.open(url) sin
especificar el host:
ServerSocketConnection ssc =
(ServerSocketConnection)Connector.open(socket://:00);
Capítulo 5
Introducción a DB2
135
136
CAPÍTULO 5. INTRODUCCIÓN A DB2
5.1
DB2 Universal Database (DB2 UDB)
DB2 Universal Database, es una base de datos universal. Es completamente
escalable, veloz y confiable. Corre en modo nativo en casi todas las plataformas, como Windows NT, Sun Solaris, HP-UX, AIX, y OS/2 [19].
• Características y funciones:
— 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) multiplataforma, especialmente diseñada para
ambientes distribuidos, permitiendo que los usuarios locales compartan información con los recursos centrales.
• Integridad:
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).
• Escalabilidad:
Sus características distintivas de escalabilidad le permiten almacenar información en un amplio rango de equipos, desde una PC portátil hasta un
complejo ambiente de mainframes procesando en paralelo.
• Web enabled para e-business:
5.1. DB2 UNIVERSAL DATABASE (DB2 UDB)
137
Figura 5.1: Almacenamiento de Documentos XML en DB2.
Incluye tecnología basada en Web que permite generar aplicaciones en las
Intranets y responder a las oportunidades de negocios disponibles en Internet.
Además, DB2 UDB provee soporte a Java.En la figura 5.1 de la pág.137 se
grafica el almacenamiento de documentos XML mediante DB2.
• Facilidad de instalación y uso:
La primera versión de DB2 para NT fue reconocida en el mercado como
una base de datos muy poderosa, pero difícil de instalar y usar. En esta
versión (DB2 UDB), IBM agregó muchas herramientas gráficas para facilitar
el uso tanto de usuarios, como administradores y desarrolladores. Incluye guías
para operaciones como instalación, configuración de performance, setup, etc.
Además, se agregaron herramientas para facilitar las tareas de integración con
otras bases de datos, tecnologías de networking y desarrollo de aplicaciones
[20].
• Universalidad:
138
CAPÍTULO 5. INTRODUCCIÓN A DB2
DB2 UDB es la única base de datos realmente universal, es multiplataforma
(16 plataformas - 10 no IBM), brinda soporte a un amplio rango de clientes,
soporta el acceso de los datos desde Internet y permite almacenar todo tipo
de datos incluyendo texto, audio, imágenes y video o cualquier otro definido
por el usuario.
5.2
Funciones Complementarias
• Conectividad.
Las herramientas de conectividad permiten acceder a los datos más allá de
donde ellos se encuentren. El slogan “cualquier cliente, a cualquier servidor,
en cualquier red” está completamente sustentado por la funcionalidad que sus
herramientas ofrecen. EL DB2 Connect permite acceder a los datos de DB2 en
mainframe o AS/400, desde Windows 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.
• Data Warehousing.
DB2 UDB provee la infraestructura necesaria para soportar el proceso de
toma de decisiones en cualquier tamaño y tipo de organización. Está dirigido
a resolver la problemática a nivel departamental (Data Marts), ya que un
único producto provee la capacidad para acceder a datos en Oracle, Sybase,
Informix, Microsoft SQL Server, VSAM o IMS, además de la familia DB2.
Permite de forma totalmente gráfica acceder, transformar y distribuir los datos
automáticamente y sin programar una línea de código.En la figura 5.2 de la
pág. 139 se refleja el Esquema Conceptual de Almacenes de Datos en DB2 [19].
• Data Mining.
DB2 UDB posibilita el análisis orientado al descubrimiento de información escondida en los datos, realizando modelización predictiva, segmentación
de la base de datos, análisis de vínculos, o detección de desviaciones. Incluye las siguientes técnicas: clustering (segmentación), clasificación, predicción,
5.2. FUNCIONES COMPLEMENTARIAS
139
Figura 5.2: Esquema Conceptual de los Almacenes de Datos.
descubrimiento asociativo, descubrimiento secuencial de patrones y secuencias
temporales. Todas las técnicas mencionadas permiten realizar segmentación
de clientes, detección de fraudes, retención de clientes, ventas cruzadas, etc.
• Partición Simple sobre un Único Procesador.
Este entorno se basa en memoria y disco, conteniendo una única CPU.
Este ambiente ha sido denominado de diversas maneras : base de datos aislada
(standalone database), base de datos cliente/servidor (client/server database),
base de datos serial (serial database), sistema uniprocesador (uniprocessor
system), y entorno nodo simple/ no paralelo (single node/non-parallel).
La base de datos en este ambiente sirve para cubrir todas las necesidades
de un departamento o de una pequeña oficina de una empresa donde los datos y los recursos del sistema (incluyendo un único procesador o CPU) son
administrados por un único administrador de la base.
• Capacidad y Escalabilidad.
A este ambiente se le pueden agregar mas discos. Al tener uno o más
servidores de entrada-salida para mas de un disco permite que más de una
operación de entrada-salida ocurra al mismo tiempo.
140
CAPÍTULO 5. INTRODUCCIÓN A DB2
Un sistema de procesador único esta limitado por la cantidad de espacio
en disco que pueda manejar dicho procesador. Sin embargo, como la carga de
trabajo aumenta, una sola CPU puede llegar a ser insuficiente para satisfacer
las peticiones solicitadas por los usuarios, aún sin importar cuántos discos y/o
memoria adicional hayan sido agregados [21].
Si se ha alcanzado la máxima capacidad o escalabilidad, se podría considerar cambiarse a un sistema de partición única con múltiples procesadores. A
continuación se describe esta configuración.
— Partición Simple con Múltiples Procesadores
Este entorno se compone de varios procesadores de igual potencia dentro
de la misma máquina, llamándose a este ambiente Sistema Simétrico Multiprocesador (symmetric multi-processor o SMP). Los recursos tales como espacio
de disco y memoria son compartidos. En esta máquina se encuentran más
discos y memoria en comparación a una base de datos de partición simple, en
el ambiente de procesador único.
Este entorno es de fácil administración, debido a que todo esta ubicado en
una sola máquina y además los discos y memoria están compartidos.
Con varios procesadores disponibles, diferentes operaciones de la base de
datos pueden ser completadas significativamente más rápido que en bases de
datos asignadas a un solo procesador. DB2 también puede dividir el trabajo
de una consulta simple entre los procesadores disponibles para mejorar la
velocidad de procesamiento.
Otras operaciones de la base de datos, tales como el resguardo (backup)
y creación de índices sobre datos existentes pueden también aprovechar la
ventaja de trabajar con múltiples procesadores.
∗ Capacidad y Escalabilidad
En este entorno se pueden agregar más procesadores. Sin embargo, es
posible que los distintos procesadores traten de acceder al mismo dato en el
mismo tiempo, lo cual generará la aparición de limitaciones a medida que las
operaciones de se incrementen. Con discos y memoria compartidos, se puede
efectivamente compartir todos los datos de la base.
Una aplicación en un procesador puede estar accediendo un dato al mismo
tiempo que otra aplicación lo hace en otro procesador, causando así que la
5.3. CONFIGURACIONES DE PARTICIONES MÚLTIPLES
141
segunda aplicación espere para acceder a ese dato.
Se puede incrementar la capacidad de entrada-salida de la partición de la
base de datos asociada a un procesador, así como también el número de discos.
También se pueden establecer servidores de entrada-salida para repartir las
solicitudes de entrada-salida. Al tener uno o mas servidores de entrada-salida
para cada disco permite que una o mas operaciones de entrada-salida tengan
lugar al mismo tiempo.
Si se ha alcanzado la máxima capacidad o escalabilidad, se puede considerar la idea de cambiar la base a un sistema de partición múltiple, descrito a
continuación.
5.3
Configuraciones de Particiones Múltiples
Además de los entornos antes mencionados, se puede dividir la base de datos
en particiones múltiples, cada una en su propia máquina. Y además varias
máquinas con particiones múltiples de una base de datos pueden ser agrupadas.
Esta sección describe las siguientes configuraciones de particiones posibles
:
• Particiones en sistemas cada uno con un procesador.
• Particiones en sistemas cada uno con múltiples procesadores.
• Particiones lógicas de base de datos.
5.3.1
Particiones con un Procesador
En este entorno existen varias particiones de base de datos, cada una de las
cuales sobre su propia máquina y con su propio procesador, memoria y discos.
Una máquina consiste de una CPU, memoria, y disco con todas las máquinas
conectadas mediante una instalación de comunicación.
Otros nombres dados a este entorno son los siguientes : cúmulo (cluster),
cúmulo de uniprocesadores (cluster of uniprocessors), entorno de procesamiento masivo en paralelo (massively parallel procesing o MPP), o configuración
142
CAPÍTULO 5. INTRODUCCIÓN A DB2
compartido-nada (shared-nothing configuration). El último nombre refleja
exactamente el arreglo de recursos en este ambiente.
A diferencia de un entorno SMP (Sistema Simétrico Multiprocesador ), un
entorno MPP (Particiones Múltiples con un procesador ) no tiene discos ni
memoria compartidos. El entorno MPP elimina las limitaciones introducidas
al compartir memoria y disco.
Un entorno de base de datos particionado permite que una base de datos
continué siendo un conjunto lógico mientras que físicamente esta dividida a
través de más de una partición. Para los usuarios y/o aplicaciones, la base
de datos puede ser utilizada como un todo y el hecho de que los datos están
particionados es transparente. El trabajo a ser realizado con los datos puede
ser dividido para cada administrador de base de datos, de esta forma cada
administrador de la base de datos en cada partición, trabaja sobre su propia
parte de la base de datos.
• Capacidad y Escalabilidad:
En este entorno se pueden agregar mas particiones de base de datos (nodos)
a la configuración. En algunas plataformas, por ejemplo RS/6000, el máximo
es de 512 nodos. Sin embargo, podría existir un problema práctico relacionado
con la administración de tal numero de máquinas e instancias.
Si se ha llegado a la máxima escalabilidad y capacidad, se puede considerar la opción de migrar a un sistema donde cada partición posea múltiples
procesadores.
5.3.2
Particiones con Múltiples Procesadores
Como alternativa de una configuración en la cual cada partición tiene un
procesador único, se puede utilizar una en la cual una partición posea múltiples
procesadores. A esto se lo denomina Cúmulo SMP (SMP Cluster).
Esta configuración combina las ventajas de un SMP y el paralelismo de
un MPP. Esto significa que una consulta (query) puede ser realizada en una
partición simple a través de múltiples procesadores. Además esto implica
que una consulta (query) puede ser hecha en paralelo a través de particiones
múltiples.
5.4. PARALELISMO MEJOR ADAPTABLE A CADA EH
143
• Capacidad y Escalabilidad
En este entorno se pueden adicionar mas particiones a la base de datos,
como se vé en la sección anterior. También se pueden agregar mas procesadores
a las particiones existentes en la base de datos.
5.3.3
Particiones Lógicas de Base de Datos
La partición lógica de una base de datos se diferencia de una partición física en que no se logra el control de la máquina entera. A pesar de que la
máquina comparte sus recursos, la partición no lo hace. Esto significa que los
procesadores son compartidos pero no lo son el/los discos y la memoria.
Una razón lógica para utilizar particiones lógicas es la de brindar escalabilidad. El administrador de base de datos múltiple que se ejecuta en particiones
lógicas múltiples, puede hacer un uso más completo de los recursos disponibles
que un administrador de una base simple de datos. Se gana mayor escalabilidad
sobre una máquina SMP mediante la adición de particiones, particularmente
en aquellas máquinas con varios procesadores.
Mediante la partición de la base de datos, se puede administrar y recuperar
cada partición por separado.
También se debe notar que la habilidad de tener dos o mas particiones
coexistiendo en la misma máquina (sin importar el número de procesadores)
permite una mayor flexibilidad al diseñar configuraciones avanzadas de disponibilidad y estrategias para hacer frente a caídas del sistema.
5.4
Resúmen del Paralelismo Mejor Adaptable a cada Entorno de Hardware
La siguiente tabla 5.1 de la pág. 144 resume los tipos de paralelismo que mejor
se adaptan a los diferentes entornos de hardware.
144
CAPÍTULO 5. INTRODUCCIÓN A DB2
Entorno de
Hardware
Paralelismo
I/O
Si
Paralelismo Inter
Consulta
Paralelismo Intra
Partición
No
Paralelismo Inter
Consulta
Paralelismo Inter
Partición
No
Partición Simple,
Único Procesador
Partición Simple,
Múltiples
Procesadores
Particiones Múltiples,
Un Procesador
Particiones Múltiples,
Múltiples
Procesadores
Particiones Lógicas
de Base de Datos
Si
Si
No
Si
No
Si
Si
Si
Si
Si
Si
Si
Tabla 5.1: Paralelismo mejor Adaptable a cada Entorno de Hardware
5.4.1
Herramientas de Administración
Desde el punto de vista del administrador de base de datos, el DB2 incluye
una larga lista de herramientas DBA. Además de esto hay: utilidades para
B/R, reorganizador, importar/exportar y alta velocidad de llamadas, están
incluidas y pueden ser ejecutadas a través de un objeto GUI Browser.
• DB2 Administración de Servidores.
El DB2 administración de servidores (DAS) es una instancia de DB2 que
habilita administración remota de servidores DB2. Esta instancia es creada y
usada en una forma similar a cualquier instancia de DB2. Se puede tener una
sola DAS sobre la máquina.
• Asistente para la Configuración de clientes.
El asistente de configuración de clientes ayuda a manejar las conexiones
de las bases de datos con servidores de base de datos remotas [22].
5.4. PARALELISMO MEJOR ADAPTABLE A CADA EH
145
Este puede correr bajo servidores OS/2 y Windows NT, así como el cliente
corre bajo OS/2, Windows NT y Windows 95. Con el asistente de configuración de clientes se podrá :
— Definir conexiones a base de datos de modo que éstas pueden ser
utilizadas por aplicaciones. Existen 3 métodos:
∗ Examinar la red por base de datos disponibles y seleccionar
una. El cliente automáticamente se configura para esa base de
datos.
∗ Usar los perfiles de acceso a base de datos que provee el administrador para definir automáticamente las conexiones.
∗ Configuración manual de conexiones a base de datos para modificar algunos parámetros de conexión requeridos.
— Remover base de datos catalogadas o modificar sus propiedades.
— Testear la conexión con la base de datos identificada en el sistema
para asegurar que se puede establecer la conexión con el servidor
que necesita.
— Enlazar aplicaciones a una base de datos seleccionando utilidades
o enlazar archivos de una lista.
— Establecer conexiones con servidores DRDA si la conexión DB2 está
instalada.
• Administrador
El administrador es usado para monitorear y cambiar el mejoramiento de
aplicaciones que corren a través de la base de datos.
Consiste en dos partes:
— Una utilidad de frente-final.
— Un dominio.
Cuando arranca el administrador, se ejecuta el comando de inicio del administrador de utilidades de front-end, quienes ejecutan el dominio. Por default,
el dominio es iniciado sobre toda partición en una base de datos particionada, pero se puede también usar la utilidad front-end para iniciar un dominio
simple de una partición específica para monitorear la actividad a través de la
146
CAPÍTULO 5. INTRODUCCIÓN A DB2
partición de base de datos encontradas allí. O un dominio puede monitorear
la actividad sobre una partición-simple de base de datos.
Además un administrador de dominio colecciona estadísticas sobre las aplicaciones que corren a través de la base de datos. Estas son chequeadas a través
de reglas que pueden ser especificadas en el archivo de configuración del administrador aplicadas a esa base de datos específica.
El administrador actúa de acuerdo a éstas reglas. Por Ej.: una regla
puede indicar que la aplicación esta usando demasiados recursos. En éste caso
el administrador puede cambiar las prioridades de la aplicación o forzarla a
dejar la base de datos, de acuerdo con las instrucciones específicas en el archivo
de configuración del administrador.
Si la acción asociada con ésta regla cambia las prioridades de la aplicación,
el administrador cambia las prioridades del solicitante sobre la partición de la
base de datos en la que el administrador detecta la violación de recurso. Si la
acción asociada con la regla es de forzar la aplicación, ésta será forzada siempre
que el administrador que ha detectado la violación del recurso esté corriendo
sobre el nodo coordinador de la aplicación o en un entorno particionado de la
base de datos.
El administrador también almacena (logs) cualquier acción que tome, se
pueden consultar éstos archivos log para rever las acciones tomadas por el
administrador.
5.4.2
Estándares Soportados en DB2
La UDB DB2 se adapta muy bien a los estándares industriales haciéndola
muy integrable con otros productos IBM y también con aquellos que no lo son.
La UDB DB2 soporta estándares API incluyendo ANSI SQL92E, Microsoft
OBDC y JAVA/JDBC.
Con respecto a las aplicaciones de tipo cliente, se tienen procedimientos
almacenados y funciones definidas por el usuario a través de VisualAge. Esto
provee una amplia elección de desarrollo de aplicaciones y herramientas finales
para ser elegidas por los usuarios.
La UDB DB2 también puede ser integrada con servicios de seguridad para
administrar servidores de nombre y direcciones. DB2 también soporta SNMP
y puede ser monitoreada desde cualquier Sistema de Administración de Servers
5.5. FAMILIA DE DB2 UDB
147
de IBM .
Para poder establecer una comunicación con otras bases de datos relacionales, la UDB DB2 soporta la Arquitectura de Base de Datos Relacional
(DRDA). Esta arquitectura también incluye el Servidor de Aplicaciones (AS)
y gracias a ella DB2 puede correr sobre TCP/IP en forma nativa, haciendo más
fácil la implementación de un entorno abierto de redes. La UDB DB2 también
incluye las innovaciones en SQL, que satisfacen diferentes requerimientos:
• Conversióm Numérica y Aritmética Amigable
Una aritmética y conversión numérica amigable para asignar variables,
permite que una consulta sea llevada a cabo y proporcione algunos resultados
aunque los times de ciertos datos no hayan podido ser evaluados. Esta función
favorece la compatibilidad con ciertos sistemas como ser OS/390.
5.5
Familia de DB2 UDB
El Software manejador de base de datos ha evolucionado en el corazón de la
computación empresarial.
Como las compañías se mueven en la era de Internet de la comunicación
con banda ancha, las bases de datos pueden ser capaces de almacenar y servir
enormes archivos multimedia, manejar volúmenes de datos crecientes, manipular el aumento en el número de usuarios, entregar firmemente mejora en
la performance y soportar las aplicaciones de futuras generaciones. Con su
habilidad virtual ilimitada para la escalabilidad, extensibilidad multimedia,
fiabilidad y performance en la dirección industrial y franqueza en su plataforma, DB2 Universal Database ha ayudado a dirigir esta evolución.
El primer sistema manejador de base de datos relacional disponible en
la Web multimedia, bastante robusto para encontrar demandas de grandes
corporaciones y bastante flexible para servir a grandes y pequeños negocios.
Con la Versión 7 de DB2, IBM continua con su rol como innovador de base de
datos en:
• e-business
148
CAPÍTULO 5. INTRODUCCIÓN A DB2
El poder de DB2 Universal Database más la demanda de aplicaciones ebusines, tal como comercio electrónico, planificación de recursos empresariales,
administración de conexión con el cliente, suministro en cadena, autoservicio
Web y negocios inteligentes.
Con respecto a la escalabilidad, la fuerza industrial de base de datos puede
ser la base de la administración de datos para su evolución entre e-business.
• Business Intelligence
DB2 Universal Database hace uso de datos activos para la mejor toma
de decisiones. Acerca del acceso a los datos, análisis y decisiones que ayudan al control de costos, revela nuevas oportunidades, estimulo al mercado
compartido e incremento de la lealtad del cliente.
• Data Management
El Administrador de datos DB2 es más que una simple aplicación. Se
refiere a dónde se almacenan los datos, cómo accederlos rápidamente, cómo
evitar las pérdidas de datos y como administrar la base de datos para una
mejor performance con respecto al hardware y las variadas aplicaciones.
• DB2 Family
DB2 Universal Database continua para encontrar la demanda del entorno
computacional heterogéneos de hoy en día. Es decir, abre soluciones para que
puedan acceder e integrar datos de múltiples recursos separados geográficamente en diferentes plataformas.
Universal Database es un nombre ambicioso. Sugiere un producto designado para el uso de una variedad de propósitos y entornos, y es una buena
descripción de DB2 UDB. Cada nuevo desempeño de DB2 UDB se fundamenta
fuertemente en versiones anteriores.
5.6
DB2 UDB Versión 7.2
• La versión 7.2 de DB2 UDB incluye:
5.6. DB2 UDB VERSIÓN 7.2
—
—
—
—
—
—
—
—
149
MQ-Assist wizard
MQ Series Integration
DB2 Enterprise - Edición extendida en Linux
DB2 Universal Database Enterprise Edicion para Linux en S/390
DB2 Connect Enterprise Edición para Linux en S/390
DB2 Connect Web Starter Kit
JDBC 2.0 soportado en HP-UX y Linux
Exploitation of the Linux 2.4 kernel
• Incremento en negocios inteligentes, como ser:
— Nuevos recursos warehouse, como i2, SAP R/3, requerimientos de
mensajes MQSeries y objetos Microsoft OLE DB
— El almacenamiento de dato expande su rol como una herramienta
de integración central para limpiar y calificar los instrumentos para
adicionar apoyo de diferentes tipos
— Mejorar el apoyo para crear y cambiar el almacenamiento en tabla
— Requerimiento de acceso distribuido para nuevos recursos de datos, como ser Sybase y Microsoft SQL Server, plataformas como el
entorno operativo Solaris y Linux
— Requerimientos de acceso distribuido desde procedimientos SQL
— Replicación de enlace a datos en un entorno operativo Solaris
— Proceso lógico en almacenamiento y funciones SQL para realzar la
capacidad de transformación y limpiado de los datos
• Realce de la administración de datos:
—
—
—
—
Demanda de archivos lógicos.
Cambio de la identidad de las columnas.
Soporte de 64-bit en el entorno operativo AIX, HP-UX y Solaris.
Encriptación y desencriptación de cadenas de datos para funciones
de usuarios definidos Incremental y delta backup.
— Serie de soporte.
— Creación de contenido paralelo.
• Incrementos de la Familia de DB2, tal como:
— Capacidad para correr procedimientos SQL sin compilarlos.
— Administración de enlace a datos en entorno de desarrollo Solaris.
150
CAPÍTULO 5. INTRODUCCIÓN A DB2
5.7
Área de Ejecución de Instalación
Al insertar el CD-ROM del producto DB2 Universal Database Versión 7 , la
característica de ejecución automática ya no le lleva a la primera pantalla del
programa de configuración de DB2. En lugar de ello, inicia el DB2 Launchpad.
El DB2 Launchpad es una ventana que proporciona las opciones siguientes:
• Notas del release.
• Prerrequisitos de instalación.
• Visión general rápida.
• Instalar.
• Salir.
DB2 Launchpad le proporciona acceso a la información necesaria del CDROM antes de iniciar una instalación de DB2.
5.7.1
Área de Ejecución del Depósito
La primera vez que abra el Centro de depósito de datos, también se abrirá el
Área de ejecución del depósito. Esta área de ejecución simplifica el trabajo
de llenar de datos un depósito sirviendo de guía en las tareas relacionadas.
Siempre que se necesite crear objetos de depósito, se puede utilizar el área de
ejecución seleccionándola en el menú Centro de depósito de datos.
5.7.2
Primeros Pasos
En la Versión 7, la herramienta Primeros pasos, que se utiliza para crear y ver
la base de datos SAMPLE en un servidor DB2, se ha ampliado para permitir
opciones de cliente. En un cliente, existe la opción de conectarse a la base
de datos SAMPLE (utilizando el Asistente de configuración de cliente) o de
crear una base de datos SAMPLE en un servidor DB2 remoto.
También se puede crear bases de datos de ejemplo para el depósito y el
proceso analítico en línea (OLAP)
5.7. ÁREA DE EJECUCIÓN DE INSTALACIÓN
151
Estas bases de datos son necesarias para la guía de aprendizaje de Business
Intelligence. Dado que Primeros pasos es una aplicación Java, puede utilizarse
en todos los sistemas operativos soportados por DB2, a condición de que se
instale el JRE (Java Run-Time Environment) apropiado en la estación de
trabajo.
5.7.3
Visión General Rápida
La Visión general rápida de DB2 Universal Database es una presentación de
alto nivel que, en un breve periodo de tiempo (20 a 25 minutos), presenta
los cambios, las características, las ventajas, las posibilidades y las fuentes de
información asociadas con DB2 Universal Database. Pone un énfasis especial
en e-business, business intelligence (inteligencia comercial - BI) y la gestión
de datos. La navegación por Visión general rápida es flexible, proporcionándo
control sobre la experiencia de aprendizaje.
5.7.4
Centro de Información
El Centro de información, al que se puede acceder seleccionando Ayuda Centro de información desde el Centro de control, es ahora más fácil de utilizar.
En el Centro de información se puede ver la información por tema o por
categoría. El Centro de información contiene un enlace para realizar búsquedas
en la biblioteca entera de DB2.
También es posible acceder a la ayuda con el mandato db2ic en UNIX o
bien desde el menú Inicio en los sistemas operativos Windows.
5.7.5
Mejoras en los Asistentes
Todos los asistentes (denominados SmartGuides en versiones anteriores) tienen
un aspecto nuevo con una Tabla de contenido (TOC) en el lado izquierdo. Se
puede ajustar el tamaño de la TOC para hacerla más grande de forma que
se pueda visualizar u ocultar por completo todo el texto. (Algunos asistentes
contienen una página de Introducción que presenta el asistente y una página
de Resúmen que resume la información que se ha entrado).
Se pueden encontrar instrucciones o ayuda en cada página del asistente,
en las ventanas emergentes de información para cada campo o control y en los
152
CAPÍTULO 5. INTRODUCCIÓN A DB2
enlaces que se identifican como texto subrayado. También está disponible una
función Sugerencias.
Esta sección contiene información sobre productos y paquetes que se han
unido a la familia DB2 o que se han modificado para la Versión 7.
• DB2WarehouseManager
Esta nueva oferta reúne las herramientas para crear, gestionar, controlar
y acceder a los depósitos de datos de DB2. El DB2 Warehouse Manager
simplifica y acelera la creación de prototipos de depósito así como el desarrollo
y el despliegue de depósitos. Proporciona al centro de datos el control para
manejar las consultas, analizar los costes, gestionar los recursos y hacer un
seguimiento del uso.
Ayuda a satisfacer los requisitos del usuario para buscar información, acceder a ella e interpretarla. Proporciona herramientas y técnicas flexibles para
crear, gestionar y acceder al depósito. Y satisface las necesidades de información más comunes para empresas de cualquier tamaño.
• QMF para Windows
QMF para Windows está incluido en DB2 Warehouse Manager. Proporciona una herramienta de consulta de múltiples finalidades para la información
comercial, el compartimiento de datos, la protección de recursos del servidor,
el desarrollo de aplicaciones sólido y la conectividad nativa a todas las plataformas de estación de trabajo DB2.
QMF para Windows proporciona soporte nativo para la conectividad TCP
/ IP a la Versión 5 y posteriores. Se acopla arquitectónicamente con DB2 utilizando la DRDA (Arquitectura de Bases de Datos Relacionales Distribuidas).
Hay soporte para un entorno de base de datos heterogéneo disponible mediante el DB2 DataJoiner , que permite a los usuarios acceder a bases de datos de
estaciones de trabajo no relacionales o de otro proveedor.
• DB2 Query Patroller
Query Patroller para DB2 Universal Database está disponible para Enterprise Edition y proporciona soporte para HP-UX y NUMA-Q, además de los
sistemas operativos Windows de 32 bits y las plataformas AIX y Solaris.
5.7. ÁREA DE EJECUCIÓN DE INSTALACIÓN
153
Esto permite gestionar, manejar y planificar consultas de análisis comercial
y utilizar de forma más completa los recursos disponibles en dichos servidores
DB2.
• DB2 Relational Connect
DB2 Relational Connect se utiliza en un sistema federado para consultar y
recuperar datos ubicados en otros DBMS, como, por ejemplo, Oracle, Sybase
y Microsoft SQL Server . Las sentencias de SQL pueden hacer referencia a
varios DBMS o a bases de datos individuales, dentro de una sola sentencia.
Por ejemplo, es posible unir los datos ubicados en una tabla de DB2 UDB, en
una tabla de Oracle y en una vista de Sybase.
En DB2 Versión 7.1, DB2 Relational Connect estaba disponible para Oracle en las plataformas Windows NT y AIX. En DB2 Versión 7.2, se ha ampliado el soporte de Oracle para incluir sistemas operativos adicionales, pues se ha
añadido soporte para las fuentes de datos Sybase y Microsoft SQL Server. Los
DBMS soportados incluyen Oracle, Sybase, Microsoft SQL Server y miembros
de la familia DB2 Universal Database (tales como DB2 para OS/390, DB2
para OS/400 y DB2 para Windows).
DB2 Relational Connect también puede utilizarse con el Centro de depósito
de datos para mejorar el rendimiento de selección en las fuentes Oracle, Sybase
y Microsoft SQL Server a fin de cargar un depósito de datos de DB2.
DB2 Relational Connect funciona bajo algunas restricciones. Las peticiones distribuidas están limitadas a operaciones de sólo lectura en DB2 Versión
7.
Además, no pueden ejecutarse operaciones de programa de utilidad (como
LOAD, REORG, REORGCHK, IMPORT y RUNSTATS) para los apodos.
No obstante, es posible utilizar un recurso de paso a través a fin de emitir
sentencias de DDL y DML directamente a los DBMS utilizando el dialecto de
SQL asociado con esa fuente de datos.
DB2 Relational Connect es un producto opcional que puede utilizarse con
DB2 Universal Database Enterprise Edition, DB2 Universal Database Enterprise -Extended Edition, DB2 Connect Enterprise Edition y DB2 Connect
Unlimited Edition para los sistemas operativos Windows NT, AIX y Linux y
el entorno operativo Solaris.
154
CAPÍTULO 5. INTRODUCCIÓN A DB2
• Kit de iniciación de OLAP de DB2
DB2 Universal Database incluye el Kit de iniciación de OLAP de DB2
que se basa funcionalmente en el Servidor OLAP de DB2 Versión 7. El Kit de
iniciación del Servidor OLAP de DB2 permite a los usuarios de DB2 Universal
Database explorar y aplicar posibilidades analíticas en línea antes de adquirir
el producto completo, el Servidor OLAP de DB2, para realizar un análisis más
complejo o para el despliegue en grandes grupos de usuarios.
Las aplicaciones desarrolladas por el Kit de iniciación de OLAP de DB2
se pueden continuar extendiendo y aplicando en el producto completo.
El Kit de iniciación de OLAP de DB2 y el Servidor OLAP de DB2 se basan
en Essbase, la tecnología OLAP líder del mercado de Hyperion Solutions.
• DB2 Spatial Extender
DB2 Spatial Extender puede tener directamente a DB2 Universal Database
como sistema principal. Esto facilita la inclusión de atributos espaciales, por
ejemplo distancia o tiempo de manejo, en los análisis comerciales.
Esta integración permite a los datos espaciales aprovechar las ventajas de
rendimiento disponibles con un sistema de gestión de bases de datos (DBMS ).
DB2 Spatial Extender se ajusta a los estándares ISO y OGS (OpenGIS Consortium) para el almacenamiento, la indexación y la consulta de datos espaciales.
En la figura 5.3 de la pág. 155 el Almacenamiento de Datos Espaciales en
DB2.
• DB2 Universal Database Text Information Extender
DB2 Universal Database Text Information Extender proporciona una nueva manera de buscar en documentos de texto mediante una consulta de SQL.
Con el soporte para los formatos HTML y XML, combina la potencia de
un mecanismo de búsqueda de textos rápido con las estrategias inteligentes de
DB2 Optimizer . Construido sobre la base del éxito de los expansores actuales,
DB2 Universal Database Text Information Extender aumenta, y empieza a
combinar, la funcionalidad clave de DB2 Text Extender y DB2 Net Search
Extender en un solo producto integrado para el mercado actual orientado a la
información.
5.7. ÁREA DE EJECUCIÓN DE INSTALACIÓN
155
Figura 5.3: Almacenamiento de Datos Espaciales
Utilizando el mecanismo de búsqueda de textos DB2 Net Search Extender
y la interfaz de búsqueda DB2 Text Extender, DB2 Universal Database Text
Information Extender proporciona la línea base para una nueva generación de
productos de recuperación de textos. El resultado es un método de fácil uso
y muy integrado para la búsqueda de documentos de la base de datos o de
documentos externos utilizando DB2 Data Links Manager.
• DB2 Net Search Extender
DB2 Universal Database Net Search Extender proporciona un método de
alto rendimiento de búsqueda de texto almacenado en bases de datos DB2.
La realización de búsquedas utilizando este producto puede ser especialmente provechosa en aplicaciones de Internet donde el rendimiento es un factor
importante.
Net Search Extender puede añadir la potencia de la recuperación rápida de
textos completos a las aplicaciones Net.Data, Java y CLI. Sus características le
permiten almacenar documentos de texto no estructurados de hasta 2 gigabytes en bases de datos. Ofrece a los desarrolladores de aplicaciones un método
rápido, versátil e inteligente para realizar búsquedas en dichos documentos.
• Application Development Client
156
CAPÍTULO 5. INTRODUCCIÓN A DB2
El Kit del desarrollador de software se llama ahora DB2 Application Development Client.
• DB2 Life Sciences Data Connect
Cuando los estudiosos de las ciencias de la vida necesitan información para
desarrollar su trabajo, a menudo combinan datos de diversas fuentes a fin de
conseguir lo que necesitan. No obstante, en las industrias dedicadas a las
ciencias de la vida y a la biotecnología, existen enormes cantidades de datos
que residen en fuentes de datos especializadas con prestaciones de consulta
patentadas. Por tales diferencias de funcionamiento, a los usuarios les resulta
difícil recoger los datos en una sola fuente y con un solo formato para trabajar
con ellos.
IBM DB2 Life Sciences Data Connect es un sistema middleware de bases
de datos que permite trabajar con una base de datos virtual cuyos datos
subyacentes pueden estar almacenados en múltiples fuentes de datos dentro
de la industria dedicada a las ciencias de la vida.
Utilizando DB2 Life Sciences Data Connect, ejecuta una sola consulta
dirigida a la base de datos virtual y es posible establecer conexiones que,
de lo contrario, quizá no se encontraría consultando cada fuente de datos
individualmente.
5.8
DB2 UDB Versión 8.1
Cada nueva versión de DB2 Universal Database se crea sobre la base sólida de
la versión anterior. En la Versión 8.1 ofrece incluso un soporte más potente
para Business Intelligence, Gestión de Datos y Soluciones e-business.
DB2 Universal Database Versión 8.1 contiene muchas características nuevas, que incluyen el Centro de desarrollo, funciones ampliadas de XML Extender, soporte de Linux para DB2 Warehouse Manager, integración de Spatial
Extender con herramientas de IBM Business Intelligence, un nuevo Centro de
duplicación, mejoras de enlace y rendimiento de DB2 Data Links Manager.
Nuevas herramientas de gestión y supervisión de bases de datos, soporte de 64
bits ampliado y nuevos asistentes de Instalación de DB2 y Centro de control
de DB2.
5.8. DB2 UDB VERSIÓN 8.1
5.8.1
157
Centro de Desarrollo
En la versión 8.1, el Centro de desarrollo sustituye al Stored Procedure Builder
y proporciona un funcionamiento incrementado. Mediante el Centro de desarrollo, el usuario puede desarrollar procedimientos almacenados y funciones
definidas por el usuario como se muestra en la figura5.4 de la página158. También es posible correlacionar tipos estructurados de los Enterprise JavaBeans.
Los asistentes simplifican las tareas de desarrollo.
Las nuevas características incluyen:
• Soporte de varios proyectos y conexiones de base de datos.
• La Vista de servidor para examinar los objetos de desarrollo en el servidor.
• Depurador de SQL para depurar rutinas; incluye vistas para puntos de
interrupción, variables y pila de llamadas.
• Una interfaz mejorada para controlar el entorno de desarrollo.
• Asistentes para construir funciones definidas por el usuario para MQSeries, fuentes de datos OLE DB y documentos XML.
• Asistentes para exportar, importar y desplegar rutinas e información de
proyectos Productos y Paquetes Nuevos.
5.8.2
WebSphere
Utilizando una tecnología parecida a la que se encuentra en el Centro de
desarrollo, WebSphere Studio Application Developer proporciona también un
creador de procedimientos almacenados y un creador de funciones definidas por
el usuario. Si utiliza WebSphere para desarrollar aplicaciones, puede acceder a
muchas de las mismas características del Centro de desarrollo y aprovecharse
tanto del conjunto de productos WebSphere como de la potencia de DB2.
5.8.3
Mejoras en XML Extender
Se han añadido nuevas características a XML Extender : ahora, XML Extender
soporta servicios de Web con los servicios Web Object Runtime Framework
158
CAPÍTULO 5. INTRODUCCIÓN A DB2
Figura 5.4: Centro de Desarrollo
(WORF), conjunto de herramientas para implantar servicios de Web con DB2.
Asimismo, XML Extender soporta ahora MQSeries, de forma que es posible
enviar documentos XML a las colas de mensajes de MQSeries, y recuperarlos
de las mismas.
5.8.4
DB2 Warehouse Manager
Se han añadido nuevas características y mejoras a DB2 Warehouse Manager:
Con el soporte de carga paralela nativa para DB2 Universal Database
Enterprise Server Edition, es posible cargar grandes volúmenes de datos con
más rapidez.
DB2 Warehouse Manager tiene capacidades ampliadas, por lo que se puede
incrementar y mejorar el rendimiento de las operaciones de depósito, manipular y localizar metadatos más deprisa, y ejecutar el agente de depósito,
programas y transformadores en Linux.
Los conectores para la Web y SAP se han mejorado en el paquete de DB2
Warehouse Manager.
5.8. DB2 UDB VERSIÓN 8.1
159
Figura 5.5: DB2 Warehouse Manager.
5.8.5
DB2 Warehouse Manager (cont.)
• Ahora, el Gestor de catálogos de información soporta un rango más
amplio de sistemas operativos. El Centro de catálogos de información,
que es una nueva interfaz, proporciona unas funciones y un uso mejorados
para trabajar con metadatos comerciales.
• Ahora se soportan XP de Linux y de Windows(R) para el agente de
depósito, además de los sistemas operativos que ya se soportaban: Windows NT, Windows 2000, AIX(R) y Solaris Operating Environment(R).
• El transformador de limpieza realiza ahora transformaciones con SQL,
lo que tiene como resultado un mejor rendimiento.
En la figura5.5 de la pégina159 se puede observar un esquema del funcionamiento de DB2 Warehouse Manager.
5.8.6
Centro de depósito de datos de DB2
Se han añadido nuevas características al Centro de depósito de datos:
El soporte de servidor de depósito se amplía a AIX. El servidor de depósito y el iniciador de sesiones de depósito, que se ejecutan como servicios en
Windows, se ejecutan como daemons en AIX.
Es posible exportar e importar metadatos del lenguaje de código y exportar
estos objetos:
160
CAPÍTULO 5. INTRODUCCIÓN A DB2
Tablas, archivos y vistas de origen
Tablas y archivos de destino
El proceso en cascada (varios intervalos) permite gestionar varios pasos
definiendo y habilitando una planificación y un flujo de tareas para los procesos
que contienen los pasos.
Con el nuevo paso Select and Update de SQL, se puede actualizar una
tabla de destino del depósito de datos sin sustituir la tabla completa ni grabar
código adicional.
Ahora, la Guía de aprendizaje de Business Intelligence se compone de dos
guías de aprendizaje más cortas: Guía de aprendizaje de Business Intelligence:
Introducción al Centro de depósito de datos y Guía de aprendizaje de Business
Intelligence: Lecciones ampliadas sobre depósito de datos.
5.8.7
DB2 Spatial Extender
Se han añadido nuevas características a Spatial Extender:
Ahora, Spatial Extender está integrado en las herramientas de IBM Business Intelligence, que incluyen QMF, Centro de depósito de datos y OLAP.
Ahora es posible acceder a datos de DB2 para iSeries y de DB2 para z/OS
con soporte federado.
El soporte de plataformas incluye ahora los sistemas operativos siguientes:
AIX, HP-UX, Linux, Solaris Operating Environment y Windows.
El Index Advisor, una nueva herramienta de indexación, tiene dos modalidades operativas:
Analizar un índice espacial existente y crear y analizar un índice virtual.
Analizar la geometría de una columna espacial que aún no tiene un índice
espacial.
La interfaz de Spatial Extender está ahora orientada al objeto.
5.8. DB2 UDB VERSIÓN 8.1
5.8.8
161
DB2 Spatial Extender (cont.)
Ahora, Spatial Extender ha mejorado su rendimiento y funciones:
Se ha mejorado el rendimiento de las funciones de importación y exportación.
Se han reestructurado las vistas de Catálogos espaciales.
Se han ampliado los procedimientos almacenados soportados.
Ahora se puede añadir fácilmente un geocodificador de terceros a Spatial
Extender.
Se han ampliado las funciones existentes.
Ahora se tiene acceso a funciones espaciales adicionales.
5.8.9
Gestión de los Datos
Las nuevas características de DB2 Universal Database Versión 8.1 incluyen:
Un Servidor de administración de bases de datos rediseñado
Agrupamiento multidimensional de los datos
El Centro de desarrollo de DB2
El Centro de salud de DB2
Una supervisión mejorada de los puntos muertos
SQL en funciones definidas por el usuario
Un instalador basado en Java en UNIX(R)
La posibilidad de cambiar parámetros en línea
Mejoras en la duplicación
162
CAPÍTULO 5. INTRODUCCIÓN A DB2
5.8.10
Duplicación (DB2 DataPropagator)
El DataPropagator de DB2 Versión 8.1 ha mejorado el uso, la fiabilidad, el
rendimiento, las posibilidades de servicio y la seguridad. El nuevo Centro
de duplicación facilita la configuración, el mantenimiento y la supervisión de
duplicaciones. La duplicación se ejecuta con más rapidez que antes.
5.8.11
Nuevo Centro de duplicación
Las nuevas características del Centro de duplicación incluyen:
• Un iniciador que le permitirá configurar con rapidez el escenario de duplicación de extremo a extremo
• La posibilidad de especificar “perfiles” específicos del servidor y del sistema operativo, así como de denominar convenios y propiedades para las
tablas de destino, tablas de CD y tablas de control
• La posibilidad de iniciar y detener los programas Capture, Apply y Monitor desde el Centro de duplicación
• Un supervisor de alertas que envía alertas por correo electrónico cuando
se superan los umbrales definidos por el usuario o se producen problemas
• La posibilidad de calcular estadísticas tales como relación de productividad, valores de latencia y el número de errores de los programas Capture
y Apply
• Una comprobación mejorada de los errores y una validación de las operaciones de duplicación.
En la figura 5.6 de la página 163 se puede observar el nuevo esquema de
funcionamiento junto con las nuevas características del Centro de Duplicación
de la versión 8.0.
5.8. DB2 UDB VERSIÓN 8.1
163
Figura 5.6: Centro de Duplicación de DB2 versión 8.0.
5.8.12
Posibilidades de Gestión
Fundaciones de Bases de Datos de Autogestión Disponibles
A partir de DB2 Universal Database Versión 8.1, verá incorporada en DB2 una
apasionante tecnología inteligente; la base de datos se supervisa a sí misma y
aconseja a los administradores de bases de datos cuando se requiere una acción.
Esta tecnología de bases de datos inteligentes libera a los administradores de
bases de datos de las tareas mundanas, de forma que se pueden centrar en las
actividades que hacen prosperar el negocio.
Visualizador de Memoria
El Visualizador de memoria ayuda a los administradores de bases de datos a
supervisar, gráficamente y en tiempo real, el rendimiento relativo a la memoria
de una instancia y las bases de datos de la misma.
164
CAPÍTULO 5. INTRODUCCIÓN A DB2
Supervisor de salud
Herramienta para la “gestión por excepción”, el Supervisor de salud evalúa la
salud del sistema de bases de datos y notifica al usuario, por correo electrónico o mediante un buscapersonas, los problemas potenciales o existentes. El
supervisor se ejecuta sobre cada una de las instancias de DB2.
5.8.13
Soporte de plataformas
Con el soporte de 64 bits, se dispone de más espacio de direcciones para
almacenar más datos en la memoria y poder acceder a ellos con mucha mayor
rapidez.
Los productos DB2 Versión 8.1 siguientes proporcionan soporte de 64 bits:
• DB2 Personal Edition.
• DB2 Enterprise Server Edition.
• DB2 Connect Personal Edition.
• DB2 Connect Enterprise Edition.
• DB2 Application Development Client.
• DB2 Administration Client.
• DB2 Run-Time Client.
• DB2 Warehouse Manager.
• DB2 Spatial Extender.
5.8.14
Compatibilidad de la Familia de DB2
Asistente para la Configuración de DB2
La instalación de DB2 en plataformas Windows y UNIX resulta ahora más
fácil mediante la utilización del Asistente para la configuración de DB2. Esta
interfaz gráfica permite instalar productos DB2 directamente o crear archivos de respuestas para permitir una instalación posterior. En los sistemas
5.9. PRINCIPALES VENTAJAS DEL DB2 UDB
165
UNIX, también se puede utilizar el Asistente para la configuración de DB2
para realizar funciones de gestión de instancias.
Asistentes del Centro de Control
En DB2 Versión 8.1, los asistentes que están disponibles en las Herramientas
de administración se han ampliado para abarcar un ámbito más amplio de
funciones, en comparación con las de que se disponía en versiones anteriores
de DB2. Por ejemplo, un asistente de DB2 Versión 8.1 brinda el conjunto total
de opciones disponibles para crear una tabla.
5.9
Principales Ventajas del DB2 UDB
• Fácil y simple
Muchos expertos de la industria y usuarios han elogiado las nuevas herramientas que IBM desarrolló para facilitar la administración y uso del DB2
Universal Database. Utiliza una interfase gráfica, estilo browser, para acceder
y manejar objetos de la base de datos. Incluye “smart.guides” que facilitan la
tarea de configuración, sirviendo como guía paso a paso para lograr un rendimiento óptimo de la base de datos y para asistir al usuario en la creación de
teclas con plantillas predefinidas. Las herramientas mencionadas, más otras
incluidas en DB2 Universal Database, están listas para ser integradas a Tivoli.
166
CAPÍTULO 5. INTRODUCCIÓN A DB2
• Aplicaciones existentes
Más del 70% de las empresas top del mundo confían en DB2 Universal
Database para manejar aplicaciones críticas, las cuales pueden hacer uso de
las siguientes aplicaciones de negocios:
—
—
—
—
On-line Transaction Processing (OLTP)
Data Warehousing
Decision Support
Data Mining
Al evaluar DB2 Universal Database por primera vez, se deben considerar
los beneficios a corto y largo plazo al utilizar un código base unificado para todas las aplicaciones, y para todas las plataformas, desde laptops hasta
sistemas de procesamiento paralelo.
Además, se dispone de numerosas aplicaciones desarrolladas a nivel mundial, entre ellas las de SAP, People Soft. y Baan.
• Herramientas de replicación
La replicación de datos es la tecnología clave para aprovechar todo el poder
de los ambientes distribuidos ya que permite enviar los datos a cualquier sitio
para cubrir todos los requerimientos de la empresa; desde oficinas centrales a
sucursales, usuarios móviles, proveedores, clientes y socios de negocios. En la
figura 5.7 de la pág. 167 se muestra un esquema de replicación de datos en
DB2.
DB2 Universal Database incluye todo lo necesario para implementar una
solución de replicación de datos en cualquier tipo de ambiente distribuido o
heterogéneo.
• Soporte OLAP
DB2 Universal Database ofrece nuevas capacidades para realizar análisis multidimensional y procesamiento analítico en línea (OLAP). Incluye funciones de ROLLUP, CUBE y grouping sets. Soporta STAR JOINS . Estas
facilidades son utilizadas normalmente en todas las aplicaciones de business
intelligence.
5.9. PRINCIPALES VENTAJAS DEL DB2 UDB
167
Figura 5.7: Replicación de Datos en DB2.
• Lista para Internet
Gracias a su alcance global y bajo costo, Internet puede ser una solución
de negocios muy poderosa. Si se desea realmente aprovechar las oportunidades
de negocios utilizando la Web, se debe considerar la mejor manera de llegar
a un mercado que está esperando las 24 horas de los 7 días de la semana. La
base de datos a seleccionar debe estar preparada para brindar acceso rápido y
alta disponibilidad a información que requiere actualización constante.
DB2 Universal Database provee la capacidad de hacer backups en línea,
evitando interrupciones en la disponibilidad del sistema. Permite realizar operaciones comerciales garantizando un alto nivel de seguridad y confiabilidad.
DB2 cumple con los siguientes requerimientos:
• Soporta el paradigma de network-computing utilizando Java y JDBC.
Permite el acceso a DB2 Universal Database desde una amplia variedad
de plataformas de clientes, utilizando JDBC vía Java applets desde cualquier
Web Browser. Adicionalmente, se puede desarrollar una aplicación Fen Java
y acceder a DB2 utilizando directamente JDBC. También permite codificar
“stored procedures” en Java.
• Brinda excelente nivel de seguridad.
Brinda servicios de autenticación y autorización que pueden ser fácilmente
integrados a servicios de redes y sistemas operativos.
168
CAPÍTULO 5. INTRODUCCIÓN A DB2
• Net.Data brinda acceso a sus datos corporativos desde la Web.
Ofreciendo un alto nivel de performance y escalabilidad en el acceso de
datos residentes en DB2 Universal Database, incorporando multimedia.
• Multimedia.
DB2 Universal Database incluye la capacidad nativa de almacenar variados
tipos de datos: alfanuméricos, video, imagen, audio y los que defina el usuario.
Otra gran diferencia: la escalabilidad de DB2 Universal Database permite
el almacenamiento de grandes volúmenes de datos aprovechando al máximo la
capacidad de las plataformas soportadas por DB2.
DB2 Universal Database permite realizar búsquedas sofisticadas e inteligentes en cualquier documento utilizando innumerables criterios.
Además, permite que el usuario defina funciones -llamadas UDFs- y tipos
de datos propios -llamados UDTs. Estos facilitan enormemente la tarea de
administración de datos por parte de los desarrolladores, asegurando la consistencia de los mismos y minimizando los errores por operaciones inválidas.
Formida Software Corp. ha desarrollado una solución para la industria de
la salud, que incluye las capacidades multimedia de DB2 Universal Database. La aplicación maneja datos complejos, tales como: imágenes de rayos X,
gráficos, video, mapas para la localización de médicos y hospitales, además de
archivos de historias clínicas e información de seguros.
5.10
Conclusión
DB2 Universal Database es un sistema de gestión de bases de datos relacionales
completamente habilitado para la Web que se puede escalar, desde procesadores simples hasta multiprocesadores simétricos y agrupamientos paralelos
masivos.
Mediante él, se puede influir en todos los aspectos relativos a la información de la empresa, más allá de simples filas y columnas de datos alfanuméricos, incluyendo información en formato XML, imágenes, video en modalidad
5.10. CONCLUSIÓN
169
continua y otros formatos ricos en medios. También se pueden realizar transacciones más allá de las cargas de trabajo, que incluyen la toma de decisiones
en tiempo real, el depósito de datos y la gestión del contenido.
El uso de DB2 Universal Database se ha mejorado de forma que incluso
los usuarios novatos puedan realizar tareas de administración de bases de datos. Delegando la identificación anticipada de problemas de base de datos, la
determinación y la resolución a los usuarios novatos de DB2, se puede reducir
el coste asociado y, a la vez, rebajar el coste total de la propiedad. Además, DB2 proporciona un soporte aún más potente de e-business a través de
una regrabación y optimización automática de consultas mejoradas, el agrupamiento multidimensional de los datos, las tablas automáticas de resumen,
Java, XML, servicios Web, posibilidades federadas, soluciones portátiles y un
soporte incorporado ampliado para soluciones de Business Intelligence (BI).
Capítulo 6
WebSphere
171
172
CAPÍTULO 6. WEBSPHERE
Figura 6.1: Soluciones IBM WebSphere
6.1
Introducción
WebSphere fue diseñado para integrar personas, procesos, información y aplicaciones con nuevos desarrollos (ver fig. 6.1 de la pág. 172).
La plataforma Websphere está desarrollada a partir de estándares abiertos
como J2EE, XML y Web Services. Esta plataforma tiene la fiabilidad, escalabilidad y seguridad extensamente probada en todos los productos de Software
IBM.
WebSphere Studio Application Developer es uno de los productos de la
familia WebSphere Studio que ha sido desarrollado basado en el Workbench
de Eclipse.
La plataforma del Workbench de Eclipse fué diseñado por IBM y liberado a
la comunidad open source. Es una plataforma abierta, portable y universal de
herramientas que provee marcos, servicios y herramientas para la construción
de aplicaciones [17].
En esencia, Workbench proporciona la insfraestructura de herramientas.
Con esta insfraestructura, los desarrolladores de heramientas son capaces de
concentrarse en la real construcción de sus herramientas.
6.2. ECLIPSE
173
El Workbench ha sido diseñado para una máxima flexibilidad para apoyar
el desarrollo de herramientas de las nuevas tecnologías que puedan surgir en
el futuro.
Ambientes de desarrollo escritos por Workbench deben soportar un modelo de desarrollo basado en roles, en el cual los resultados del trabajo de los
desarrolladores será consistente. Los desarrolladores no deberían estar preocupados en cómo las diferentes herramientas individuales pueden estar tratando
sus archivos.
La familia de productos de WebSphere Studio se basa en un ambiente de
desarrollo integrado (IDE ) para desarrollar, testear, depurar y ejecutar las
aplicaciones. Brinda soporte a cada fase del ciclo de vida del desarrollo de la
aplicación.
6.2
Eclipse
Eclipse en una plataforma abierta para la integración de herramientas construida por una comunidad de proveedores de herramientas. Esta provee de
máxima flexibilidad y control sobre su tecnología de software a los desarrolladores, con una licencia pública común que provee código fuente libre y derechos
de redistribución.
Industrias líderes como IBM, Borland, Merant, QNX Software Systems,
Rational Software, RedHat, SuSE, TogetherSoft, y WebGain formaron la junta
inicial directiva del proyecto Eclipse (ver fig. 6.2 de la pág. 174).
6.2.1
Arquitectura de la Plataforma
Eclipse es una plataforma que ha sido diseñada desde cero. Por diseño, la
plataforma no provee en si misma de gran cantidad de funcionalidades. El
valor de la plataforma es lo que fomenta: un rápido desarrollo de características
integradas basadas en un modelo de plug-in (ver fig.6.3 de la pág. 175).
Eclipse provee un modelo de interfaz de usuario (UI ) para trabajar con
herramientas. Está diseñado para funcionar en múltiples sistemas operativos
mientras que brinda una fuerte integración con cada uno de los mismos. Los
plug-ins pueden ser programados por las APIs portables de Eclipse y funcionar
sin cambios en cualquiera de los sistemas operativos.
174
CAPÍTULO 6. WEBSPHERE
Figura 6.2: Eclipse SDK
6.2. ECLIPSE
175
Figura 6.3: Plataforma Eclipse
176
CAPÍTULO 6. WEBSPHERE
La plataforma Eclipse utiliza el modelo de un Workbench común para
integrar las herramientas desde el punto de vista del usuario final.
6.3
Características del Workbench
Eclipse Workbench brinda un conjunto de APIs, modelos y marcos para editores de fuentes de desarrollo y otras interfaces de usuario, así como también
el acceso a servicios comunes para la gestión de recursos, depuración y equipos
de programación.
Las principales características del Workbench Eclipse son las siguientes:
• Herramientas basadas en plug-in.
• Desarrollo de herramientas orientadas en roles.
• Integración vertical y horizontal.
• Estándares abiertos.
• Ambiente de trabajo distribuido.
• IDE basado en archivo.
6.3.1
Herramientas Basadas en Plug-in
Workbench proporciona una plataforma plug-in flexible. Diferentes herramientas pueden conectarse al mismo, con cada herramienta provee una nueva
funcionalidad para ser agregada al Workbench o a los plug-in ya existentes.
Cada plug-in se integra al Workbench y a las otras herramientas. Lo ideal
sería que el usuario final no notara ninguna diferencia al pasar de una herramienta a otra.
Al programar con las APIs de Eclipse, los plug-in pueden fusionar sin
cambios en cualquiera de los sistemas operativos.
La plataforma se encarga de la logística del ambiente de base y provee un
modelo estándar de navegación de usuario.
6.3. CARACTERÍSTICAS DEL WORKBENCH
177
Cada plug-in puede concentrarse en el desempeño de un pequeño número
de tareas. Algunos ejemplos de tales tareas son: testear, depurar y diagramar.
Ya que Workbench está basado en una arquitectura abierta cada equipo
de desarrollo de plug-ins puede centrarse en su área de especialización. Esto
permite al equipo de expertos en gestión construir interfaces y a los expertos
de utilidades, construir las herramientas del usuario final. Si éstas están bien
diseñadas y utilizan la norma API, nuevas e importantes características pueden
añadirse al Workbench y productos basados en Workbench sin afectar otras
herramientas.
6.3.2
Desarrollo de Herramientas Orientadas en Roles
El Workbench está diseñado para proporcionar soporte para el desarrollo ebusiness o un conjunto de roles.
Dentro de los productos basados en Workbench, las perspectivas orientadas
a tareas filtran la complejidad general y presentan al desarrollador sólo con
aquellas funciones que son relevantes para la tarea.
Los usuarios pueden cambiar las perspectivas en función de lo que están
trabajando en cualquier momento dado, o en función de su papel actual en el
proyecto.
Debido a que diferentes desarrolladores están acostumbrados a trabajar
en diferentes formas, cualquier perspectiva puede ser aún más personalizada,
y ya que todas las herramientas y perspectivas se construyen utilizando la
tecnología de Eclipse Workbench, éstas comparten una vista y diseño común,
lo que reduce las curvas de aprendizaje y ayuda a maximizar la productividad.
Todos los recursos de desarrollo para todos los proyectos se almacenan en
un único repositorio, por lo tanto, los desarrolladores son capaces de compartir
fácilmente su trabajo.
6.3.3
Integración Vertical y Horizontal
Tradicionalmente los proveedores de software han proporcionado herramientas
verticales obligando a los clientes a hacer su propia integración. El objetivo
de Eclipse Workbench es proporcionar una plataforma que los proveedores de
software pueden ampliar fácilmente.
178
CAPÍTULO 6. WEBSPHERE
Por ejemplo, cada producto de la familia de WebSphere Studio que se basa en Workbench ofrece un conjunto de herramientas integradas permitiendo
centrarse en la construcción de aplicaciones en lugar de la integración de herramientas.
Además se puede integrar fácilmente otras herramientas de otros vendedores o desarrolladores locales, siempre y cuando se ajusten al protocolo de
plug-in de Workbench.
6.3.4
Estándares Abiertos
El conjunto Workbench Eclipse, así como todos los productos de la familia de
WebSphere Studio, se basan en estándares abiertos y el código que generan
también cumple con ellos.
Esto permite construir y desplegar del lado del servidor las aplicaciones
que se ajustan a las especificaciones de Servlet, JavaServer Pages y EJB.
6.3.5
Ambiente de Trabajo Distribuido
Los equipos de desarrollo de aplicaciones son cada vez más distribuidos, y se
encuentran bajo una creciente presión para entregar soluciones con rapidez. En
ese medio ambiente es fundamental disponer de herramientas de desarrollo que
puedan apoyar estas necesidades y al mismo tiempo abordar las necesidades
personalizadas.
6.3.6
IDE Basado en Archivo
Todo el contenido se guarda como archivos. Recursos tales como clases Java
y archivos HTML son almacenados en el sistema de archivos, lo que los hace
de fácil acceso.
6.4
Productos WebSphere Studio
La familia de productos de WebSphere Studio tiene los siguientes miembros:
(ver fig. 6.4 de la pág. 179).
6.4. PRODUCTOS WEBSPHERE STUDIO
179
Figura 6.4: Productos WebSphere
• WebSphere Studio Site Developer Advanced.
• WebSphere Studio Application Developer.
• WebSphere Studio Application Developer Integration Edition.
• WebSphere Studio Enterprise Developer.
Estos productos proporcionan apoyo para el desarrollo, testeo y despliegue
aplicaciones Webs y J2EE.
Desde la perspectiva de la arquitectura de Eclipse, WebSphere Studio Site
Developer es un conjunto de plug-ins para WebSphere Studio Workbench.
WebSphere Studio Application Developer es otro conjunto de plug-ins para
WebSphere Studio Workbench que es un superconjunto de WebSphere Studio
Site Developer, y así sucesivamente.
WebSphere Studio Device Developer no es parte de esta cadena, sin embargo se basa en WebSphere Studio Workbench al igual que los otros. Además,
WebSphere Studio Device Developer puede funcionar como un plug-in para
180
CAPÍTULO 6. WEBSPHERE
WebSphere Studio Site Developer y WebSphere Studio Application Developer
para ampliar su funcionalidad y permitir que tanto el cliente como el servidor,
estén dentro de una plataforma, o puede ser instalado stand-alone.
6.4.1
WebSphere Studio Site Developer
WebSphere Studio Site Developer es un IDE destinado a los desarrolladores
Web para desarrollar y gestionar complejos sitios Web. Es fácil de utilizar,
minimiza el tiempo y esfuerzo necesario para crear, administrar y depurar
sitios web de multi-plataforma.
Es diseñado de acuerdo con el J2SE y J2EE y soporta las especificaciones
JSP, servlets, HTML, JavaScript y DHTML. Además, incluye herramientas
para el desarrollo de imágenes y GIFs animados.
Con WebSphere Studio Site Developer se podrá desarrollar aplicaciones
Web que utilizan las siguientes tecnologías:
• JSP.
• Servlets.
• Web services.
6.4.2
WebSphere Studio Application Developer
WebSphere Studio Application Developer está diseñado para desarrolladores
profesionales de Java y J2EE, que requieren integrar Java, Web, XML, y
servicios Web.
Incluye todas las características del WebSphere Studio Site Developer , y
añade herramientas para el desarrollo de aplicaciones EJB, así como la ejecución de perfiles, etc.
Los desarrolladores pueden construir rápidamente, testear la lógica de negocio y mejorar la presentación antes de desplegar en un servidor de producción.
6.5. HERRAMIENTAS DE WSAD
6.4.3
181
WebSphere Studio Application Developer Integration Edition
Incluye toda la funcionalidad del Application Developer, además de:
• Potentes herramientas gráficas para construir rápida y facilmente aplicaciones para integrar aplicaciones J2EE con sistemas back.end, ayudando
a ahorrar tiempo y dinero por la reutilización de recursos existentes.
• Asistentes que ayudan en la construcción y despliegue de servicios Web
complejos, componentes EJB, flows, y otros servicios Web.
• Apoyo para toda la Empresa.
6.4.4
WebSphere Enterprise Developer
Enterprise Developer incluye toda la funcionalidad de WebSphere Studio Application Developer Integración Edition , además de, entre otros:
• Integración de entornos transaccionales como CICS e IMS.
• Crear nuevas aplicaciones EIS, como parte de una aplicación J2EE.
• Desarrollar y mantener aplicaciones z / OS.
• Soporta Java, COBOL, PL / I, y EGL.
Otro núcleo de tecnología que se integra dentro de Enterprise Developer:
• WebSphere Studio Asset Analyzer (WSAA): Identifica los procesos de
aplicación y puntos de conexión, y proporciona la capacidad de generar
componentes de código existente.
6.5
Herramientas de desarrollo suministradas con
WebSphere Studio Application Developer
Entre las herramientas que podemos encontrar en WSAD tenemos las siguientes (ver fig. 6.5 de la pág. 182):
182
CAPÍTULO 6. WEBSPHERE
Figura 6.5: Entorno de desarrollo de WebSphere Studio Application Developer.
6.5. HERRAMIENTAS DE WSAD
6.5.1
183
Herramientas de Desarrollo Java
Las herramientas de desarrollo Java incluidas junto con WebSphere Studio
permiten desarrollar cualquier aplicación Java. Añaden perspectivas Java al
entorno de trabajo, así como varias vistas, editores, asistentes, constructores
y herramientas para fusionar y propagar código.
Las herramientas de desarrollo Java ofrecen las siguientes prestaciones:
• Soporte de JDK 1.3.
• Soporte conectable en tiempo de ejecución para la conmutación de JRE
y para pasar a múltiples entornos de tiempo de ejecución de IBM y otros
distribuidores.
• Compilación incremental automática.
• Un depurador para la depuración local y remota.
• Capacidad para ejecutar código que tenga errores en los métodos.
• Protección contra errores y recuperación automática.
• Notificación y corrección de errores.
• Editor de texto Java con resaltado completo de la sintaxis y ayuda total
del contenido.
• Herramientas de propagación que permiten reorganizar las aplicaciones
Java.
• Herramientas de búsqueda inteligente, de comparación y de fusión para
los archivos fuente Java.
• Cuaderno para evaluar los fragmentos de código.
6.5.2
Herramientas de Desarrollo de Aplicaciones Web
El entorno de desarrollo Web de WebSphere Studio proporciona las herramientas necesarias para desarrollar aplicaciones Web tal como se define en la
especificación de Sun Microsystems Java Servlet 2.3 Specification y la especificación de Sun Microsystems JSP 1.2.
184
CAPÍTULO 6. WEBSPHERE
Las aplicaciones Web incluyen páginas Web estáticas, JavaServer Pages
(JSP), servlets Java, descriptores de despliegue (archivos web.xml) y otros
recursos Web.
Este entorno reúne todos los aspectos del desarrollo de aplicaciones Web
en una interfaz común. Todos los miembros del equipo del sitio Web, incluidos
los autores del contenido, los artistas gráficos, los programadores y los webmasters, pueden trabajar en los mismos proyectos y acceder a los archivos que
necesitan.
Dentro del entorno de desarrollo Web integrado resulta fácil crear, ensamblar, publicar, desplegar y mantener en colaboración aplicaciones Web
dinámicas e interactivas.
El entorno de desarrollo Web incluye las siguientes posibilidades de alto
nivel:
• Herramientas para JavaServer Faces, llamadas componentes Faces y Objetos de datos de Service (SDO, anteriormente WDO). JavaServer Faces
es una infraestructura de IU que proporciona componentes GUI y un modelo de eventos para desarrollar interfaces de usuario Web gestionadas
por datos dinámicos. Los Objetos de datos de Service pueden facilitar la
conectividad de datos y el enlace de datos con la IU, sin que sea necesario
programar.
• Creación de proyectos Web, ya sea utilizando la jerarquía definida por
J2EE o una versión estática que reduce la actividad general del proyecto
cuando los elementos generales no son necesarios.
• Creación y edición de un archivo descriptor de despliegue Web (web.xml).
• Creación, validación, edición y depuración de archivos JSP y HTML.
Están disponibles tanto el editor WYSIWYG como el editor de fuente
para la creación de páginas JSP y HTML.
• Edición, depuración y validación de JavaScript.
• Soporte de códigos JSP (taglib) personalizados, basado en la especificación JSP 1.2.
• Una vista ampliable, llamada vista fragmentos de código que puede utilizarse para añadir, catalogar y organizar objetos de programación re-
6.5. HERRAMIENTAS DE WSAD
185
utilizables, como por ejemplo código HTML, JavaScript y JSP conjuntamente con archivos y bibliotecas de códigos.
• Edición y animación de imágenes.
• Soporte de edición de hoja de estilos en cascada (CSS).
• Importación HTTP/FTP.
• Exportación FTP (copia de un solo recurso) a un servidor.
• Importación, exportación y validación de archivadores Web (WAR).
• Visión, análisis, validación y gestión de enlaces lo que incluye la conversión de enlaces, el marcado de enlaces rotos y el arreglo de los enlaces al
mover o redenominar recursos.
• Creación de servlets mediante un asistente para la creación de servlets
nuevos y la adición de correlaciones de servlet al archivo de descriptor
de despliegue (web.xml).
• Generación de aplicaciones Web mediante asistentes que crean recursos
Web a partir de beans y consultas de base de datos (SQL).
• Integración con el entorno de prueba de WebSphere.
• Soporte de publicación para varios tipos de servidor Web.
• Desarrollo de Struts y JSF portlet que es parecido al desarrollo de aplicaciones Web.
• Web Site Designer permite editar todo un sitio Web. Puede ver el sitio
Web en una vista Navegación para añadir páginas nuevas y suprimir y
mover páginas en este sitio. Además, utilizando una plantilla de página,
es posible hacer coherentes el diseño y el estilo a través de un sitio. Las
páginas de un sitio Web están organizadas en una jerarquía y Web Site
Designer utiliza esta información de estructura para generar automáticamente enlaces de navegación y mapas de sitios
6.5.3
Herramientas de Desarrollo de Servicios Web
WebSphere Studio proporciona asistentes y otras herramientas para hacer posible el rápido desarrollo de servicios Web.
186
CAPÍTULO 6. WEBSPHERE
Los servicios Web son aplicaciones e-business modulares y basadas en estándares que las empresas pueden combinar y emparejar dinámicamente para
efectuar transacciones complejas con un mínimo de programación.
Los servicios Web permiten a los compradores y vendedores de todo el
mundo descubrirse unos a otros, conectarse dinámicamente y ejecutar transacciones en tiempo real con la mínima interacción humana.
Algunos ejemplos de servicios Web podrían ser artículos de revistas teatrales, informes meteorológicos, comprobaciones de crédito, cotizaciones en bolsa,
asesores de viajes, o procesos de reserva para viajes en compañías aéreas.
Cada uno de estos servicios empresariales autocontenidos es una aplicación
que se puede integrar fácilmente junto con otros servicios, sean de la misma o
de otra compañía, para crear un proceso comercial completo.
Esta interoperatividad permite a las empresas publicar, descubrir y enlazar
dinámicamente un rango de servicios Web por Internet.
Las herramientas de desarrollo de servicios Web proporcionadas en WebSphere Studio están basadas en estándares abiertos (de distintas plataformas):
• UDDI (descripción, descubrimiento e integración universales), que permite a las empresas autodescribirse, publicar especificaciones técnicas
sobre cómo quieren llevar a cabo el e-business con otras compañías, y
buscar otras empresas que les proporcionen los bienes y servicios que
necesitan, todo ello por medio de registros UDDI en línea.
• El protocolo simple de acceso a objetos (SOAP), que es un estándar para
transportar de manera fiable mensajes de negocio electrónico desde una
aplicación empresarial a otra por Internet.
• El lenguaje de descripción de servicios Web (WSDL), que describe los
programas accesibles por Internet (o por otras redes), así como los formatos de mensaje y los protocolos empleados para comunicarse con ellos.
WebSphere Studio facilita los siguientes procesos para ayudar a construir
y desplegar aplicaciones habilitadas para servicios Web:
• Descubrir : Examinar el Registro Comercial UDDI con el fin de localizar
servicios Web existentes para la integración.
6.5. HERRAMIENTAS DE WSAD
187
• Crear o transformar : Crear servicios Web a partir de artefactos existentes como son los beans Java, los beans EJB, los URL que toman y
devuelven datos, las llamadas a DB2(R) XML Extender, los procedimientos almacenados de DB2 y las consultas SQL.
• Construir : Se puede crear un archivo WSDL que describe el servicio y
a continuación genera los envoltorios de Servicio web y bean Java desde
dicho WSDL.
• Desplegar : Desplegar servicios Web en los entornos de prueba de WebSphere Application Server o Apache Tomcat mediante las herramientas
de servidor.
• Probar : Probar servicios Web en ejecución local o remota para obtener
un intercambio de información instantáneo.
• Desarrollar : Generar aplicaciones de ejemplo para ayudar a crear la
propia aplicación cliente de servicios Web.
• Publicar : Publicar los servicios Web en el registro comercial UDDI anunciándolos para que otras empresas puedan acceder a ellos.
6.5.4
Herramientas de Desarrollo de Enterprise JavaBeans (EJB)
El entorno de desarrollo de EJB presenta un soporte completo de EJB 1.1 y
2.0, un cliente de prueba EJB, un entorno de prueba unitario para J2EE y soporte de despliegue para archivadores Web (WAR) y archivadores de empresa
(EAR).
Es posible correlacionar beans de entidad con bases de datos y generar
componentes EJB para compaginarlos en sistemas de proceso de transacciones.
XML proporciona un formato ampliado para los descriptores de despliegue en
EJB.
Se incluyen las herramientas de desarrollo EJB siguientes:
• Herramientas para importar / exportar, para la creación y la generación
de código, y para editar, así como soporte para descriptores de despliegue estándar y para extensiones y enlaces específicos de WebSphere
Application Server.
188
CAPÍTULO 6. WEBSPHERE
• Herramientas de correlación entre EJB y RDB, que proporcionan el modelo, el entorno de tiempo de ejecución y la interfaz para editar la correlación entre los beans EJB y las tablas de bases de datos relacionales
con las posibilidades descendente y ascendente. Los correlacionadores
dan soporte a las asociaciones, a la herencia, y a los conversores y compositores como ayudantes en las correlaciones de columnas.
• Un motor de consulta que da soporte al código desplegado, a base de
generar series SQL en clases persistentes.
• Herramientas que proporcionan capacidad para crear, editar y validar
archivos EAR.
• Editores para los descriptores de despliegue.
• Visión de esquema RDB gráfico y herramientas de edición.
• Las herramientas de despliegue para los beans de empresa proporcionan
un entorno de línea de mandatos de forma que el usuario puede ejecutar
procesos de construcción durante la noche y generar automáticamente
el código de despliegue en modalidad de proceso por lotes.
6.5.5
Herramientas XML y XSL
El completo juego de herramientas XML incluye componentes para generar
DTD, esquemas XML y archivos XML, XSD y XSL. También soporta la integración de datos relacionales y XML.
6.5.6
Herramientas de Base de Datos Relacional
WebSphere Studio proporciona herramientas de base de datos relacional necesarias para trabajar con bases de datos relacionales en el desarrollo de aplicaciones.
Las herramientas de base de datos relacional incluyen vistas, asistentes,
editores y otras características que facilitan el desarrollo y la prueba de los
elementos de base de datos de la aplicación.
A menos que se indique explícitamente, la característica de las herramientas de base de datos relacional da soporte a todos los distribuidores de bases
de datos.
6.5. HERRAMIENTAS DE WSAD
189
Se puede gestionar las definiciones y conexiones de base de datos que se
necesite para el desarrollo de las aplicaciones. Se puede conectar con bases
de datos e importar definiciones de base de datos, o definir bases de datos,
esquemas, tablas y vistas nuevas.
Conectarse con o realizar importaciones desde varios tipos de bases de
datos, como por ejemplo DB2(R), Oracle, SQL Server, Sybase, Cloudscape e
Informix.
El constructor de consultas SQL proporciona una interfaz visual para crear
y ejecutar sentencias SQL. Se puede crear una sola sentencia o añadir expresiones y agrupamientos complejos.
Se puede crear una consulta simple utilizando el asistente de sentencias
SQL o bien utilizar el constructor de consultas SQL que da soporte a una
amplia variedad de sentencias.
También hay un editor de SQL con resaltado y ayuda de contenido y que
permite editar y crear manualmente archivos .sql.
El componente constructor de procedimientos almacenados y UDF de DB2
proporciona asistentes y herramientas para crear y trabajar con procedimientos almacenados y funciones definidas por usuario (UDF) para utilizarlos con
DB2 Universal Database.
Cuando se crea una aplicación que acceda a datos DB2, se podrá mejorar
el rendimiento de la misma incorporando procedimientos almacenados y UDF
registrados con el servidor de bases de datos. Se puede reducir el tráfico de la
red y hacer un mejor uso de la lógica de gestión compartida.
6.5.7
Herramientas de Desarrollo de Aplicaciones Struts
Struts es un conjunto de clases Java y bibliotecas de códigos JSP que proporcionan una infraestructura conceptual para el desarrollo de aplicaciones Web.
La tecnología Struts es de código fuente abierto y se ha desarrollado como
parte del proyecto Jakarta de Apache Software Foundation.
Un diagrama web es un archivo que ayuda a visualizar el flujo de una
aplicación web basada en Struts.
Debido a los niveles de elementos indirectos que implica una aplicación
Struts, la posibilidad de tener una imagen gráfica del flujo de la aplicación
190
CAPÍTULO 6. WEBSPHERE
puede ayudar a entenderla mejor.
El editor de diagramas web (Web Diagram Editor - WDE ):
• Se utiliza para crear diagramas de los flujos de página dirigidos por
lógica.
• Tiene soporte portlet para la creación de portlets de Struts.
Se puede utilizar el editor de diagramas para mostrar una aplicación Struts
o parte de ella.
Por ejemplo, se tiene una aplicación Struts en tres partes. Una parte
gestiona el proceso lógico, otra se encarga de las consultas del producto y la
tercera maneja las actualizaciones del mismo. En este caso, la aplicación se
puede organizar en tres módulos con tres diagramas web o en un módulo con
un diagrama web.
También se puede interactuar directamente con los nodos que se representan dentro de un diagrama.
Por ejemplo, si un nodo está sin realizar, efectuando una doble pulsación
con el ratón sobre el nodo se invoca un asistente que ayuda a crear el nodo.
Si un nodo ya está realizado, la doble pulsación invoca el editor que tenga
asociado.
6.6
La Experiencia Pervasiva de IBM
La experiencia pervasiva cubre múltiples ubicaciones para acceder a aplicaciones y datos a través de diferentes tipos de redes de área local, área personal,
y redes de área amplia. Estas pueden ser cableada, inalámbrica o una combinación.
El punto final puede ser cualquiera de los pilares pervasivos (un vehículo,
una casa, una máquina o una combinación).
Las aplicaciones pueden ser comunes a todas las ubicaciones, o específicos
para un subconjunto (ver fig. 6.6 de la pág. 191).
Las ubicaciones individuales tienen necesidades únicas, por lo tanto, la
6.6. LA EXPERIENCIA PERVASIVA DE IBM
Figura 6.6: Experiencia pervasiva de IBM
191
192
CAPÍTULO 6. WEBSPHERE
Figura 6.7: Computación ubicua
computación ubicua también debe acomodarse a las distintas “ubicaciones”
móviles que interactúan entre sí.
En la experiencia pervasiva, los usuarios tienen la necesidad de acceder
a sus aplicaciones desde diversos lugares y las mismas aplicaciones necesitan
estar disponibles a través de diversas redes y para cualquier dispositivo (ver
fig. 6.7 de la pág. 192).
El objetivo es el acceso a datos y aplicaciones en cualquier momento y en
cualquier lugar desde cualquier dispositivo.
Esto es lo que significa pervasivo: acceso, interacción, integración.
La experiencia pervasiva se extiende a la plataforma WebSphere para entregar datos y voz a todos los dispositivos ubicuos (ver fig. 6.8 de la pág.
6.6. LA EXPERIENCIA PERVASIVA DE IBM
Figura 6.8: Experiencia ubicua extendida a la plataforma WebSphere
193
194
CAPÍTULO 6. WEBSPHERE
193).
6.7
Modelo de Programación de WebSphere para
Dispositivos Pervasivos
El modelo de programación de WebSphere para dispositivos pervasivos está
diseñado para mover el actual modelo de programación de WebSphere a lo
más bajo de la cadena, desde que los dispositivos acceden al navegador.
Proporciona un modelo estándar para los dispositivos de programación
que sea compatible con el modelo que se está utilizando en el desarrollo J2EE,
extendiendo el modelo J2EE para hacerlo más utilizable en el ambiente de
dispositivos [22].
6.8
Alcance
El modelo J2EE está diseñado para soportar en general algún tipo de lenguaje
para la conexión a navegadores. Se crean servlets o Java Server Pages y, a
continuación son entregados a un navegador para su interpretación.
El dispositivo de salida es siempre un navegador o un agente similar de
prestación.
Este agente está siempre conectado a una red con el fin de alcanzar el
servidor. Si bien se trata de un excelente modelo de programación, se excluyen
muchos otros métodos de conexión y de salida.
El portal de WebSphere extiende este modelo para soportar a otros formatos de salida a través de transcodificación. Por ejemplo, un portlet que produce
Voice XML va a interactuar con un teléfono, en lugar de un navegador, pero
la lógica básica de la aplicación de negocio seguirá siendo la misma.
Naturalmente, aún mejorando el modelo anterior, todavía existen espacios
vacíos.
El modelo de programación de WebSphere para dispositivos pervasivos
extiende este modelo aún más a los dispositivos que no son necesariamente
navegadores, y no pueden estar conectados todo el tiempo.
6.8. ALCANCE
195
Figura 6.9: Alcance
196
CAPÍTULO 6. WEBSPHERE
Figura 6.10: Arquitectura PVC
Por ejemplo, WebSphere Everyplace Access proporciona navegación fuera
de línea (puede procesar formularios HTML mientras está desconectado, ya
que esas operaciones han subido cuando la red estaba disponible).
6.9
Alcance de la Arquitectura PvC
La arquitectura de la computación pervasiva (PVC ) es bastante simple: un
dispositivo de algún tipo se conecta por alguna red a un servidor que puede
tener acceso a datos.
Todas las piezas aquí se basan en estándares (XML, SyncML, JDBC, y así
sucesivamente), la industria de tecnologías aceptó que no hay estándares todavía por lo que las aplicaciones interoperarán con otras aplicaciones soportando
esas normas (ver fig. 6.10 de la pág. 196).
6.10. MODELO DE PROGRAMACIÓN EXTREMO A EXTREMO
197
Figura 6.11: Modelo de programación extremo a extremo
Dentro de este ámbito, se podrá apoyar el modelo basado en navegador de
J2EE, dispositivos con navegadores, navegación fuera de línea, VXML entregado a un teléfono móvil del usuario, y muchas otras opciones.
No se especifica cómo los datos son entregados o cómo son interpretados
por el cliente final. El modelo sólo establece que los datos se mueven de un
servidor a través de una red (o redes) a un dispositivo.
6.10
Modelo de Programación Extremo a Extremo
El modelo de programación se basa en la metodología estándar modelo-vistacontrolador. Generalmente en J2EE, un servlet actúa como controlador, Java
Server Pages (JSP) proporciona la vista (o la aplicación de salida) y los datos
se acceden a través de Enterprise Java Beans (EJBs), que son los modelos de
lógica y datos de negocio en la parte final (ver fig. 6.11 de la pág. 197).
198
CAPÍTULO 6. WEBSPHERE
Esta arquitectura está siendo empujada a través de la red a nuevos dispositivos.
La desconexión de operaciones permitirá a la lógica de negocio funcionar
si el dispositivo está actualmente conectado a la red o no.
R
Por ejemplo, las transacciones podrán ser almacenadas en un DB2 Everyplace (DB2e), base de datos a nivel local en un dispositivo, si la red
no está disponible, y fluía a la parte final una vez que los sistemas de conectividad de la red fue restaurada.
Con esta funcionalidad, los dispositivos comienzan a actuar como puntos
finales en el modelo de programación.
6.11
WebSphere y las Aplicaciones para Dispositivos
Todas estas aplicaciones son construidas por las herramientas de WebSphere
Studio. Todas las solicitudes están basadas en estándares abiertos para permitir la conectividad y la interoperabilidad con otras aplicaciones, plataformas
y dispositivos.
Desde un punto de vista del desarrollo, es posible considerar la utilización de WebSphere Studio Device Developer como un plug-in para WebSphere
Studio Application Developer.
6.12
La Plataforma de Servicios Pervasivos
La plataforma de servicios pervasivos abarca una serie de diferentes entornos
de desarrollo (ver fig. 6.12 de la pág. 199).
Sin embargo, el código debería ser similar a través de los ambientes, y
todos los códigos se llevarían a cabo en alguna de las variantes de Java - J2SE,
J2ME, etc.
Los pilares soportan diferentes familias de dispositivos, pero la codificación
sigue siendo básicamente la misma.
Para teléfonos móviles y PDAs, probablemente todavía se verá la progra-
6.12. LA PLATAFORMA DE SERVICIOS PERVASIVOS
Figura 6.12: Paquete de la plataforma de servicios pervasivos.
199
200
CAPÍTULO 6. WEBSPHERE
Figura 6.13: Modelo de programación de WebSphere.
mación de MIDP, ya que es habitual del modelo de programación.
Para set-top boxes y otros dispositivos, se puede tener SMF (kit de utilidades de desarrollo que facilita la creación de aplicaciones gestionadas por el
servidor implementadas en el Services Management Framework) como marco
para entregar paquetes.
6.13
¿Cuál es el Modelo de Programación de WebSphere para la Computación Ubicua?
En este punto se desarrolla cómo el modelo de programación extiende el modelo
J2EE : los navegadores son extendidos más allá de HTML a visual (VXML),
o una combinación (navegadores y aplicaciones multimodales).
El cliente podrá ser un ordenador portátil, PDA u otro dispositivo.
6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE
201
La red conecta el cliente a un servidor, pero la conexión de red puede ser
esporádica (ver fig. 6.13 de la pág. 200).
Con el fin de hacer que esto funcione, se necesitará de inteligencia en el
dispositivo. Por ejemplo, WebSphere Everyplace Access tiene un cliente que
R
sincroniza Lotus Notes
databases, buzones de correo Exchange, y bases de
datos DB2 con un solo clic.
DB2 Everyplace podrá ser utilizado como un área de almacenamiento a
nivel local, hasta que la red está disponible para fluir las transacciones.
MQ Everyplace podrá ser usado para la cola de mensajes a nivel local hasta
que la red está disponible para enviar los mensajes a sus destinos.
SMF contiene un motor de servlets y procesador JSP que permite el procesamiento en el dispositivo, y también proporciona un conjunto de instrumentos para convertir archivos WAR a paquetes para facilitar la distribución
y el despliegue de un código de J2EE a SMF.
6.14
WebSphere Studio Device Developer IDE
6.14.1
Developer IDE
WebSphere Studio Device Developer es una plataforma para el desarrollo, depuración y despliegue de aplicaciones para dispositivos pequeños. Es miembro
de la familia WebSphere.
El entorno de desarrollo integrado también viene con una copia del WebSphere Micro Environment (IBM-compatible con J2ME JVM), con licencia para el desarrollo (ver fig. 6.14 de la pág. 202 ).
6.14.2
WebSphere Studio Device Developer
Esta es la funcionalidad básica de WebSphere Studio Device Developer. WebSphere Studio Device Developer contiene un entorno de desarrollo integrado por
el WebSphere Micro Environment (WME, una potencia de Java en tiempo
de ejecución que implementa las especificaciones J2ME), el WebSphere Custom Environment (WCE, Java en tiempo de ejecución que no implementa las
especificaciones de J2ME, por lo que es más personalizable), funcionalidad
202
CAPÍTULO 6. WEBSPHERE
Figura 6.14: WebSphere Studio Device Developer IDE
6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE
203
Figura 6.15: WebSphere Studio Device Developer
adicional a través de plug-ins, y el gestor de actualizaciones para permitir la
actualización del código a través de la Web (ver fig. 6.15 de la pág. 203).
El WebSphere Custom Environment no se entrega con WebSphere Studio
Device Developer, pero está disponible en la Web a través del Administrador
de Actualizaciones.
El WebSphere Studio Device Developer puede también ser instalado como
plug-in en el Site Developer o en el Application Developer, si alguno es detectado en la máquina. En anteriores emisiones, había una opción para instalarlo
como plug-in o stand-alone.
Si se desea utilizar WebSphere Studio Application Developer y WebSphere
Studio Device Developer por separado en la misma máquina, se deberá instalar
el WebSphere Studio Device Developer primero, luego el WebSphere Studio
Application Developer.
Si se necesita más funcionalidad, se podrá añadir plug-ins para WebSphere Studio Device Developer (o cualquier miembro de la familia WebSphere
Studio).
Las actualizaciones están disponibles a través del gestor de actualizaciones,
204
CAPÍTULO 6. WEBSPHERE
Figura 6.16: Gestor de Actualizaciones.
en la perspectiva Instalación / Actualización (ver fig. 6.16 de la pág. 204).
Se podrá descargar versiones actualizadas de los módulos existentes, así
como añadir nuevas funcionalidades al WebSphere Studio Device Developer.
6.14.3
Trabajar con el IDE
WebSphere Studio Device Developer utiliza un concepto de espacio de trabajo,
un directorio que contiene el código de trabajo (un subdirectorio por cada
proyecto), y un subdirectorio de metadatos que contienen información sobre
el código.
WebSphere Studio Device Developer también utiliza el concepto de proyecto, una colección de paquetes que componen la totalidad de una aplicación
6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE
205
Java (u otra). Por ejemplo, se podrá crear un Java, J2ME, MIDlet, C u otro
proyecto.
Se deberá pensar un proyecto como un super-paquete. Cuando se empieza
un desarrollo desde cero, se crea un proyecto. por lo cual se deberá escoger el
tipo apropiado de proyecto.
Varios espacios de trabajo permiten mantener múltiples proyectos por separado, todos los proyectos en el espacio de trabajo son reconstruidos cuando
se hace un “Reconstruir todos”. En versiones anteriores, esta fue la principal
forma para evitar la sobrecarga de la reconstrucción de proyectos. Sin embargo, en siguientes emisiones, se puede cerrar un proyecto, desde la perspectiva
de recursos entonces el proyecto no será reconstruido.
Si no se encuentra un proyecto, o se está intentando importar un proyecto
y muestra que ya existe, se debe ir a la perspectiva Recursos y asegurarse de
que no existe, o si está cerrado.
La pantalla de bienvenida actúa como un archivo readme para la versión
de la herramienta, y se muestra automáticamente la primera vez que invoca
el producto. También se encuentra en el menú Ayuda.
La herramienta se divide en Perspectivas, barras de herramientas, vista, y
editores. La pantalla entera es a veces llamado el Workbench.
Una perspectiva es una colección predefinida de barras de herramientas,
vistas y editores [26].
Barra de Herramientas
La barra de herramientas superior (bajo la barra de menús) contiene todos
los wizards disponibles de WebSphere Studio Device Developer, que cambian
para que coincida con la perspectiva actual.
Los Wizards están disponibles para crear aplicaciones, definir dispositivos,
probar código y crear estructuras Java (clases, interfaces, etc) dentro de sus
programas (ver fig. 6.17 de la pág. 206).
La barra izquierda de herramientas contiene todas las perspectivas y / o
vistas abiertas.
Cuando se abre una perspectiva, su ícono se añadirá a la parte superior
206
CAPÍTULO 6. WEBSPHERE
Figura 6.17: Barra de herramientas.
derecha de la barra de herramientas.
Perspectiva, Editores y Vistas.
Una perspectiva es un grupo de vistas y editores en la ventana del espacio de
trabajo diseñadas para centrarse en una determinada tarea.
En una ventana del espacio de trabajo pueden existir una o varias perspectivas. Cada perspectiva contiene una o varias vistas y editores.
Dentro de una ventana, cada perspectiva puede tener un conjunto distinto
de vistas, pero todas las perspectivas comparten el mismo conjunto de editores
También se puede personalizar perspectivas y guardarlas.
Una vista es un componente visual del espacio de trabajo.
Se suele utilizar para navegar en una jerarquía de información (como los
recursos del espacio de trabajo), abrir un editor o visualizar propiedades del
editor activo.
Las modificaciones efectuadas en una vista se guardan inmediatamente.
6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE
207
Sólo puede existir una instancia de un tipo de vista concreto en una ventana
del espacio de trabajo.
Un editor se utiliza para modificar los archivos, y es específico para el tipo
de archivo que está siendo editado.
Con WebSphere Studio Device Developer, se puede especificar editores externos para determinados tipos de archivo.
Sólo un editor puede estar activo en cualquier momento, varios editores se
podrán abrir, pero todos estarán en la misma ventana, disponible a través de
pestañas.
Si se cambia algo en un editor, por lo general se guardará antes de que
se utilice (antes de ejecutar el código, por ejemplo). Se podrá configurar una
opción en preferencias para guardar automáticamente un archivo antes de que
sea utilizado.
Espacio de Trabajo (Workspaces)
Todo el código se almacena en archivos separados en un “espacio de trabajo”, un directorio de repositorios basados en valores predeterminados para el
espacio de trabajo dentro del directorio de instalación de WebSphere Studio
Device Developer.
R
Se trata de una importante partida de la familia VisualAge de herramientas que almacenan código en un repositorio, en lugar de archivos separados. Esto significa que podrá editar y procesar todos los archivos fuera de
WebSphere Studio Device Developer.
Se podrá cambiar el espacio de trabajo, para que tome efecto se deberá
reiniciar WebSphere Studio Device Developer para cambiar al nuevo espacio
de trabajo.
Un espacio de trabajo contiene un directorio “. metadata ” que WebSphere
Studio Device Developer utiliza para mantener la información del proyecto.
208
CAPÍTULO 6. WEBSPHERE
6.14.4
Configuración J2ME
Java 2 Micro Edition (J2ME) es un conjunto estándar de configuraciones y
perfiles para el desarrollo de Programas Java en dispositivos embebidos.
Si una aplicación puede aprobar una serie de pruebas, es certificada “Java
Powered”, lo que significa que cumple con las normas de la especificación
J2ME.
WebSphere Micro Edition ha sido certificado “Java Powered”.
WebSphere Studio Device Developer por defecto incluye soporte para J2ME
en PalmOS y PocketPC. Otras configuraciones y el soporte de otras plataformas están disponibles a través del administrador de actualizaciones.
WebSphere Studio Device Developer soporta la descarga de código a un
PDA para su ejecución y depuración.
6.14.5
Construcción y Ejecución en Dispositivos
WebSphere Studio Device Developer soporta el despliegue de código para varios
dispositivos.
Se debe definir los dispositivos y, a continuación, crear proyectos, se podrá
configurar la ejecución de un proyecto en un dispositivo específico.
Dentro de cada proyecto, se es capaz de construir código para una plataforma concreta, o múltiples plataformas. Una vez que el código se construye,
se podrá ejecutar en un dispositivo específico (ya sea real o un emulador).
WebSphere Studio Device Developer utiliza un emulador MIDP y también
se podrá ejecutar código en un JVM separado.
Soporta directamente los dispositivos Palm y el emulador de Palm y PocketPC. Otros dispositivos pueden ser soportados a través de plug-ins desde el
fabricante del aparato.
Construcción
Al crear una construcción, se deberá especificar una plataforma y un nombre
para la construcción.
6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE
Figura 6.18: Wizart par configurar construcciones.
209
210
CAPÍTULO 6. WEBSPHERE
Una posible convención de nombres es el nombre del proyecto, así como el
nombre del dispositivo de destino (ver fig.6.18 de la pág. 209).
Las plataformas básicas son PalmOS, PocketPC, WINx86, Linux x86, y
JAR genéricos. Otros dispositivos se podrán descargar desde el gestor de
actualizaciones
Para pruebas sencillas que no requieren un emulador, se podrá seleccionar “Ejecutar como → Java Application”. La aplicación se compila y luego
es ejecutada en una JVM. Se verá la salida en la ventana de consola de la
perspectiva depuración.
Sin embargo, cada vez que se desee ejecutar en un dispositivo físico o
ejecutar una aplicación MIDP (que requiere un emulador), se debe crear un
constructor aparte.
Un proyecto puede tener múltiples constructores, en función de sus necesidades. Cada constructor debe tener un nombre único dentro del proyecto.
Dispositivos
Cada dispositivo requiere una configuración separada. Todos los dispositivos se comparten, por lo que cualquier proyecto puede ser desplegados en un
dispositivo específico.
WebSphere Studio Device Developer soporta dispositivos Palm (a través de
HotSync), emulador Palm, y dispositivos PocketPC (a través de ActiveSync).
WebSphere Studio Device Developer también ejecutará proyectos a nivel local JVM, y aplicaciones MIDP pueden ser desplegados en un emulador MIDP.
Otros proveedores pueden incluir emuladores soportados a través de plugins Eclipse. Estos deben estar disponibles a través del gestor de actualizaciones, o directamente desde el proveedor.
Creación de Dispositivos
Hay una función soportada para Palm y dispositivos PocketPC. Por defecto,
estas son las únicas opciones para la creación de dispositivo.
Si se añaden plug-ins para otros dispositivos o emuladores, esos nuevos
6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE
Figura 6.19: Creación de dispositivos.
211
dispositivos deberían aparecer como opciones en esta pantalla (ver fig. 6.19
de la pág. 211).
Ejecutar una Aplicación
Cuando se inicia un proyecto, se podrá configurar que WebSphere Studio Device Developer automáticamente cambie a la perspectiva de depuración en
preferencias.
Si el dispositivo no es compatible con WebSphere Studio Device Developer, se tendrá que exportar el código y luego transferirlo al dispositivo para
ejecutarlo.
Al configurar una ejecución, en primer lugar hay que elegir el tipo de
aplicación que se está construyendo. A continuación, se debe dar un nombre,
y seleccionar el proyecto.
Dependiendo del tipo de aplicación, también seleccionar qué constructor
usar, por último, a qué dispositivo está dirigido.
Si no se ha definido todos los dispositivos, se podrá pulsar el botón Configurar junto al dispositivos del menú desplegable para definir uno.
Se debe tener un dispositivo definido con el fin de crear una ejecución (ver
fig. 6.20 de la pág. 213).
6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE
Figura 6.20: Ejecución de una aplicación.
213
214
CAPÍTULO 6. WEBSPHERE
Capítulo 7
Aplicación
7.1
Descripción General
El presente trabajo se basa en el estudio de software de base que permite el
desarrollo de aplicaciones Móviles y aplicaciones Web.
Consiste en el desarrollo de dos aplicaciones:
1. Una Aplicación Móvil con acceso a base de datos multiplataforma que
permita la consulta de notas correspondientes a parciales, laboratorios y
monografías de diferentes asignaturas por parte de los alumnos inscriptos
en las mismas.
2. Una Aplicación Web para gestión y administración de usuarios, alumnos
y notas.
El Objetivo es realizar la aplicación Móvil en J2ME, con la cual el alumno
pueda consultar sus notas desde cualquier lugar sin necesidad de dirigirse al
establecimiento educativo, como así también el desarrollo de la aplicación de
administración en Java, mediante la cual los usuarios autorizados (por ej.
profesores, adscriptos, etc.) puedan agregar, editar y eliminar tanto usuarios
como alumnos.
215
216
CAPÍTULO 7. APLICACIÓN
7.2
7.2.1
Análisis del Sistema
Modelo de Datos
El Modelo de Datos del sistema no es complejo ya que no se requiere muchas
entidades para el propósito del mismo (ver fig. 7.1 de la pág. 217).
Entidades:
• Alumnos: Contiene información referida al alumno inscrito en las asignaturas.
• Asignatura: Contiene información referida a la asignatura.
• Nota: Contiene información de las notas correspondientes a un alumno
según la asignatura en la que se encuentra inscripto.
• Usuarios: Contiene información referente a los usuarios que tienen acceso al sistema de Administración.
• Consultas: Entidad para mantener información sobre la cantidad de
consultas realizadas en el sistema por parte de los alumnos.
• Excel : Entidad utilizada como tabla intermedia en el proceso de carga
del Excel que contiene la información de los alumnos y sus notas.
7.2.2
Casos de Uso
En el Diagrama de Casos de Uso se puede observar los actores y casos de usos
del sistema, incluyendo sus interacciones, tanto de la Aplicación Móvil (ver
fig. 7.2 de la pág. 218), como de la Aplicación Web (ver fig. 7.3 de la pág.
219).
7.3
Aplicación Móvil
La Aplicación Móvil cuenta con un menú inicial mediante el cual se puede
ingresar al sistema, consultar la ayuda, configurar la url a la cual se conectará
y salir de la aplicación (ver fig. 7.5 de la pág. 221).
7.3. APLICACIÓN MÓVIL
Figura 7.1: Modelo de datos.
217
218
CAPÍTULO 7. APLICACIÓN
Figura 7.2: Diagrama de caso de uso de la aplicación móvil.
7.3. APLICACIÓN MÓVIL
Figura 7.3: Diagrama de caso de uso de la aplicación Web.
219
220
CAPÍTULO 7. APLICACIÓN
Figura 7.4: Pantalla inicial.
7.3. APLICACIÓN MÓVIL
Figura 7.5: Menú principal.
221
222
CAPÍTULO 7. APLICACIÓN
En la opción entrar, se puede:
1. Registrar en el sistema.
2. Loguear en el sistema.
La opción registrar permite al alumno que haya sido previamente dado de
alta en el sistema de Administración en alguna de las asignaturas, obtener
una clave para poder loguearse, la cual obtiene ingresando su DNI, LU y un
password elegido por el mismo y si el DNI y LU ingresados coinciden con los
datos registrados en la base de datos, se asigna dicho password proveído a ese
alumno.
En caso de que el alumno haya olvidado su clave, puede volver a realizar
este procedimiento las veces que así lo requiera (ver fig. 7.6 de la pág. 223).
La opción de loguearse permite ingresar al sistema propiamente dicho,
mediante el ingreso del DNI y el password obtenido en el proceso de registro
(ver fig. 7.7 de la pág. 224).
Si el alumno ingresa mal los datos, el sistema muestra un aviso de error
(ver fig. 7.8 de la pág. 225), en caso contrario permite acceder al menú de
asignaturas (ver fig. 7.9 de la pág. 226).
En el menú de asignaturas se pueden observar las asignaturas para las
cuales los alumnos pueden realizar las consultas de sus respectivas notas, en
este caso se tiene:
1. SO (Sistemas Operativos).
2. DAD (Diseño y Administración de Datos).
3. TP (Teleproceso y Sistemas Distribuídos).
Una vez seleccionada cualquiera de las asignaturas se accede al menú de
las diferentes opciones, ya sea parciales, laboratorios o monografía, teniendo
dos parciales con sus respectivos recuperatorios y extraordinario para cada
asignatura, cuatro laboratorios para SO, y seis para DAD y TP (ver fig. 7.10
de la pág. 227).
Teniendo en cuenta que las asignaturas corresponden a diferentes años y
cuatrimestres de la carrera de Licenciatura en Sistemas de Información, un
7.3. APLICACIÓN MÓVIL
Figura 7.6: Registro en el sistema.
223
224
CAPÍTULO 7. APLICACIÓN
Figura 7.7: Login.
7.3. APLICACIÓN MÓVIL
Figura 7.8: Mensaje de error en el logueo.
225
226
CAPÍTULO 7. APLICACIÓN
Figura 7.9: Menú de asignaturas.
7.3. APLICACIÓN MÓVIL
Figura 7.10: Menú de opciones para la consulta de notas.
227
228
CAPÍTULO 7. APLICACIÓN
alumno no puede estar dado de alta en más de una asignatura, con lo cual si
un alumno ingresa a una asignatura en la que no se encuentra registrado el
sistema muestra un error (ver fig. 7.11 de la pág. 229), en caso contrario, si el
alumno selecciona la asignatura en la cual se encuentra inscripto (cursando),
el sistema muestra el resultado de su consulta (ver fig. 7.12 de la pág. 230).
7.4
Aplicación Web
La Aplicación Web, como se mencionó anteriormente, permite la gestión de los
alumnos en condiciones de cursar las asignaturas, como así también gestionar
los usuarios que tienen acceso a la misma.
Una vez logueado en el sistema, se tiene un menú con diferentes opciones:
• SO: Muestra el listado de alumnos inscriptos en Sistemas Operativos
(ver fig. 7.14 de la pág. 232).
• DAD: Muestra el listado de alumnos inscriptos en Diseño y Administración de Datos.
• TP: Muestra el listado de alumnos inscriptos en Teleproceso y Sistemas
Distribuídos.
• Estadísticas: Muestra el total de alumnos que realizaron la registración
desde el dispositivo móvil, y total de consultas realizadas desde el móvil
en cada asignatura.
• Usuarios: Muestra los usuarios autorizados en el sistema web.
• Ayuda: Despliega una breve ayuda del sistema para resolver dudas.
En el sistema se puede agregar, editar, consultar y eliminar tanto alumnos
como usuarios (ver fig. 7.15 de la pág. 233, fig. 7.16 de la pág. 234 y fig. 7.17
de la pág. 235).
También el sistema permite leer archivos de Excel, para realizar la carga
masiva de alumnos en cada una de las asignaturas. Se debe seleccionar el
archivo a importar, ver fig. 7.18 de la pág. 236, luego se muestra una página
con los datos a importar, ver fig. 7.19 de la pág. 237, y una vez confirmado el
7.4. APLICACIÓN WEB
Figura 7.11: Error en la elección de la asignatura.
229
230
CAPÍTULO 7. APLICACIÓN
Figura 7.12: Resultado de la consulta.
7.4. APLICACIÓN WEB
Figura 7.13: Pantalla de bienvenida
231
232
CAPÍTULO 7. APLICACIÓN
Figura 7.14: Listado de alumnos de SO.
7.4. APLICACIÓN WEB
Figura 7.15: Alta de alumnos.
233
234
CAPÍTULO 7. APLICACIÓN
Figura 7.16: Edición de alumnos.
7.4. APLICACIÓN WEB
Figura 7.17: Consulta de alumnos.
235
236
CAPÍTULO 7. APLICACIÓN
Figura 7.18: Selección del archivo Excel.
7.4. APLICACIÓN WEB
Figura 7.19: Lectura del archivo Excel.
237
238
CAPÍTULO 7. APLICACIÓN
Figura 7.20: Confirmación de la operación.
Figura 7.21: Estadísticas.
proceso se muestra una página de confirmación del mismo (ver fig. 7.20 de la
pág. 238).
En la opción Estadísticas del menú, se puede observar la cantidad de alumnos registrados (alumnos que ingresaron al sistema móvil y se registraron desde
allí), y la cantidad de consultas realizadas en las respectivas asignaturas desde
el sistema móvil.
240
CAPÍTULO 7. APLICACIÓN
Capítulo 8
Conclusiones
Conclusiones Acerca de las Tecnologías y Software Utilizados
Se ha podido comprobar las grandes ventajas de la utilización de tecnologías y software, tanto de base de datos como de desarrollo de aplicaciones.
Los productos de WebSphere han demostrado ser herramientas muy potentes al momento de desarrollar tanto aplicaciones móviles como web, contando
con asistentes, corrección de errores y otras facilidades que hacen más rápido
y eficiente el trabajo.
Con respecto al motor de bases de datos DB2, se debe destacar la escalabilidad, Integridad y seguridad; interfaces sencillas y entendibles, completas,
intuitivas y con diversos asistentes, permitiendo de esa manera una mejor
comprensión en la utilización de la herramienta.
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.
Líneas Futuras de Acción
Se considera que las principales líneas futuras de acción derivadas del pre241
sente trabajo serían las siguientes:
• Ampliar el modelo de datos actual para soportar una estructura de múltiples Facultades y carreras.
• Adaptar la aplicación para poder soportar este nuevo modelo de datos.
• Mejorar el alcance de la protección de datos almacenados mediante la
incorporación de métodos de encriptación de datos.
Bibliografía
[1] L. Joyanes Aguilar. Cibersociedad. Mac Graw-Hill, 1997.
[2] J. M. Lombardo Enríquez; L. Joyanes Aguilar; S. Ríos Aguilar; J. M. Saíz
Álvares; F. Mata Mata. Gestión e Informática "Orientada al Conocimiento"en los Modelos de Comercio Electrónico en JIS2002 IV Jornadas
Informática y Sociedad. La Salle, Barcelona-España, 2002.
[3] P. Maestre Yenes. Diccionario de Gestión del Conocimiento e Informática. Fundación para la Difusión de las Ingenierías, Informática y Telecomunicación. Madrid-España, 2000.
[4] L. Joyanes Aguilar. La Carrera Mundial por el Conocimiento. Una Visión
Desde la Nueva Economía. Universidad Pontificia de Salamanca, MadridEspaña, 2000.
[5] E. Castillo; A. Cobo; P. Gómez; C. Solares. JAVA - Un Lenguaje de
Programación Multiplataforma para Internet. Paraninfo, España, 1997.
[6] A. S. Tanenbaum. Redes de Computadoras. Prentice Hall Hispanoamericana S. A., México, 1997.
[7] A. S. Tanenbaum. Sistemas Operativos Distribuidos. Prentice Hall Hispanoamericana, S.A., México, 1996.
[8] E. Castillo. Curso de LaTex. Universidad de Cantabria, CantasbriaEspaña, 1998.
[9] M. C. Muñoz; J. F. Guerra; B. Flores Muro; J. Meza Jaque; F. Sanchis
Marco. Valoración de la Gestión del Conocimiento a Través de los Indicadores del Capital Intelectual en I Congreso Internacional Sociedad de
la información. McGrawHill, Madrid-España, 2002.
243
244
BIBLIOGRAFÍA
[10] M. A. Porrúa Vigón. Elementos para la creación de una estrategia de
gobierno electrónico. VIII Congreso Internacional del CLAD sobre la
Reforma del Estado y de la Administración Pública, Panamá, 2003.
[11] Patricia J. Pascual. e-Government. UNDP-APDIP, 2003.
[12] L. Joyanes Aguilar; I. Zahonero Martínez. Estructura de Datos - Algoritmos, Abstracción y Objetos. Mc Graw Hill/Interamericana de España,
S.A.U., España, 1998.
[13] L. Joyanes Aguilar. Programación Orientada a Objetos - Segunda Edición. Mc Graw Hill/Interamericana de España, S.A.U., España, 1998.
[14] L. Boszörményi. Why Java is not my Favourite First-course Language.
Software - Concepts & Tools, N◦ 19, 141-145, 1998.
[15] J. H. Kingston. Algorithms and Data Structures. Desing, Correctnes,
Analysis. Second Edition. Addison-Wesley, 1998.
[16] G. Brassard; P. Bratley. Fundamentos de Algoritmia. Prentice Hall,
Madrid-España, 1997.
[17] F. Ferraz M. Schumacher y H. Sjostrand U. Wahli, I. Brown. WebSphere Studio Application Developer Version 5 Programming Guide.
ibm.com/redbooks, 2003.
[18] Sergio G. Rojas; Lucas O. Díaz. Java a Tope: J2ME(Java 2 Micro Edition).
[19] IBM. IBM DB2 Warehouse Manager Guía de Instalación Versión 7. IBM
Press, USA, 2001.
[20] IBM Corporation. IBM DB2 Universal Database para Windows Guía
Rápida de Iniciación Versión 7. IBM Press, USA, 2000.
[21] IBM Corporation. IBM DB2 Universal Database Suplemento de Instalación y Configuración Versión 7. IBM Press, USA, 2000.
[22] Using WebSphere Studio Device Developer to Build Embedded Java Applications. ibm.com/redbooks, Abril 2004.
[23] IBM Corporation. IBM DB2 Universal Database Consulta de Mandatos.
IBM Press, USA, 2000.
BIBLIOGRAFÍA
245
[24] IBM Corporation. IBM DB2 Universal Database Consulta de Mensajes.
IBM Press, USA, 2000.
[25] IBM Corporation. IBM DB2 Connect Enterprise Edition para OS/02 y
Windows Guía Rápida de Iniciación.
[26] WebSphere Studio Device Developer Product Documentation. ibm, 19982004.
Índice de Materias
activos, 11
intangibles, 23
intelectuales, 23
AIX, 136, 149, 152
aldea global, 2
API, 146
API (Application Programming Interface), 46
aplicación, 215
aplicación móvil, 216
aplicación Web, 228
Casos de Uso, 216
modelo de Datos, 216
aplicación interactiva, 68
aplicación Java, 151
aplicación
construcción, 208
arquitectura PvC, 196
arrays, 63
asistentes
mejoras en los, 151
AWT
concepto, 66
interface gráfica de usuario, 67
base de datos relacional
arquitectura de, 147
bases
de conocimientos, 11
bibliotecas
de clases, 38
bifurcaciones, 56
if, 56
if else, 57
bloque try, catch, finally, 59
bucles, 57
do while, 58
for, 58
while, 57
Business Intelligence, 151, 156
business intelligence, 166
C/C++, 55
CD-ROM, 150
CDC, 96
centro de depósito, 150
Centro de Desarrollo, 156, 157
centro de información, 151
cibercultura, 8
cibersociedad, 2
Clase, 44
clase
características, 61
clase en Java, 60
clase object, 62
clases de utilidad, 63
clase Arrays, 63
B/R, 144
B2B, 15
B2C, 15
B2E, 15
barra de herramientas, 205
base de datos
Segmentación de la, 138
247
248
clases string y StringBuffer, 65
Double, 66
integer, 66
CLDC, 96
client/server database, 139
cluster, 141
cluster of uniprocessors, 141
comentarios, 55
competitividad, 17
conclusiones, 241
conectividad
herramientas de, 138
conocer, 3
conocimiento, 3
ciclo de vida del, 6
corporativo, 24
definición de, 2
era del, 23
gestión del, 10
la estrategia de convertir los datos en, 24
materia prima de las empresas,
7
nuevo futuro del, 25
portales del, 15
sociedad del
la cultura en la, 8
Content-Type, 78
CORBA, 15
CUBE, 166
DAS, 144
Data Marts, 138
Datajoiner
El producto, 138
datamining, 14, 24
datawarehouse, 14, 24
datawarehousing, 24
dato, 3
datos espaciales, 154
ÍNDICE DE MATERIAS
Davenport
Thomas H., 4
DB2
administrador de datos, 148
Introducción a, 135
Universal Database, 136, 165
DB2 Connect, 138
DB2 Data Links Manager, 155
db2 Data Links Manager, 156
DB2 DataJoiner, 152
DB2 Optimizer, 154
DB2 Spatial Extender, 154
DB2 UDB Versión 8.1, 156
DB2 Warehouse Manager, 152, 156
db2ic, 151
DBA, 144
DDL y DML
sentencias de, 153
Denning
Stephen, 4
destroy, 81
desviaciones
Detección de, 138
dispositivos, 210
creación, 210
doGet, 78
doGet (), 81
doPost (), 81
Double, 66
métodos de la clase, 66
DRDA, 145, 152
Drucker
Peter, 23
DSS, 14
e-business
Web enabled para, 136
e-Government, 29, 30
estrategias, 32
modalidades, 31
ÍNDICE DE MATERIAS
e-procurement, 15
EAI, 15
Eclipse
Arquitectura de la plataforma,
173
economía
global, 22
EJB, 187
ejecutar una aplicación, 212
ejemplo de
arrays, 64
bifurcación if, 56
bifurcación if else, 57
bucle for, 58
bucle while, 57
clase, 44
comentario, 55
construcción de nombres de archivos en Java, 72
do while, 58
interface, 45
línea compuesta por tres sentencias, 55
método, 62
matriz, 64
operadores incrementales y relacionales, 52
programa no portable, 69
sentencia return, 59
encapsulación, 60
era digital, 7
ERP, 15
errores de programación
carga de drivers JDBC, 74
entrada/salida por archivo, 76
fuentes de caracteres, 76
scheduling de los hilos de ejecución, 69
terminación de líneas, 75
249
uso de características de portabilidad, 71
uso de directorios definidos, 71
escalabilidad, 148
Essbase, 154
estructuras de programación, 54
evento, 67
sources, 67
eventos
listeners, 67
Exchange, 14, 24
experiencia pervasiva, 190
expresión, 55
Familia de DB2 UDB, 147
Fen Java, 167
front-end
Administrador de utilidades, 145
GC, 11
Gestión de Datos, 156
gestión del conocimiento
conclusiones y tendencias, 14
factores, 16
necesidad de la, 16
objetivos de la, 17, 20
programas de la, 18
situación actual en la, 18
tecnologías de la, 12
globalización, 22
de la economía y del conocimiento, 22
GPRS, 15
granularidad
grados de, 136
grouping sets, 166
Groupware, 14
groupware, 24
GUI Browser, 144
herencia, 45, 46, 61
250
HP-UX, 136, 149, 152
HTML y XML
formatos, 154
HttpServletRequest, 78
HttpServletResponse, 78
IBM
Data Management de, 136
IDE, 204
IMS, 138
información, 3
informar, 3
Informix, 138
inialización de arrays, 64
INIT, 79, 81
instalación
área de ejecución de, 150
instanciación e inicialización, 81
integer, 66
métodos de la clase, 66
interface, 45
Internet, 25
Intranets, 137
introducción, 1
IP, 15
ISO y OGS
estándares, 154
J2EE, 93
J2ME, 91, 94
clase Alert, 112
clase Canvas, 114
clase Display, 112
clase Displayable, 112
clase Form, 113
clase Graphics, 116
clase List, 113
clase TextBox, 113
comunicaciones, 121
clase Connector, 123
ÍNDICE DE MATERIAS
comunicaciones HTTP, 126
Generic Connection Framwork,
121
Interfaz CommConnection, 132
Interfaz Connection, 123
Interfaz ContentConnection,
125
Interfaz DatagramConnection,
126
Interfaz HttpsConnection, 131
Interfaz InputConnection, 123
Interfaz OutputConnection, 124
Interfaz SecureConnection, 133
Interfaz ServerSocketConnection, 133
Interfaz SocketConnection, 132
Interfaz StreamConnection, 124
Interfaz StreamConnectionNotifier, 126
Interfaz UDPDatagramConnection, 131
peticiones GET, 128
peticiones POST, 129
configuración, 208
configuración CDC, 101
configuración CLDC, 101
configuraciones, 100
CVM, 99
Foundation Profile, 104
JVM, 97
KVM, 97
Mobile Information Device Profile, 105
PDA Profile, 105
perfiles, 103
Personal Profile, 104
RMI Profile, 105
RMS, 117
clase RecordStore, 120
ÍNDICE DE MATERIAS
J2SE, 93
Java, 15, 39, 40, 137
applets, 167
características, 40
conceptos, 38
conceptos básicos, 44
errores de programación, 69
estructura general de un programa, 43
flexibilidad de, 41
introducción a, 37
Jerarquía de clases en, 46
y JDBC, 167
javax.servlet.HttpServlet, 78
JDK, 56, 75
JRE, 151
JSP
compilación batch de, 84
modelos de, 82
procesadores, 83
knowledge, 3
laptops, 166
launchpad, 150
listener, 68
logs, 146
Lotus Notes, 24
Lotus Notes 5, 14
métodos, 62
de la clase object, 62
de objeto, 62
Maestre
Pedro, 5
Marchand
Donald A., 4
memoria
administrador automático de la,
41
Microsoft SQL Server, 138, 153
251
middleware, 156
MIDlets, 106
AMS, 106
modelización predictiva, 138
modelo de programación de WebSphere, 194, 200
MPP
massively parallel procesing o,
141
multiplataforma, 2, 138
Multiprocesador
Sistema Simétrico, 140
navegadores, 24
Net Search Extender, 155
Net.Data, 168
Net.Data, Java y CLI
aplicaciones, 155
Nonaka, 4
Novak
Joseph, 5
NT
Windows, 136
NUMA-Q, 152
OLAP, 14, 136
Kit de iniciación, 154
OLTP, 136
OOP, 43, 60
operadores, 50
aritméticos, 50
de asignación, 50
de concatenación de cadenas de
caracteres, 53
incrementales, 51
precedencia de, 54
racionales, 52
unarios, 51
Oracle, 138
Oracle Corporation, 12
252
OS/2, 136
OS/390, 147
OS/400, 136
package, 45, 46
packages, 44
particiones lógicas, 143
particiones múltiples, 141
PDA, 24
perfiles de acceso, 145
perspectiva, editores y vistas, 206
plataforma de servicios pervasivos
de WebSphere, 198
polimorfismo, 61
procesamiento paralelo
sistemas de, 166
prototipos de depósitos, 152
PVC
computación pervasiva, 196
QMF para Windows, 152
RDBMS, 136
replicación de datos, 166
return
do while, 59
ROLLUP, 166
RS/6000, 142
Sample, 150
sentencia, 55
serial database, 139
server-side, 81
servers de IBM
sistema de administración de,
147
servicio
de demanda, 81
servlet, 77
ciclo de vida del, 79
codificación de, 78
ÍNDICE DE MATERIAS
desarrollo, 78
motor del, 81
Set-Cookie, 78
shared-nothing configuration, 142
single node/non-parallel, 139
Smart Guides, 151
SMF, 200
SMP, 140
SMP Cluster, 142
SNMP, 146
SOAP, 186
sociedad
de la información y el conocimiento, 2
software, 46
Solaris, 149
Soluciones e-business, 156
soporte OLAP, 166
Spatial Extender, 156
SQL, 147
standalone database, 139
STAR JOINS, 166
stored procedures, 167
String, 65
métodos de la clase, 65
string, 47
StringBuffer, 65
Struts, 189
Sun
Solaris, 136
swing, 69
Sybase, 138
Takeuchi, 4
TCP/IP, 147
Tex Information Extender, 154
TI, 22
TIC, 2, 8
Tivoli, 165
TOC, 151
ÍNDICE DE MATERIAS
Toffler
Alvin, 23
UDDI, 186
UDFs, 168
UDTs, 168
UMTS, 15
uniprocessor system, 139
vínculos
análisis de, 138
variable
clasificación, 47
local, 48
miembro de una clase, 47
referencia, 47
variables
miembro, 49
tipo primitivo, 47
visibilidad y vida de las, 49
Versión 7
DB2 Universal Database, 150
visión general rápida, 151
VisualAge, 146
VSAM, 138
WAP, 15
WDE, 190
Web, 2
aplicaciones, 85
Web Browser, 167
Web/IP, 15
WebSphere, 172
WebSphere Studio Device Developer, 201
workflow, 14
Workspaces, 207
WSAA, 181
WSAD, 181
XHTML, 15
253
XML, 15
XML Extender, 156
Descargar