El e-Learning Como Medio Educativo y de Desarrollo Profesional Para las Organizaciones (Completo).

Anuncio
Universidad Nacional del Nordeste
Facultad de Ciencias Exactas, Naturales y Agrimensura
Trabajo Final de Aplicación
EL E-LEARNING COMO MEDIO EDUCATIVO
Y DE DESARROLLO
PROFESIONAL PARA LAS ORGANIZACIONES
Gisela Lourdes Rodríguez Gómez - L.U.: 32.395
Prof. Coordinador: Agr. Castor Herrmann
Prof. Orientador: Mgter. David Luis la Red Martínez
Licenciatura en Sistemas de Información
Corrientes - Argentina
2006
A mi familia y amigos por el apoyo incondicional.
Especialmente a mis padres, por las enseñanzas de vida...
Prefacio
En el contexto actual de la llamada Sociedad de la Información y del Conocimiento resulta cada vez más necesario disponer de sistemas informáticos
distribuidos, multiplataforma, con acceso desde las Intranets y/o la Internet,
para mejorar la educación a distancia, la transparencia de las mismas, la participación de los usuarios en la educación, la automatización de los exámenes
y la gestión de información a través de las redes de datos, especialmente las
Intranets de las organizaciones y la Internet, mejorando asimismo la toma de
decisiones y el uso eficiente de los recursos.
Todo lo señalado precedentemente sería ilusorio si no se dispusiera de las
metodologías y de los sistemas informáticos que facilitaran la información entre las distintas organizaciones, utilizando diversos medios de comunicación y
diferentes plataformas de hardware y de software.
Este trabajo se basa en el estudio de software de base que permite el
desarrollo de aplicaciones Web multiplataforma con acceso a bases de datos y
en el desarrollo de una aplicación Web de autoevaluación y seguimiento de
exámenes propios de una asignatura universitaria de Sistemas Operativos.
Contempla el registro y seguimiento de la información propia de las evaluaciones de la asignatura, es decir la información emergente del registro de los
alumnos, evaluaciones y notas que se generan en las mismas, la distribución de
los temas pertinentes a la asignatura, el seguimiento detallado de cada evaluación registrada, paso a paso, a los efectos de brindar información a los alumnos
de las notas de las evaluaciones realizados hasta el momento y su situación
dentro de la materia, también a su vez da información a los profesores, de los
alumnos evaluados y sus notas.
Esto significa la posibilidad de registrar las evaluaciones que luego podrán
llegar a la cátedra desde la Web, como así también el seguimiento de dichas
evaluaciones, brindando la posibilidad de una consulta desde la Internet.
Objetivos
El objetivo inicialmente planteado fue la realización de una aplicación Web
multiplataforma desarrollada en Java, mediante la cual el alumno de la materia pudiera contar con un medio de ayuda para evaluar a distancia su nivel de
conocimientos, mediante autoevaluaciones, sobre los contenidos de la asignatura. La aplicación podría ser operada desde la Intranet de la Facultad o bien
desde la Internet.
iv
Estos objetivos planteados al inicio del trabajo, fueron totalmente cumplidos.
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 la herramienta de desarrollo WebSphere Studio Application Developer, versión 5.0 para Windows.
• 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 y 5.1.2, como así también el DB2 UDB WorkGroup
Server Edition versión 8.1.0 y DB2 UDB Personal Edition versión 8.1.0.
• Se ha realizado un detallado estudio del lenguaje Java, utilizándose la
versión JDK 1.5.
• 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 UDB.
• 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.
• Se ha realizado el correspondiente testeo de la aplicación, utilizando una
máquina como servidor y otra como cliente ingresando a la base de datos
del servidor a través de la Intranet de la Facultad.
v
• 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 la aplicación,
otra referente al libro en formato LaTex y el PDF generado. También
se icluyó los instaladores de los productos utilizados para el desarrollo,
es decir DB2 UDB y WebSphere Studio Application 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, además de un
resumen y de un resumen extendido.
El libro impreso está organizado en capítulos, los que se indican a continuación:
• Capitulo 1 - Introducción al E-learning: Se presenta una visión general de los conceptos sobre el aprendizaje electrónico.
• Capitulo 2 - Conceptos básicos sobre Java: Se señalan los principales
conceptos referidos al lenguaje de programación.
• Capitulo 3 - El lenguaje Java: Se indican los principales aspectos y
destacadas características referidas al lenguaje.
• Capitulo 4 - Los Servlets: Se resumen los aspectos y características
más destacadas de estas facilidades.
• Capitulo 5 - Introducción a DB2: Se detallan las más relevantes
características de esta familia de productos de gestión de bases de datos
multiplataforma.
• Capitulo 6 - WebSphere para el E-learning: Se presentan los principales aspectos de este entorno de desarrollo de aplicaciones complejas.
• Capitulo 7 - Introducción al WebSphere Application Server: Se
señalan los aspectos más relevantes de este servidor de aplicaciones Web.
• Capitulo 8 - Aplicación: Se detallan los aspectos más significativos de
la aplicación desarrollada utilizando las facilidades antes mencionadas.
vi
• Capitulo 9 - Conclusiones: Se presentan las conclusiones a las que se
ha llegado al finalizar el presente trabajo y las posibles líneas futuras.
El DVD, adjunto al libro impreso, contiene lo siguiente:
• Instaladores del software utilizado.
• Resúmenes del trabajo realizado.
• Libro del informe final.
• Presentación para la defensa final.
• Copia de seguridad de la base de datos de la aplicación.
• Aplicación desarrollada.
Rodríguez Gómez Gisela Lourdes
Licenciatura en Sistemas de Información
Universidad Nacional del Nordeste
L.U.: 32395
Prof. Orientador: Mgter. David Luis La Red Martínez
Corrientes; 15 de Mayo de 2006
Índice General
1 Introducción al e-learning
1.1 El Concepto de Aprendizaje Electrónico . . . . . . . . . . . . .
1.1.1 Definición de Aprendizaje Electrónico . . . . . . . . . .
1.1.2 Ventajas del e-learning . . . . . . . . . . . . . . . . . . .
1.2 La Gestión del Conocimiento . . . . . . . . . . . . . . . . . . .
1.2.1 Hacia Nuevas Formas de Enseñanza . . . . . . . . . . .
1.3 La Enseñanza Virtual . . . . . . . . . . . . . . . . . . . . . . .
1.3.1 La Enseñanza Asíncrona . . . . . . . . . . . . . . . . . .
1.3.2 La Enseñanza Síncrona . . . . . . . . . . . . . . . . . .
1.3.3 La Autoformación . . . . . . . . . . . . . . . . . . . . .
1.4 Productos y Servicios de la Enseñanza Virtual . . . . . . . . .
1.4.1 Ventajas de la Enseñanza Virtual . . . . . . . . . . . . .
1.5 La Enseñanza Virtual, los Empleos y el País . . . . . . . . . . .
1.5.1 Antecedentes . . . . . . . . . . . . . . . . . . . . . . . .
1.5.2 Desafío . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.3 Solución . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.4 Capacitación . . . . . . . . . . . . . . . . . . . . . . . .
1.5.5 Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.6 Desventajas . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.7 El Uso de Tecnologías de Aprendizaje Electrónico para
Ayudar a Mejorar el Desempeño . . . . . . . . . . . . .
1.6 Planif. e Implem. Activid. de e-learning . . . . . . . . . . . . .
1.6.1 Determinación del Tipo de Aprendizaje Electrónico que
se Puede Ofrecer a la Organización . . . . . . . . . . . .
1.6.2 Preparar una Organización para el Aprendizaje Electrónico . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.3 Tecnologías y Servicios Necesarios para el Aprendizaje
Electrónico . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.4 Formación del Equipo de Aprendizaje Electrónico . . .
vii
1
1
2
3
5
5
6
7
8
10
11
12
13
13
14
14
16
17
18
18
21
22
22
24
25
ÍNDICE GENERAL
1.6.5
1.6.6
1.6.7
1.6.8
viii
Dirección de la Primera Actividad de Aprendizaje Electrónico . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evaluación de la Experiencia de Aprendizaje Electrónico
Empleo del Aprendizaje Electrónico para Encarar los
Retos Gerenciales . . . . . . . . . . . . . . . . . . . . . .
Lista de Verificación para una Actividad Piloto de Aprendizaje Electrónico . . . . . . . . . . . . . . . . . . . . .
2 Conceptos Básicos de Java
2.1 ¿Qué es Java y Para qué fue Pensado? . . . . . . .
2.1.1 Características del Lenguaje Java . . . . . .
2.1.2 Desarrollo de las Principales Características
2.1.3 Ventajas de Java . . . . . . . . . . . . . . .
2.1.4 Limitaciones con Java . . . . . . . . . . . .
2.1.5 Errores con Java . . . . . . . . . . . . . . .
2.2 Existen Distintos Tipos de Java . . . . . . . . . . .
2.2.1 JavaScript . . . . . . . . . . . . . . . . . . .
2.2.2 Java Standalone . . . . . . . . . . . . . . .
2.2.3 Applets . . . . . . . . . . . . . . . . . . . .
2.3 Java en los Browsers de la World Wide Web . . . .
2.3.1 Las Applets en la Web . . . . . . . . . . . .
2.3.2 Máquinas Virtuales . . . . . . . . . . . . . .
2.3.3 Java sin Browsers . . . . . . . . . . . . . . .
2.3.4 HotJava . . . . . . . . . . . . . . . . . . . .
2.4 Java en Hebras - Threads . . . . . . . . . . . . . .
2.4.1 La Ventaja de ser Multi-Threaded . . . . .
2.5 Java Para Aplicaciones Corporativas . . . . . . . .
3 El Lenguaje Java
3.1 Introducción a su Codificación . . . . . . . . . .
3.1.1 Bibliotecas de Clases Estándares de Java
3.2 Estructura General de un Programa Java . . . .
3.3 Conceptos Básicos . . . . . . . . . . . . . . . . .
3.3.1 Clase . . . . . . . . . . . . . . . . . . . .
3.3.2 Herencia . . . . . . . . . . . . . . . . . . .
3.3.3 Interface . . . . . . . . . . . . . . . . . . .
3.3.4 Package . . . . . . . . . . . . . . . . . . .
3.3.5 La Jerarquía de Clases de Java (API) . .
3.3.6 Variables Dentro del Lenguaje Java . . .
3.3.7 Visibilidad y Vida de las Variables . . . .
.
.
.
.
.
.
.
.
.
.
.
. . . . .
. . . . .
de Java
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
28
30
30
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
32
32
33
34
39
40
40
41
41
42
42
44
44
47
49
50
50
51
52
.
.
.
.
.
.
.
.
.
.
.
56
56
58
59
60
60
60
61
62
63
64
66
ÍNDICE GENERAL
3.4
3.5
3.6
3.7
3.8
3.9
Operadores en Java . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1 Operadores Aritméticos . . . . . . . . . . . . . . . . . .
3.4.2 Operadores de Asignación . . . . . . . . . . . . . . . . .
3.4.3 Operadores Unarios . . . . . . . . . . . . . . . . . . . .
3.4.4 Operadores Incrementales . . . . . . . . . . . . . . . . .
3.4.5 Operadores Relacionales . . . . . . . . . . . . . . . . . .
3.4.6 Operador de Concatenación de Cadenas de Caracteres
(+) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.7 Precedencia de Operadores . . . . . . . . . . . . . . . .
Estructuras de Programación . . . . . . . . . . . . . . . . . . .
3.5.1 Sentencias o Expresiones . . . . . . . . . . . . . . . . . .
3.5.2 Comentarios . . . . . . . . . . . . . . . . . . . . . . . .
3.5.3 Sentencia import . . . . . . . . . . . . . . . . . . . . . .
3.5.4 Longitud de Líneas . . . . . . . . . . . . . . . . . . . . .
3.5.5 Bifurcaciones . . . . . . . . . . . . . . . . . . . . . . . .
3.5.6 Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Clases en Java . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1 Características Importantes de las Clases . . . . . . . .
3.6.2 Métodos o Funciones Miembros . . . . . . . . . . . . . .
Clases de Mayor Utilidad . . . . . . . . . . . . . . . . . . . . .
3.7.1 Clase Arrays . . . . . . . . . . . . . . . . . . . . . . . .
3.7.2 Clases String y StringBuffer . . . . . . . . . . . . . . . .
3.7.3 Clase Double . . . . . . . . . . . . . . . . . . . . . . . .
3.7.4 Clase Integer . . . . . . . . . . . . . . . . . . . . . . . .
El AWT (Abstract Windows Toolkit) . . . . . . . . . . . . . . .
3.8.1 Qué es el AWT . . . . . . . . . . . . . . . . . . . . . . .
3.8.2 Creación de una Interface Gráfica de Usuario . . . . . .
3.8.3 Objetos “event source” y Objetos “event listener” . . .
3.8.4 Proceso a Seguir Para Crear Una Aplicación Interactiva
(Orientada a Eventos) . . . . . . . . . . . . . . . . . . .
Errores Frecuentes de Programación . . . . . . . . . . . . . . .
3.9.1 Scheduling de Hilos de Ejecución . . . . . . . . . . . . .
3.9.2 Errores en el Uso de las Características de Portabilidad
de Java . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9.3 Uso de Directorios Definidos . . . . . . . . . . . . . . .
3.9.4 Carga de Drivers JDBC . . . . . . . . . . . . . . . . . .
3.9.5 Terminación de Líneas . . . . . . . . . . . . . . . . . . .
3.9.6 Entrada/Salida por Archivo . . . . . . . . . . . . . . . .
3.9.7 Fuentes de Caracteres . . . . . . . . . . . . . . . . . . .
ix
67
67
68
68
68
69
70
71
72
72
72
73
74
74
75
79
79
80
81
81
83
84
84
85
85
85
86
86
87
87
89
90
92
94
94
94
ÍNDICE GENERAL
x
4 Los Servlets
4.1 Servlets . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Principios de Codificación de Servlet .
4.1.2 Ciclo de Vida del Servlet . . . . . . . .
4.1.3 Instanciación e Inicialización . . . . . .
4.1.4 Servicio de Demanda . . . . . . . . . . .
4.1.5 Terminación . . . . . . . . . . . . . . . .
4.1.6 Modelos de Acceso JSP . . . . . . . . .
4.1.7 Procesadores JSP . . . . . . . . . . . . .
4.1.8 Compilación Batch de Archivos JSP . .
4.1.9 Desarrollando Aplicaciones . . . . . . .
4.1.10 Fases de Inicialización y de Terminación
4.1.11 Rasgos de Java Servlet API . . . . . . .
4.1.12 Patrones y Guías de Servlets/JSP . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
96
96
97
98
98
100
100
100
101
103
103
104
104
105
5 Introducción a DB2
5.1 DB2 Universal Database (DB2 UDB) . . . . . .
5.2 Funciones Complementarias . . . . . . . . . . .
5.3 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.6.1 Área de Ejecución de Instalación . . . .
5.6.2 Área de Ejecución del Depósito . . . . .
5.6.3 Primeros Pasos . . . . . . . . . . . . . .
5.6.4 Visión General Rápida . . . . . . . . . .
5.6.5 Centro de Información . . . . . . . . . .
5.6.6 Mejoras en los Asistentes . . . . . . . .
5.7 DB2 UDB Versión 8.1 . . . . . . . . . . . . . .
5.7.1 Centro de Desarrollo . . . . . . . . . . .
5.7.2 WebSphere . . . . . . . . . . . . . . . .
5.7.3 Mejoras en XML Extender . . . . . . .
5.7.4 DB2 Warehouse Manager . . . . . . . .
5.7.5 DB2 Warehouse Manager (cont.) . . . .
5.7.6 Centro de depósito de datos de DB2 . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
109
109
111
115
115
116
116
117
118
120
121
122
123
124
124
124
125
125
130
130
132
132
132
132
133
ÍNDICE GENERAL
.
.
.
.
.
.
.
.
.
134
134
135
135
136
136
137
138
139
6 WebSphere para el E-learning
6.1 ¿Que es WebSphere? . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Aumentando el Desempeño del e-learning . . . . . . . . . . . .
6.2.1 Bases y Herramientas para Construir, Diseminar y Hacer Crecer su e-business . . . . . . . . . . . . . . . . . .
6.3 El WebSphere para la Integración en el e-business on demand .
6.4 Plataforma de Software . . . . . . . . . . . . . . . . . . . . . .
6.4.1 WebSphere for Commerce - Soluciones B2B . . . . . . .
6.4.2 WebSphere for Commerce - Soluciones B2C . . . . . . .
6.4.3 WebSphere for Commerce-Soluciones de Portal . . . . .
6.4.4 WebSphere for Commerce-Soluciones Digital Media . . .
6.5 Application Server . . . . . . . . . . . . . . . . . . . . . . . . .
6.5.1 Application Server. Advanced Edition . . . . . . . . . .
6.5.2 Application Server. Enterprise Edition . . . . . . . . . .
6.5.3 Application Server. Standard Edition . . . . . . . . . .
6.5.4 Servidor HTTP . . . . . . . . . . . . . . . . . . . . . . .
6.5.5 Servidor de Aplicaciones . . . . . . . . . . . . . . . . . .
6.5.6 Contenedor de EJB . . . . . . . . . . . . . . . . . . . .
6.5.7 Contenedor Web . . . . . . . . . . . . . . . . . . . . . .
6.5.8 Contenedor de Clientes de Aplicaciones . . . . . . . . .
6.5.9 Contenedor de Applets . . . . . . . . . . . . . . . . . . .
6.5.10 Sistema Principal Virtual . . . . . . . . . . . . . . . . .
6.6 Arquitecturas de Tres Niveles . . . . . . . . . . . . . . . . . . .
6.7 Familias del Producto . . . . . . . . . . . . . . . . . . . . . . .
6.8 La familia de Herramientas WebSphere Studio . . . . . . . . .
140
140
141
5.8
5.7.7 DB2 Spatial Extender . . . . . . . . .
5.7.8 DB2 Spatial Extender (cont.) . . . . .
5.7.9 Gestión de los Datos . . . . . . . . . .
5.7.10 Duplicación (DB2 DataPropagator) .
5.7.11 Nuevo Centro de duplicación . . . . .
5.7.12 Posibilidades de Gestión . . . . . . . .
5.7.13 Soporte de plataformas . . . . . . . .
5.7.14 Compatibilidad de la Familia de DB2
Conclusión . . . . . . . . . . . . . . . . . . .
xi
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
142
143
144
145
146
146
147
149
149
150
151
151
152
152
153
153
154
154
154
157
159
7 WebSphere Application Server
161
7.1 WebSphere Application Server Como Plataforma Para el Comercio Electrónico . . . . . . . . . . . . . . . . . . . . . . . . . 161
7.1.1 Fundamentos . . . . . . . . . . . . . . . . . . . . . . . . 162
ÍNDICE GENERAL
7.2
7.3
7.4
7.5
7.6
xii
Rasgos de WebSphere Advanced Edition . . . . . . . . . . . . . 164
7.2.1 Entorno de WebSphere Advanced Edition . . . . . . . . 166
7.2.2 Modelo de WebSphere Application . . . . . . . . . . . . 167
WebSphere Development Environment . . . . . . . . . . . . . . 168
Conceptos del WebSphere Application Server . . . . . . . . . . 169
7.4.1 E-learning vs. E-business . . . . . . . . . . . . . . . . . 169
7.4.2 La Familia WebSphere . . . . . . . . . . . . . . . . . . . 170
7.4.3 Computación Distribuida y WebSphere Application Server171
7.4.4 WebSphere Application Server, Standard and Advanced
Editions . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Modelo de Administración en Advanced Edition . . . . . . . . 181
7.5.1 Herramientas de Administración . . . . . . . . . . . . . 183
Arquitectura de WebSphere Application Server . . . . . . . . . 183
7.6.1 Servidor de Aplicaciones . . . . . . . . . . . . . . . . . 183
7.6.2 HTTP Server y Plug-in . . . . . . . . . . . . . . . . . . 185
7.6.3 Embedded HTTP Server (Servidor HTTP Incluído) . . 185
7.6.4 Virtual Hosts (Hosts Virtuales) . . . . . . . . . . . . . 185
7.6.5 Servidor de Grupos . . . . . . . . . . . . . . . . . . . . 186
7.6.6 Clones . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
7.6.7 Contenedor Web . . . . . . . . . . . . . . . . . . . . . . 187
7.6.8 EJB Container (Contenedor EJB) . . . . . . . . . . . . 188
7.6.9 El Modelo Administrativo WebSphere . . . . . . . . . . 189
7.6.10 Servidor Administrativo . . . . . . . . . . . . . . . . . . 190
7.6.11 Almacenamiento Administrativo . . . . . . . . . . . . . 190
7.6.12 Interfases Administrativas . . . . . . . . . . . . . . . . 191
7.6.13 Referencia Rápida para la Administración . . . . . . . . 194
7.6.14 Discusión . . . . . . . . . . . . . . . . . . . . . . . . . . 195
7.6.15 ¿Qué son los Recursos? . . . . . . . . . . . . . . . . . . 195
8 Descripción de la Aplicación
8.1 Descripción General . . . . . . . . . .
8.1.1 Módulos . . . . . . . . . . . . .
8.2 Estructuras de Datos Utilizadas . . . .
8.3 Ejemplos de Código Fuente Utilizados
8.3.1 Servlets . . . . . . . . . . . . .
8.3.2 HTML . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
197
197
198
216
226
226
247
9 Conclusiones
254
9.1 Conclusiones Acerca de las Tecnologías y Software Utilizados . 254
9.2 Líneas Futuras de Acción . . . . . . . . . . . . . . . . . . . . . 255
ÍNDICE GENERAL
xiii
Bibliografía
257
Índice de Materias
260
Índice de Figuras
1.1
1.2
1.3
1.4
1.5
1.6
1.7
Grupo de personas practicando e-learning.
El mundo conectado con un simple click. .
La enseñanza asíncrona. . . . . . . . . . .
La enseñanza síncrona. . . . . . . . . . . .
Diversas soluciones de aprendizaje. . . . .
Una organización bajo e-learning. . . . . .
Productos para e-learning. . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
5
8
10
16
23
25
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
Logo de Java. . . . . . . . . . . . . . . .
Arquitectura Cliente - Servidor. . . . . .
Bytecode y JVM. . . . . . . . . . . . . .
Netscape Navigator - Internet Explorer.
JIT - Just In Time. . . . . . . . . . . .
HotJava. . . . . . . . . . . . . . . . . . .
Clase Thread. . . . . . . . . . . . . . . .
Java para aplicaciones corporativas. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
45
47
48
49
50
52
54
3.1
3.2
3.3
3.4
Herencia en Java. . . . . . . .
Típicos packages predefinidos.
API de Java. . . . . . . . . .
JDBC en Java. . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
61
63
64
93
4.1
4.2
4.3
Ciclo de vida de un servlet. . . . . . . . . . . . . . . . . . . . . 99
Requerimiento de un archivo JSP. . . . . . . . . . . . . . . . . 101
Requerimiento de un servlet. . . . . . . . . . . . . . . . . . . . 102
5.1
5.2
5.3
5.4
5.5
Almacenamiento de documentos XML en DB2. . . . . . .
Esquema conceptual de los almacenes de datos. . . . . . .
Paralelismo mejor adaptable a cada entorno de hardware.
Almacenamiento de datos espaciales. . . . . . . . . . . . .
Centro de Desarrollo. . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
xiv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
111
112
117
128
131
ÍNDICE DE FIGURAS
xv
5.6
5.7
DB2 Warehouse Manager. . . . . . . . . . . . . . . . . . . . . . 133
Centro de Duplicación de DB2 versión 8.0. . . . . . . . . . . . . 137
6.1
6.2
Plataforma de WebSphere. . . . . . . . . . . . . . . . . . . . . . 141
Servidor de aplicaciones. . . . . . . . . . . . . . . . . . . . . . . 152
7.1
7.2
7.3
WebSphere para e-bussines. . . . . . . . . . . . . . . . . . . . .
WebSphere Application Server. . . . . . . . . . . . . . . . . . .
Componentes de WebSphere Application Server Advanced Edition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arquitectura Cliente-Servidor de tres niveles. . . . . . . . . . .
Componentes del ambiente de WebSphere Advanced Edition. .
Arquitectura de WebSphere Application Server Advanced Edition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modelo administrativo de WebSphere. . . . . . . . . . . . . . .
Interfases administrativas. . . . . . . . . . . . . . . . . . . . . .
Modelo de administración. . . . . . . . . . . . . . . . . . . . . .
7.4
7.5
7.6
7.7
7.8
7.9
8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
8.9
8.10
8.11
8.12
8.13
8.14
8.15
8.16
8.17
8.18
8.19
8.20
8.21
162
165
166
172
176
184
189
192
194
Página principal de la aplicación. . . . . . . . . . . . . . . . . . 199
Ayuda para el Alumno. . . . . . . . . . . . . . . . . . . . . . . 200
Ayuda para el Profesor. . . . . . . . . . . . . . . . . . . . . . . 200
Elegir tema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Cuestionario ejemplo tema 1. . . . . . . . . . . . . . . . . . . . 203
Resultado de la evaluación de un tema ejemplo. . . . . . . . . . 204
Página donde elige el tema con la opción de ver Resultados. . . 205
Resultados obtenidos hasta el momento. . . . . . . . . . . . . . 206
Página de ingreso del alumno al sistema, mediante libreta universitaria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Página donde el alumno se registra en el sistema. . . . . . . . . 208
Página donde el alumno, ingresa mediante la clave. . . . . . . . 208
Página principal del Profesor. . . . . . . . . . . . . . . . . . . . 209
Página donde el Profesor elige el tema con el que trabajará-1. . 210
Página donde el Profesor elige el tema con el que trabajará-2. . 210
Página donde se agrega la pregunta y sus respuestas. . . . . . . 211
Página donde se elige la pregunta a modificar. . . . . . . . . . . 212
Página donde puede modificar la pregunta y sus respuestas. . . 212
Página donde se elige la pregunta a eliminar. . . . . . . . . . . 213
Página donde se pide una confirmación de la eliminación a realizar.213
Página principal de las consultas. . . . . . . . . . . . . . . . . . 214
Resumen general sobre notas obtenidas. . . . . . . . . . . . . . 215
ÍNDICE DE FIGURAS
8.22
8.23
8.24
8.25
8.26
8.27
8.28
8.29
8.30
8.31
8.32
8.33
Lista de alumnos registrados. . . . . . . . . . . . . . . . . .
Página donde se elige el tema a consultar. . . . . . . . . . .
Preguntas guardadas con la opción de ver respuestas. . . . .
Respuestas guardadas de la pregunta elegida. Se muestra
correcta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Estructura de la base de datos utilizada por la aplicación. .
Tabla Alumno. . . . . . . . . . . . . . . . . . . . . . . . . .
Tabla Evaluación. . . . . . . . . . . . . . . . . . . . . . . . .
Tabla Preguntas. . . . . . . . . . . . . . . . . . . . . . . . .
Tabla Profesor. . . . . . . . . . . . . . . . . . . . . . . . . .
Tabla Respuesta. . . . . . . . . . . . . . . . . . . . . . . . .
Tabla Resultado. . . . . . . . . . . . . . . . . . . . . . . . .
Tabla Tema. . . . . . . . . . . . . . . . . . . . . . . . . . . .
xvi
. .
. .
. .
la
. .
. .
. .
. .
. .
. .
. .
. .
. .
215
216
217
218
218
219
220
221
222
223
224
225
Capítulo 1
Introducción al e-learning
1.1
El Concepto de Aprendizaje Electrónico
En este primer capítulo se presenta una introducción sobre las nociones básicas
del Aprendizaje Electrónico.
El aprendizaje electrónico es un término que ha adquirido cada vez más popularidad en lo que respecta a la capacitación digital y en línea; “e-learning”,
es el término en inglés.
El aprendizaje electrónico significa algo más que sólo la transmisión digital
de conocimientos en línea, o la capacitación basada en la computación a través
de la Red WWW. Se refiere a dos componentes importantes:
• La experiencia del aprendizaje.
• La tecnología electrónica.
La experiencia que se logra del aprendizaje electrónico resalta lo importante de las metodologías y técnicas de capacitación que:
• Hacen que el alumno desee investigar más el tema.
• Proporcionan una práctica simulada de aptitudes y procedimientos.
• Ayuden, apoyen y dirijan a los alumnos.
1
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
2
Figura 1.1: Grupo de personas practicando e-learning.
• Permitan que el alumno interactúe con otros que también están aprendiendo.
1.1.1
Definición de Aprendizaje Electrónico
El término “e-learning” viene de dos siglas en inglés‚la “e” de e-learning se corresponda a la palabra “electronic” en inglés, así forma un sustantivo compuesto cuyo núcleo es la palabra learning que se traduce como aprendizaje. Ante
esta combinación el término se traduce de manera apropiada como “Aprendizaje Electrónico” o aprendizaje por medios electrónicos. Ver fig. 1.1 de la
pág. 2.
Este nuevo concepto hace referencia al aprendizaje por medio de equipos
electrónicos, como una computadora, el correo electrónico, equipos y servicios
relacionados, la red WWW y la tecnología del CD-ROM; ofreciendo de esta
forma, una nueva y mejor posibilidad de capacitar a los alumnos y al personal de una determinada organización, que necesitan aprender rápidamente
nuevas técnicas y asimilar nueva información, para competir eficazmente en la
actualidad y no mantenerse aislados.
También es una de las formas que ha adoptado la llamada educación a
distancia, al desarrollarse y masificarse las intranets y redes de área amplia,
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
3
como es la Red Internet.
1.1.2
Ventajas del e-learning
Las principales ventajas se señalan a continuación:
• Puede ampliar el aprendizaje a toda la organización. Con las tecnologías
de aprendizaje electrónico, se puede llegar al personal gerencial y administrativo de todos los niveles con el mismo contenido de capacitación y
apoyo educativo. Por ejemplo, al descentralizar sus servicios, las organizaciones tienen que desarrollar la capacidad del personal a nivel distrital
y local. Con la infraestructura física adecuada, los administradores de
esos niveles pueden recibir la capacitación y las herramientas gerenciales
necesarias.
• Puede llegar a un gran número de alumnos. El desarrollo gerencial y administrativo a menudo requiere que un gran número de administradores
instituyan prácticas y técnicas nuevas. Las tecnologías de aprendizaje electrónico potencialmente pueden llegar y ayudar a capacitar, en el
corto plazo, a esa masa crítica de administradores necesarios para un
desarrollo eficaz.
• Puede adecuar las actividades de aprendizaje electrónico a la medida de
los individuos. La instrucción que emplea una estrategia basada en el
aprendizaje electrónico puede organizarse para permitir que los alumnos
avancen a su propio ritmo, concentrándose en temas que se adecúen a
sus necesidades individuales. Se pueden saltar las partes con las que ya
están familiarizados o repetir las partes difíciles.
• Puede facilitar ayuda por instructores entre sus colegas. Muchos creen
que los tutores deben ser personas cuyo ejemplo se debe seguir, y éste es
uno de los componentes más importantes en el desarrollo gerencial y de
liderazgo. En los programas de las carreras universitarias tradicionales,
los tutores actúan como tutores y las relaciones que se establecen con los
estudiantes de por vida constituyen una base clave para desarrollar el
potencial de liderazgo. El aprendizaje electrónico y las comunicaciones
electrónicas brindan una mayor posibilidad de desarrollar relaciones a
largo plazo entre los alumnos y sus educadores.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
4
• Puede facilitar los vínculos institucionales y profesionales. El intercambio profesional y el hecho de compartir experiencias son elementos cruciales para el desarrollo gerencial y el liderazgo. El aprendizaje electrónico
proporciona una oportunidad para romper el aislamiento a nivel local,
regional o en todo el país y suministrar y recibir información referente a
las iniciativas de mejoras gerenciales exitosas.
• Puede introducir herramientas gerenciales nuevas al software disponible,
y así fortalecer las aptitudes del personal con respecto al uso de tecnologías de computación y de la Internet. Al utilizar herramientas gerenciales estandarizadas suministradas a través del programa de aprendizaje
electrónico, las organizaciones pueden desarrollar una serie de aptitudes
comunes y estandarizar los procedimientos y prácticas gerenciales. Las
tecnologías de aprendizaje electrónico ofrecen los medios para:
— Apoyar la capacitación e información para operaciones de sistemas.
— Apoyar continuamente (por ejemplo, herramientas gerenciales suministradas a través de la Internet) con el fin de lograr mejoras
gerenciales y administrativas.
— Mejorar la calidad de los programas de capacitación, mediante el
uso de herramientas estandarizadas, probadas en el campo, en lugar
de confiar en las intervenciones locales ad hoc.
¿Tendencias Futuras del e-learning?
Hoy los educadores se debaten sobre la verdadera eficacia de las tecnologías
de aprendizaje electrónico basadas en las computadoras. Por la evidencia
existente se sugiere que los métodos de aprendizaje electrónico son tan eficaces
para la enseñanza o aún más, que las aulas tradicionales.
Mas allá de esto, queda claro que las tecnologías de aprendizaje electrónico
pueden proporcionar oportunidades de aprendizaje para personas que de otra
manera no tendrían acceso a nuevos conocimientos. Los métodos de aprendizaje electrónico pueden ser más eficaces que otros para la enseñanza de algunos
tipos de contenidos. Las combinaciones de aprendizaje en aulas y aprendizaje
electrónico podrían constituir la mejor estrategia educativa.
El e-learning es el negocio del futuro. Esto no significa la muerte de la
educación presencial, ésta con el entrenamiento a distancia, siempre van a
coexistir, pero en proporciones diferentes.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
5
Figura 1.2: El mundo conectado con un simple click.
Se está apostando fuertemente a las ventajas del e-learning, siendo las más
relevantes las siguientes:
• Aprovechar mejor el tiempo disponible.
• Optimizar los procesos de aprendizaje.
• Maximizar los resultados utilizando adecuadamente los recursos
tecnológicos.
• Quebrar las barreras geográficas.
1.2
La Gestión del Conocimiento
Una forma destacada mediante la cual las instituciones académicas materializan la gestión del conocimiento es a través de la enseñanza virtual porque
permite colaborar, innovar y tener capacidad de respuesta ante los cambios
que se están produciendo en la sociedad.
1.2.1
Hacia Nuevas Formas de Enseñanza
Se considera que la enseñanza tradicional debe evolucionar a la velocidad que lo
hacen las tecnologías de la información, pero generalmente no es así, entonces
es necesaria una nueva forma de enseñanza que manteniendo las ventajas de
la enseñanza tradicional pueda satisfacer las nuevas demandas de la sociedad.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
6
Actualmente la enseñanza tradicional tiene varias limitantes por lo que se
tiende hacia una nueva enseñanza; ejemplos de éstas limitantes son:
• El número de alumnos asistentes a las aulas.
• La duración del curso.
• Las condiciones de espacio y equipamientos.
• Las diferencias de costo existentes entre la aplicación de distintos
métodos.
• Número de horas lectivas.
• Falta de flexibilidad y disponibilidad: los alumnos deberían poder
acceder a su formación en cualquier momento y desde cualquier
lugar.
Pese a esto, no se ha dejado de tener en cuenta esta enseñanza, pero
entonces es necesario, un nuevo método de enseñanza, que complemente y
solucione estas limitantes.
Es aquí donde aparece esta nueva posibilidad de aprender y mejorar.
1.3
La Enseñanza Virtual
Con el transcurso de los años las formas alternativas de enseñanza, como la
enseñanza a distancia, han evolucionado de los cursos por correspondencia a
los cursos por videoconferencia o satélite. Sin embargo, nunca han llegado
a los niveles de refinamiento de la enseñanza impartida en las aulas. Las
posibilidades de conexión a Internet y una nueva generación de programas
informáticos hacen posible un nuevo modelo de enseñanza en línea de mucha
mayor calidad y flexibilidad que podría recibir el nombre, más apropiado, de
enseñanza virtual.
La enseñanza virtual, en la que participan tecnologías diversas, métodos de
enseñanza, técnicas de colaboración e instructores, eleva la enseñanza a niveles
inalcanzables con los métodos tradicionales, sobre todo en lo que respecta a
flexibilidad y a disponibilidad (en cualquier momento y desde cualquier lugar).
Esta nueva enseñanza permite entre otras cosas, crear material didáctico
interactivo para apoyar la educación en cualquier tipo de escuela, por ejemplo
en el caso de los institutos de idiomas se pueden poner al alcance de los alumnos
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
7
las mismas lecciones que se ven en clase o complementarias y así además crear
un valor agregado en su servicio apoyando actividades de refuerzo a las clases
impartidas en cátedra presencial.
Esta una nueva opción de educación vía Web alcanza su máximo, si se
desarrolla la tecnología hasta el punto en que pueda integrar los tres métodos
de enseñanza: asíncrona, síncrona y autoformación.
1.3.1
La Enseñanza Asíncrona
Es el método de enseñanza más flexible porque no impone horarios ya que los
eventos ocurren en momentos distintos. La enseñanza asíncrona con instructor es mucho más eficaz que las iniciativas autodidactas, ya que estimula la
comunicación entre el alumnado en todo momento mediante:
• La celebración de debates.
• La asignación de tareas grupales.
• El contacto personalizado con los instructores.
Esto se produce en un entorno que no impone horarios, ni espacios, sólo
se necesita que en algún momento, tanto alumnos como instructores estén
conectados a la red de comunicaciones. De esta forma empuja a los alumnos
a tomar las riendas de su educación y ser más aplicados.
El taller colaborativo asincrónico reúne a los alumnos y al instructor en la
pantalla de la computadora, pero no es necesario que todos ellos estén en línea
al mismo tiempo. El taller asincrónico brinda un foro conveniente para grupos
de alumnos que viven en regiones con distintos husos horarios alrededor del
mundo, porque les permite aprender en sus propios horarios.
La capacitación asincrónica basada en la Red combina tecnologías como
el correo electrónico, los grupos de discusión por correo electrónico, páginas
de la Red y programas para autodidactas para que los alumnos e instructores
se comuniquen entre sí. Este tipo de capacitación es adecuado para sostener discusiones, hacer presentaciones y realizar investigaciones, evaluaciones y
proyectos de equipo con base en la Red.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
8
Figura 1.3: La enseñanza asíncrona.
1.3.2
La Enseñanza Síncrona
Es la más parecida a la enseñanza tradicional por que colabora y genera contacto entre los alumnos y profesores, pero difiere de ella en que las actividades
docentes se producen sin que los alumnos concurran en un mismo sitio.
El instructor y los alumnos interactúan entre sí en el mismo momento en
un taller sincrónico. Este tipo de taller “en tiempo real” generalmente requiere
de equipos especializados como micrófonos, cámaras de video, y programas de
computación especiales. La computadora debe tener una conexión “rápida”
con la Red Internet, lo que significa que la conexión debe tener una mayor
amplitud de banda o capacidad para transmitir la información electrónica.
La interacción en “vivo” entre los participantes en un taller virtual simula
la interacción personal (“cara a cara”) entre los estudiantes en un aula convencional. Los alumnos deben estar preparados para interactuar oportunamente
con sus compañeros de clase, de manera que el equipo especial y la amplitud
de banda son vitales para mantener la agilidad de esta interacción.
Conectándose unos con otros a través de sus computadoras, los alumnos
participan en actividades como resolución de problemas, lluvias de ideas, debates, demostraciones, presentaciones y dramatizaciones.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
9
Gracias a los nuevos avances tecnológicos se hace más factible la posibilidad
de aprender en un aula virtual. Las herramientas que más se utilizan para este
tipo de enseñanza son:
• Audio y videoconferencia.
• Pizarras electrónicas o “whiteboards”.
• Compartimiento de aplicaciones.
• Contenidos multimedia basados en Web.
• Conversaciones privadas y otras funciones de este tipo.
• Salones de charla o “chat rooms”.
• Los instructores controlan las presentaciones, formulan preguntas a
los alumnos, los orientan y dirigen la comunicación durante la clase.
Con estas tecnologías colaborativas los alumnos pueden expresar sus puntos
de vista y compartir información o aplicaciones a través de ellas.
Una pizarra blanca es un tipo de tecnología que forma parte de un aula
sincrónica. Es el equivalente electrónico de un pizarrón en un aula tradicional.
La pizarra blanca es la pantalla sobre la cual los participantes y el instructor pueden turnarse para escribir sus mensajes y presentar información con
respecto al tema que están tratando. Los alumnos también pueden utilizar
una pizarra blanca para las actividades de grupo. Por ejemplo, un grupo
de estudiantes y su instructor pueden ingresar datos en una hoja de cálculo
desde diferentes lugares alrededor del mundo. Al trabajar en línea al mismo
tiempo, las personas pueden llenar celdas, corregir fórmulas, o modificar los
encabezados de las columnas, mientras cada integrante del grupo puede ver
exactamente lo que los demás están haciendo.
Los salones de charla ofrecen medios estructurados para que los alumnos
sostengan un diálogo escribiendo sus comentarios durante una discusión continua en línea a través del correo electrónico. Este tipo de capacitación basada
en la Red permite que los grupos discutan, reflexionen y resuelvan problemas
en forma conjunta a través del aprendizaje en tiempo real.
Las video-conferencias y las audio-conferencias basadas en la Red son tecnologías empleadas en un aula sincrónica y conceptualmente son similares a
la comunicación a través de imágenes visuales y sonido en las conferencias
tradicionales. Ambas permiten que los alumnos se comuniquen de manera
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
10
Figura 1.4: La enseñanza síncrona.
interactiva y escuchen y/o vean a otros participantes y a los instructores. Estas tecnologías permiten que los participantes tomen parte en los ejercicios de
dramatización, que de otra manera no sería posible.
1.3.3
La Autoformación
Es el tipo de formación que eligen las personas que se instruyen a sí mismas
empleando todo tipo de medios:
• Libros.
• Videos.
• Casetes.
• Material informático.
Actualmente uno de los sitios que reúne todos estos medios en uno es la
World Wide Web, siendo otra posibilidad la utilización de Intranets.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
1.4
11
Productos y Servicios de la Enseñanza Virtual
La enseñanza virtual se está configurando como una herramienta de gran utilidad porque presenta productos formativos:
• Interactivos: Donde el usuario puede adoptar un papel activo en
relación al ritmo y nivel de trabajo.
• Multimedia: Por que incorpora textos, imágenes fijas, animaciones,
videos, sonidos.
• Abiertos: por que permite una actualización de los contenidos y
de las actividades de forma permanente, lo que contrasta con el
carácter estático del material impreso.
• Sincrónicos y Asincrónicos: Por que permite que los alumnos puedan participar en tareas o actividades en el mismo momento independientemente del lugar en que se encuentren (sincrónico), o bien
la realización de trabajo y estudio individual en el tiempo particular
de cada alumno (asincrónico).
• Accesibles: Lo que significa que no existen limitaciones geográficas, por que utiliza todas las potencialidades de la red Internet, de
manera que los mercados de la formación sean abiertos.
• Con recursos on-line: Que los alumnos puedan retomar sus aprendizajes en sus propios ordenadores personales.
• Distribuidos: De manera que los recursos para la formación no tienen por qué concentrarse en un único espacio o institución. Las
potencialidades de la red permiten que los alumnos puedan utilizar recursos y materiales didácticos esparcidos por el mundo en
diferentes servidores de Internet. También permite poder recurrir
a formadores que no necesariamente tienen que estar en el mismo
espacio geográfico donde se dicte el curso.
• Con un alto seguimiento: Del trabajo de los alumnos, ya que los
formadores organizan la formación en base a tareas que los alumnos
deben realizar y remitir en tiempo y forma establecida.
• Comunicación horizontal : Entre los alumnos, debido a que la colaboración forma parte de las técnicas de formación.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
1.4.1
12
Ventajas de la Enseñanza Virtual
Para el Alumno:
• El trato es personalizado entre el profesor y sus compañeros.
• Puede adaptar el estudio a su horario personal.
• Puede participar de forma meditada gracias a la posibilidad de
trabajar off-line.
• El ritmo de trabajo marcado por sus profesores y sus compañeros
puede seguirse, terminado el dictado.
• El alumno tiene un papel activo, por que no se limita a recibir
información sino que forma parte de su propia formación.
• Todos los alumnos tienen acceso a la enseñanza, ya que no se perjudican aquellos que no pueden acudir periódicamente a clase por
motivos como el trabajo, la distancia, etc.
• Existe un feed-back de información, de manera que el profesor
conoce si el alumno responde al método y alcanza los objetivos
fijados inicialmente.
• Se beneficia de las ventajas de los distintos métodos de enseñanza y
medios didácticos tradicionales, evitando los inconvenientes de los
mismos.
Para la Universidad:
• Hace posible que se oferte formación a la sociedad sin los costos
que suponen los desplazamientos, alojamientos y viáticos de sus
empleados.
• Permite ampliar su oferta de formación a aquellas personas o trabajadores que no pueden acceder a los cursos presenciales.
• Hace posible que se supere la calidad de los cursos presenciales.
• Aumenta la efectividad de los presupuestos que se destinan a la
educación: En varios países los presupuestos de educación están
congelados aunque la demanda aumenta. Mientras que la financiación disminuye, los gobiernos piden niveles más altos y mayor
relevancia del factor “profesionalizador” de los cursos.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
13
• Responsabilidad del sistema educativo: Los gobiernos no sólo esperan que las instituciones educativas mejoren su relación costoeficacia, sino que también esperan que éstas justifiquen el uso que
hacen del dinero público.
1.5
La Enseñanza Virtual, los Empleos y el País
Debe hacerse mucho esfuerzo en varios países, en lo que respecta a la educación,
para poder conseguir dar mejores condiciones de vida en esos países.
“Educar ” es una de esas palabras que permite crear “esperanzas”.
La esperanza en algo, siempre es el mejor argumento de mercadeo disponible.
Ejemplo: El creador de Revlon decía que en la fábrica producían cosméticos, pero lo que vendían eran “esperanzas”.
La realidad es que hoy día lamentablemente, tener una profesión no garantiza que se conseguirá un trabajo. Por que en los tiempos en que vivimos,
se dice que un profesional tendrá que cambiar de actividad por lo menos dos
veces, para lograr subsistir adecuadamente.
1.5.1
Antecedentes
Los últimos años del siglo XX han visto la apertura de la economía global y
el comienzo de la era de la información. Si bien se fomenta un crecimiento
sin precedentes, fusiones y adquisiciones, la reciente eliminación de las barreras comerciales y los rápidos avances en tecnología han aumentado también
drásticamente la volatilidad del mercado mundial. Las compañías que desean seguir siendo competitivas deben responder eficazmente al cambio. Para
ello, necesitan asegurarse de que los empleados puedan aprender rápidamente
nuevas técnicas, actualizar las antiguas y asimilar grandes cantidades de información acerca de nuevos productos, mercados y competencias. El aprendizaje
electrónico es una forma revolucionaria de dotar a la mano de obra con las
técnicas y el conocimiento que necesitan para avanzar al mismo paso que los
rápidos cambios del mercado. Las personas, las empresas y los países con mayores conocimientos, técnicas y capacidad de crear y compartir eficazmente la
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
14
información son los que más probablemente alcancen el éxito en la economía
de Internet basada en el conocimiento.
1.5.2
Desafío
Las últimas dos décadas han demostrado la explosión de Internet, desde una
pequeña red que enlazaba a científicos hasta el mayor forum de intercambio
de ideas que la humanidad ha visto nunca. Para competir eficazmente en
la actualidad, los hombres de negocios deben absorber grandes cantidades
de información. Si bien Internet ofrece grandísimas oportunidades, también
presenta desafíos:
¿Cómo puede una organización aprovechar a Internet antes que su competencia?.
¿Cómo puede cerrar las lagunas que dejan los métodos tradicionales de formación en los empleados?.
Cuando hacen frente al rápido desarrollo tecnológico, a la desregulación de
muchas industrias y a las presiones de la globalización, los ejecutivos deben
preguntarse, tarde o temprano:
¿Pueden mis empleados hacer frente al ritmo de los cambios?.
El reto para los ejecutivos es garantizar que los empleados puedan gestionar
los cambios y no ser víctimas de ellos. Los empleados necesitan aprender
rápidamente nuevas técnicas y asimilar nueva información, pero los métodos de
formación tradicionales no son lo bastante flexibles para alcanzar los niveles de
actualización permanente requeridos por el desarrollo acelerado de las nuevas
técnicas y conocimientos.
1.5.3
Solución
El aprendizaje electrónico es la solución a los desafíos de formación y comunicación que ha creado la economía de Internet, porque hace referencia a la
educación que se mejora o proporciona a través de Internet. Comenzó en los
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
15
departamentos de formación corporativos, escuelas y universidades como un
suplemento a los métodos de enseñanza tradicionales. En la actualidad, abarca un gran grupo de soluciones que pueden usarse en toda una organización,
desde las comunicaciones corporativas y el marketing a la documentación técnica, soporte al cliente, control de calidad, fabricación, ingeniería, relaciones
públicas y relaciones de análisis para compartir información, experiencia e
ideas.
El aprendizaje electrónico puede ofrecer a los empleados la capacidad de
transformar los cambios en ventajas aprovechando los recursos de conocimiento existentes y preparándolos en un formato centrado en el empleado, más
personalizado y accesible.
Los antiguos modelos de aprendizaje no se ajustan para satisfacer los nuevos desafíos del aprendizaje mundial. Los sistemas de aprendizaje electrónico
pueden mejorar (en lugar de sustituir) los métodos y materiales de enseñanza
tradicionales. Los sistemas de aprendizaje electrónico pueden incluir elementos como:
• Objetos de contenido: El material se puede desarrollar en un formato
modular, dividido en “objetos” que se extraen de una base de datos, se los
trabaja para su aprendizaje y los resultados del mismo, se evalúan en una
prueba interactiva. El resultado es un ruta de aprendizaje personalizada:
los estudiantes sólo obtienen lo que necesitan y estudian a su propio
ritmo.
• Comunidades: Los estudiantes pueden desarrollar comunidades en línea
para proporcionarse ayuda mutua y compartir información.
• Experiencia en línea: Puede haber tutores o expertos disponibles en
línea para ofrecer información y orientación a los educandos, responder
preguntas y mediar las discusiones.
• Oportunidades de colaboración: El software de reunión en línea permite
un aprendizaje en colaboración sincrónico a través de distancias geográficas.
• Multimedia: Las tecnologías de audio y video bajo demanda pueden
presentar el material de una forma estimulante para cautivar activamente
a los estudiantes. Ver fig. 1.5 de la pág. 16.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
16
Figura 1.5: Diversas soluciones de aprendizaje.
1.5.4
Capacitación
En esta nueva y cambiante economía global, todos los empresarios quieren
garantizar competitividad en el mercado. Por ello, precisan invertir en actualización, entrenamiento y perfeccionamiento constante de los directivos y
empleados, condicionarlos para el mejor desenvolvimiento, evitar rotación de
personal y conseguir retener los talentos.
Esta visión generó en los Estados Unidos una forma de conseguirlo por medio de la educación a distancia , especialmente desde 1997, utilizando las nuevas tecnologías telemáticas, con eficiencia y a muy bajo costo. El “e-learning”
es una de las formas que ha adoptado la llamada educación a distancia, para
actualizar personal, como complemento al aprendizaje presencial. Se ofrecen
revistas digitales, cursos virtuales de diversos temas, entre otros.
Las empresas de esta forma utilizan Internet para la capacitación y el
entrenamiento de personal.
Cuando los primeros sistemas de e-learning se lanzaron en 1999 en Argentina, el mayor desafío fue la resistencia al cambio, tanto de las empresas como
de los funcionarios. En el 2000, las inversiones en tecnologías de aprendizaje
electrónico (e-learning) fueron muy bajas en comparación con otros segmentos
de las Tecnologías de Información (TI).
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
17
Para los próximos años se tienen expectativas mayores de inversión en
e-learning, consiguiendo así, una expansión considerable, que beneficiará en
forma decisiva el progreso de los negocios y del país. La conveniencia y flexibilidad de horarios del aprendizaje virtual, así como la ventaja de no exigir
el traslado de los capacitandos, en un contexto amplio, son los beneficios más
aparentes de esta forma de aprendizaje.
Los empresarios ya conocen que la capacitación continua es fundamental
para el éxito de las empresas, y que es una importante forma de mantener
la competitividad de los negocios a largo plazo. Todas las empresas tienen
ahora esa posibilidad con las facilidades que esa capacitación continua puede
ser hecha por medio de Intranets o de la Internet.
1.5.5
Ventajas
En todas las múltiples formas, el aprendizaje electrónico ofrece una multitud
de beneficios de incalculable valor para los empleados y quienes les contratan:
• Experiencia de aprendizaje personalizada: Las opciones de aprendizaje
autodidacta permiten a los estudiantes avanzar a su propio ritmo, seleccionar el tipo de contenido y los vehículos de entrega con base en las
preferencias individuales y ensamblar módulos de contenidos apropiados
a sus necesidades.
• Reducción de costos: Las empresas pueden reducir, e incluso suprimir,
los gastos de viaje para formación, eliminar los costos de las aulas y
reducir el tiempo que los empleados pierden lejos de la oficina y de sus
obligaciones normales.
• Acceso: Los usuarios pueden acceder a los contenidos en cualquier lugar
que tenga una conexión a Internet. Esto significa que los contenidos
de aprendizaje electrónico pueden llegar a una audiencia prácticamente
ilimitada y los estudiantes no están forzados por las diferencias en las
zonas horarias.
• Aprendizaje colaborativo: El aprendizaje electrónico tiene en cuenta la
exposición del conocimiento y el soporte entre los grupos.
• Responsabilidad : El seguimiento de graduación, prueba, evaluación y
certificación están automatizados, de forma que todos los participantes
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
18
(alumnos, desarrolladores y propietarios de contenidos) puedan hacerse
cargo de las responsabilidades en los procesos de aprendizaje.
1.5.6
Desventajas
El reto que confronta todo consultor o nuevo líder, cuando quiere hacer mejoras en una organización, es modificar una cultura arraigada que no se ajusta
a las nuevas circunstancias comerciales o tecnológicas. Las culturas organizacionales demasiado arraigadas son una carga para la empresa que pretende
adaptarse a los cambios del mercado y de entornos. Las culturas organizacionales profundamente arraigadas dan a las personas que se encuentran dentro
de ellas una gran seguridad. Frente a cualquier cambio que se proponga, por
mínimo que sea, que modifique la cultura establecida, confronta rechazos inmediatos, aunque sea para el beneficio de todos.
La mayoría opina que es posible cambiar la cultura de una organización,
pero es un proceso lento que puede durar muchos años; incluso si el cambio se
llega a producir reconocen que será solo parcial.
1.5.7
El Uso de Tecnologías de Aprendizaje Electrónico para
Ayudar a Mejorar el Desempeño
Se puede tomar parte en el aprendizaje electrónico de muchas maneras, utilizando una computadora y la Red WWW. Se puede obtener información de
una amplia gama de fuentes. Se puede intercambiar opiniones con otras personas en uno o varios grupos de discusión, y se puede inscribir a diversos tipos
de talleres o “aulas virtuales” basadas en la Red.
Asimismo, se pueden practicar aptitudes nuevas y complejas a través de un
período de tiempo en el lugar de trabajo, cuando se realizan trabajos prácticos,
es decir ejercicios prácticos diseñados para ayudar a los empleados a aplicar
los conocimientos recientemente adquiridos en el entorno de trabajo.
Con un CD-ROM y una computadora se puede también practicar nuevas
aptitudes según convenga, empleando tutorías para autodidactas.
También se describe cómo se puede:
• Acceder a recursos de información para la adopción de acciones admi-
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
19
nistrativas.
• Practicar métodos autodidactas de aprendizaje.
• Colaborar en varios tipos de talleres.
• Utilizar entrenadores electrónicos para mejorar los talleres reales “cara
a cara”.
• Beneficiarse de las “prácticas” de aprendizaje electrónico.
1. Acceso a los recursos para adoptar acciones administrativas:
Uno de los beneficios más grandes del empleo de tecnologías de aprendizaje electrónico consiste en mejorar el acceso a la información. El
momento oportuno es a menudo crucial para los administradores,
de manera que el acceso oportuno a la información presentada en
formas útiles se ha convertido en una de las ventajas clave de los
programas de aprendizaje electrónico.
Obtener la información necesaria en el momento que se la necesita se
denomina “aprendizaje en el momento preciso”. La Red y el correo electrónico son herramientas informáticas que pueden ofrecer
aprendizaje en el momento preciso.
2. Colaboración en los talleres basados en la computadora:
Los talleres colaborativos proporcionan otro medio para llevar a cabo el
aprendizaje electrónico. Sentados frente a las computadoras de las
oficinas o domicilios, los participantes se reúnen electrónicamente
en talleres virtuales para aprender y practicar habilidades nuevas.
Empleando el correo electrónico u otras tecnologías basadas en la
Internet, estos alumnos electrónicos participan en discusiones y ejercicios de grupo; cumplen un horario y son guiados por instructores
que pueden encontrarse en cualquier parte del mundo.
Sin un contacto personal durante la capacitación, es posible que el
alumno se sienta aislado, de manera que se han inventado nuevos
métodos de comunicación y de apoyo para mejorar las actividades
de aprendizaje. El apoyo y guía en línea provisto por un instructor
experto, y las oportunidades para sostener discusiones entre los
alumnos y con el instructor, han mejorado las tasas de éxito de las
aulas virtuales.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
20
3. Dirigir y guiar como instructor para mejorar la capacitación en persona
“Cara a Cara”:
Las tecnologías de aprendizaje electrónico pueden mejorar la eficacia
y el impacto de la capacitación tradicional en persona o “cara a
cara”. Uno de los problemas con los talleres tradicionales siempre ha sido la dificultad de proporcionar apoyo y seguimiento a
los participantes para que sigan adelante con el proceso educativo. Las tecnologías de aprendizaje electrónico hacen posible que
los participantes reciban apoyo educativo después que el taller ha
concluido. Se pueden ampliar y enriquecer los conceptos aprendidos con un programa de correo electrónico para participantes que
les permite discutir los problemas técnicos que podrían encontrar
cuando vuelvan a los lugares de trabajo habituales. El correo electrónico puede proporcionar actualizaciones e información referente
a diversos puntos claves de importancia para los participantes.
El correo electrónico y las herramientas de la Red también apoyan la
asistencia técnica y las actividades de capacitación al permitir que
los participantes colaboren en la revisión de los materiales.
4. Sesiones prácticas de aprendizaje electrónico:
Las sesiones prácticas proporcionan experiencias de capacitación práctica en el trabajo para el participante a través del empleo del aprendizaje electrónico y del aprendizaje cara a cara en el lugar del trabajo.
Las prácticas parecen tener un buen potencial para mejorar tanto
el desempeño individual en el trabajo como el desempeño de la organización en general. Una práctica en el lugar de trabajo podría
estructurarse para:
Apoyar a los equipos de participantes: Las organizaciones identifican un equipo compuesto por miembros del personal, quienes
después de realizar las prácticas, se convertirán en agentes de
cambio implementando lo que han aprendido. Dentro de cada
equipo, se designa y capacita a un participante para que dirija
el proceso de aprendizaje con otros miembros del equipo.
Identificar a cada participante individual : Las sesiones prácticas
combinan tecnologías de aprendizaje electrónico, materiales impresos y talleres cara a cara para apoyar a cada uno de los
participantes a través del proceso de aprendizaje.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
21
Facilitar el intercambio entre el personal gerencial de mayor jerarquía que dirige a los equipos: Los líderes de los equipos están
en condiciones de comunicarse con otros líderes de equipos alrededor del mundo. De esta manera, pueden compartir métodos
y experiencias, resolver problemas y apoyarse unos a otros a
lo largo del proceso, en lugar de instituir prácticas nuevas en
forma aislada.
1.6
Planificar e Implementar una Actividad de elearning
Suponiendo que la organización apoya los objetivos de aprendizaje electrónico,
y que las condiciones en el lugar del trabajo son adecuadas para implementar
una iniciativa de aprendizaje electrónico, se decide añadir un componente de
aprendizaje electrónico al programa de capacitación. Se pretende saber:
¿Cómo adoptar cursos de acción?.
¿En qué se debería pensar?.
Entonces las siguientes preguntas ayudan a planificar e implementar una
actividad piloto de aprendizaje electrónico para una organización, con cinco
pasos:
Paso 1 : Determinar qué tipo de aprendizaje electrónico se podría ofrecer a
la organización.
Paso 2 : Preparar a la organización para las actividades de aprendizaje electrónico.
Paso 3 : Formar un equipo de aprendizaje electrónico.
Paso 4 : Dirigir la actividad de aprendizaje electrónico.
Paso 5 : Evaluar la experiencia con el aprendizaje electrónico.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
1.6.1
22
Determinación del Tipo de Aprendizaje Electrónico que
se Puede Ofrecer a la Organización
El aprendizaje electrónico trata primero y primordialmente sobre aprendizaje.
Antes de introducir el aprendizaje electrónico a la organización, se debe determinar si el entorno de trabajo apoya el aprendizaje en el lugar del trabajo
y en qué forma el aprendizaje electrónico puede apoyar los objetivos de capacitación y educación de la organización. Para comenzar el proceso, se debe
responder a las siguientes preguntas:
• ¿Fortalecería el aprendizaje electrónico el programa de capacitación
de la organización?. ¿Por qué?.
• ¿Mejoraría el aprendizaje electrónico la calidad de la experiencia
de aprendizaje?. Si así fuera, ¿en qué forma?.
• ¿Simplificaría el aprendizaje electrónico la capacitación de un gran
número de miembros del personal?.
• ¿Podría el aprendizaje electrónico proporcionar instrucción que no
estaría disponible de otra manera?.
• ¿Reduciría el aprendizaje electrónico los costos de capacitación?.
1.6.2
Preparar una Organización para el Aprendizaje Electrónico
Para introducir efectivamente las actividades de aprendizaje electrónico a una
organización, se debe preparar tanto al personal como a la organización en
sí. El aprendizaje electrónico es un esfuerzo colaborativo y cooperativo, de
manera que el personal debe comprender a fondo el propósito y el uso al cual
está destinada la actividad de aprendizaje electrónico.
La organización se responsabilizará de introducir la enseñanza electrónica
al personal y explicar en qué forma la enseñanza electrónica puede ayudar a
cubrir las necesidades de capacitación y desarrollo profesional. Para que el
aprendizaje electrónico sea introducido exitosamente, se deben instituir políticas nuevas, normas diferentes y un conjunto nuevo de recompensas.
La organización debe encarar también otros aspectos como el acceso a las
computadoras, la compra de equipos, la capacitación en el uso de tecnologías
informáticas y el desarrollo de servicios de apoyo para las comunicaciones y la
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
23
Figura 1.6: Una organización bajo e-learning.
información con el objeto de obtener y mantener la infraestructura informática
y de computación así como una conexión a Internet.
Las siguientes preguntas deben plantearse para determinar si una organización está lista para el aprendizaje electrónico:
• ¿Está dispuesta la organización a conceder al personal el tiempo necesario para que participe en actividades de aprendizaje electrónico?.
• ¿Tiene acceso el personal a las tecnologías y servicios que se necesitan
para llevar adelante las actividades de aprendizaje electrónico?.
• ¿Hay técnicos disponibles en la organización que pueden garantizar la
facilidad de uso de esta tecnología?.
• ¿Cuenta el personal con conocimientos computacionales adecuados?.
• ¿Qué motivaría al personal a participar en una actividad de aprendizaje
electrónico?.
• ¿Hay supervisores disponibles para apoyar la aplicación de nuevos conocimientos y habilidades?.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
1.6.3
24
Tecnologías y Servicios Necesarios para el Aprendizaje
Electrónico
Debido a que las diferentes formas de aprendizaje electrónico requieren de
distintas tecnologías, se debe identificar cuáles de los siguientes componentes
estarían disponibles para una organización antes de seleccionar un enfoque de
aprendizaje electrónico específico.
Actividades de Aprendizaje Basadas en el Correo Electrónico
• Servicio telefónico y suministro de energía eléctrica seguros.
• Una computadora personal equipada con un programa de correo electrónico y software para la conexión telefónica.
• Un modem, para traducir las señales electrónicas entre la computadora
y el sistema de telefonía.
• Un proveedor de servicios de Internet (PSI ó ISP), para transmitir
y recibir los mensajes de correo electrónico a través de Internet; conjuntamente con una cuenta de correo electrónico y direcciones para la
organización y para los miembros individuales del personal.
• Una impresora, para imprimir los mensajes y otros documentos.
Actividades de Aprendizaje Basadas en el CD-ROM
• Servicio telefónico y suministro de energía eléctrica seguros.
• Una computadora personal equipada con un lector de CD-ROM, una
tarjeta de sonido, una tarjeta de video y el software requerido para que
éstos funcionen.
Actividades de Aprendizaje Basadas en la Red
• Todos los componentes detallados bajo las actividades de aprendizaje
basadas en el correo electrónico.
• Una conexión a Internet de un PSI con una velocidad media.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
25
Figura 1.7: Productos para e-learning.
• Un navegador para explorar la Red, como Netscape Navigator o Microsoft Internet Explorer.
• Equipo de computación y software para generar y/o recibir señales de
audio y video, para las actividades de aprendizaje con multimedia.
1.6.4
Formación del Equipo de Aprendizaje Electrónico
Para que el aprendizaje electrónico tenga éxito, se requiere de un buen líder
que comprenda y apoye el aprendizaje electrónico, así como un equipo eficaz de
profesionales seleccionados estratégicamente de los varios departamentos. El
equipo de aprendizaje electrónico debería incluir representantes de los departamentos de capacitación, tecnología y finanzas de la organización, así como
uno o dos de los participantes potenciales de la actividad de aprendizaje electrónico.
El equipo se responsabilizará de dirigir el esfuerzo y deberá:
1. Describir cómo el aprendizaje electrónico beneficiará a la organización, paralelamente con la actividad de capacitación actual.
2. Establecer un proceso claro para la toma de decisiones referentes al
aprendizaje electrónico.
3. Desarrollar un plan y un presupuesto para una actividad piloto de
aprendizaje electrónico.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
26
4. Seleccionar y dirigir la actividad piloto de aprendizaje electrónico.
5. Evaluar la experiencia que se logró con el aprendizaje electrónico.
1.6.5
Dirección de la Primera Actividad de Aprendizaje Electrónico
Una buena manera de introducir el aprendizaje electrónico a una organización consiste en dirigir una actividad piloto de aprendizaje electrónico, con la
ayuda de un equipo de aprendizaje electrónico recientemente conformado. Así
se estará en condiciones de experimentar el aprendizaje electrónico desde la
perspectiva de un alumno así como de un administrador.
Para desarrollar el proyecto piloto de aprendizaje electrónico, se debe:
• Determinar las necesidades de mejoramiento del desempeño en una organización.
• Identificar los objetivos para la capacitación del personal que ayudarán
a encarar las necesidades.
• Determinar cómo el aprendizaje electrónico podría apoyar y ampliar los
objetivos de capacitación.
• Seleccionar las actividades de aprendizaje electrónico apropiadas para
las tareas y para el entorno de trabajo.
Una vez seleccionada la actividad, se podrá organizar al personal clave que
participará en el evento de aprendizaje apropiado.
Selección de los programas de aprendizaje electrónico: Cuando se trabaja
en la Red, es fácil perder de vista la distinción entre la comunicación y el
aprendizaje. La mayoría de las páginas Web son similares a revistas, que son
comunicadores de una sola dirección para un lector pasivo. Los productos de
aprendizaje electrónico, por otro lado, son herramientas de comunicación de
dos vías: logran la participación activa de los alumnos haciéndolos tomar parte
en el proceso de aprendizaje. En el mejor de los casos, el aprendizaje electrónico hace posible que los alumnos practiquen y apliquen nuevas aptitudes
bajo la supervisión de un instructor experimentado.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
27
Al seleccionar un taller de aprendizaje electrónico o un curso en la Red, se
debe considerar los objetivos de aprendizaje. Se pueden emplear los siguientes
criterios para seleccionar tecnologías y servicios de aprendizaje electrónico.
Idealmente, las tecnologías y servicios de aprendizaje electrónico deberían:
• Hacer participar activamente al alumno y basarse en las experiencias del
mismo.
• Funcionar fluidamente con la infraestructura y la tecnología disponibles.
• Proporcionar ayuda en línea.
• Incluir ejemplos que sean significativos para los alumnos.
• Seguir estrategias de aprendizaje que se adecúen a los objetivos de instrucción.
• Funcionar a distintos niveles de aprendizaje, dependiendo de las necesidades e intereses de los alumnos.
• Ser de uso fácil para el usuario.
• Incluir los medios para evaluar la experiencia de aprendizaje.
• Presentar conceptos en una diversidad de medios para adecuarse a los
diferentes estilos de aprendizaje.
• Tener una eficacia demostrada en escenarios similares a los de la organización.
Los cursos adecuados basados en la Red generalmente:
• Permiten que los alumnos sostengan conferencias regulares con los instructores y otros expertos.
• Apoyan la colaboración entre los diferentes alumnos.
• Proporcionan vínculos con otras páginas de la Red que tienen un contenido afín.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
1.6.6
28
Evaluación de la Experiencia de Aprendizaje Electrónico
El paso final para incorporar el aprendizaje electrónico al programa de capacitación de la organización consiste en evaluar el proyecto piloto. Se deben
evaluar tres aspectos de la actividad:
• En primer lugar, ¿fue efectiva la capacitación, en términos de los objetivos y medida a través de los resultados actuales del aprendizaje y el
impacto real de la actividad sobre el desempeño del personal?.
• En segundo lugar, ¿era la tecnología de aprendizaje electrónico apropiada
para la tarea y funcionó correctamente?.
• En tercer lugar, si los profesores o instructores estuvieron directamente
involucrados, ¿proporcionaron instrucción y apoyo adecuados durante el
curso?.
¿Fue efectiva la capacitación? : El aprendizaje electrónico ofrece a los administradores nuevas metodologías para evaluar la capacitación y el desempeño.
Estas metodologías emplean herramientas formales e informales para enseñar
a los alumnos y evaluar su desempeño, como:
• Pruebas, exámenes y repasos cortos en línea para evaluar el éxito del
proceso de aprendizaje al final de cada sesión o lección.
• Tareas para ser corregidas por el instructor en línea.
• Diarios en línea de los estudiantes para autoevaluarse, informar con respecto a las metas y objetivos personales durante el curso y para usarlas
en el desarrollo de un plan de acción personal.
• El uso del correo electrónico o las discusiones en línea para monitorear
las actitudes de los alumnos hacia el curso.
• Cuestionarios en línea o enviados por correo electrónico para evaluar las
percepciones de los alumnos con respecto a su experiencia, incluyendo
los resultados del aprendizaje electrónico.
¿Era la tecnología apropiada y efectiva? : Preguntar a los alumnos y capacitadores lo siguiente, debería proporcionar información útil:
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
29
• ¿Proporcionó la organización acceso adecuado a computadoras y a Internet?. ¿Cuán familiarizado estaba el personal con las tecnologías de
aprendizaje electrónico empleadas en el curso?. ¿Qué tipo de capacitación requirieron para poder seguir el curso?.
• ¿Cuán difícil o fácil les resultó seguir las instrucciones?. ¿Cuán difícil o
fácil fue implementar la actividad?. ¿Cuán difícil o fácilmente se podían
recuperar documentos y materiales en línea?.
• ¿Se adecuaban las actividades electrónicas a los objetivos de instrucción?. ¿Cuán efectivas eran las actividades de enseñanza en la transmisión del contenido del curso?. ¿Creó la tecnología barreras para el
aprendizaje?. ¿Apoyó el aprendizaje?. ¿Cómo?.
• ¿Había apoyo apropiado para utilizar las tecnologías?.
• Al utilizar esas tecnologías, ¿logró el personal cumplir las expectativas
personales de mejorar las aptitudes hasta los niveles deseados?.
¿Fueron el apoyo y las comunicaciones de los capacitadores efectivos? : Al
igual que con la capacitación cara a cara, la relación entre el alumno y el
capacitador durante el aprendizaje electrónico constituye un factor clave para
la evaluación. Las preguntas deberán formularse para evaluar la eficacia de
la relación entre los instructores, y entre los instructores y los alumnos que
participan en el aprendizaje electrónico. Algunas preguntas para la evaluación
del aprendizaje electrónico son:
• ¿Hasta que punto los capacitadores proporcionaron apoyo y guía a los
alumnos?.
• ¿Eran los horarios de oficina en línea de los capacitadores convenientes
para los alumnos?.
• ¿Respondieron los capacitadores a las preguntas y solicitudes en forma
inmediata?.
• ¿En qué medida participaron los alumnos en las discusiones de la clase
en línea?.
• ¿Era apropiado el ritmo de avance del curso?.
• ¿Hasta qué punto la presencia del facilitador mejoró la presentación del
curso?.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
30
Si la evaluación ha determinado que la actividad de aprendizaje electrónico
fue un éxito, se debería estar en condiciones de hacer planes para incorporar
las actividades de aprendizaje electrónico al programa de capacitación de la
organización así como al programa regular de trabajo.
1.6.7
Empleo del Aprendizaje Electrónico para Encarar los
Retos Gerenciales
En el entorno económico actual de los servicios de salud, con costos operativos crecientes y demandas que compiten por los recursos presupuestarios,
los administradores deben encontrar nuevas soluciones para mantenerse al día
con respecto a los conocimientos nuevos y seguir cubriendo las necesidades
cambiantes de los clientes.
Comunicaciones innovadoras están trayendo consigo nuevos recursos al alcance de la educación continua y del desarrollo profesional. Estos recursos
ofrecen nuevas oportunidades, a medida que se encuentran a disposición en
el lugar de trabajo, para mejorar la prestación de servicios y otros aspectos
relativos al desempeño de una organización.
La organización se puede beneficiar de estos recursos nuevos creando iniciativas de aprendizaje electrónico, para ayudar al personal a desarrollar nuevas
aptitudes y a tomar decisiones informadas. La calidad de los servicios puede
mejorar, y la organización estará en mejores condiciones de lograr la misión. Al
fin y al cabo, ése es el objetivo final de la iniciativa de aprendizaje electrónico.
1.6.8
Lista de Verificación para una Actividad Piloto de Aprendizaje Electrónico
La lista debería incluir lo siguiente:
1. Determinar en qué manera el aprendizaje electrónico podría mejorar el
programa de capacitación de una organización.
2. Evaluar el estado de preparación tecnológica de la organización para un
programa de aprendizaje electrónico. Tener el equipo de computación,
software, los servicios de apoyo y la planta física de oficina requeridos.
CAPÍTULO 1. INTRODUCCIÓN AL E-LEARNING
31
3. Evaluar el estado de preparación de los colegas para comprometerse a
actividades de aprendizaje electrónico. Tener aptitudes computacionales
adecuadas así como una actitud y motivación apropiadas.
4. Establecer un equipo de aprendizaje electrónico, compuesto por personal de los departamentos de capacitación, tecnología informática y de
finanzas y los participantes potenciales para el aprendizaje electrónico.
5. Hacer que el equipo organice e implemente un programa piloto de aprendizaje electrónico según los siguientes lineamientos:
Paso 1 : Determinar las necesidades de mejoramiento del desempeño
en la organización.
Paso 2 : Identificar los objetivos para la capacitación del personal que
podría ayudar a encarar las necesidades.
Paso 3 : Determinar en qué forma el aprendizaje electrónico podría
apoyar y ampliar los objetivos de capacitación.
Paso 4 : Seleccionar las actividades de aprendizaje electrónico apropiadas para las tareas y para el entorno de trabajo.
Paso 5 : Dirigir la implementación de la actividad piloto.
6. Evaluar la experiencia piloto con un equipo, incluyendo la efectividad del
aprendizaje y la relación costo-beneficio de los esfuerzos organizacionales.
7. Considerar la formulación de planes para incorporar actividades de aprendizaje electrónico que beneficiarían de mejor manera al programa de
capacitación de la organización y al programa regular de trabajo.
Capítulo 2
Conceptos Básicos Sobre el
Lenguaje Java
2.1
¿Qué es Java y Para qué fue Pensado?
Java es un lenguaje de programación sencillo de aprender que originalmente fue
desarrollado por un equipo de ingenieros de Sun Microsystems, utilizado por
Netscape, por nuevas necesidades, ya que los lenguajes existentes no cumplían
con todas las necesidades para el proyecto en marcha. Pero se basaron en lo ya
hecho y probado. Es por ésta razón que el código Java se expresa en archivos
de texto comunes, y tiene una apariencia muy familiar para los programadores
de C/C++ y para los programadores en general [25].
Los creadores de Java partieron de la sintaxis de C++ pero “simplificada”
y trataron de eliminar todo lo que resulte complicado, o permita fuente de
errores.
Java nace en un intento de resolver simultáneamente los problemas que
se planteaban los desarrolladores de software por la difusión de arquitecturas
incompatibles, tanto entre las diferentes máquinas como entre los diversos
sistemas operativos y sistemas de ventanas que funcionaban sobre una misma
máquina, incrementando la dificultad de crear aplicaciones distribuidas en la
Red [1].
El uso del lenguaje Java se destaca en la Web pero sirve para crear todo
tipo de aplicaciones (locales, Intranet o Internet). Java sirvió posteriormente
32
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
33
Figura 2.1: Logo de Java.
como base para JavaScript, que se detallará más adelante .
Una de las utilizaciones más difundida, que justifica a Java como lenguaje
es en pequeños electrodomésticos como microondas, tostadoras y, fundamentalmente, televisión interactiva y otros dispositivos electrónicos de uso diario,
como celulares, PDA’s, palms y pocket pc.
2.1.1
Características del Lenguaje Java
Las principales son:
• Orientado a objetos.
• Simple.
• Distribuido.
• Flexible.
• Independiente de la plataforma.
• Robusto.
• Gestiona la memoria automáticamente.
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
34
• No permite el uso de técnicas de programación inadecuadas.
• Multithreading.
• Cliente-servidor.
• Mecanismos de seguridad incorporados.
• Herramientas de documentación incorporadas.
2.1.2
Desarrollo de las Principales Características de Java
Las principales características que ofrece el lenguaje Java respecto a cualquier
otro lenguaje son:
• Es un lenguaje Orientado a Objetos.
Posiblemente el más orientado a objetos de todos los lenguajes existentes;
en Java todo, a excepción de los tipos fundamentales de variables (int, char,
long), es un objeto.
Las plantillas de objetos son llamadas, como en C++, clases y sus copias, instancias. Estas instancias, como en C++, necesitan ser construidas y
destruidas en espacios de memoria.
Los objetos se definen en clases, con atributos y métodos, agrupándose en
paquetes, y exponiendo interfaces a esos objetos. Soporta las tres características propias del paradigma de la orientación a objetos: encapsulación, herencia
y polimorfismo, implementando así la tecnología de objetos de una manera
muy completa, y a la vez sencilla y agradable.
Se reconocerá al estudiar la semántica, que Java es realmente un lenguaje
que merece ser llamado “totalmente orientado a objetos”.
Java incorpora funcionalidades inexistentes en C++, como por ejemplo,
la resolución dinámica de métodos. En C++ se suele trabajar con librerías
dinámicas (DLL’s) que obligan a recompilar la aplicación cuando se retocan
las funciones que se encuentran en su interior. Este inconveniente es resuelto por Java mediante una interfaz específica llamada RTTI (RunTime Type
Identification) que define la interacción entre objetos excluyendo variables de
instancias o implementación de métodos.
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
35
Las clases en Java tienen una representación en el runtime que permite a
los programadores interrogar por el tipo de clase y enlazar dinámicamente la
clase con el resultado de la búsqueda.
• Es simple.
Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las
características menos usadas y más confusas de éstos. C++ es un lenguaje
que padece falta de seguridad, pero C y C++ son lenguajes más difundidos,
por ello Java se diseñó para ser parecido a C++ y así facilitar un rápido y
fácil aprendizaje.
Java elimina muchas de las características de otros lenguajes como C++,
para mantener reducidas las especificaciones del lenguaje y añadir características muy útiles.
Java reduce en un 50% los errores más comunes de programación con
lenguajes como C y C++ al eliminar muchas de las características de éstos.
• Es distribuido.
Está orientado al trabajo en red, soportando protocolos como TCP/IP,
HDP, HTTP y FTP. Por otro lado el uso de estos protocolos es bastante
sencillo comparándolo con otros lenguajes que los soportan.
Java se ha construido con extensas capacidades de interconexión TCP/IP.
Existen librerías de rutinas para acceder e interactuar con protocolos como
HTTP y FTP. Esto permite a los programadores acceder a la información a
través de la red con tanta facilidad como a los ficheros locales.
La verdad es que Java en sí no es distribuido, sino que proporciona las
librerías y herramientas para que los programas puedan ser distribuidos, es
decir, que se corran en varias máquinas.
• Es robusto.
Se refiere a la forma en que está diseñado ya que el compilador de Java
detecta muchos errores que otros compiladores sólo detectarían en tiempo
de ejecución o incluso nunca. El código generado por el compilador Java es
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
36
independiente de la arquitectura, o sea, puede ejecutarse en un entorno
Unix, Mac o Windows.
Java no permite el manejo directo del hardware ni de la memoria, así
virtualmente es imposible colgar un programa Java. El intérprete siempre tiene
el control. Inclusive el compilador es suficientemente inteligente como para no
permitir cosas que causen problemas, como usar variables sin inicializarlas,
modificar valores de punteros directamente, acceder a métodos o variables en
forma incorrecta, utilizar herencia múltiple, etc.
• Posee herramientas de documentación incorporadas.
Además, con el JDK (Java Development Kit) vienen incorporadas muchas
herramientas, entre ellas un generador automático de documentación que, con
un poco de atención al poner los comentarios en las clases, crea inclusive toda
la documentación de las mismas en formato HTML.
• Es Seguro.
Los problemas de virus, o de confidencialidad de los datos aparecen masivamente con Internet, y con la distribución de programas por todas las redes,
así el problema de la seguridad ha tomado una nueva dimensión, más grave,
ya que actualmente a nuestra máquina pueden llegar aplicaciones hostiles y
virus malignos, desde cualquier parte del mundo.
Java ha sido adaptado a Internet, pensando mucho en el tema seguridad,
sobre todo un tipo de desarrollo: los applets. Java garantiza que ningún applet
puede escribir o leer de nuestro disco o mandar información del usuario que
accede a la página a través de la red (ej.: e-mail).
Un applet Java se ejecuta en un entorno, que impide su intromisión en
la máquina cliente. En general no permite realizar cualquier acción que pudiera dañar la máquina o violar la intimidad de quien visita la página Web.
Entonces, no hay posibilidad de un virus Java, viajando por toda la red.
Java implementa mecanismos de seguridad que limitan el acceso a recursos
de las máquinas donde se ejecuta, especialmente en el caso de los Applets
(aplicaciones que se cargan desde un servidor y se ejecutan en el cliente).
También está diseñado específicamente para trabajar sobre una red, de modo
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
37
que incorpora objetos que permiten acceder a archivos en forma remota (via
URL por ejemplo).
• Es Portable (multiplataforma).
En Java no hay aspectos dependientes de la implementación, todas las implementaciones de Java siguen los mismos estándares en cuanto a tamaño y
almacenamiento de los datos y corren de igual forma bajo distintas plataformas, mientras que otros lenguajes almacenan datos de formas diferentes según
la plataforma en la que se encuentre.
Esto no sucede con Java ya que el proceso de compilación no produce
código para un procesador en particular, como en los compiladores C/C++,
sino que genera código para un procesador ideal, denominado Máquina Virtual
Java (Java Virtual Machine, o Java VM ). La razón de ésto es la necesidad
de poder ejecutarse en cualquier plataforma, sin necesidad de cambiar el
código fuente, ni aun de recompilar.
Todo programa Java se traduce en una serie de códigos (llamados bytecodes
que son el resultado de la compilación de un programa Java) para un procesador imaginario (virtual), el Java VM, que puede ser implementado fácilmente
en cualquier plataforma poderosa. Es así como el lenguaje y sus aplicaciones se
independizan de la máquina destino, a costa de algo de velocidad, provocada
por la necesidad de “simular ” la Java VM, mediante software.
Aún los tipos primitivos de datos quedan definidos de un solo paso, para
todas las plataformas. Se evitan de esta forma los problemas de portabilidad,
conocidos por los programadores de C/C++, al cambiar, por ejemplo, de
ambiente a ambiente, el tamaño de los enteros, o el conjunto de caracteres
soportados. En Java, esos problemas no existen: sólo existe una máquina
virtual.
Los programas en Java pueden ejecutarse en cualquiera de las siguientes
plataformas, sin necesidad de hacer cambios:
Windows/95 y /NT.
Power/Mac.
Unix (Solaris, Silicon Graphics, ...).
La compatibilidad es total:
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
38
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.
• Manejo automático de memoria.
El lenguaje Java se compone de objetos y estos pueden y deben crearse;
tienen una vida corta, ya que se inicia con la ejecución y dura hasta que se
termina la ejecución, donde es su destrucción.
Mientras que la creación de los objetos se deja bajo la voluntad del programador, la destrucción definitiva de un objeto ocurre cuando no es más
referenciado por otros objetos del programa. De esta forma, se elimina una de
las causas más comunes de error en otros lenguajes, como la destrucción por
el programador de objetos aún en uso en el programa, o la falta de destrucción
de objetos que ya son inútiles, ya que no se usan en el resto de la ejecución,
pero que molestan con empleo de recursos.
Esta técnica de manejo automático de memoria ocupada por los objetos
se denominan garbage collection, es como recolección de basura o reciclador
de memoria dinámica; gracias a ésto no es necesario preocuparse de liberar
memoria, el reciclador se encarga de ello y como es un thread de baja prioridad,
cuando entra en acción, permite liberar bloques de memoria muy grandes, lo
que reduce la fragmentación de la memoria.
El 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.
En una aplicación Java hay siempre un proceso, ejecutado como un “thread” o hilo de ejecución separado, que se ocupa de recorrer la memoria donde
se encuentran los objetos, y determina cuáles pueden liberarse y destruirse.
En Java los programadores ya no necesitan preocuparse de liberar un trozo de memoria cuando no lo necesitan. Es el recolector de basuras el que
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
39
determina cuando se puede liberar la memoria ocupada por un objeto.
• Java no se aísla y evoluciona.
Java trata de ser un lenguaje de producción, no un lenguaje académico o
ideal, entonces no intenta comunicarse con librerías de otros lenguajes. Tiene
capacidades definidas para implementar clases y métodos (o funciones), escritos, por ejemplo, en C/C++. Esto permite usar lo que ya está hecho, en cada
plataforma de implementación.
Igualmente, Java es un lenguaje de uso general, y muchas de las rutinas y
librerías que se necesita para un proyecto, pueden ser escritas en Java. Debido
al éxito del lenguaje, y a su difusión, cada día aparecen nuevas herramientas
y paquetes de clases escritas por otros programadores, listas para ser usadas
en nuestro próximo sistema.
• Dinámico.
Java se beneficia todo lo posible de la tecnología orientada a objetos. Java
no intenta conectar todos los módulos que comprenden una aplicación hasta
el tiempo de ejecución.
Las librería nuevas o actualizadas no paralizarán las aplicaciones actuales.
Java también simplifica el uso de protocolos nuevos o actualizados. Si el sistema ejecuta una aplicación Java sobre la red y encuentra una pieza (módulo)
de la aplicación que no sabe manejar, Java es capaz de traer automáticamente
cualquiera de esas piezas que el sistema necesita para funcionar.
Para evitar que los módulos de bytecodes o los objetos o nuevas clases,
tengan que ser traídos de la red cada vez que se necesiten, se implementan las
opciones de persistencia, para que no se eliminen cuando se limpie la caché de
la máquina.
2.1.3
Ventajas de Java
1. No se vuelve a escribir el código si se quiere ejecutar el programa en
otra máquina (multiplataforma). Un solo código funciona para todos los
browsers compatibles con Java o donde se tenga una Máquina Virtual
de Java (Mac’s, PC’s, Sun’s, etc).
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
40
2. Java es un lenguaje de programación orientado a objetos, y tiene todos
los beneficios que ofrece esta metodología de programación..
3. Un browser compatible con Java deberá ejecutar cualquier programa hecho en Java, esto ahorra a los usuarios tener que estar insertando “plugins” y demás programas que a veces quitan tiempo y espacio en disco.
4. Java es un lenguaje y por lo tanto puede hacer todas las cosas que puede
hacer un lenguaje de programación: cálculos matemáticos, procesadores
de palabras, bases de datos, aplicaciones gráficas, animaciones, sonido,
hojas de cálculo, etc.
5. Si lo que interesa son las páginas Web, no tienen que ser estáticas, porque
se les pueden poner toda clase de elementos multimedia, permitiendo un
alto nivel de interactividad, sin tener que invertir tanto en paquetes de
multimedia.
2.1.4
Limitaciones con Java
1. Una de las más importantes es la velocidad. Los programas hechos en
Java no tienden a ser muy rápidos, pero se está trabajando para mejorar
esto. Como los programas de Java son interpretados nunca alcanzan la
velocidad de un verdadero ejecutable.
2. Java es un lenguaje de programación. Por tratarse de un lenguaje, debe
ser aprendido, lo que es una dificultad para los no programadores.
3. Java es relativamente nuevo. Todavía no se conocen bien todas sus
capacidades.
Pero en general, Java posee muchas ventajas y mucha fuerza. Con este
lenguaje se pueden hacer muchas cosas interesantes. Está de moda en cualquier
medio computacional, y se apuesta a futuro con Java.
2.1.5
Errores con Java
En Java no se pueden cometer algunos errores típicos, ya que:
— Java siempre chequea los índices al acceder a un arreglo.
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
41
— 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.
— 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 programar 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.
2.2
Existen Distintos Tipos de Java
Según donde se lo aplique se puede distinguir entre:
2.2.1
JavaScript
Es una versión de Java directamente interpretada, que se incluye como parte
de una página HTML, lo que lo hace muy fácil y cómodo para aplicaciones
muy pequeñas, pero en realidad tiene muchas limitaciones:
• No soporta clases ni herencia.
• No se precompila.
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
42
• No es obligatorio declarar las variables.
• Verifica las referencias en tiempo de ejecución.
• No tiene protección del código, ya que se baja en ASCII.
• No todos los browsers lo soportan completamente.
JavaScript es una forma de trasladar algunas tareas simples al lado del
cliente. Y tiene una sintaxis que es en general parecida a la de C, excepto que
no hay una función main. Lo que no está dentro de una función se ejecutará
mientras se cargue la página.
JavaScript recibe información a através de eventos y propiedades de objetos, y la entrega mediante propiedades de objetos y métodos.
2.2.2
Java Standalone
Son programas Java que se ejecutan directamente mediante el intérprete Java,
el siguiente capítulo estará dedicado a éstos.
2.2.3
Applets
Son programas Java que corren bajo el entorno de un browser (o del appletviewer, que es el visualizador de applets de Sun.)
En sí los applets y Java standalone son el mismo lenguaje, pero cambia un
poco la forma en que se implementa el objeto principal (la aplicación).
Así los “applets” de una web, son programas diseñados para ser ejecutados
en una página Web; pueden ejecutarse en cualquier máquina que se conecte
a ella independientemente de qué sistema operativo emplee (siempre que el
ordenador en cuestión tenga instalada una JVM (Máquina Virtual de Java)).
La definición más extendida de applet, indica que un applet es “una pequeña aplicación accesible en un servidor Internet, que se transporta por la
red, se instala automáticamente y se ejecuta en ese lugar como parte de un
documento web”. La definición establece el entorno (Internet, Web, etc.).
Un applet trata de ser una aplicación pretendidamente corta (no ocupar
más de un gigabyte) basadándose en un formato gráfico sin representación
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
43
independiente: es decir, es un elemento a embeber en otras aplicaciones (es
un componente en el sentido estricto).
Appletviewer: El Visor de Applets de Sun
El visualizador de applets (appletviewer) es una aplicación que permite ver
en funcionamiento applets, sin necesidad de la utilización de un navegador
World-Wide-Web como HotJava, Microsoft Internet Explorer o Netscape.
El hecho de que se integre estática (embebido en un ejecutable) o dinámicamente (intérpretes, DLL’s, etc.) no afecta en absoluto a la esencia del
comportamiento como componente.
Como no existe una base adecuada para soportar aplicaciones industriales Java en las que insertar miniaplicaciones; los applets se han construido
mayoritariamente, y con gran acierto comercial, como pequeñas aplicaciones
interactivas, con movimiento, luces y sonido... en Internet.
Llamadas a Applets con Appletviewer
Dado que un applet es una míni aplicación Java diseñada para ejecutarse en
un navegador Web, no necesita preocuparse por un método main() ni en dónde
se realizan las llamadas. Otra diferencia de Java con el lenguaje C. Es que
no hay función main, ya que los applets no lo necesitan. La función main
se encuentra “escondida” en el programa que cargó la página html. En los
applets no hay una función que sea llamada después de otra, sino que todo
gira en torno al tratamiento de los eventos que se produzcan. Es decir que
un applet está esperando por una serie de eventos, como la pulsación de una
tecla, el movimiento del ratón, o la pulsación de alguna de la teclas del ratón.
Y recibido el evento, responder con el método adecuado.El applet asume que
el código se está ejecutando desde dentro de un navegador.
El appletviewer se asemeja al míni navegador. Espera como argumento el
nombre del fichero HTML que debe cargar, no se le puede pasar directamente
un programa Java. Este fichero HTML debe contener una marca que especifica
el código que cargará el appletviewer.
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
2.3
44
Java en los Browsers de la World Wide Web
Los programas Java son otro recurso más, como pueden ser una página HTML
o un archivo gráfico. Al igual que estos últimos viajan desde el servidor a la
máquina cliente para ejecutarse en ésta. El lugar más frecuente donde se
encuentra el lenguaje Java, es en los exploradores o navegadores (browsers) de
Internet.
La WWW es la aplicación más popular en Internet, y causante de la
explosión de la red de redes. Basa su existencia en dos principales aplicaciones:
• Los servidores de Web.
Son programas dedicados e instalados en las máquinas nodos de la red, que
atienden a todos los pedidos de los clientes. Estos solicitan archivos, recursos
de la Web , en general, archivos HTML y gráficos. Los archivos HTML son
archivos de texto, que contienen una descripción de lo que se ve como página
en el browser. La sigla HTML significa Hypertext Markup Languaje (Lenguaje
de Marcación de Hipertexto), y es el lenguaje que describe las páginas Web.
• Los clientes.
En las páginas se colocan textos, gráficos y otros recursos. Es trabajo
del cliente, el browser, interpretar esa página, mostrándola en pantalla, y
reclamando todo lo que se necesite para armarla, como los gráficos y archivos
de sonido que la pueden acompañar.
En la figura 2.2 de la página 45 se muestra la arquitectura Cliente - Servidor.
2.3.1
Las Applets en la Web
Al crear algún applet, se exige una construcción, con la marca HTML ‹APPLET...›, que especifica un determinado lugar en una página Web, para que
el browser se posicione y ejecute una aplicación Java. Los archivos Java que
viajan son de un tipo; al tratarse de archivos con extensión .class, contienen
las instrucciones Java ya compiladas y no viajan en código fuente.
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
45
Figura 2.2: Arquitectura Cliente - Servidor.
Un applet se compone, como mínimo, de un archivo .class, pero puede
requerir más archivos .class (con más código para ejecutar), que el browser
recupera, o archivos gráficos, de sonido u otros, que el propio applet se encarga
de recuperar.
Un applet Java no existe por sí mismo (sino dentro de una página .html ),
por esto se lo debe invocar desde una página HTML que se haya creado.
Seguridad
Puede ser riesgoso, por la naturaleza de Internet, traer programas desde un
lugar lejano y no controlado a la computadora, para ejecutarlo.
Pero los applets Java son seguros ya que Sun y los constructores de browsers han implementado una polí tica de seguridad, que impide a un applet,
por ejemplo, leer o escribir en un disco, o interferir con otras aplicaciones en
ejecución.
Es tan grande la seguridad que, puede llegar a molestar a algunos programadores, que en un applet nunca se pueda grabar un archivo local, con datos
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
46
transitorios o de configuración.
Restricción de Seguridad de Java
No se pueden cargar archivos que estén en una máquina distinta a aquella
desde la cual se cargó el applet. El applet se ejecuta en el cliente, e intenta
acceder a un archivo local. Eso provoca una excepción (que, por supuesto,
puede detectarse con un catch y tratarse).
Por razones de seguridad, los applets son más limitados que las aplicaciones
Java locales. Las políticas de seguridad las manejan los browsers (no Java), y
generalmente los límites que se imponen a los applets son:
• Un applet no puede cargar bibliotecas (libraries) ni definir métodos nativos.
• No puede leer o escribir normalmente archivos en el cliente que lo carga
desde otro server.
• No puede establecer conexiones de red, salvo al servidor del que proviene.
• No puede arrancar programas en la máquina donde se está ejecutando.
• No puede leer algunas propiedades del sistema.
• En las ventanas de los applets se indica que se trata de un applet.
Pero también, pueden:
• Reproducir sonidos.
• Establecer conexiones con el servidor del que provienen.
• Llamar fácilmente páginas HTML desde el browser.
• Invocar métodos públicos de otros applets de la misma página.
• Seguir corriendo aunque se cambie de página en el browser.
• Si se cargan desde la máquina local no tienen ninguna de las restricciones
anteriores.
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
47
Figura 2.3: Bytecode y JVM.
En realidad, la especificación de Java permite que los applets lean archivos
en otras máquinas dando la URL completa; sin embargo, los browsers no lo
permiten.
2.3.2
Máquinas Virtuales
El lenguaje Java se compila, no para una plataforma o procesador en particular, sino produciendo código (que se denomina bytecodes), destinado a ser
interpretado por la llamada Máquina Virtual Java.
En la figura 2.3 de la página 47 se puede apreciar como trabaja.
Esta máquina no es única, sino que hay una por cada plataforma y, en
realidad, cada browser que implementa Java tiene la suya. Así, el Microsoft
Explorer usará una máquina propia en Windows, mientras que el Netscape
Navigator usará otra máquina, que variará de Windows a UNIX.
Todas tienen la misma funcionalidad (o deberían). Tanto el usuario como
los programadores no deberían preocuparse por las distintas implementaciones.
Sin embargo, hay quejas de los desarrolladores, originadas en las pequeñas
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
48
diferencias que se encuentran tanto entre una implementación y otra, como en
el aspecto de la interface gráfica.
Además de la máquina virtual, cada browser instala una serie de clases, listas para usar, que Java espera tener disponibles en cualquier plataforma. Esas
clases tienen una funcionalidad definida, que no debería sufrir modificaciones.
Netscape y Microsoft
La empresa Netscape, creadora del Netscape Navigator, soporta Java desde la
versión 2 del browser. Pero Microsoft no se quedó atrás y soporta Java desde
la versión 2.0 de su browser Internet Explorer.
Ambos browsers instalan y usan una máquina virtual propia Java. No hay
diferencias apreciables en las prestaciones de estos dos browsers, respecto de
Java.
Figura 2.4: Netscape Navigator - Internet Explorer.
Entre Netscape (en múltiples plataformas) y Microsoft (en plataformas
Windows) acaparan casi la totalidad del mercado de los browsers.
En general, los browsers, de cualquier origen, soportan Java en ambientes
que permiten la multitarea y los llamados múltiples hilos de ejecución (multithreading).
Para poder explotar al máximo el potencial de Java se requiere de un
sistema operativo multithreading (como Unix, Windows, OS/2), porque Java
es un lenguaje interpretado y al compilar un programa Java, lo que se genera
es un seudocódigo definido por Sun, para una máquina genérica.
Al ejecutar posteriormente sobre una máquina en particular, el software
de ejecución Java simplemente interpreta las instrucciones, emulando a dicha
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
49
Figura 2.5: JIT - Just In Time.
máquina genérica. Claro que esto no es muy eficiente, entonces Netscape como
Hotjava o Explorer, al ejecutar el código por primera vez, lo van compilando
(mediante un JIT: Just In Time Compiler ), así al crear el código ya está
compilado específicamente para la máquina huésped.
El lenguaje de esa máquina genérica es público, y si uno quisiera hacer un
intérprete Java para otro sistema operativo sólo tendría que implementarlo y
pedir a Sun la aprobación (que verifique que cumpla con los requisitos de Java
en interpretación de cada instrucción, seguridad y otros).
2.3.3
Java sin Browsers
No todo es Internet en Java. Este es un lenguaje de uso general, que sólo incidentalmente cobró popularidad en Internet. Se puede desarrollar aplicaciones
Java que se ejecuten en una máquina propia, sin necesidad de estar conectados
a la red, y sin el auxilio de browsers.
Mientras los programas Java para Internet y páginas HTML se llaman
“applets”, los que pueden ejecutarse fuera de la red se llaman genéricamente
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
50
“aplicaciones”.
2.3.4
HotJava
HotJava, es un navegador con soporte Java (Java-enabled), desarrollado en
Java.
Como cualquier navegador de Web, HotJava puede decodificar HTML estándar y URL’s estándares, aunque no soporta completamente el estándar
HTML 3.0.
La ventaja sobre el resto de navegadores, sin soporte Java, es que puede
ejecutar programas Java sobre la red.
La diferencia con Netscape es que tiene implementados completamente los
sistemas de seguridad que propone Java, esto significa que puede escribir y leer
en el disco local, aunque esto hace disminuir la seguridad, ya que se pueden
grabar en el disco programas que contengan código malicioso o introducir un
virus, por ejemplo. No obstante, el utilizar esta característica de HotJava es
decisión del usuario.
Figura 2.6: HotJava.
2.4
Java en Hebras - Threads
La traducción literal de thread es hilo o hebra. Los threads (a veces llamados,
procesos ligeros), son básicamente pequeños procesos o piezas independientes
de un gran proceso. Pero el concepto de threads en los ambientes y sistemas
operativos es relativamente complejo de explicar: independientemente del sis-
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
51
tema elegido, se puede pensar que un thread es algo así como el lugar de
ejecución de un programa.
Java es multithreading: esto significa que tiene capacidad de “diálogo”, y
permite ejecutar muchas actividades simultáneas en un programa, es decir,
threads en paralelo como si fuera una conversación múltiple y simultánea.
No hay que confundir multithreading con la capacidad de ejecutar varios
programas a la vez. Esta es una posibilidad, pero también un mismo programa puede utilizar varios threads (caminos de ejecución) simultáneamente
y depende fundamentalmente de la capacidad del sistema operativo para soportar multithreading. Por esto Java no puede ejecutarse (al menos en forma
completa) en sistemas que no lo soporten.
Como los threads son construídos con el lenguaje Java, son más fáciles de
usar y más robustos que sus semejantes en C o C++.
El uso de threads nos permite, por ejemplo, ejecutar simultáneamente
varios programas que interactúen entre ellos; o, también, que un programa,
mientras por ejemplo actualiza la pantalla, simultáneamente realice una serie
de cálculos sin tener que hacer esperar el usuario.
Una forma sencilla de verlo es imaginar que se tiene un grupo de microprocesadores que pueden ejecutar, cada uno, un solo thread; y se asignan
programas (o partes de programas) a cada uno de ellos.
Además, se puede imaginar que los microprocesadores comparten una memoria común y recursos comunes, de lo que surgirá una serie de problemas
importantes a tener en cuenta cuando se usan threads.
2.4.1
La Ventaja de ser Multi-Threaded
Consiste en un mejor rendimiento interactivo y mejor comportamiento en tiempo real. Aunque el comportamiento en tiempo real está limitado a las capacidades del sistema operativo que lo soporte como Unix, Windows u otros, aún
así supera tanto en facilidad de desarrollo como en rendimiento, a los entornos de flujo único de programa (single-threaded), que todavía se utilizan en la
mayoría de los programas; es decir un programa comienza y su ejecución sigue
un camino único: es un solo thread, como si fuera un “monólogo”.
Los pasos básicos a seguir para usar threads en un programa son tres:
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
52
Figura 2.7: Clase Thread.
• La clase que se quiere asignar a un thread debe implementar la interface
Runnable.
• Se debe crear una variable (instancia) del tipo Thread, que permita acceder y manejar el thread.
• Y crear un método run() que es el que ejecuta el código del programa
propiamente dicho.
Al utilizar la tecnología de navegación concurrente, se sabe lo frustrante
que puede ser esperar que se traiga una gran imagen. En Java, las imágenes
se pueden traer en un thread independiente, permitiendo que el usuario pueda
acceder a la información en la página sin tener que esperar por el navegador.
2.5
Java Para Aplicaciones Corporativas
Java e Intranet actualmente son palabras de moda. Y Java particularmente
es una buena tecnología para desarrollar aplicaciones corporativas, ya que
en donde la red sea algo crítico, Java facilita tremendamente la vida de la
programación corporativa.
Las más grandes compañías se han convencido de que la Red corporativa
es la Empresa. Ya que la Red es un canal importante por donde fluye la
información que mantiene vivo el negocio. La información fluye desde el gran
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
53
servidor de las oficinas centrales, hasta los servidores de las delegaciones, las
estaciones de trabajo de los programadores y las PC’s.
Si esta red no se mantiene, los pedidos no llegan, el inventario no se actualiza, el software no se desarrolla adecuadamente, los clientes no están satisfechos
y, fundamentalmente, el dinero no entra.
La necesidad de diagnosticar y reducir los problemas que puedan surgir en
la red, hace que se esté incorporando continuamente nuevas metodologías que
subsanen este grave problema.
Java es el lenguaje apto para Internet; pero, para las aplicaciones corporativas, allí donde la red es el punto crítico, sería una buena tecnología, si
se compararan las capacidades de Java con la lista de necesidades de la red
corporativa.
Aplicaciones Efectivas o Eficientes
Las aplicaciones que se crean en grandes empresas deben ser más efectivas
que eficientes; es decir, conseguir que el programa funcione y el trabajo salga
adelante es más importante que el hacerlo eficientemente. Esto es una realidad
de la programación corporativa.
Java al ser un lenguaje más simple que cualquiera de los que ahora están
de moda para los programadores, permite concentrarse en la mecánica de la
aplicación, en vez de pasarse horas y horas incorporando API’s “Interface de
Programación de Aplicaciones” para el control de las ventanas, controlando
minuciosamente la memoria, sincronizando los ficheros de cabecera y corrigiendo los mensajes del linker.
Java tiene su propio toolkit para interfaces, maneja por sí mismo la memoria que utilice la aplicación, no permite ficheros de cabecera separados (en
aplicaciones puramente Java) y solamente usa enlace dinámico.
Muchas de las implementaciones de Java actuales son puros intérpretes.
Los bytecodes son interpretados por el sistema run-time de Java, la Máquina
Virtual Java (JVM ), sobre el ordenador del usuario.
Hay proveedores que ofrecen compiladores nativos Just-In-Time (JIT ).
Si la Máquina Virtual Java dispone de un compilador instalado, las secciones
(clases) del bytecode de la aplicación se compilarán hacia la arquitectura nativa
CAPÍTULO 2. CONCEPTOS BÁSICOS DE JAVA
54
Figura 2.8: Java para aplicaciones corporativas.
del ordenador del usuario.
Los programas Java competirán con el rendimiento de programas en C++.
Los compiladores JIT no se utilizan en la forma tradicional de un compilador;
los programadores no compilan y distribuyen binarios Java a los usuarios.
La compilación JIT tiene lugar a partir del bytecode Java, en el sistema del
usuario, como una parte (opcional) del entorno run-time local de Java.
Java permite algunas técnicas innovadoras de optimización. Como se mensionó anteriormente, Java es inherentemente multithreaded, a la vez que ofrece
posibilidades de multithread como la clase Thread y mecanismos muy sencillos
de usar de sincronización; Java en sí utiliza threads.
Los desarrolladores de compiladores inteligentes pueden utilizar esta característica de Java para lanzar un thread que compruebe la forma en que se está
utilizando la aplicación. Más específicamente, este thread podría detectar qué
métodos de una clase se están usando con más frecuencia e invocar a sucesivos
niveles de optimización en tiempo de ejecución de la aplicación. Cuanto más
tiempo esté corriendo la aplicación o el applet, los métodos estarán cada vez
más optimizados.
Si un compilador JIT está embebido en el entorno run-time de Java, el
programador no se preocupa de hacer que la aplicación se ejecute óptimamente.
Mantenimiento y Soporte
Uno de los problemas más conocidos que ocurre con el software corporativo
es la demanda de mantenimiento y realimentación. Java no es, ciertamente,
la solución para el problema del mantenimiento, pero es un lenguaje que posée varias características que harán la vida más fácil a los desarrolladores y
mantenedores de aplicaciones.
Capítulo 3
El Lenguaje Java
3.1
Introducción a su Codificación
Java por ser un lenguaje orientado a objetos, posee ciertas características que
hoy día se consideran estándares en los lenguajes OO, para esto se utilizarán
los siguientes conceptos:
• Objetos.
• Clases.
• Métodos.
• Subclases.
• Herencia simple.
• Enlace dinámico.
• Encapsulamiento.
56
CAPÍTULO 3. EL LENGUAJE JAVA
57
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
[25, Castillo-Cobo-Solares].
La ventaja de programar en un lenguaje OO, requiere de una experiencia
que probablemente una persona nunca tendrá el tiempo de práctica para llegar a obtenerla. Entonces 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 porque no programar con otro lenguaje más simples, como puede
ser Visual Basic, si no se necesita que sea OO. Pero la gran ventaja de un
lenguaje OO, son las bibliotecas de clases que se pueden construir para la
aplicación [22, 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:
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:
CAPÍTULO 3. EL LENGUAJE JAVA
58
— 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. La 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: Es el encargado de programar la clases especificadas por el diseñador de clases. La 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, sólamente utiliza 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 [3, Joyanes Aguilar].
3.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.
• 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.
CAPÍTULO 3. EL LENGUAJE JAVA
3.2
59
Estructura General de un Programa Java
La estructura habitual de un programa realizado en cualquier lenguaje orientado a objetos u OOP (Object Oriented Programming) tiene muchas particularidades, principalmente en el lenguaje Java.
En el siguiente ejemplo de código se presenta la estructura general de un
programa en 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 Simula 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 [ ]){
Simula menus = new Simula();
menus.setTitle(“Simulación de Redes”);
menus.setVisible(true);
}
}
Aparece una clase que contiene el programa principal Simula (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
CAPÍTULO 3. EL LENGUAJE JAVA
60
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.
3.3
Conceptos Básicos
3.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 esos 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 [3,
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 [8, Bosz].
Ejemplo:
public abstract class FuncionActivacion implements Cloneable,Serializable{
/*constructor sin argumentos que permite la herencia */
public FuncionActivacion () {
}
}
3.3.2
Herencia
La herencia permite que se puedan definir nuevas clases basadas en clases
existentes, lo cual facilita reutilizar código previamente desarrollado. Si una
CAPÍTULO 3. EL LENGUAJE JAVA
61
Figura 3.1: Herencia en Java.
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.
3.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ónAc-
CAPÍTULO 3. EL LENGUAJE JAVA
62
tivació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 () {
}
}
3.3.4
Package
Un package es una agrupación de clases. Existen una serie de packages incluidos en el lenguaje.
Además el programador puede crear sus propios packages. Todas las clases
que formen parte de un package deben estar en el mismo directorio.
Los packages se utilizan con las siguientes finalidades:
1. Para agrupar clases relacionadas.
2. Para evitar conflictos de nombres. En caso de conflicto de nombres
entre clases importadas, el compilador obliga a cualificar en el código los
nombres de dichas clases con el nombre del package.
3. Para ayudar en el control de la accesibilidad de clases y miembros.
Por estas razones, durante la etapa de Diseño del Software ha desarrollar,
se tiene que crear tantos paquetes como sea necesario, como en el siguiente
ejemplo donde se utiliza la sentencia package.
package myprojects.simula;
import myprojects.calculos.*;
import myprojects.interfase.*;
CAPÍTULO 3. EL LENGUAJE JAVA
63
Figura 3.2: Típicos packages predefinidos.
3.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. 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
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).
CAPÍTULO 3. EL LENGUAJE JAVA
64
Figura 3.3: API de Java.
3.3.6
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.
CAPÍTULO 3. EL LENGUAJE JAVA
65
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.
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 3.1 de la pág. 65 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 3.1: Tipos de Variables.
En la Tabla 3.2 de la pág. 65 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 3.2: Categorías de Variables.
En la Tabla 3.3de la pág. 66 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
CAPÍTULO 3. EL 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
66
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 3.3: Tipos Primitivos de Variables.
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.
3.3.7
Visibilidad y Vida de las Variables
Se entiende por visibilidad o ámbito de una variable a 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
CAPÍTULO 3. EL LENGUAJE JAVA
67
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 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.
3.4
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.
3.4.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 (% ).
CAPÍTULO 3. EL LENGUAJE JAVA
3.4.2
68
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;
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 3.4 de la pág. 68, 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 3.4: Operadores de asignación.
3.4.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.
3.4.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:
CAPÍTULO 3. EL LENGUAJE JAVA
69
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.
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á indiferente. La actualización de
contadores en bucles for es una de las aplicaciones más frecuentes de estos
operadores.
3.4.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 3.5 de la pág. 69 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 3.5: Operadores relacionales.
Estos operadores se utilizan con mucha frecuencia en las bifurcaciones y
en los bucles, que se verán luego.
CAPÍTULO 3. EL LENGUAJE JAVA
70
Ejemplo de Operadores Incrementales y Operadores Relacionales en un
método.
public void cambiarParesEntrenamiento(double[ ] paresEntrenamiento){
/* 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];
}
}
}
3.4.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”);
CAPÍTULO 3. EL LENGUAJE JAVA
71
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.
3.4.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 3.6 de
la pág. 71 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 3.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.
CAPÍTULO 3. EL LENGUAJE JAVA
3.5
72
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 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.
3.5.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;
3.5.2
Comentarios
Existen varias formas diferentes de introducir comentarios entre el código de
Java. Son similares a la forma de realizar comentarios en el lenguaje C/C++.
Los comentarios son ú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.
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. Otra 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:
CAPÍTULO 3. EL LENGUAJE JAVA
73
// Esta línea es un comentario
int a=1; // Comentario a la derecha de una sentencia
// 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
/* Otra 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 otra 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.
Comentarios Iniciales
Todos los ficheros fuente deben comenzar con un comentario al estilo C que
indique el programador, o programadores, la fecha, una nota de copyright y
una pequeña descripción del propósito del programa. Por ejemplo:
/*
* Nombre de la clase
* Versión
* Copyright
*/
3.5.3
Sentencia import
La palabra import indica que son declaraciones que le avisan al compilador
que el programa usará.
En el caso de java.applet.* todas las clases que pertenecen al paquete
(packages) applet (por eso el applet.* .
CAPÍTULO 3. EL LENGUAJE JAVA
74
El que produce que se usen todas las clases es el “*”. En el caso de java.awt.
Graphics indica que se usará el objeto Graphics del paquete awt.
Por ejemplo:
import java.applet.*;
import java.awt.Graphics;
3.5.4
Longitud de Líneas
Se deben evitar líneas de más de 80 caracteres, porque sino no son manejadas
correctamente por muchos terminales y herramientas.
Los ejemplos de uso en la documentación deben ir en líneas más cortas,
generalmente de no más de 70 caracteres.
3.5.5
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. Existen dos variantes del 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 */
}
CAPÍTULO 3. EL LENGUAJE JAVA
75
Las llaves {} sirven para agrupar en un bloque las sentencias que se han
de ejecutar, y no son necesarias si sólo hay una sentencia dentro del if.
Bifurcación if else
Análoga a la anterior, de la cual es una ampliación. Las sentencias incluidas
en el else se ejecutan en el caso de no cumplirse la expresión de comparación
(false),
Ejemplo:
public double decirSalidaActual(int indiceEtapa) {
if(pila != null)
{return pila[indiceEtapa];}
else
{System.out.println(“Fallo: Pila no creada”);
return 0;
}
}
3.5.6
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.
CAPÍTULO 3. EL LENGUAJE JAVA
76
for (int j=0; j < numeroCapas; j++)
{int fin = principio;
try {
while (capas.charAt(fin) != ‘,’ && capas.charAt(fin) != -1)
{fin++;
}
}
}
Bucle for
A continuación se podrá apreciar la utilización del bucle for:
/* calcular el nuevo vector de diseño */
for (int i = 0; i < vectorDis.length; i++)
{vectorDis[i] = vectorDis[i] + learningRate * S[i];
}
La sentencia int i = 0 (inicialización) se ejecuta al comienzo del for, e
i++ (incremento) después de vectorDis[i] = vectorDis[i] + learningRate * S[i]
(sentencia). La expresión booleana (vectorDis.length) se evalúa al comienzo
de cada iteración; el bucle termina cuando la expresión de comparación toma
el valor false.
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.
CAPÍTULO 3. EL LENGUAJE JAVA
77
do{
/* calcular el gradiente del vector fijar el vector de diseño */
problema.fijoVector(vectorDis);
/* incrementar el contador de iteraciones*/
step++;
} while (error > errorDeseado && step < iteracionesMaximas);
/* ... hasta que el error sea menor o igual que el deseado o */
/* se alcance el número de iteraciones pasado como argumento */
problema.fijoVector(vectorDis);
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.A
continuación se muestra como sale de un método:
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.
CAPÍTULO 3. EL LENGUAJE JAVA
78
Exception
En el lenguaje Java, una Exception es un cierto tipo de error o una condición anormal que se ha producido durante la ejecución de un programa.
Algunas excepciones son fatales y provocan que se deba finalizar la ejecución
del programa. En este caso conviene terminar ordenadamente y dar un mensaje explicando el tipo de error que se ha producido. Otras excepciones, como
por ejemplo no encontrar un fichero en el que hay que leer o escribir algo,
pueden ser recuperables. En este caso el programa debe dar al usuario la
oportunidad de corregir el error (dando por ejemplo un nuevo path del fichero
no encontrado).
Los errores se representan mediante clases derivadas de la clase Throwable, pero los que tiene que chequear un programador derivan de Exception
(java.lang.Exception que a su vez deriva de Throwable). Existen algunos tipos
de excepciones que Java obliga a tener en cuenta. Esto se hace mediante el
uso de bloques try, catch y finally.
El código dentro del bloque try está “vigilado”: Si se produce una situación
anormal y se lanza como consecuencia una excepción, el control pasa al bloque
catch que se hace cargo de la situación y decide lo que hay que hacer. Se
pueden incluir tantos bloques catch como se desee, cada uno de los cuales
tratará un tipo de excepción. Finalmente, si está presente, se ejecuta el bloque
finally, que es opcional, pero que en caso de existir se ejecuta siempre, sea
cual sea el tipo de error.
En el caso en que el código de un método pueda generar una Exception
y no se desee incluir en dicho método la gestión del error (es decir los bucles
try/catch correspondientes), es necesario que el método pase la Exception al
método desde el que ha sido llamado. Esto se consigue mediante la adición de
la palabra throws seguida del nombre de la Exception concreta, después de
la lista de argumentos del método. A su vez el método superior deberá incluir
los bloques try/catch o volver a pasar la Exception. De esta forma se puede ir
pasando la Exception de un método a otro hasta llegar al último método del
programa, el método main().
CAPÍTULO 3. EL LENGUAJE JAVA
3.6
79
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. 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.
3.6.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.
CAPÍTULO 3. EL LENGUAJE JAVA
80
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.
3.6.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.
CAPÍTULO 3. EL LENGUAJE JAVA
81
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.
• 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).
3.7
3.7.1
Clases de Mayor 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.
CAPÍTULO 3. EL LENGUAJE JAVA
82
Algunas de las 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.
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;
CAPÍTULO 3. EL LENGUAJE JAVA
83
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;
3.7.2
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.
CAPÍTULO 3. EL LENGUAJE JAVA
84
• 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.
3.7.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.
3.7.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.
CAPÍTULO 3. EL LENGUAJE JAVA
85
• 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.
3.8
3.8.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
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.
3.8.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 : 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: Son 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
AWT Event. Este evento es transmitido a un determinado método para que
CAPÍTULO 3. EL LENGUAJE JAVA
86
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 es un poco más complicado, ya que el componente u objeto
que recibe el evento debe “registrar” o indicar previamente el objeto que se va
a hacer cargo de gestionar ese evento.
3.8.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
cuando se produzca el evento. La forma de garantizar que los event listeners
disponen de los métodos apropiados para gestionar los eventos es obligarlos 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.
3.8.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 del usuario,
como 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
CAPÍTULO 3. EL LENGUAJE JAVA
87
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.
3.9
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.
3.9.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
CAPÍTULO 3. EL LENGUAJE JAVA
88
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
{
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();
}
}
CAPÍTULO 3. EL LENGUAJE JAVA
89
}
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.
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.
3.9.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.
CAPÍTULO 3. EL LENGUAJE JAVA
3.9.3
90
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
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;
CAPÍTULO 3. EL LENGUAJE JAVA
if( valor == null && path.length == 0 ) {
valor = new File( path[i++] );
}
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” ) );
91
CAPÍTULO 3. EL LENGUAJE JAVA
92
}
// Utilizando la propiedad del sistema “user.home”
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 );
}
}
3.9.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().
CAPÍTULO 3. EL LENGUAJE JAVA
93
Figura 3.4: JDBC en Java.
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.
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.
CAPÍTULO 3. EL LENGUAJE JAVA
3.9.5
94
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.
3.9.6
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.
3.9.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 4
Los Servlets
4.1
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
96
CAPÍTULO 4. LOS SERVLETS
97
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. [19, 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.
4.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.*;
import javax.servlet.http.*;
import java.util.*;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
CAPÍTULO 4. LOS SERVLETS
4.1.2
98
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 4.1 de la página 99 se puede apreciar gráficamente el Ciclo de
Vida de un Servlet.
4.1.3
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
CAPÍTULO 4. LOS SERVLETS
Figura 4.1: Ciclo de vida de un servlet.
99
CAPÍTULO 4. LOS SERVLETS
100
puede inhabilitar una aplicación y el servlet para el servicio. En tales casos,
la aplicación y el servlet permanecen inhabilitados hasta que el administrador
los habilite.
4.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.
4.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
servlet excediendo el timeout. La Máquina Virtual de Java realiza recolección
de basura después del destroy.
4.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
CAPÍTULO 4. LOS SERVLETS
101
Figura 4.2: Requerimiento de un archivo JSP.
4.2 de la página 101.
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 4.3 de la página 102.
Este modelo de acceso facilita la generación de contenido separado del
despliegue de contenido.
El servidor de aplicaciones proporciona un juego de métodos en el objeto
HttpServiceRequest object y el objeto HttpServiceResponse. Estos métodos
permiten una invocación de servlet para colocar un objeto (normalmente un
bean) en un objeto demanda y pasa ese requerimiento a otra página (normalmente un archivo JSP) para el despliegue. La página invocada recupera el
beans del objeto demanda y genera el HTML que recibe el cliente.
4.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
CAPÍTULO 4. LOS SERVLETS
102
Figura 4.3: Requerimiento de un servlet.
(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.
• 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
CAPÍTULO 4. LOS SERVLETS
103
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.
4.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.
4.1.9
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
CAPÍTULO 4. LOS SERVLETS
104
variedad de sistemas. El software J2SE consiste en los Java SDK Standard
Edition y el Java Runtime Environment (JRE) Standard Edition.
4.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.
4.1.11
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.
CAPÍTULO 4. LOS SERVLETS
105
• Un contexto del servlet para la aplicación.
4.1.12
Patrones y Guías de Servlets/JSP
A continuación se proporcionan las pautas específicas sobre cómo organizar
una aplicación que usa servlets y JSP’s.
• 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.
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.
CAPÍTULO 4. LOS SERVLETS
106
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.
— 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.
CAPÍTULO 4. LOS SERVLETS
107
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.
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 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 [12, IBM] [16]
[15] [17] [14] [13].
109
CAPÍTULO 5. INTRODUCCIÓN A DB2
110
• 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:
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.111 se
grafica el almacenamiento de documentos XML mediante DB2.
• Facilidad de instalación y uso:
CAPÍTULO 5. INTRODUCCIÓN A DB2
111
Figura 5.1: Almacenamiento de documentos XML en DB2.
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.
• Universalidad:
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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
112
Figura 5.2: Esquema conceptual de los almacenes de datos.
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. 112 se refleja el Esquema Conceptual de Almacenes de Datos en DB2.
• Data Mining.
CAPÍTULO 5. INTRODUCCIÓN A DB2
113
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,
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.
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.
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
CAPÍTULO 5. INTRODUCCIÓN A DB2
114
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
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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
5.3
115
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
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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
116
• 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.
• 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
CAPÍTULO 5. INTRODUCCIÓN A DB2
117
Figura 5.3: Paralelismo mejor adaptable a cada entorno de hardware.
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.3 de la pág. 117 resume los tipos de paralelismo que mejor
se adaptan a los diferentes entornos de hardware.
CAPÍTULO 5. INTRODUCCIÓN A DB2
5.4.1
118
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.
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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
119
— 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
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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
120
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
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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
5.5
121
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
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
CAPÍTULO 5. INTRODUCCIÓN A DB2
122
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:
— 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
CAPÍTULO 5. INTRODUCCIÓN A DB2
123
— 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.
5.6.1
Á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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
124
• Instalar.
• Salir.
DB2 Launchpad le proporciona acceso a la información necesaria del CDROM antes de iniciar una instalación de DB2.
5.6.2
Á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.6.3
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)
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.6.4
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
CAPÍTULO 5. INTRODUCCIÓN A DB2
125
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.6.5
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.6.6
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
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
CAPÍTULO 5. INTRODUCCIÓN A DB2
126
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.
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
CAPÍTULO 5. INTRODUCCIÓN A DB2
127
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.
• 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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
128
Figura 5.4: Almacenamiento de datos espaciales.
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.4 de la pág. 128 el Almacenamiento de Datos Espaciales en
DB2.
• DB2 Universal Database Text Information Extender
DB2 Universal Database Text Information Extender proporciona una nue-
CAPÍTULO 5. INTRODUCCIÓN A DB2
129
va 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.
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
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
CAPÍTULO 5. INTRODUCCIÓN A DB2
130
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.7
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.7.1
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 figura 5.5 de la página
CAPÍTULO 5. INTRODUCCIÓN A DB2
131
Figura 5.5: Centro de Desarrollo.
131. 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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
5.7.2
132
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.7.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
(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.7.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.7.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,
CAPÍTULO 5. INTRODUCCIÓN A DB2
133
Figura 5.6: DB2 Warehouse Manager.
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 figura 5.6 de la página 133 se puede observar un esquema del funcionamiento de DB2 Warehouse Manager.
5.7.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:
• Tablas, archivos y vistas de origen.
CAPÍTULO 5. INTRODUCCIÓN A DB2
134
• 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.7.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.7.8
DB2 Spatial Extender (cont.)
Ahora, Spatial Extender ha mejorado su rendimiento y funciones:
CAPÍTULO 5. INTRODUCCIÓN A DB2
135
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.7.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.
5.7.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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
5.7.11
136
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.7 de la página 137 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.7.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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
137
Figura 5.7: Centro de Duplicación de DB2 versión 8.0.
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.
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.7.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.
CAPÍTULO 5. INTRODUCCIÓN A DB2
138
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.7.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
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.8
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
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 para el E-learning
6.1
¿Que es WebSphere?
• WebSphere es una plataforma de Software para e-business.
• IBM WebSphere es una plataforma de IBM para desarrollo y gestión de
sitios web y aplicaciones destinadas al comercio electrónico.
• WebSphere posee una amplia gama de servidores y aplicaciones para
proporcionar todo tipo de capacidades de negocio y ayuda al desarrollo
de las aplicaciones.
140
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
141
Figura 6.1: Plataforma de WebSphere.
• La Plataforma de Software WebSphere está compuesta por un conjunto
de herramientas de e-business integradas y basadas en estándares abiertos de mercado.
• WebSphere es ideal para todas las fases de un e-business, comenzando
desde pequeños sitios Web a mega sitios.
La figura 6.1 de la pág. 141 representa la plataforma virtual de WebSphere.
6.2
Aumentando el Desempeño del e-learning
Distribuye carga de trabajo entre los servidores sin interrupción del servicio a
los visitantes del sitio de la Web.
Provee servicios a cliente de calidad superior y mejor desempeño del sitio
Web.
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
142
El extraordinario crecimiento de la web ha hecho que una infraestructura
fiable, disponible y escalable sea más necesaria que nunca. Una interrupción,
aunque sea breve, o reducción de servicio puede causar que los clientes web,
cada vez más sofisticados y exigentes, se dirijan inmediatamente a la competencia.
Cuando clientes frustrados pueden abandonar un sitio web con un click,
las nociones tradicionales sobre lealtad de clientes se ven severamente desafiadas. Por eso, los propietarios de contenido necesitan una infraestructura en la
web que sea capaz de proporcionar excelentes tiempos de respuesta de forma
consistente, tratar flash crowds (multitud de visitas rápidas) y reconocer los
clientes leales con tratamiento preferente.
La plataforma de software WebSphere proporciona una completa gama de
habilidades que permiten a los clientes la entrega de altos niveles de servicio a
todos los visitantes del sitio en la web. Administra cargas pico en los servidores
web, mantiene la disponibilidad del sitio en la web, y reconoce contenido
de solicitudes de la web para calidad-de-servicio mejor. También permite la
diferenciación de niveles de servicio con base en el tipo de cliente.
6.2.1
Bases y Herramientas para Construir, Diseminar y Hacer Crecer su e-business
El e-business es parte integral del éxito del negocio principal de hoy. Actualmente las empresas necesitan respuesta de base de alta calidad para rápidamente construir e implementar aplicaciones para e-business on demand de alto
desempeño.
El ambiente de TI del e-business debe ser construido sobre una sólida Base
y con Herramientas que sean integradas y que tengan desempeño confiable.
Los tiempos de detención del sistema y los problemas de desempeño crean un
riesgo real para el negocio. Este riesgo se multiplica debido a la diversidad de
los ambientes de TI.
Corporaciones de mayor porte pueden tener amplia diversidad dentro de
su propia empresa. Corporaciones de menor porte encontrarán diversidad al
dividirse más allá de las fronteras de su empresa hacia el resto de su cadena
de valor. El software IBM WebSphere ayuda a reducir este riesgo del negocio.
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
6.3
143
El WebSphere para la Integración en el e-business
on demand
En el núcleo del e-business on demand se encuentra la integración de negocios,
que comprende lo siguiente:
• Transformarse en un negocio on demand requiere construir una infraestructura dinámica basada en procesos de negocio críticos estrechamente
integrados y racionalizados.
• Procesos eficientemente conectados en toda la compañía y con las de
socios comerciales claves, proveedores y clientes.
• Procesos de negocio integrados que proporcionan flexibilidad, la capacidad de responder inmediatamente a casi todas las demandas de clientes,
oportunidad de mercado o amenaza externa.
Para obtener esta flexibilidad, la clave es una estrategia de integración bien
planificada, basada en una plataforma robusta. Una plataforma para:
• Automatizar y administrar procesos de la cadena de valor.
• Cortar drásticamente tiempos de ciclo y costos.
• Dar más velocidad al time-to-market.
• Aumentar la agilidad del negocio frente a las presiones competitivas.
Las compañías que evolucionan hacia el e-business on demand hacen del
WebSphere Business Integration el principio básico de su estrategia de integración. WebSphere proporciona una sólida base de integración con las capacidades completas de e-business que se necesitan en una era on demand.
Estas cinco capacidades incluyen:
• Modelar : Diseñar, simular y planificar procesos de negocio.
• Integrar : Vincular personas, procesos, aplicaciones, sistemas y datos.
• Conectar : Expandir procesos a sus clientes y socios.
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
144
• Monitorear: Controlar y rastrear procesos de negocio.
• Administrar: Revisar, analizar y mejorar procesos y desempeño.
6.4
Plataforma de Software
La complejidad creciente de los aplicativos de e-business crea muchos desafíos.
Es necesario conseguir que los aplicativos le permitan comercializar rápidamente, con contenido relevante y personalizado [24].
Los aplicativos deben ser escalables, fiables y se deben integrar completamente con los sistemas back-end para proteger las inversiones existentes. El
equipo debe poseer las más actualizadas habilidades de programación para
acompañar el ciclo de vida del e-business.
Se necesita una plataforma completa, escalable y flexible que proporcione
soporte a la construcción y diseminación de aplicativos de e-business. Las
soluciones de software WebSphere ofrecen las herramientas necesarias para
alcanzar los objetivos de e-business.
Al proporcionar un banco de trabajo abierto que integre y simplifique
diferentes tareas, roles y herramientas, el software WebSphere ayuda a que el
equipo desarrolle, entregue y administre los aplicativos de e-business [19].
El ambiente de desarrollo del software WebSphere:
• Da soporte al desarrollo y cambios rápidos de nuevos aplicativos utilizando un paradigma de desarrollo basado en reglas, permitiendo que
todos utilicen el mismo ambiente y reduciendo costes de entrenamiento.
• Proporciona código pre-construido, pre-testeado.
• Proporciona herramientas especializadas para página Web y desarrollo
de módulos migrables.
Adicionalmente, servicios basados en estándares Web permiten mezclar y
combinar componentes funcionales de diferentes orígenes de tal forma que se
puede proveer nuevos procesos y servicios al mercado rápida y eficientemente.
La capacidad de un portal de negocios tiene importancia crítica para permitir que las personas interactúen y transaccionen de forma personalizada con
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
145
diversos recursos de negocios. Empieza dejando a la medida los ambientes
de usuarios para sus necesidades específicas, integrándolo entonces con otros
usuarios para permitir colaboración en tiempo real, y con los diversos ambientes de TI.
Todo esto permite que las personas trabajen en conjunto de forma más
productiva mientras actúan sobre la información que necesitan. La capacidad
del portal de negocios es proporcionada por la familia WebSphere Portal y la
familia WebSphere Commerce es un conjunto de soluciones eficaces del lado de
ventas para tratar los desafíos encontrados en ambientes de clientes y socios
comerciales [10].
Al expandir el ambiente de usuario para permitir que las personas accedan
a la información y actúen en cualquier lugar, en cualquier momento, usando
su elección de dispositivos y mecanismos de interacción significa acceso on
demand y las familias WebSphere Everyplace y WebSphere Voice, son software
para expandir aplicaciones de e-business a dispositivos móviles, permitiendo
interacción de voz natural con aplicaciones y datos.
6.4.1
WebSphere for Commerce - Soluciones B2B
Hoy, el e-commerce consiste en realizar negocios con sus clientes, proveedores
y contratistas comerciales sin encontrar dificultades de tiempo, limitaciones
organizacionales o fronteras geográficas.
Con el software With WebSphere Commerce, se establecen relaciones más
estrechas, más productivas con sus clientes y contratistas comerciales en todos
los puntos de contacto. Impulsa los procesos existentes reduzciendo sus costes.
Facilita que sus clientes y contratistas comerciales hagan negocios hoy y que
continúen mañana.
Con el IBM WebSphere Commerce Business Edition, se puede optimizar
procesos de negocio a través de la automatización e integración con sus aplicativos para los negocios principales, consigue el mayor impacto por el menor
coste y el ROI más rápido, fortalece las relaciones de negocios con clientes y
contratistas, y disemina un e-business verdaderamente global.
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
6.4.2
146
WebSphere for Commerce - Soluciones B2C
El software WebSphere Commerce le permite ir a la línea de las ventas online
a los consumidores.
Crea campañas de marketing dinámicas, fija como objetivo diferentes segmentos de mercado, elabora promociones de producto personalizadas, y mejora el servicio a clientes. Esta solución ayuda a crear rápidamente y mantener
eficientemente un sitio interactivo, de alto volumen. Un sitio que atraiga consumidores y los haga volver, obteniendo rápido retorno de inversión.
La solución WebSphere Commerce proporciona:
• Personalización sofisticada del B2B para ayudar a administrar las relaciones de negocio.
• Tecnología de ventas asistidas para conducir a los clientes y contratistas
a través de la agrupación de requisitos y del proceso de selección del
producto.
• Herramientas de cooperación online y de formación de equipo virtual
para mejorar la eficacia de contratistas comerciales, canal y clientes.
• Administración integrada de contrato para soportar contratos complejos
y políticas de negocio.
• Administración de pedidos anticipado resultando en capacidades de optimización de operaciones.
• Capacidades multi-culturales para llegar a clientes globales.
• Capacidades avanzadas de inteligencia de negocios para decisiones fundamentas del e-business.
6.4.3
WebSphere for Commerce-Soluciones de Portal
La integración del WebSphere Commerce y WebSphere Portal permite que las
empresas se dirijan a múltiples sectores con necesidades de personalización positivas de soluciones de comercio tanto para las áreas B2B o B2C. Actualmente,
muchas empresas crean sitios separados para cada división, lo que demanda
mucho tiempo y cuesta caro.
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
147
El abordaje racionalizado proporciona rápido retorno de inversión al eliminar la necesidad de que la empresa mantenga múltiples sitios. Las empresas
también aumentan la eficiencia de interacciones con clientes y contratistas, lo
que mejora la retención del cliente.
Los productos IBM WebSphere Commerce y WebSphere Portal proporcionan un único punto de interacción con información dinámica y personalizada,
aplicativos, procesos y personas, que son esenciales para construir portales
exitosos para el B2B y B2C.
Con el portal habilitado para el comercio, se puede crear un ambiente
personalizado de comercio provechoso para ambos ambientes, B2B y B2C:
• Ambientes B2B: Organizar eficientemente información online, servicios y aplicativos para contratistas de negocio y proveedores a lo largo
de múltiples divisiones en un portal.
• Ambientes B2C o de ventas al por menor: Obtener ventas cruzadas e impulsar los beneficios, mediante la oferta de acceso a productos,
información y servicios desde la Web y de dispositivos inalámbricos, así
como acceso consolidado a catálogos múltiples.
Con un portal de e-commerce integrado, se les puede ofrecer a los clientes,
contratistas y proveedores acceso 24 x 7 a los aplicativos online - rápida y
fácilmente.
6.4.4
WebSphere for Commerce-Soluciones Digital Media
Empresas de medios con volúmenes crecientes de activos digitales -fotos, vídeo
clips, archivos en audio, ilustraciones e imágenes animadas- enfrentan nuevas
exigencias reguladoras y el desafío de colocar esos activos disponibles online.
El software IBM WebSphere permite administrar estos activos digitales más
eficazmente, alcanzando clientes en todos el mundo a través de la Web.
IBM WebSphere Commerce para Medios Digitales permite almacenar, buscar, ver, administrar, colaborar, comprar, vender y hacer download de activos
digitales, alcanzando clientes en todo el mundo por la Web. Esta nueva oferta
de servicio de e-commerce combina el software WebSphere Commerce aprobado por la industria con las capacidades del IBM Content Manager, reforzado
por la tecnología Java.
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
148
WebSphere Commerce para Medios Digitales permite enriquecer la experiencia del consumidor y la interfase de compra B2B, creando nuevas relaciones
con clientes al mismo tiempo en que fortalece las existentes y ayudando a generar y aumentar ganancias así como sus márgenes de beneficios.
WebSphere ofrece un amplio portafolio de soluciones clasificadas en tres
áreas críticas:
• Infraestructura y herramientas de Desarrollo (Fundation & Tools):
— Application server.
— WebSphere studio:
∗ IBM WebSphere Studio Site Developer.
∗ IBM WebSphere Studio Application Developer.
∗ IBM WebSphere Studio Application Developer Integration Edition.
∗ IBM WebSphere Studio Enterprise Developer.
∗ IBM WebSphere Studio Homepage Builder.
— Host Access.
• Alcance y experiencia con el usuario (Business Portals):
— WebSphere Portal.
— WebSphere Everyplace.
— WebSphere Commerce.
• Integración de negocio (Business Integration):
— WebSphere Business Integrator.
— WebSphere MQ Integrator.
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
6.5
149
Application Server
La plataforma de alto desempeño y extrema escalabilidad para diseminar
aplicativos dinámicos de e-business, WebSphere Application Server, Versión
4.0, proporciona las funciones esenciales de e-business de manipulación de
transacciones y ampliación de datos back-end del negocio y aplicativos para la
Web. La plataforma ayuda a construir aplicativos que ejecutan esas funciones
con seguridad sólida, fiabilidad y escalabilidad.
6.5.1
Application Server. Advanced Edition
La Edición Avanzada es la oferta del principal servidor de aplicativo dirigido
a desarrolladores profesionales de tecnología Java que necesitan funcionalidad
de servicios J2EE y Web para aplicativos dinámicos de e-business.
La Edición Avanzada del WebSphere Application Server Versión 4.0, está
disponible en tres configuraciones distintas:
• Edición Avanzada:
Proporciona integración sólida a las bases de datos, middleware orientado
a mensajes, y sistemas preexistentes y aplicativos, en conjunto con soporte de
agrupación. Esta configuración se ajusta a la mayoría de los escenarios de la
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
150
empresa e interesa a los negocios que necesitan construir aplicativos altamente
transaccionales, administrables, disponibles y escalables que ofrecen seguridad
distribuida y administración remota.
• Edición Avanzada del Single Server:
Proporciona el mismo modelo de programación esencial J2EE y Web Services con administración simplificada. Esta configuración interesa a departamentos, negocios de tamaño mediano y aplicativos piloto que necesitan un
coste bajo, opción de ejecución rápida, distribución de carga de trabajo o
administración remota asociados a administración de multi-servidor.
• Edición Avanzada del IBM WebSphere Application Server V4.0, para
Linux en zSeries:
La Edición Avanzada del WebSphere Application Server V4.0, para Linux
en zSeries continúa cumpliendo el compromiso de IBM en cuanto a mantener
cobertura amplia para plataformas para el WebSphere Application Server.
Este producto WebSphere tiene la combinación potente de un conjunto de
dispositivos rico y soporte a estándares abiertos del WebSphere Application
Server y el ambiente operacional familiar del sistema operativo Linux.
También contiene los recursos de administración, alta fiabilidad, y la intensa velocidad de comunicación de datos internos del hardware de la plataforma
zSeries.
6.5.2
Application Server. Enterprise Edition
La Edición empresarial del IBM WebSphere Application Server Versión 4.1, en
conjunto con IBM WebSphere Studio Application Developer Integration Edition, ofrece una combinación potente de tiempo de ejecución y herramienta
que permite integrar activos IT existentes, mejorar la productividad del desarrollador y crear y mantener aplicativos de e-business flexibles.
Juntos, el IBM’s WebSphere Application Server 4.1 Enterprise Edition y
el WebSphere Studio Application Developer Integration Edition ofrecen ahora
a los desarrolladores la capacidad de:
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
151
• Coreografiar visualmente y componer servicios de la Web y componentes
de aplicativo J2EE a través de una interfase de simple drag-and-drop.
• Construir potentes adaptadores de aplicativo basados en J2EE Connector Architecture (JCA) para integrar sistemas back-end con servicios
Web y aplicativos J2EE.
• Crear una paleta de componentes de aplicativos que puede ser rápidamente montada para desarrollar nuevos aplicativos fácilmente publicada
como servicio Web.
• Evitar la repetición del desarrollo y diseminación de aplicativos debido a
condiciones cambiantes del mercado, separando las políticas del negocio
de la lógica de aplicativos esenciales.
• Obtener una infraestructura completa de servicios Web que impulse un
ambiente único, eficaz en cuanto a coste de tiempo de ejecución del
servidor de aplicativo administrativo y operacional.
6.5.3
Application Server. Standard Edition
La Edición Estándar para desarrolladores de la web y autores de contenido
incluye mejorías de facilidad de uso en toda su extensión, comprendiendo un
Quick Installation que elimina conjeturas en cuanto al Enhanced Java, impulsando el Software Development Kit del Java 2 V1.2.2 en todos los sistemas
operativos soportados.
6.5.4
Servidor HTTP
IBM WebSphere Application Server trabaja con un servidor HTTP para manejar las peticiones de servlets y otros contenidos dinámicos desde las aplicaciones Web.
El servidor HTTP y el servidor de aplicaciones se comunican utilizando
el plug-in HTTP de WebSphere para el servidor HTTP. El plug-in HTTP
utiliza un archivo de configuración XML de fácil lectura para determinar si la
petición la debe gestionar el servidor Web o el servidor de aplicaciones. Utiliza
el protocolo HTTP estándar para comunicarse con el servidor de aplicaciones.
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
152
Figura 6.2: Servidor de aplicaciones.
También se puede configurar para implementar seguridad en el servidor
HTTP, si fuera necesario. El plug-in HTTP está disponible para los servidores
Web más conocidos.
6.5.5
Servidor de Aplicaciones
El servidor de aplicaciones colabora con el servidor Web intercambiando peticiones de clientes y respuestas de aplicaciones. Puede definir varios servidores
de aplicaciones, cada uno de ellos ejecutándose en su propia Máquina Virtual
Java (JVM).
6.5.6
Contenedor de EJB
El contenedor de EJB proporciona los servicios de tiempo de ejecución necesarios para desplegar y gestionar componentes EJB, de ahora en adelante
conocidos como enterprise beans. Es un proceso de servidor que maneja peticiones para beans de sesión y beans de entidad.
Los enterprise beans (dentro de los módulos EJB) instalados en un servidor de aplicaciones no se comunican directamente con el servidor; en su lugar,
el contenedor de EJB ofrece una interfaz entre los enterprise beans y el servidor. Juntos, el contenedor y el servidor proporcionan el entorno de tiempo de
ejecución del bean.
El contenedor proporciona muchos servicios de bajo nivel, incluido el so-
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
153
porte de hebras y transacciones. Desde un punto de vista administrativo, el
contenedor gestiona el almacenamiento y la recuperación de datos para los
beans que contiene. Un solo contenedor puede gestionar más de un archivo
JAR de EJB.
6.5.7
Contenedor Web
Los servlets y los archivos JSP (Java Server Pages) son componentes del servidor que se utilizan para procesar peticiones de clientes HTTP como, por
ejemplo, navegadores Web. Se encargan de la presentación y el control de
la interacción del usuario con los datos de aplicación subyacentes y la lógica
empresarial. También pueden generar datos formateados, como XML, para
que los utilicen otros componentes de aplicación.
El contenedor Web procesa servlets, archivos JSP y otros tipos de inclusiones de servidor. Los servlets anteriores a J2EE se ejecutarán en un motor
de servlets. Cada contenedor Web contiene automáticamente un único gestor
de sesiones.
Cuando se manejan los servlets, el contenedor Web crea un objeto de
petición y un objeto de respuesta, e invoca el método de servicio de servlets.
El contenedor Web invoca el método destroy() del servlet cuando corresponda
y descarga el servlet, y después la JVM ejecuta la recolección de basura.
6.5.8
Contenedor de Clientes de Aplicaciones
Los clientes de aplicaciones son programas Java que se ejecutan normalmente
en un sistema de sobremesa con una interfaz gráfica de usuario (GUI) . Tienen
acceso a toda la gama de componentes y servicios de servidor J2EE.
El contenedor de clientes de aplicaciones maneja programas de aplicaciones de Java que acceden a los beans enterprise, Java Database Connectivity
(JDBC) y las colas de mensajes de Java Message Service. El programa Cliente
de aplicaciones J2EE se ejecuta en las máquinas cliente.
Este programa sigue el mismo modelo de programación Java que otros
programas Java; no obstante, el cliente de aplicaciones J2EE depende del
tiempo de ejecución del cliente de aplicaciones para configurar su entorno de
ejecución, y utiliza el espacio de nombres JNDI (Java Naming and Directory
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
154
Interface) para acceder a los recursos.
6.5.9
Contenedor de Applets
Un applet es una clase Java de cliente que se ejecuta normalmente en un
navegador Web, pero que también se pueden ejecutar en otros dispositivos y
aplicaciones de cliente.
Los applets se utilizan a menudo junto con páginas HTML para mejorar
la experiencia de usuario que ofrece el navegador Web. También se pueden
utilizar para pasar parte de la carga de trabajo de proceso del servidor al
cliente.
El contenedor de applets maneja applets de Java incorporados en documentos HTML (HyperText Markup Language) que residen en una máquina
cliente remota respecto al servidor de aplicaciones. Con este tipo de cliente,
el usuario accede a un bean enterprise en el servidor de aplicaciones mediante
el applet de Java en el documento HTML.
6.5.10
Sistema Principal Virtual
Un sistema principal virtual es una configuración que permite que una única
máquina de sistema principal parezca varias máquinas de sistema principal.
Los recursos asociados con un sistema principal virtual no pueden compartir
datos con recursos asociados con otro sistema principal virtual, incluso si los
sistemas principales virtuales comparten la misma máquina física.
Los sistemas principales virtuales permiten al administrador asociar aplicaciones Web con un sistema principal particular configurado para la máquina
que ejecuta la aplicación.
6.6
Arquitecturas de Tres Niveles
WebSphere Application Server proporciona la capa de la lógica de aplicación
en una arquitectura de tres niveles, lo que permite a los componentes de cliente
interactuar con los recursos de datos y las aplicaciones heredadas.
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
155
De manera colectiva, las arquitecturas de tres niveles son modelos de programación que permiten la distribución de la funcionalidad de la aplicación
entre tres sistemas independientes, normalmente:
• Componentes de cliente que se ejecutan en estaciones de trabajo locales
(nivel uno).
• Procesos que se ejecutan en servidores remotos (nivel dos).
• Una colección discreta de bases de datos, gestores de recursos y aplicaciones de sistema principal (nivel tres).
Primer nivel:
— La responsabilidad de la presentación y la interacción con el usuario
reside en los componentes del primer nivel. Estos componentes de
cliente permiten al usuario interactuar con los procesos del segundo
nivel de forma segura e intuitiva. WebSphere Application Server da
soporte a varios tipos de clientes.
— Los clientes no acceden directamente a los servicios del tercer nivel.
Por ejemplo, un componente de cliente proporciona un formulario
en el que el cliente solicita los productos.
— El componente de cliente entrega este pedido a los procesos del
segundo nivel, que comprueban las bases de datos del producto y
realizan las tareas necesarias para la facturación y el envío.
Segundo nivel (capa de la lógica de aplicación):
— Los procesos del segundo nivel se conocen normalmente como la
capa de la lógica de aplicación. Estos procesos gestionan la lógica
empresarial de la aplicación y pueden acceder a los servicios del
tercer nivel.
— La capa de la lógica de aplicación es donde se produce la mayor
parte del trabajo de los procesos.
— Varios componentes de cliente pueden acceder simultáneamente a
los procesos del segundo nivel, por lo que esta capa de la lógica de
aplicación debe gestionar sus propias transacciones.
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
156
— Si varios clientes intentan realizar un pedido del mismo artículo,
del que sólo queda uno, la capa de la lógica de aplicación debe
determinar quién tiene derecho a ese artículo, actualizar la base
de datos para reflejar la compra e informar a los otros clientes de
que el artículo ya no está disponible. Sin una capa de la lógica de
aplicación, los componentes de cliente acceden a la base de datos
del producto directamente.
— La base de datos es necesaria para gestionar sus propias conexiones,
normalmente bloqueando un registro que se está procesando. El
bloqueo se puede realizar simplemente cuando un artículo se coloca
en un carro de compra, para evitar que los demás clientes consideren
la posibilidad de compra.
— La separación del segundo y el tercer nivel reduce la carga en los
servicios del tercer nivel, puede mejorar el rendimiento general de
la red y permite una gestión de conexiones más elocuente.
Tercer nivel:
— Los servicios del tercer nivel están protegidos del acceso directo de
los componentes de cliente al residir en una red segura.
— La interacción debe producirse a través de los procesos del segundo
nivel.
Los tres niveles deben poder comunicarse entre ellos. Los protocolos abiertos estándar y las API expuestas simplifican esta comunicación. Los componentes de cliente se pueden escribir en cualquier lenguaje de programación
como, por ejemplo, Java o C++, y se puedan ejecutar en cualquier sistema
operativo, siempre que pueden comunicarse con la capa de la lógica de aplicación.
De la misma forma, las bases de datos del tercer nivel pueden tener cualquier diseño, siempre que la capa de la lógica de aplicación pueda consultarlas
y manipularlas. La clave de esta arquitectura es la capa de la lógica de aplicación.
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
6.7
157
Familias del Producto
El ambiente operativo principal debe ser una base confiable que permita de forma segura, transacciones e implementaciones de servicios en la Web
de forma abierta. En otras palabras, debe ser una infraestructura abierta,
basada en servicios, como la proporcionada por la familia del WebSphere Application Server, un mecanismo de alto desempeño, extremadamente escalable
para aplicaciones de e-business dinámicos.
En el caso en que nuevas aplicaciones tengan que ser desarrolladas, estas
necesitan ser creadas de forma que capturen el conocimiento de negocio de
forma eficaz, y construidas para integrarse, de manera que se ajusten rápidamente al ambiente existente, y a impulsarlo. Esta capacidad de desarrollo de
aplicaciones es proporcionada por la familia WebSphere Studio.
Las inversiones existentes en sistemas y aplicaciones, tan dispares cuanto
puedan ser, deben ser utilizadas por el e-business para bajar costos y preservar
inversiones. Esta capacidad de modernización de la empresa es proporcionada
por herramientas especializadas de desarrollo de la familia WebSphere Studio
y a través de la familia WebSphere Host Integration, que es software destinado
a impulsar y extender los activos legados para nuevas soluciones de e-business.
El WebSphere Host Integration Solution puede llevar sus aplicativos preexistentes a la Web, ¡rápidamente! extiende los aplicativos de host a la Web
y proporciona software para la creación y diseminación de nuevos aplicativos para host de acceso a e-business, sin necesidad de cambios a los propios
aplicativos existentes.
Tanto si se necesita una simple entrega de página Web, darle un nuevo aspecto a un aplicativo preexistente, o crear soluciones Java sofisticadas, el IBM
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
158
WebSphere Host Integration Solution permite rápida y flexiblemente integrar
datos críticos de la empresa la Web.
El WebSphere Host Publisher proporciona la manera más rápida, más fácil
para implementar e-business mediante la ampliación del alcance de aplicativos
a los usuarios de browsers en la web y nuevos aplicativos WebSphere, sin alteraciones a aplicativos existentes. Amplio soporte a aplicativos preexistentes
y escalabilidad, seguridad, y características de disponibilidad, hacen del Host
Publisher la solución ideal para diseminaciones de nuevos e-business. Tanto
si su objetivo es coste menor o mayores ganancias a través de diseminaciones
Web-to-Host o a través del desarrollo de nuevos aplicativos para e-business.
Las características clave son:
• Proporciona integración Web con Terminal Virtual 3270, 5250(VT), Java
Database Connectivity (JDBC) y aplicativos Java host sin necesidad de
cambios al propio aplicativo existente.
• Permite la fácil consolidación de múltiples aplicativos en un aplicativo
compuesto único o página Web para presentación a usuarios de la Web.
• Se integra con la Edición Avanzada del WebSphere Application Server
e incluye el WebSphere Studio para proporcionar una solución completa
para la entrega de datos del host a usuarios de la Web y para nuevos
aplicativos WebSphere para e-business.
• Opera con el Websphere Transcoding Publisher para extender datos del
host a tecnologías penetrantes como los dispositivos SmartPhone y asistentes digitales personales.
• Proporciona una amplia gama de opciones de acceso al Host: HTML a
browsers de la Web, XML Gateway para aplicativos Java, y Host Publisher Integration Objects reutilizables para aplicativos de Java applets
aplicativos.
• Ayuda a impulsar la inversión en Host Publisher utilizando objetos de
integración basados en estándares abiertos de la industria que se pueden
reutilizar en nuevos aplicativos de e-business, reduciendo el coste y los
riesgos asociados al desarrollo de nuevos aplicativos.
• Puede ser implementado sin programación utilizando una simple interface gráfica del tipo wizard (asistente).
CAPÍTULO 6. WEBSPHERE PARA EL E-LEARNING
159
• Remote Integration Objects (RIO) permite que Integration Objects sean
ejecutados en el servidor Host Publisher para ser accedido por aplicativos
con tecnología Java siendo ejecutados en cualquier lugar de la red.
• El XML Gateway torna datos existentes de aplicativos de host disponibles para aplicativos cliente o Business Partner Java en un formato
XML.
• El 3270/5250 HTML Mapper proporciona un emulador HTML de nivel
de entrada load-and-go dentro de una ventana de browser de la Web.
6.8
La familia de Herramientas WebSphere Studio
WebSphere Studio proporciona un conjunto de herramientas para facilitar el
desarrollo de aplicaciones Web. Posee un entorno visual para la distribución
de los elementos de una página web usando Java Server Pages (JSPs), HTML,
Java Script, y DHTML, ayudando además, a un rápido desarrollo de aplicaciones de comercio electrónico con contenido dinámico. Una fácil integración
entre WebSphere Studio, Java VisualAge, y WebSphere Application Servers
hace que la comunicación y el trabajo en grupo para la creación de aplicaciones de comercio electrónico basadas en Web, sea mucho más sencillo.
La familia IBM WebSphere Studio, consta de una serie de productos basados en Eclipse, que es una plataforma de código abierto para crear herramientas de desarrollo de aplicaciones. Cada producto de la familia WebSphere
Studio presenta el mismo entorno de desarrollo integrado (IDE) y una base
común de herramientas, por ejemplo para el desarrollo Java y Web. La diferencia entre estos productos radica en las herramientas de conector que están
disponibles en cada configuración.
WebSphere Studio es un único entorno de desarrollo completo diseñado
para satisfacer todas las necesidades de desarrollo, desde interfaces Web a
aplicaciones del lado del servidor, desde el desarrollo individual a desarrollos
avanzados en equipo, desde el desarrollo Java a la integración de aplicaciones.
Con varias configuraciones disponibles, así como extensiones de IBM y de
terceros, la familia WebSphere Studio permite a los desarrolladores utilizar un
único entorno de desarrollo diseñado para satisfacer sus necesidades específicas.
Esta visión general describe las siguientes configuraciones:
• IBM WebSphere Studio Site Developer.
• IBM WebSphere Studio Application Developer.
• IBM WebSphere Studio Application Developer Integration Edition.
• IBM WebSphere Studio Enterprise Developer.
• IBM WebSphere Homepage Builder.
Tanto para los usuarios que estén construyendo páginas Web como para
los grandes equipos que construyan aplicaciones Web avanzadas, la familia
WebSphere Studio proporciona herramientas y asistentes para simplificar las
tareas de desarrollo Web. El entono incluye una interfaz intuitiva de tipo WYSIWYG (....lo que se ve es lo que se obtiene....) que permite a los diseñadores
Web novatos crear y publicar sitios Web al tiempo que incorpora lo último en
tecnología Web, incluyendo Java Script, HTML dinámico y hojas de estilo en
cascada.
El entorno completo y fácil de utilizar de la familia WebSphere Studio
permite construir aplicaciones Java, adaptadores de aplicaciones y servicios
Web. También puede integrar la aplicación con sistemas de fondo utilizando herramientas visuales para crear adaptadores de aplicaciones y desarrollar
componentes de GUI Java (Swing y AWT) mediante el Editor visual para
Java.
Para construir aplicaciones J2EE complejas y escalables con una calidad
homogénea en menor tiempo, la familia WebSphere Studio proporciona configuraciones para el desarrollo rápido de aplicaciones que utilizan el poder de la
automatización de lógica empresarial para proporcionar sistemas de empresa
altamente configurables y escalables con una codificación manual mínima.
Esta familia de productos ofrece un entorno de desarrollo integrado que
abarca todos los cometidos de desarrollo de e-Business: desarrollador Web,
desarrollador Java, programador de empresa, analista de gestión y arquitecto
de sistemas.
Capítulo 7
Introducción al WebSphere
Application Server
El WebSphere Application Server representa una familia de software para servidores de aplicaciones. Permite a las empresas responder a los mercados
cambiantes sin migrar a tecnologías diferentes preservando las inversiones hechas en tecnología previamente disponible en la organización, soporta normas
abiertas vigentes en las organizaciones, proporciona soporte pleno a la plataforma abierta Java 2 y Java 2 Enterprise Edition (J2EE) y también provee
soporte para servicios bajo normas abiertas en la Web [10, IBM Press].
7.1
WebSphere Application Server Como Plataforma Para el Comercio Electrónico
Asimismo brinda un soporte amplio para aplicaciones de comercio electrónico.
Se caracteriza por su flexibilidad para adaptarse a cambios en los mercados y
en los objetivos comerciales.
Construyendo aplicaciones en esta robusta plataforma, se pueden integrar
diversos ambientes de las IT(Information Technology: Tecnología de Información), para aprovechar al máximo las inversiones existentes.
Se pueden instalar aplicaciones comerciales existentes para su acceso desde
la Web y escalar estas aplicaciones para adecuarlas a las necesidades de los
161
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
162
Figura 7.1: WebSphere para e-bussines.
cambios y de la demanda.
En la figura 7.1 de la página 162 se puede observar la plataforma del
Software de WebSphere para e-bussines.
7.1.1
Fundamentos
Los fundamentos básicos están constituidos por los servicios de aplicaciones
Web y la integración.
Permite habilitar en la Web el comercio electrónico de manera rápida,
fiable y flexible y proporciona el software central para desplegar, integrar y
manejar las aplicaciones del e-business.
Permite la integración de aplicaciones desarrolladas con WebSphere y otras
desarrolladas con plataformas de diferentes proveedores. Tales aplicaciones
pueden ir desde las presentaciones dinámicas en la Web hasta los sistemas
sofisticados de procesamiento de transacciones.
A su vez, el soporte de middleware de MQSeries proporciona mensaje-
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
163
ría fiable y asíncrona para más de treinta y cinco plataformas, utilizables en
aplicaciones de negocios.
Asimismo se incluyen importantes herramientas para la administración
de contenidos tendientes a facilitar la gestión de información basada en la
Internet.
Las principales características de sus componentes son las siguientes:
• WebSphere Everyplace Suite.
— Amplía las aplicaciones del e-business por nuevos carriles de comunicación.
— Entrega contenidos existentes a los nuevos dispositivos.
— Agrega soporte para nuevas tecnologías cuando ellas se desarrollan.
• WebSphere Portal Server.
— Construye los portales Web de la organización atendiendo las necesidades de empleados, socios comerciales y clientes.
— Los usuarios pueden conectarse al portal y recibir una página Web
personalizada con acceso a la información y aplicaciones Web necesarias.
• WebSphere Personalization Server.
— Arma sitios Web, Intranet, o Extranet, que entregan páginas Web
personalizadas para cada visitante del sitio.
• WebSphere Transcoding Publisher.
— Transforma datos a través de formatos múltiples, leguajes de marcadores y dispositivos.
— Adapta, reformatea, y filtra contenidos para hacerlos convenientes
para la computación invasiva (pervasive computing).
— Brinda mejor acceso a las compañías, a clientes, socios comerciales,
y empleados móviles utilizando diversos dispositivos.
• WebSphere Voice Server.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
164
— Rápidamente desarrolla y despliega soluciones del e-business habilitadas para voz.
— Extiende el uso de aplicaciones Web a clientes que sólo tienen acceso
telefónico.
Otros módulos importantes permiten mejorar ampliamente la habilidad de
manejar altos volúmenes de tráfico para el sitio Web con alta disponibilidad y
buenos tiempos de respuesta (deployment: despliegue):
• WebSphere Site Analyzer.
Proporciona análisis para:
— Web Corporativa, respecto de visitantes, tendencias, usos y contenidos.
— WebSphere Commerce Suite, respecto de reportes diversos.
• WebSphere Edge Server.
Proporciona una solución integrada para:
— Balanceo de carga para redes LAN y WAN.
— Ruteo con calidad de servicio basado en contenido.
— Filtrado y ocultamiento de contenido Web para entornos de servidores de múltiples vendedores.
La figura 7.2 de la página 165 muestra la estructura macroscópica del
WebSphere Application Server.
7.2
Rasgos de WebSphere Advanced Edition
WebSphere Application Server Advanced Edition proporciona las siguientes
funcionalidades:
• Soporte completo de la plataforma Java 2 Enterprise Edition (J2EE).
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
165
Figura 7.2: WebSphere Application Server.
• Herramientas para desarrollar sitios Web activos a través del uso de
servlets de Java y JavaServer Pages (JSP).
• Fuerte integración con herramientas para desarrollar y desplegar beans
empresariales escritos para la especificación de EJB. Los beans empresariales pueden actuar como un puente entre el sitio Web y los sistemas
de computación no-Web.
• Un conjunto de interfaces de programas de aplicación (APIs)para generar, validar, analizar, y presentar documentos en el lenguaje XML.
• Soporte integrado para los importantes servicios Web de normas abiertas.
• Una interfase gráfica del usuario (GUI), el WebSphere Administrative
Console, para administrar los componentes del entorno Advanced Edition.
• Soporte de Java 2 Connectivity (J2C).
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
166
Figura 7.3: Componentes de WebSphere Application Server Advanced Edition.
7.2.1
Entorno de WebSphere Advanced Edition
La figura 7.5 de la página 176 muestra los componentes que constituyen WebSphere Application Server Advanced Edition.
Los componentes se pueden combinar para crear un poderoso sistema threetiered centrado en Java, que pone énfasis en el cliente Web.
Cada parte de WebSphere Advanced Edition se explica a continuación:
• Administration Server (Servidor de administración).
El servidor de administración y la interfaz administrativa habilitan la supervisión y control centralizado de servidores y procesos.
• Browser-based Clients (Buscador Basado en Cliente).
Los clientes de aplicaciones que generalmente continúan con WebSphere
también continúan con los browsers habilitados de Java, enviando y recibiendo
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
167
información de un servidor Web usando HTTP (Protocolo de Transmisión
de Hipertexto). Los buscadores basados en clientes pueden incluir applets y
páginas del servidor Java (JSP).
• Web Servers (Servidores Web).
Excepto por los applets de Java que están restringidos por la seguridad
interna de Java, las aplicaciones del cliente basadas en los buscadores Web,
requieren que un servidor Web sea instalado en por lo menos una máquina, en
el ambiente WebSphere Application Server.
El servidor Web proporciona el enlace de comunicaciones entre las aplicaciones basadas en el buscador y los otros componentes de WebSphere Application Server, el cual soporta muchos servidores Web, ampliamente usados.
El IBM HTTP Server que es una versión modificada del Apache Server, viene
incluido en WebSphere Application Server Advanced Edition.
• Web Container (Contenedor Web).
WebSphere contiene un servlet basado en Java que es independiente de
ambos, de su servidor Web y del sistema operativo subyacente. Los servlets
de Java, amplían las capacidades del servidor Web creando un entorno para
proporcionar requerimientos y servicios de respuesta a través de la red.
• Enterprise Beans (Beans Empresariales).
WebSphere proporciona un soporte completo para beans de aplicaciones.
Un bean empresarial es un componente de Java que puede combinarse con
otros beans de aplicaciones y otros componentes de Java para crear aplicaciones distribuidas, three-tiered.
7.2.2
Modelo de WebSphere Application
Las aplicaciones de WebSphere consisten en objetos orientados a la lógica
comercial, que usan sistemas relacionales de base de datos para el almacenamiento de los mismos. Normalmente las aplicaciones están integradas a los
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
168
clientes Web; ellos también pueden estar integrados en aplicaciones procedurales existentes, que corren en servidores de aplicaciones.
Una aplicación consiste en los siguientes componentes donde cada uno realiza una función diferente:
• Las páginas HTML y JSP proporcionan la interfase del usuario y el flujo
del programa.
• Los beans empresariales contienen la lógica de negocio de la aplicación,
el indicador de operaciones transaccionales y el acceso a las bases de
datos.
• Los servlets coordinan el trabajo entre los otros componentes de la aplicación, pudiendo también generar dinámicamente, contenido de páginas
Web.
• Los componentes de Java Beans, permiten a los otros tipos de componentes trabajar juntos.
• Las bases de datos relacionales llevan a cabo la persistencia y las funciones de búsqueda para los beans empresariales. Cualquier base de datos,
nueva o existente, puede usarse en una aplicación [19, WebSphere].
7.3
WebSphere Development Environment
WebSphere Studio es el entorno de desarrollo de aplicaciones para el WebSphere Application Server. Puede usarse para crear páginas Web personales, que
sirven de interfase hacia el usuario final para las aplicaciones del e-business.
WebSphere Studio proporciona una colección de herramientas necesarias en
el desarrollo de páginas HTML y puede ser integrado con otras herramientas
de desarrollo.
VisualAge para Java es un ambiente de desarrollo integrado que da soporte
al ciclo completo del desarrollo de programas Java. Aunque no es formalmente
una parte de WebSphere Application Server Advanced Edition, VisualAge para
Java está linealmente integrado con el entorno WebSphere Application Server.
Esta integración les permite a diseñadores de VisualAge desarrollar, desplegar, y probar sus programas Java sin salir de VisualAge. También ayuda
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
169
a manejar la complejidad del ambiente empresarial y es capaz de automatizar
rutinas.
7.4
Conceptos del WebSphere Application Server
Este apartado proporciona una introducción a los siguientes conceptos:
• e-learning vs. e-business.
• La Familia de WebSphere.
• Computación Distribuida de WebSphere Application Server.
• Componentes de WebSphere Application Server.
7.4.1
E-learning vs. E-business
Aunque las personas usan la red para una serie de propósitos diferentes, los
negocios la utilizan principalmente para proporcionar productos, servicios, e
información a sus clientes, proveedores, y empleados.
Cuando los primeros negocios se movieron hacia la Web, era suficiente
proporcionar un pequeño número de páginas Web estáticas, que enumeraban
los productos y servicios para la venta, suministrando al mismo tiempo un
número telefónico, de tal manera que les permitiera ordenar esos productos y
servicios [21, IBM Press].
El negocio que proporcionaba servicios de información (como las compañías de software), fue uno de los primeros en ingresar a la nueva modalidad,
permitiendo que sus productos (información o software), fueran descargados
directamente desde la Web.
Cuando la Web creció y se desarrollaron nuevas tecnologías, las páginas
Web estáticas no fueron suficientes. En respuesta, las empresas construyeron
sitios Web activos para que los clientes pudieran pedir los productos directamente, que los clientes y los proveedores pudieran comunicarse con la empresa
y que los empleados pudieran comunicarse entre sí.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
7.4.2
170
La Familia WebSphere
La familia WebSphere fue diseñada para ayudar a los usuarios a comprender el
e-learning y el e-business. Es un grupo de productos de software, que contribuye con los clientes que desarrollan y manejan sitios Web de alto rendimiento
e integra aquellos sitios Web, con nuevos o existentes sistemas de negocios
no-Web. Sus enfoques están dirigidos a los siguientes tipos de empresas:
• Empresas que quieren usar las últimas tecnologías para establecer una
Web poderosa o mejorar su Web actual.
• Empresas que quieren un desarrollo distribuido con sistemas de negocios
y sus aplicaciones.
• Empresas que quieren integrar su Web actual con sistemas no-Web y sus
aplicaciones.
WebSphere Application Server
Permite a los clientes lograr sus metas y está disponible en tres ediciones:
• WebSphere Application Server Standard Edition (también llamado Standard Application Server), combina la portabilidad del servidor de aplicaciones de negocios con el rendimiento y manejabilidad de tecnologías de
Java, para ofrecer una plataforma que permita diseñar aplicaciones Web
basadas en Java. Habilita interacciones poderosas con bases de datos
empresariales y sistemas de transacción.
• WebSphere Application Server Advanced Edition ( también llamado Advanced Application Server), construído en base al Standard Application
Server. Introduce capacidades de servidor para aplicaciones basadas en
la Especificación Enterprise JavaBeans de Sun Microsystems y provee
ciertos soportes, integrando las aplicaciones Web a otras no-Web de los
sistemas de negocios.
• WebSphere Application Server Enterprise Edition (también llamado Enterprise Application Server), basado en el Advanced Application Server, ofrece una solución robusta para acrecentar las aplicaciones del ebusiness en ambientes de la empresa. Combina TXSeries, IBM’s worldclass en el ambiente de aplicaciones transaccionales (consistiendo en
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
171
Enicna y CICS), con capacidad de integración negocio-proceso del Component Broker.
7.4.3
Computación Distribuida y WebSphere Application Server
El WebSphere Application Server proporciona un ambiente para la computación distribuida.
Computación Cliente-Servidor de Tres Niveles
Una manera común de organizar la ejecución del software en sistemas distribuidos, es separar funcionalidad en dos partes: clientes y servidores. Un
cliente es un programa que utiliza servicios de otros programas llamados servidores. El cliente hace una demanda por un servicio, y un servidor realiza
ese servicio.
La funcionalidad del servidor involucra a menudo alguna clase de dirección
del recurso, en la que un servidor sincroniza y maneja el acceso al recurso,
respondiendo a las demandas del cliente, con datos o información de estado.
El programa cliente maneja típicamente las interacciones del usuario y a
menudo datos requeridos o comienza la modificación de algunos datos bajo el
requerimiento y la responsabilidad de un usuario.
Por ejemplo, un cliente puede proporcionar la forma en que un usuario
(una persona que usa el browser de la Web, por ejemplo), puede ordenar un
producto. El cliente envía esta información de orden al servidor que verifica
la base de datos del producto y realiza las tareas de facturación y de envío.
Un solo servidor es usado típicamente por múltiples clientes. Por ejemplo,
docenas o centenares de clientes pueden interactuar con un pequeño número
de servidores que controle el acceso a las bases de datos.
Un diseño común de sistemas cliente-servidor usa tres niveles: un cliente
con el que interactúa el usuario, un servidor de aplicaciones que contiene la
lógica comercial de la aplicación, y un administrador del recurso que guarda
datos.
Si se cambia la base de datos utilizada, el servidor puede tener que ser
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
172
Figura 7.4: Arquitectura Cliente-Servidor de tres niveles.
modificado, no así el cliente.
Hay normalmente menos copias del servidor que del cliente, y los servidores
están a menudo en sitios que son más fáciles de actualizar, (por ejemplo, en
máquinas centrales en lugar de PC’s que operan en el escritorio del usuario),
por lo tanto el procedimiento de actualización también se simplifica. Además,
este enfoque proporciona seguridad adicional, ya que sólo los servidores, no
los clientes, necesitan acceder a los datos controlados por el administrador del
recurso.
En la figura 7.4 de la página 172 se pueden observar los tres niveles de la
arquitectura cliente-servidor.
WebSphere Application Server proporciona un nivel intermedio en esta
arquitectura, permitiendo clientes-applets, clientes de Visual Basic, clientes
de C++, etc., que actúan recíprocamente con los recursos (bases de datos
relacionales, MQSeries, etc.) y otras aplicaciones existentes.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
7.4.4
173
WebSphere Application Server, Standard and Advanced
Editions
El WebSphere Application Server Advanced Edition y el WebSphere Application Server Standard Edition, proporcionan muchas herramientas poderosas
para la empresa, permitiendo construir soluciones complejas para el e-business.
¿Cuál es la Diferencia Entre WebSphere Application Server Standard y Advanced Edition?
Hay varias diferencias mayores entre WebSphere Application Server Standard
Edition y Websphere Application Server Advanced Edition:
• Websphere Application Server Advanced Edition soporta el desarrollo y
uso de los beans empresariales escritos en la especificación Enterprise JavaBeans (EJB) de Sun Microsystems. El WebSphere Application Server
Standard Edition no soporta el desarrollo de beans empresariales.
• Websphere Application Server Advanced Edition soporta la copia de modelos de servidor de aplicaciones que hacen fácil reproducir los servidores
de aplicaciones a través de múltiples nodos, mejorando su disponibilidad.
WebSphere Application Server Standard Edition no permite réplicas.
• WebsphereApplicationServerAdvancedEdition soporta un ambiente de múltiples máquinas para los servidores y servlets. El WebSphere Application
Server Standard Edition soporta sólo un ambiente de una única máquina para los servidores y servlets. Ambas ediciones soportan el acceso de
múltiples máquinas para los clientes.
Las interfases administrativas de los servidores de aplicaciones, difieren
un tanto como consecuencia de las diferencias en funcionalidad. La interfase
de WebSphere Application Server Advanced Edition no puede usarse para administrar un ambiente WebSphere Application Server Standard Edition y la
interfase de Standard Edition no puede usarse para administrar WebSphere
Application Server Advanced Edition.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
174
Websphere Application Server Advanced Edition
El Websphere Application Server Advanced Edition proporciona las siguientes
facilidades:
• Herramientas para el desarrollo de sitios Web activos a través del uso de
servlets de Java y JavaServer Pages (JSP). Esta funcionalidad también
está disponible en la Standard Edition.
• Herramientas para el desarrollo y el despliegue de los beans empresariales
escritas en la especificación de EJB. Los beans empresariales pueden
actuar como un puente entre el sitio Web y los sistemas informáticos
no-Web.
• Una interfase gráfica del usuario(GUI), la Consola administrativa de
WebSphere, para administrar los componentes del ambiente de WebSphere Application Server Advanced Edition. Esta funcionalidad también
está disponible en la Standard Edition.
• Un conjunto de programas de interfase de aplicación (APIs), para generar y validar la presentación del standard universal para la escritura
de documentos de hipertexto (XML). Esta funcionalidad también está
disponible en la Standard Edition.
The WebSphere Application Server Advanced Edition Environment
El WebSphere Application Server Advanced Edition contiene los siguientes
componentes que pueden combinarse para crear un poderoso sistema multinivel basado en Java, que pone énfasis en un sitio Web cliente:
• Aplicaciones basadas en Browser.
Permite a los usuarios enviar y recibir información desde los sitios Web
usando el Protocolo de Transferencia de Hipertexto (HTTP). Hay tres tipos
generales de aplicaciones basadas en browser: Applets de Java, servlets de
Java, y JavaServer Pages (JSP).
• Servicios Web.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
175
Excepto para los applets de Java, los cuales están restringidos por la seguridad interna de Java, las aplicaciones basadas en browser requieren que
un servidor Web sea instalado en al menos una máquina en el entorno de
WebSphere Application Server Advanced Edition.
• Servidores de Aplicaciones y beans empresariales.
El WebSphere Application Server contiene uno o más beans empresariales que encapsulan la lógica comercial y los datos usados y compartidos por
aplicaciones de EJB. Los beans empresariales instalados en un servidor de
aplicaciones no se comunican directamente con el servidor. Un contenedor
EJB brinda una interfase entre los beans empresariales y el servidor de aplicaciones, proporcionando servicios de bajo nivel tal como el soporte de hilos de
ejecución, soporte de las transacciones, y administración del almacenamiento
de los datos y de la recuperación.
• Aplicaciones Java.
Pueden interactuar directamente con un servidor de aplicaciones usando
Java mediante RMI/IIOP (Invocación de métodos remotos: Remote Method
Invocation/ Internet InterORB Protocol: Protocolo de Comunicación entre
ORBs (Agente de Petición de Objeto: Object Request Broker)en Internet).
• Fuente de Datos.
Hay dos tipos de beans empresariales: beans de sesión que encapsulan por
tiempo determinado tareas y objetos de las especificaciones cliente, y beans
de entidades, que encapsulan datos permanentes o persistentes. El servidor de
aplicaciones guarda y recupera estos datos persistentes en una base de datos.
• Extensiones del modelo de programación WebSphere.
Estas herramientas proporcionan la reusabilidad de la lógica de los programas de Java de la empresa.
• Administración del servidor y administración de interfase.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
176
Figura 7.5: Componentes del ambiente de WebSphere Advanced Edition.
El administrador del servidor maneja servlets, archivos JSP, beans empresariales, y servidores de aplicaciones. Esta administración es dirigida por el
administrador de WebSphere Application Server quien hace uso de la consola
administrativa de WebSphere.
• La figura 7.5 de la página 176 muestra los componentes del ambiente de
WebSphere Application Server Advanced Edition [24, IBM].
Applets y Servlets de Java
Los applets de Java son aplicaciones que corren en un browser y extienden las
capacidades del mismo. Los applets de Java pueden ser diseñados usando los
paquetes normales encontrados en el Java2 SDK o usando los componentes
del Java Fundation Classes (JFC). Para que un applet de Java corra dentro
de un browser, los browser deben soportar las clases usadas dentro del applet;
sin embargo, la mayoría de los browsers pueden actualizarse para dar soporte
al último SDK instalado mediante los plug-ins del browser.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
177
Los servlets de Java corren en un servidor Java habilitado y amplían las
capacidades del mismo. Son programas de Java que usan los Java Servlet API,
las clases asociadas y los métodos. Además del Java Servlet API, los servlets
pueden usar clases de paquetes de Java que amplían y se agregan al API.
Pueden diseñarse applets de Java para actuar recíprocamente con servlets de
Java, sin embargo esto no es obligatorio. Los servlets amplían las capacidades
del servidor Web creando un entorno para el suministro de servicios de requerimiento y respuesta sobre la Web. Cuando un cliente envía una demanda al
servidor, el servidor puede enviar la información de la demanda a un servlet,
éste puede realizar la contestación y el servidor la envía nuevamente al cliente.
Al contrario de los programas de la Common Gateway Interface (CGI), los
cuales requieren un proceso entero para manejar las peticiones de los usuarios,
los servlets pueden tratar las peticiones de los usuarios usando hilos. Esta
capacidad hace a los servlets mucho más eficaces que los programas de CGI.
Los servlets pueden cargarse automáticamente cuando el servidor Web
arranca, o pueden ser cargados la primera vez que un cliente pide sus servicios.
Después de estar cargado, el servlet continúa corriendo, esperando por las
demandas adicionales del cliente.
Los servlets realizan una amplia gama de funciones; por ejemplo, un servlet
puede:
• Crear y devolver una página Web HTML entera que contenga contenido
dinámico basado en la naturaleza de la demanda del cliente.
• Crear una porción de una página Web HTML (un fragmento de HTML)
que puede estar incrustado en una página HTML existente.
• Comunicarse con otros recursos del servidor, incluso con los bancos de
datos y aplicaciones basadas en Java.
• Manejar las conexiones con clientes múltiples, aceptando la entrada y
transmitiendo resultados a los mismos.
• Abrir una nueva conexión del servidor a un applet en el browser y mantener la conexión abierta, permitiendo la transferencia de muchos datos
en una sola conexión. El applet también puede comenzar una conexión
entre el browser del cliente y el servidor, permitiendo a ambos mantener
fácilmente y eficazmente una conversación.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
178
• Depurar los datos por tipo del MIME para un procedimiento especial,
tal como conversión de imagen.
• Suministrar procedimientos hechos a medida a cualquier rutina del servidor normal; por ejemplo, un servlet puede modificar cómo un usuario
se autentica.
Páginas del Servidor Java
El WebSphere Application Server Advanced Edition soporta un poderoso y
nuevo enfoque hacia el contenido dinámico de las páginas Web: JavaServer
Pages (JSP). Los JSP funcionan en el servidor de aplicaciones basado en la
especificación de Sun Microsystems JavaServer Pages.
Los archivos JSP son similares en algunas formas al servidor que incluye
un HTML estático, porque ambos incrustan funcionalidad del servlet en la
página Web. Sin embargo, en un servidor, una llamada a un servlet está
incluida dentro de una etiqueta especial del servlet; en JSP, el código del
servlet de Java (u otro código de Java) está directamente incluido en la página
HTML.
Una de las muchas ventajas de JSP es que permite separar eficazmente el
código HTML, de la lógica comercial en las páginas Web. Se puede utilizar
a JSP para acceder a componentes reutilizables, como servlets, Java beans,
beans empresariales y aplicaciones Web basadas en Java.
Servidores Web
El servidor Web permite el enlace de comunicaciones entre las aplicaciones
basadas en browser y los otros componentes de WebSphere Application Server
Advanced Edition, el cual contiene un servlet basado en Java que es independiente de su servidor Web y de su sistema operativo subyacente.
WebSphere Application Server Advanced Edition soporta muchos de los
más ampliamente usados servidores Web.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
179
Servidores de Aplicaciones y Beans Empresariales
Un servidor de aplicaciones suministra un ambiente run-time para los beans
empresariales, manipulando tareas de programación de bajo nivel como la
administración de transacciones, nombrando, y dando seguridad.
Hay dos tipos de beans empresariales:
• Bean de entidad que encapsula datos permanentes, como los que se guardan en una fuente de datos, tal como una base de datos o un sistema de
archivos, y métodos asociados para manipular esos datos. En la mayoría
de los casos, un bean de entidad debe accederse de manera transaccional. En algunos casos los beans de entidad son exclusivos, y pueden ser
accedidos por usuarios múltiples.
Por ejemplo, puede encapsularse la información de una cuenta bancaria en
un bean de entidad. Un bean empresarial de cuenta podría contener un ID de
cuenta, un tipo de cuenta (cuenta corriente o caja de ahorro), y un saldo.
• Bean de sesión que encapsula una o más tareas comerciales y datos
temporarios asociados con un cliente particular. A diferencia de los datos
en un bean de entidad, los datos en un bean de sesión no se guardan en
una fuente de datos permanente y no causan ningún daño si estos datos
se pierden. No obstante, un bean de sesión puede actualizar datos en
una base de datos fundamental, normalmente accediendo a un beans de
entidad. Por esta razón, un bean de sesión puede ser una transacción.
Cuando se crea, las instancias de un bean de sesión son idénticas, sin
embargo algunos beans de sesión pueden guardar datos semipermanentes que
los hacen únicos en ciertos puntos de su ciclo de vida. Un bean de sesión
siempre está asociado con un solo cliente.
Por ejemplo, la tarea asociada con la transferencia de fondos entre dos
cuentas del banco puede encapsularse en un bean de sesión, dicha transferencia
de beans empresariales podría encontrar dos instancias de una cuenta de beans
empresariales (usando el ID de cuenta), y entonces se puede substraer una
cantidad especificada de una cuenta y agregar la misma cantidad a otra cuenta.
Antes de que un bean empresarial pueda instalarse en un servidor de aplicaciones, el mismo debe desplegarse. Durante el despliegue, varias aplicaciones
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
180
de clases específicas del servidor se generan. El descriptor de despliegue contiene atributos y especificaciones de entorno, que definen cómo el servidor de
aplicaciones invoca la funcionalidad del beans empresarial.
Cada bean empresarial (de sesión y de entidad), debe tener un descriptor
de despliegue que contiene especificaciones usadas por el servidor de aplicaciones; estos atributos pueden ser a menudo un conjunto completo de beans
empresariales o métodos individuales en el bean.
El WebSphere Application Server Advanced Edition proporciona herramientas para crear descriptores de despliegue y desplegar los beans empresariales.
Extensiones del Modelo de Programación WebSphere
Las extensiones del modelo de programación WebSphere son utilidades de
propósito general, diseñadas para proveer funciones comunes de manera reutilizable.
Hay dos juegos de herramientas en el ambiente de WebSphere Application
Server Advanced Edition para programadores de Java, ellos son el paquete de
comandos y el paquete distribuido por excepción.
El paquete de comandos proporciona una manera de distribución de aplicaciones para manejar en forma conjunta todas las demandas remotas, reduciendo el número de invocaciones remotas individuales. Las invocaciones remotas
son caras, por lo tanto el paquete de comandos puede ayudar a mejorar el
rendimiento de aplicaciones distribuidas. Además, proporciona una manera
genérica de confección de demandas y una manera común de emitir una orden, local o remotamente, independientemente del servidor de aplicaciones.
Cualquier servidor (un beans empresarial, un servidor JDBC, etc.) puede ser
el objetivo de un comando.
El paquete distribuido por excepción ayuda a administrar las excepciones
en aplicaciones distribuidas. Al escribir aplicaciones distribuidas complejas,
se selecciona un grupo de excepciones. Una opción es administrar cada excepción explícitamente, capturando cada una por nombre. Esto asegura que
la información sobre la excepción original no se pierde, pero puede llevar a
códigos inmanejables como a un número de incrementos de excepciones.
La otra opción es adoptar una estrategia para arrojar una excepción cuando
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
181
se toma cualquiera de un grupo. Esta opción permite mantener manejable el
número de excepciones, pero se pierde información acerca de la excepción
particular.
El paquete distribuido por excepción permite encadenar una sucesión de
excepciones en un objeto. Con una cadena de excepciones, se puede enviar
una excepción en contestación a otra, sin perder las excepciones anteriores.
También se puede recuperar excepciones en cadena.
7.5
El Modelo de Administración en el WebSphere
Application Server Advanced Edition
El WebSphere Application Server proporciona una administración central de
los servidores de aplicaciones y otros recursos. En WebSphere Application Server, un dominio administrativo es una colección de máquinas host llamados
nodos dirigidos. Cada nodo dirigido corre en un servidor de administración
(los servidores de administración también son servidores de aplicaciones). El
nodo del servidor de administración es responsable de la configuración, monitoreo, y gestión de recursos en ese nodo. Los recursos incluyen objetos vivos
como servidores de aplicaciones, contenedores, beans desplegados, archivos
JSP, servlets de Java, y aplicaciones. Los recursos también incluyen objetos
como grupos de métodos o políticas que se usan para definir la seguridad de
los recursos en el dominio.
Los recursos beans son beans de entidad CMP(Container-Managed Persistent: Administradores de Contenedores Persistentes). Los datos persistentes
se asocian con un recurso (por ejemplo, el nombre, estado actual, y ejecutable
de un servidor de aplicaciones) se almacenan en un almacén de los datos central. El servidor de administración se comunica con el servidor del almacén
para acceder, definir, y modificar la información del recurso almacenado.
Un servidor de administración también se comunica con otro (remoto)
servidor de administración para delegar tareas y responder a las demandas.
El manejador de base de datos relacional IBM DB2 que trabaja conjuntamente
con la aplicación de WebSphere Application Server Advanced Edition, actúa
como el servidor del almacén.
La administración tiene lugar a través del método llamar al recurso bean en
el servidor del almacén. La Consola Administrativa de WebSphere efectúa las
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
182
peticiones a un servidor de administración para acceder o modificar un recurso
en el dominio. En el servidor de administración los beans de sesión invocan
métodos en los beans del recurso. Cada bean del recurso tiene una clase del
atributo asociada que contiene métodos para conseguir y poner valores del
atributo.
Todos los servidores de administración en un dominio comparten el almacenamiento central para los recursos en el dominio. Sin tener en cuenta el
nodo en que se está ejecutando, cualquier servidor de administración puede
ver y modificar las características o estado de los recursos en otros nodos.
Si un servidor de administración llama a un método en un recurso que está
ejecutando en un nodo remoto diferente, el método se delega desde el servidor
de administración local al servidor de administración remoto.
Los recursos están modelados en un tipo de objeto jerárquico para relacionarlo con otros objetos. Otros tipos de objetos representan entidades como
un grupo de servidores. Objetos relacionados heredan métodos de los objetos
en la jerarquía de árbol.
Pueden copiarse ciertos objetos en el dominio administrativo, como servidores de aplicaciones, pueden estar copiados (modelados) para crear réplicas
(clones), para realizar funciones idénticas al objeto del cual ellos son réplica.
Esto le permite al administrador reproducir la funcionalidad del servidor a
través de múltiples nodos, mejorando la disponibilidad y eficacia. Después
de clonar un recurso, modificando el modelo, automáticamente propaga los
mismos cambios a todos los clones. Se puede administrar varias copias de un
servidor u otro recurso de forma eficaz mediante su modelo de administración.
Los recursos que pueden ser clonados incluyen lo siguiente:
• Servidores de Aplicaciones.
• Contenedores EJB.
• Beans Empresariales.
• Servlets.
• Partes de un Servlet.
• Aplicaciones Web.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
7.5.1
183
Herramientas de Administración
LaConsolaAdministrativadeWebSphere es la interfase administrativa del WebSphere Application Server Advanced Edition. Puede usarse para una variedad
de tareas administrativas, desde configuración de recursos y establecimiento de políticas de seguridad, hasta el inicio de los servidores y despliegue de
beans y hasta la identificación y respuesta a las fallas del sistema y modelos
de monitoreo.
Las tareas soportadas por la Consola Administrativa de WebSphere se clasifican en las siguientes categorías: configuración, funcionamiento, seguridad,
localización de problemas, rendimiento, y almacenamiento de los datos.
La Consola Administrativa de WebSphere proporciona una vista jerárquica
centralizada de los recursos en un dominio administrativo, de las guías para
realizar operaciones administrativas, las formas de ver y modificar los atributos del recurso, una facilidad de browser central para los archivos JAR, una
ventana de mensajes para supervisar eventos críticos, y una pantalla de ayuda.
La Consola Administrativa de WebSphere modifica la información en la
central de depósito en respuesta a las órdenes de los usuarios y refleja cualquier
cambio en la configuración y estado del dominio administrativo.
7.6
Arquitectura de WebSphere Application Server
En este apartado se analizan los componentes dentro de WebSphere Application Server, tal como el servidor de aplicaciones, el contenedor Web, el
contenedor EJB, y los componentes de la arquitectura J2EE.
La figura 7.6 de la página 184 muestra la arquitectura de WebSphere Application Server, Advanced Edition y sus componentes.
7.6.1
Servidor de Aplicaciones
El servidor de aplicaciones colabora con el servidor Web para regresar las
respuestas correspondientes a los requerimientos de los clientes. El código de
la aplicación incluye servlets, JSPs, EJBs, y sus clases soportadas ejecutando
en un servidor de aplicaciones.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
184
Figura 7.6: Arquitectura de WebSphere Application Server Advanced Edition.
Siguiendo con los componentes de la arquitectura J2EE, los servlets y JSPs
se ejecutan en un contenedor Web, y EJBs se ejecuta en un contenedor EJB.
En WebSphere Advanced Edition se pueden definir servidores de aplicaciones múltiples, cada uno ejecutándose en su propia JVM (Máquina Virtual de
Java), como así también el servidor administrativo.
Default Server (Servidor Predefinido)
Un servidor predefinido de aplicaciones es comúnmente llamado “Default Server”, configurado durante la instalación predefinida de WebSphere Application
Server. El Servidor predefinido, como cualquier otro servidor de aplicaciones
se ejecuta en el contenedor Web y en el contenedor EJB.
7.6.2
HTTP Server y Plug-in
El WebSphere Application Server trabaja con un servidor de HTTP, o servidor
Web, manipula peticiones dinámicas, como servlets, de las aplicaciones Web.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
185
El servidor de HTTP y el servidor de la aplicación, se comunican usando
el WebSphere HTTP plug-in para el servidor de HTTP.
El HTTP plug-in aprovecha la configuración de archivo de fácil lectura
de XML, para determinar si una petición debe ser manejada por el servidor
Web o por el servidor de aplicaciones. Usa el protocolo de HTTP normal para
comunicarse con el servidor de aplicaciones. También puede configurarse para
usar HTTPS seguro, si es preciso.
El HTTP plug-in está disponible para los servidores Web más conocidos,
incluso el Servidor HTTP de IBM, Apache, Microsoft IIS, y iPlanet de Netscape.
7.6.3
Embedded HTTP Server (Servidor HTTP Incluído)
Un rasgo bueno de WebSphere es el servidor de HTTP incluido dentro del
servidor de aplicaciones. Este servidor Web es muy útil para propósitos de
prueba o desarrollo pero no debe usarse en ambientes de producción. Por
razones de performance y seguridad, se debe usar un servidor Web y plug-in
HTTP para el servidor Web en un ambiente de producción.
7.6.4
Virtual Hosts (Hosts Virtuales)
Un host virtual es una configuración que permite a una sola máquina host
aparentar ser múltiples máquinas hosts. Permite que una sola máquina física
configure y administre independientemente varias aplicaciones administradas.
No está asociado a un nodo particular (máquina). Es una configuración, diferente de un “objeto vivo”, indicando que puede crearse, pero no arrancarse o
detenerse.
Cada host virtual tiene un nombre lógico y una lista de uno o más seudónimos de DNS por los cuales es conocido. Un seudónimo de DNS es el nombre
TCP/IP del host y el número del puerto que use la petición del servlet, por
ejemplo su nombre Host:80.
El WebSphere Application Server proporciona un host virtual predefinido, denominado “el default_host”, con algunos seudónimos comunes, como
el IP de la máquina, nombre corto del host, y el nombre del host completo. El seudónimo comprende la primera parte del camino para el acce-
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
186
so a un recurso, como un servlet. Por ejemplo, localhost:80 en la petición
http://localhost:80/servlet/snoop.
Los hosts virtuales le permiten al administrador aislar y manejar independientemente los múltiples grupos de recursos en la misma máquina física.
7.6.5
Servidor de Grupos
Un servidor de grupos es una facilidad para crear copias adicionales, casi idénticas de un servidor de aplicaciones y sus contenidos. Es una representación
lógica del servidor de aplicaciones.
Un servidor de grupos tiene la misma estructura y atributos que el servidor
de aplicaciones. Puede incluir contenedores Web, contenedores EJB, servlets,
EJBs, y otro recursos.
El servidor de grupos permite ver y modificar cualquier propiedad asociada
con estos objetos lógicos. Pero el servidor de grupos no está asociado con
ningún nodo físico en particular, ningún servidor de grupos corresponde a
ningún proceso real de servidor ejecutando en ningún nodo.
Una vez creado un servidor de grupos, se puede crear clones de ese servidor
de tal manera que los servidores de grupos también ayuden en la administración de los clones. Por ejemplo, cambiando el servidor de grupos cambiarán
todos los clones y arrancando un servidor de grupos arrancarán todos los clones.
7.6.6
Clones
Clonar es el proceso de crear un servidor de grupos basado en uno existente.
Los clones son en todos los sentidos idénticos al servidor de grupos del que
fueron creados. Los clones creados a partir de diferentes servidores de grupos,
representan los servidores de aplicaciones que se procesan en los nodos físicos.
Los clones del servidor de aplicaciones pueden estar contenidos en una sola
máquina, con lo cual se puede escalar verticalmente o pueden distribuirse en
diferentes máquinas permitiendo escalar horizontalmente.
Pueden usarse clones para la administración del workload, con lo cual un
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
187
requerimiento de un recurso del servidor puede ser manejado por cualquiera
de los clones del servidor.
Modificando el servidor de grupos automáticamente propaga los cambios a
todos los clones cuando ellos se reinician. Si un clon se modifica directamente,
no es idéntico a su servidor de grupos. Sin embargo, continúa siendo parte de
él a menos que sea desvinculado del servidor de grupos.
7.6.7
Contenedor Web
El contenedor Web de WebSphere procesa servlets, archivos JSP. Los servlets
pre-J2EE podrían ejecutarse en un motor de servlet. Cada contenedor Web
contiene automáticamente a un solo administrador de sesiones.
Al manejar servlets, el contenedor Web crea un objeto de requerimiento y
un objeto de respuesta invocando un método de servicio del servlet. El contenedor Web invoca al método destroy () del servlet cuando asigna y descarga
el servlet, después de que el JVM realiza la recolección de basura.
El contenedor Web proporciona el PageListServlet para llamar a Java Server Page (JSP) por su nombre. El PageListServlet utiliza la información de
configuración de JSP nombrando a un Uniform Resource Identifier: Identificador Uniforme de Recurso (URI), este URI especifica un archivo JSP en el
módulo Web.
La configuración del contenedor Web proporciona información sobre los
componentes del servidor de aplicaciones que manejan las peticiones servlet
hechas por el servidor Web. El administrador específico del contenedor Web
incluye las siguientes propiedades:
• Nombre del servidor de aplicaciones donde se ejecutan los contenedores
Web.
• Número y tipo de conexiones entre el servidor Web y el contenedor Web.
• Dispositivo para la conexión externa del contenedor Web.
La Consola Administrativa de WebSphere o la consola administrativa Web
se pueden utilizar para revisar las configuraciones del contenedor Web. Cada
runtime del servidor de aplicaciones tiene un contenedor Web lógico que se
puede modificar pero no se puede crear o eliminar.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
188
Módulo Web
Un módulo Web representa una aplicación Web. Se usa para agrupar servlets
y archivos JSP, así como el contenido estático de las páginas HTML, en una
sola unidad.
Los módulos Web se guardan en documentos de archivos Web o en archivos
WAR (.war), como son los documentos de archivos standards de JSP.
Un módulo Web contiene uno o más servlets, archivos de JSP entre otros.
También contiene un descriptor de despliegue que declara el contenido del
módulo, guardado en un archivo de XML, llamado Web.xml.
El descriptor de despliegue contiene información sobre la estructura y dependencias de los componentes Web en el módulo y describe cómo estos serán
usados en el runtime.
Un modulo Web puede utilizarse como una aplicación stand-alone, o como
una combinación con otros módulos (otros módulos Web, módulos EJB, o
ambos) para crear una aplicación J2EE y se instala y corre en un Contenedor
Web.
7.6.8
EJB Container (Contenedor EJB)
El contenedor EJB porciona todos los servicios del runtime necesarios para
desplegar y manejar los EJBs. Es un proceso del servidor que maneja las
peticiones para los beans de sesión y beans de entidad.
Los beans empresariales (dentro de los módulos de EJB) se instalan en el
servidor de aplicaciones pero no se comunican directamente con el servidor;
en cambio, un contenedor EJB proporciona una interfaz entre el EJB y el
servidor. Juntos, el contenedor y el servidor proporcionan el ambiente de
runtime para el bean.
El contenedor proporciona muchos servicios de bajo nivel, incluyendo threading ( manejo de hilos) y soporte de transacción. Desde el punto de vista
administrativo, el contenedor maneja el almacenamiento y recuperación de los
datos para los beans contenidos. Un contenedor puede soportar más de un
archivo EJB JAR.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
189
Figura 7.7: Modelo administrativo de WebSphere.
Módulo de EJB
Un módulo de EJB se usa para configurar uno o más beans empresariales en
una sola unidad desplegable. Un módulo de EJB se guarda en un archivo
estándar de Java (JAR), contiene uno o más beans empresariales desplegables
y un descriptor de almacenamiento desplegable en un archivo de XML.
7.6.9
El Modelo Administrativo WebSphere
En la figura 7.9 de la página 194 se puede apreciar el modelo administrativo
de WebSphere.
Un dominio administrativo es un juego de uno o más nodos que comparten
un depósito administrativo en la forma de una base de datos relacional. Un
dominio administrativo es el espacio lógico que contiene las configuraciones
para varios objetos en el ambiente de WebSphere.
Un nodo es una máquina física que ejecuta un servidor de aplicaciones y
un servidor administrativo.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
190
Cada servidor administrativo en el dominio guarda sus datos administrativos en una memoria compartida.
El usuario de interfase administrativa, fuera del dominio administrativo,
se comunica con los servidores administrativos que usan IIOP (completar) o
HTTP. WebSphere Advanced Edition usa la consola administrativa de Java e
IIOP en tanto que WebSphere Advanced Edition Single Server usa la consola
administrativa de HTTP Web.
Los recursos de WebSphere en un nodo, están representados como recursos
administrativos en el dominio administrativo de WebSphere.
7.6.10
Servidor Administrativo
El servidor administrativo es el sistema de administración de runtime, es un
componente de WebSphere. Es responsable de la administración del runtime,
seguridad, coordinación de la transacción, y dirección del workload. En la
mayoría de los casos, el servidor administrativo corre en todos los nodos en un
dominio administrativo WebSphere y controla la interacción entre cada nodo
y el proceso del servidor de aplicaciones en el dominio.
El servidor administrativo de WebSphere proporciona los administradores
con una sola vista del sistema de aplicaciones y recursos, como JSPs, servlets,
y EJBs, que podrían desplegarse por las múltiples plataformas en un ambiente
distribuido.
Administrar recursos en una máquina remota es tan fácil como administrarlos en una máquina local.
7.6.11
Almacenamiento Administrativo
WebSphere guarda toda la información de configuración del runtime para un
dominio en un solo almacén persistente. Esa base de datos se nombra por
defecto WAS. Toda la administración tienen lugar a través de la manipulación
de los objetos en el almacenamiento administrativo.
Los lugares de depósito pueden almacenarse en DB2, Oracle, Informix,
Servidor MS SQL, o Sybase.
En el Server Edition este depósito de datos se almacena en una configura-
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
191
Figura 7.8: Interfases administrativas.
ción de archivo XML.
En el diagrama se muestra un solo nodo que ejecuta todos los procesos,
y esto es común en ambientes pequeños de producción. Es completamente
razonable configurar la base de datos en un servidor remoto, y en ambientes
de producción se recomienda que sea usado de ese modo.
7.6.12
Interfases Administrativas
El Servidor Administrativo de WebSphere proporciona los servicios usados
para el control de recursos y el desempeño de las tareas en la base de datos
administrativa. Supervisa y configura recursos administrativos así como detener y arrancar los servidores, lo cual es facilitado a través de cuatro interfases,
como se muestra en la figura 7.8 de la página 192.
Las dos interfases, gráfica y líneas de comando se complementan bastante
bien entre ellas. Se pueden usar las interfases gráficas interactivamente administrando el ambiente de WebSphere. Se puede usar las herramientas de líneas
de comando para configuración automática.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
192
Consola Administrativa de Java
Normalmente conocida como la consola administrativa de WebSphere o simplemente como “admin console”, esta interfase gráfica del usuario se usa principalmente para la administración del dominio administrativo WebSphere. Esta
soporta un amplio rango de actividades administrativas de WebSphere Advanced Edition. La consola administrativa puede ejecutarse en uno de los nodos,
en los que el servidor administrativo está corriendo, o puede invocarse en un
nodo remoto que sea asistente de un servidor administrativo.
En Windows se accede a la consola administrativa pulsando el botón Start
> Progams > IBM WebSphere > Application Server > Administrator’s Console. En sistemas UNIX se invoca el script de adminclient.sh encontrada en
<WAS_HOME>/bin para habilitar la consola administrativa. Por defecto la
consola administrativa conecta al servidor administrativo vía puerto 900.
La Consola Administrativa Web
La consola administrativa Web es como un editor de configuración que corre
en un Web browser.
Proporciona la oportunidad de trabajar con WebSphere Application Server
Advanced Edition Single Server de configuración de Servidor en código XML.
Esta sencilla GUI basada en Web está disponible solo en WebSphere AEs.
La consola administrativa Web, puede ser activada en la máquina local
tecleando el URL siguiente en un Web-Browser: http://localhost:9090/admin.
La configuración que se carga por defecto está contenido en el servidorcfg.xml, que se encuentra en el <WAS_HOME>/config directory. Una configuración diferente de archivo puede cargarse en la Web una vez que la consola
administrativa está abierta en el browser.
Sin embargo, cualquier otro archivo de la configuración escogido puede
pasarse como un parámetro en el browser URL para que se cargue en startup.
El browser URL debe ser el siguiente:
http://localhost:9091/admin/edit?configFile=C:/temp/foo.xml
Esto cargará foo.xml del directorio C:/temp.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
193
WebSphere Control Program (El Control de Programa de WebSphere)
El WeSphere Control Program es una herramienta de líneas de comando administrativa que está disponible en la Edición Avanzada. También opera en
modo interactivo. Se puede usar el WebSphere Control Program para administrar recursos del dominio tal como definir, configurar, manejar, importar y
exportar configuraciones, y ejecutar diagnósticos de operaciones. Está basado
en TCL.
TCL simboliza el Tool Command Language. Es un recurso libre y hay
también una versión de Java de TCL llamada Java Control Language (JACL).
El lenguaje TCL tiene una sintaxis simple y programable, y puede usarse en
modo stand-alone o en aplicaciones embebidas.
TCL es extensible y las extensiones TCL de WebSphere Control Program,
proveen un grupo de comandos para la manipulación de objetos WebSphere.
XMLConfig
XMLConfig es otra herramienta administrativa de líneas de comando disponible con WebSphere Advanced Edition. XMLConfig ofrece al administrador
de WebSphere la posibilidad de importar y exportar (exportación total o parcial) la configuración de datos en el almacenamiento administrativo. Se puede
usar esta herramienta para hacer múltiples cambios al repositorio de administración sin tener que repetir manualmente los cambios usando la consola
administrativa. También se lo puede usar para generar un nuevo plug-in de
configuración de archivos con la nueva opción generatePluginCfg.
XMLConfig no es una herramienta interactiva y no puede usarse para
recuperar información de estado de WebSphere.
DrAdmin
La herramienta de comando DrAdmin está disponible en todas las ediciones
de WebSphere Application Server y se usa principalmente para detectar errores. Se localiza en el <WAS_HOME>/bin directory y puede usarse para
diagnosticar problemas cuando otras herramientas fallan.
CAPÍTULO 7. WEBSPHERE APPLICATION SERVER
194
Figura 7.9: Modelo de administración.
7.6.13
Referencia Rápida para la Administración
El modelo administrativo para las Ediciones Avanzadas y Normales se resume
en la figura 7.9 de la página 194.
Como se ha mostrado anteriormente, y en las vistas del árbol de la consola administrativa y otras herramientas administrativas gráficas, el dominio
administrativo de WebSphere está compuesto por varios tipos de recursos,
organizados en una jerarquía de contenidos relacionados.
7.6.14
Discusión
Los nodos administrativos contienen uno o más servidores de aplicación, y
varios recursos que transcienden los servidores de aplicaciones (tales como
aquellos relacionados al soporte JDBC),
o están separados de los servidores de aplicación (como servidores genéricos). Los plug-ins de WebSphere para los servidores Web soportados también
requieren administración.
Finalmente, pueden establecerse grupos de servidores lógicos para distribuir la carga de trabajo entre múltiples servidores de aplicaciones clonados.
Una aplicación empresarial consiste en módulos EJB, módulos Web, y
clientes de la aplicación. Puede residir en cualquier servidor de aplicaciones.
Una aplicación instalada en múltiples servidores de aplicaciones puede estar
ejecutándose en algunos servidores, pero detenido en otros. Debido a la posible
mezcla de estados de sus instancias, no es significante decir si una aplicación
(como la colección de todas sus instancias) está corriendo o se detuvo. Por
consiguiente, una aplicación empresarial es una entidad estática.
Por el contrario, el EJB, la Web, y los módulos de clientes de aplicaciones que comprenden cada aplicación empresarial son verdaderamente objetos
activos, cada uno de los cuales tiene un estado válido.
Un grupo de servidores es una entidad estática que consiste en uno o más
clones. Normalmente, algunos clones están corriendo mientras otros no. Por
ende, no es significativo asignar un estado al grupo de servidores global.
7.6.15
¿Qué son los Recursos?
El término recurso se usa para describir un juego lógico de propiedades que
puede ser administrado como soporte de sesión que usa el servicio de Administración de Sesión. El rango de los recursos se extiende desde objetos complejos,
que pueden arrancarse y pueden detenerse, como servidores de aplicaciones,
hasta simples ambientes de grupos, como las propiedades de configuración
para el soporte de transacción.
Por ejemplo, un servidor de aplicaciones contiene varios servicios. El servidor de aplicaciones es representado en la vista del árbol de la consola administrativa, no así los servicios individuales. Cada servicio tiene un juego de
propiedades que se pueden configurar.
Capítulo 8
Descripción de la Aplicación
8.1
Descripción General
El presente trabajo se basa en el estudio de software de base que permite el
desarrollo de aplicaciones Web multiplataforma con acceso a base de datos.
Consiste en el desarrollo de una aplicación Web referente a la autoevaluación
para alumnos de una cátedra de Sistemas Operativos de nivel universitario.
El Objetivo es realizar una aplicación Web multiplataforma desarrollada
en Java, en la cual el usuario pueda contar con un medio para autoevaluar su
nivel de conocimientos con respecto a la disciplina antes mecionada, a través de
la red, brindando de esta manera mayor rapidez y eficiencia en el seguimiento
de la misma.
En la presente implementación el sistema de “Autoevaluación” correrá en
la plataforma Windows mediante el uso de software multiplataforma.
El sistema de autoevaluación mencionado, permite registrar y evaluar al
alumno de manera efectiva. La autoevaluación facilita la registración y organización de la información, transformándose en una base de consulta para la
cátedra. De ésta manera los profesores podrán ver reflejados el nivel de conocimiento de los alumnos, y así reducir los tiempos de respuesta con respecto a
las evaluaciones y la consulta de los alumnos en algún tema específico.
La aplicación también posee un enlace hacia la página principal de la asignatura, para cualquier duda o consulta de los alumnos y/o profesores.
196
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
197
En la figura 8.1 de la página 199 se puede observar la página principal del
Sistema de Autoevaluación.
8.1.1
Módulos
El sistema consiste básicamente en cinco módulos bien definidos:
1. Ayudas.
2. Evaluación.
3. Alumnos.
4. Profesores.
5. Consultas.
Ayudas
El módulo de Ayudas se divide en:
• Ayuda para el Alumno: Contiene información acerca del uso por parte
del alumno, del sistema en cuestión. Información sobre en qué consiste
la evaluación y de cómo considerar los resultados. La figura 8.2 de la
página 200 muestra la ventana principal de Ayuda para el Alumno.
• Ayuda para el Profesor : Contiene la información necesaria para la realización de operaciones concernientes al manejo de las preguntas y respuestas que se utilizan en los cuestionarios de la evaluación. También
se comentan las distintas consultas que tiene la posibilidad de hacer el
profesor a la hora de sacar conclusiones. Pueden ser, agregar preguntas,
modificar preguntas o eliminarlas, tanto preguntas como respuestas. La
figura 8.3 de la página 200 muestra la ventana principal de Ayuda para
el Profesor.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.1: Página principal de la aplicación.
198
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.2: Ayuda para el Alumno.
Figura 8.3: Ayuda para el Profesor.
199
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
200
Evaluación
El módulo de evaluación está destinado al uso por parte de los alumnos. El
mismo contiene las opciones necesarias para que el alumno pueda elegir el tema
en el que desea evaluarse y luego, realizar la misma acerca del tema elegido,
mediante un cuestionario de 10 preguntas, con cuatro posibles opciones como
respuestas, de las cuales sólo una es la correcta.
Además se le mostrará la nota obtenida en esa evaluación, dándole la
opción de salir o de seguir evaluándose.
El módulo se divide en:
• Elegir Tema: Contiene la opción de elegir el tema en el cual el alumno
desea evaluarse. Así el alumno ya registrado en el sistema ingresa al
cuestionario para autoevaluarse. El alumno puede hacerlo en algún tema
pendiente o simplemente en el que desee. La figura 8.4 de la página 202
muestra la ventana del Cuestionario.
• Cuestionario: Contiene el cuestionario en sí del tema elegido, con 10
preguntas, cada una de ellas con cuatro opciones. La figura 8.5 de la
página 203 muestra la ventana del cuestionario, en este caso elegido el
tema 1 de la cátedra en cuestión.
• Resultados: Consiste en proporcionar al alumno la nota correspondiente
a una determinada evaluación, de un tema específico, dándole la oportunidad de seguir evaluándose o de salir de la aplicación. La figura 8.32
de la página 224 muestra la ventana de Resultados de una evaluación de
un tema específico.
• Seguir evaluándose: Consiste en que si el alumno decide seguir evaluándose se le vuelve a mostrar la página donde puede elegir cualquier tema
para evaluarse, teniendo la oportunidad de volver a evaluarse en el tema
anterior para mejorar su nota (sólo se le permite hacerlo hasta tres veces
en un mismo tema), con la diferencia que se le dará la opción para que el
alumno pueda ir controlando las notas obtendias hasta el momento y en
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.4: Elegir tema.
201
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.5: Cuestionario ejemplo tema 1.
202
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
203
Figura 8.6: Resultado de la evaluación de un tema ejemplo.
los temas ya evaluados. La figura 8.7 de la página 205 muestra la ventana donde vuelve a elegir tema pero con la opción de ver los resultados
hasta el momento. Luego se muestran los resultados según la figura 8.8
de la página 206.
Alumnos
El módulo de Alumnos contiene las opciones necesarias para el tratamiento
específico de cada alumno, ya sea registrado en el sistema o no.
Con respecto al tratamiento de un alumno en el sistema, se divide en:
• Identificación del Alumno: Consiste en una página donde el alumno
debe ingresar su libreta universitaria para que el sistema pueda verificar
si existe o no. En la figura 8.9 de la página 207 se muestra la ventana
correspondiente.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
204
Figura 8.7: Página donde elige el tema con la opción de ver Resultados.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.8: Resultados obtenidos hasta el momento.
205
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
206
Figura 8.9: Página de ingreso del alumno al sistema, mediante libreta universitaria.
Alta Alumno: Permite dar de alta un nuevo alumno y registrar los diferentes datos personales que le corresponden. Se accede a esta página mediante
el ingreso previo de la libreta universitaria y luego de la opción aceptar. La
figura 8.10 de la página 208 muestra la ventana correspondiente.
• Ingreso del Alumno: Consiste en que un vez validado el número de libreta
universitaria previamente ingresado, se le permite acceder al sistema,
sólamente ingresando una clave. La figura 8.11 de la página 208 muestra
la ventana correspondiente.
Profesores
Este módulo está destinado al tratamiento de las inquietudes del profesor hacia
el alumno o hacia los cuestionarios que formarán parte de la autoevaluación
para los alumnos, a su vez también, podrá obtener información sobre estadísticas relativas a la información obtenida por el sistema, mediante distintas
consultas. En la figura 8.12 de la página 209 se puede observar la página
principal correspondiente al Profesor.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.10: Página donde el alumno se registra en el sistema.
Figura 8.11: Página donde el alumno, ingresa mediante la clave.
207
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
208
Figura 8.12: Página principal del Profesor.
Con respecto al tratamiento de las actividades del profesor dentro del sistema, primero el profesor debe elegir el tema con el cual desea trabajar. En
la figura 8.13 de la página 210 se puede observar la página correspondiente a
la elección del profesor donde se le muestra una ventana con todos los temas
correspondientes a la asignatura.
Luego el profesor tiene las siguientes opciones para trabajar con un tema
específico:
• Alta: Permite agregar una pregunta a la vez, con sus respectivas respuestas opcionales, también se debe indicar cuál es la respuesta correcta.
En la figura 8.15 de la página 211 se puede observar la ventana correspondiente al ingreso de la pregunta, las respuestas opcionales y la indicación de
cuál es la respuesta correcta. Mediante la opción Aceptar, se carga a la base
de datos.
• Modificación: Permite seleccionar la pregunta a modificar y luego da la
opción de modificar la pregunta, las respuestas, o cambiar cuál respuesta
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
209
Figura 8.13: Página donde el Profesor elige el tema con el que trabajará-1.
Figura 8.14: Página donde el Profesor elige el tema con el que trabajará-2.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
210
Figura 8.15: Página donde se agrega la pregunta y sus respuestas.
es la correcta. En la figura 8.16 de la página 212 se puede observar la
ventana correspondiente a la elección de la pregunta y en la figura 8.17
de la página 212 se puede observar la ventana correspondiente donde se
puede modificar la pregunta y sus respuestas.
• Baja: Permite seleccionar la pregunta a eliminar y luego da la opción
de confirmar la eliminación de esa pregunta. Sólo permite eliminar una
pregunta a la vez, con todas sus respuestas. En la figura 8.18 de la
página 213 se puede observar la ventana correspondiente a la selección
de la pregunta a eliminar y luego en la figura 8.19 de la página 213
se puede observar la ventana correspondiente a la confirmación de la
eliminación de la pregunta seleccionada.
Consultas
Este módulo está destinado al tratamiento de las consultas por parte de los
profesores, ya sea para un simple control de alumnos, de preguntas o de estadísticas.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
211
Figura 8.16: Página donde se elige la pregunta a modificar.
Figura 8.17: Página donde puede modificar la pregunta y sus respuestas.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
212
Figura 8.18: Página donde se elige la pregunta a eliminar.
Figura 8.19: Página donde se pide una confirmación de la eliminación a realizar.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
213
Figura 8.20: Página principal de las consultas.
En la figura 8.20 de la página 214 se puede observar la ventana principal
correspondiente a las consultas y sus opciones.
Se divide en tres opciones generales que se pueden consultar:
• Resumen general: Donde se puede apreciar qué cantidad de alumnos
han ingresado y una estadística de cuántos alumnos han obtenido determinadas notas, y cuántos alumnos han completado la evaluación de la
asignatura. En la figura 8.21 de la página 215 se puede observar la ventana correspondiente al resumen general, donde en este caso se muestra
cúantos alumnos obtuvieron determinada nota.
• Lista de alumnos: Contiene distintas opciones que le permiten al profesor ver los alumnos que se han registrado en el sistema y sus datos
personales. En la figura 8.22 de la página 215 se puede observar la ventana correspondiente a la lista de alumnos registrados en el sistema y
sus datos personales.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.21: Resumen general sobre notas obtenidas.
Figura 8.22: Lista de alumnos registrados.
214
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
215
Figura 8.23: Página donde se elige el tema a consultar.
• Preguntas guardadas: Primero se debe elegir el tema sobre el cual se va
a consultar. Así se mostrará una ventana donde se podrán ver todas
las preguntas y sus correspondientes respuestas guardadas en la base de
datos del sistema, como así también cuál es la correcta. En la figura
8.23 de la página 216 se puede observar la ventana correspondiente a
las preguntas existentes en la base de datos con la opción de ver sus
respectivas respuestas, y cuál de ellas es la correcta.
8.2
Estructuras de Datos Utilizadas
A continuación se mostrarán la estructura utilizada por la aplicación y las
distintas tablas utilizadas, las cuales hacen uso del motor de base de datos
multiplataforma DB2 UDB.
En el gráfico 8.26 de la página 218, se puede observar la estructura completa
utilizada por la aplicación.
Las tablas que la integran son las siguientes:
• Alumno: Contiene la información necesaria referente a los alumnos re-
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.24: Preguntas guardadas con la opción de ver respuestas.
216
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
217
Figura 8.25: Respuestas guardadas de la pregunta elegida. Se muestra la
correcta.
Figura 8.26: Estructura de la base de datos utilizada por la aplicación.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
218
Figura 8.27: Tabla Alumno.
gistrados en el sistema. Está compuesta por los siguientes campos de
datos:
LU: Contiene el número de libreta universitaria del alumno, que el sistema utiliza de
clave.
CLAVE: Contiene el número de clave elegido por el alumno para el ingreso al sistema.
APELLIDO: Contiene el apellido del alumno.
NOMBRE: Contiene el nombre del alumno.
MAIL: Contiene la dirección de correo electrónico del alumno.
En la tabla 8.27 de la página 219 se puede observar la estructura, con datos
de ejemplo.
• Evaluación: Contiene la información referente a las evaluaciones reali-
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
219
Figura 8.28: Tabla Evaluación.
zadas en el sistema. Está compuesta por los siguientes campos de datos:
CODEVAL: Contiene un número autogenerado para las evaluaciones, que es utilizado
de clave por el sistema.
LU: Contiene el número de libreta universitaria del alumno.
FECHAHORA: Contiene la fecha y hora en que se realizó la autoevaluación.
NOTA: Contiene la nota obtendia por el alumno en dicha evaluación.
TEMA: Contiene el tema en el que el alumno se autoevalúo.
En la tabla 8.28 de la página 220 se puede observar la estructura, con datos
de ejemplo.
• Pregunta: Contiene la información referente a las distintas preguntas a
utilizar en los cuestionarios. Está compuesta por los siguientes campos
de datos:
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
220
Figura 8.29: Tabla Preguntas.
CODPREG: Contiene un número autogenerado para las preguntas, que es utilizado de
clave por el sistema.
CODTEMA: Contiene el número de tema al que corresponde la pregunta.
DESC_PREG: Contiene la descripción de la pregunta.
En la tabla 8.29 de la página 221 se puede observar la estructura, con datos
de ejemplo.
• Profesor : Contiene la información necesaria referente a los profesores
que utilizarán la aplicación. Está compuesta por los siguientes campos
de datos:
USUARIO: Contiene el nombre del usuario, que en este caso es el profesor.
CLAVE: Contiene el número de clave elegido por el profesor para el ingreso al sistema.
COD_PROF: Contiene un código autogenerado para el profesor, que el sistema utiliza
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
221
Figura 8.30: Tabla Profesor.
de clave.
En la tabla 8.30 de la página 222 se puede observar la estructura, con datos
de ejemplo.
• Respuesta: Contiene la información referente a las respuestas opcionales de cada pregunta que podría utilizarse en los cuestionarios. Está
compuesta por los siguientes campos de datos:
CODRESP: Contiene un número autogenerado para las distintas respuestas, que el sistema utiliza de clave.
CODPREG: Contiene el número correspondiente a la pregunta a la cual pertenece la
respuesta.
DESC_RESP: Contiene la descripción de la respuesta.
CORRECTA: Contiene la información sobre si la respuesta es correcta o no.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
222
Figura 8.31: Tabla Respuesta.
En la tabla 8.31 de la página 223 se puede observar la estructura, con datos
de ejemplo.
• Resultado: Contiene la información referente a los resultados obtenidos
por cada alumno durante la autoevaluación. Está compuesta por los
siguientes campos de datos:
CODRES: Contiene un número autogenerado para los resultados obtenidos por los alumnos, que utiliza de clave el sistema.
LU: Contiene el número de libreta universitaria del alumno.
FECHA: Contiene la fecha en que se realizó la autoevaluación completa, inculyendo la
cantidad de temas solicitados por la cátedra.
CANT_TEMA: Contiene la cantidad de temas en los que el alumno se evalúo.
PROMEDIO: Contiene el promedio total obtenido por el alumnoal autoevaluarse de
manera completa en la asignatura.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
223
Figura 8.32: Tabla Resultado.
En la tabla 8.32 de la página 224 se puede observar la estructura, con datos
de ejemplo.
• Tema: Contiene la información referente a los distintos temas que conforman la asignatura de Sistemas Operativos. Está compuesta por los
siguientes campos de datos:
CODTEMA: Contiene el número de tema que le corresponde dentro de la asignatura.
DESC_PREG: Contiene la descripción de el tema.
En la tabla 8.33 de la página 225 se puede observar la estructura, con datos
de ejemplo.
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
Figura 8.33: Tabla Tema.
224
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
8.3
225
Ejemplos de Código Fuente Utilizados
8.3.1
Servlets
A continuación se transcribe un ejemplo de Servlet utilizado por la aplicación,
el mismo realiza una operación de alta para el alumno.
package alumno;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class AltaAlumno extends HttpServlet {
Connection conn;
/*
* En el metodo Init se realizará la conexión a la BD por lo que las peticiones no
producirán ningun retardo de conexión
Tutorial de Servlets
*/
public void init(ServletConfig cf) throws ServletException {
super.init(cf);
// Se carga el driver a continuación
try {
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);
}catch (ClassNotFoundException e) {
System.out.println(”Imposible encontrar el driver:” +
e.getMessage());
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
}
//Se intenta realizar la conexión a la base de datos
try {
conn = DriverManager.getConnection(”jdbc:odbc:EVALUACION”);
}catch (SQLException e) {
System.out.println(”Imposible crear conexion:” + e.getMessage());
}
}// fin init
/*
* En el metodo destroy() una vez que el servlet se esta apagando,
desconectaremos de la base de datos
*/
public void destroy() {
super.destroy();
//Llamada al destroy de la superclase
try {
conn.close();
}catch (SQLException e){
System.out.println(”Imposible cerrar conexion:” + e.getMessage());
}
} //fin destroy()
/*
*Redefinimos el metodo doPost, las peticiones se realizaran por ese metodo
*/
226
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
227
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException, IOException {
String lu;
String nombre;
String apellido;
String email;
String clave;
//Obtenemos los valores de los parámetros
lu = request.getParameter(”lu”);
nombre = request.getParameter(”nombre”);
apellido = request.getParameter(”apellido”);
email = request.getParameter(”email”);
clave = request.getParameter(”clave”);
//Comprobamos que no hay ninguno vacio
//Si es asi enviamos una pagina informando del error y si no
//actualizamos la BD e informamos del éxito de la operación
if (nombre.equals(””)) {
PrintWriter out = response.getWriter();
//Devolvemos una pagina de error si no ingresa el nombre
out.println(”<HTML>”);
out.println(”<HEAD>”);
out.println(”<META http-equiv=Content-Type”);
out.println(” content=text/html; charset=WINDOWS-1252>”);
out.println(”<META name=GENERATOR content=IBM
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
228
WebSphere Studio>”);
out.println(”<TITLE>ERRORLU.html</TITLE>”);
out.println(”</HEAD>”);
out.println(”<BODY background=Imagenes/fondo.gif>”);
out.println(”<BR>”);
out.println(”<P align=center><B><FONT face=Imprint MT Shadow MT
Shadow”);
out.println(”color=#800000 size=5><U>ERROR <BR>”);
out.println(”<BR>”);
out.println(”</U></FONT><FONT face=Imprint MT Shadow
MT= Shadow=”);
out.println(” color=#800000 size=2><U>POR FAVOR INGRESE
SU NOMBRE</U></FONT></B></P>”);
out.println(”<BR>”);
out.println(”<P></P>”);
out.println(”<P><IMG border=0 src=Imagenes/barra.gif width=1005
height=6></P>”);
out.println(”<P align=center><BR>”);
out.println(”<IMG border=0 src=Imagenes/foco.gif width=61 height=65>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<IMG type=button value=go back”);
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
out.println(” onclick=history.back() border=0 src=Imagenes/ATRAS.gif”);
out.println(” width=110 height=40>”);
out.println(”<BR>”);
out.println(”</P>”);
out.println(”</BODY>”);
out.println(”</HTML>”);
out.flush();
out.close();
} else if (apellido.equals(””)) {
PrintWriter out = response.getWriter();
//Devolvemos una pagina de error si no ingresa el apellido
out.println(”<HTML>”);
out.println(”<HEAD>”);
out.println(”<META http-equiv=Content-Type”);
out.println(” content=text/html; charset=WINDOWS-1252>”);
out.println(”<META name=GENERATOR content=IBM
WebSphere Studio>”);
out.println(”<TITLE>ERRORLU.html</TITLE>”);
out.println(”</HEAD>”);
out.println(”<BODY background=Imagenes/fondo.gif>”);
out.println(”<P align=center><B><FONT face=Imprint MT Shadow
MT Shadow”);
out.println(”color=#800000 size=5><U>ERROR <BR>”);
out.println(”<BR>”);
229
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
out.println(”</U></FONT><FONT face=Imprint MT Shadow
MT= Shadow=”);
out.println(” color=#800000 size=2><U>POR FAVOR INGRESE
SU APELLIDO</U></FONT></B></P>”);
out.println(”<BR>”);
out.println(”<P></P>”);
out.println(”<P><IMG border=0 src=Imagenes/barra.gif width=1005
height=6></P>”);
out.println(”<P align=center><BR>”);
out.println(”<IMG border=0 src=Imagenes/foco.gif width=61
height=65>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<IMG type=button value=go back”);
out.println(” onclick=history.back() border=0
src=Imagenes/ATRAS.gif”);
out.println(” width=110 height=40>”);
out.println(”<BR>”);
out.println(”</P>”);
out.println(”</BODY>”);
out.println(”</HTML>”);
out.flush();
230
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
out.close();
} else if (email.equals(””)) {
PrintWriter out = response.getWriter();
//Devolvemos una pagina de error si no ingresa el e-mail
out.println(”<HTML>”);
out.println(”<HEAD>”);
out.println(”<META http-equiv=Content-Type”);
out.println(” content=text/html; charset=WINDOWS-1252>”);
out.println(”<META name=GENERATOR content=IBM
WebSphere Studio>”);
out.println(”<TITLE>ERRORLU.html</TITLE>”);
out.println(”</HEAD>”);
out.println(”<BODY background=Imagenes/fondo.gif>”);
out.println(”<P align=center><B><FONT face=Imprint MT
Shadow MT Shadow”);
out.println(”color=#800000 size=5><U>ERROR <BR>”);
out.println(”<BR>”);
out.println(”</U></FONT><FONT face=Imprint MT Shadow
MT= Shadow=”);
out.println(” color=#800000 size=2><U>POR FAVOR INGRESE
SU E-MAIL</U></FONT></B></P>”);
out.println(”<BR>”);
out.println(”<P></P>”);
out.println(”<P><IMG border=0 src=Imagenes/barra.gif width=1005
231
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
height=6></P>”);
out.println(”<P align=center><BR>”);
out.println(”<IMG border=0 src=Imagenes/foco.gif width=61
height=65>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<IMG type=button value=go back”);
out.println(” onclick=history.back() border=0
src=Imagenes/ATRAS.gif”);
out.println(” width=110 height=40>”);
out.println(”<BR>”);
out.println(”</P>”);
out.println(”</BODY>”);
out.println(”</HTML>”);
out.flush();
out.close();
} else if (clave.equals(””)) {
PrintWriter out = response.getWriter();
//Devolvemos una pagina de error si no ingresa la clave
out.println(”<HTML>”);
out.println(”<HEAD>”);
out.println(”<META http-equiv=Content-Type”);
232
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
out.println(” content=text/html; charset=WINDOWS-1252>”);
out.println(”<META name=GENERATOR content=IBM
WebSphere Studio>”);
out.println(”<TITLE>ERRORLU.html</TITLE>”);
out.println(”</HEAD>”);
out.println(”<BODY background=Imagenes/fondo.gif>”);
out.println(”<P align=center><B><FONT face=Imprint MT Shadow
MT Shadow”);
out.println(”color=#800000 size=5><U>ERROR <BR>”);
out.println(”<BR>”);
out.println(”</U></FONT><FONT face=Imprint MT Shadow
MT= Shadow=”);
out.println(” color=#800000 size=2><U>POR FAVOR INGRESE
SU CLAVE</U></FONT></B></P>”);
out.println(”<BR>”);
out.println(”<P></P>”);
out.println(”<P><IMG border=0 src=Imagenes/barra.gif width=1005
height=6></P>”);
out.println(”<P align=center><BR>”);
out.println(”<IMG border=0 src=Imagenes/foco.gif width=61
height=65>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<BR>”);
233
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
out.println(”<BR>”);
out.println(”<IMG type=button value=go back”);
out.println(” onclick=history.back() border=0
src=Imagenes/ATRAS.gif”);
out.println(” width=110 height=40>”);
out.println(”<BR>”);
out.println(”</P>”);
out.println(”</BODY>”);
out.println(”</HTML>”);
out.flush();
out.close();
} else {// no hay errores*/
try {
Statement stm1 = conn.createStatement();
ResultSet rs1 = stm1.executeQuery(”select * from alumno
where lu= ”+lu+””);
String existe=””;
String nombre2=””;
String apellido2=””;
while (rs1.next()){
existe=rs1.getString(”lu”) ;
nombre2=rs1.getString(”nombre”) ;
apellido2=rs1.getString(”apellido”) ;
}
234
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
if (existe.equals(””)) {
//Creamos una sentencia para la introducción de valores dar de alta al alumno
Statement stm = conn.createStatement();
int altaalumno = stm.executeUpdate(”INSERT INTO alumno
(lu,nombre,apellido,mail,clave) values
(”+lu+”,”’+nombre+”’,”’+apellido+”’,”’+email+”’,”+clave+”)”);
ResultSet rs = stm.executeQuery(”select * from alumno
where lu= ”+lu+””);
PrintWriter out = response.getWriter();
//sentencia para elegir el tema a rendir
out.println(”<HTML>”);
out.println(”<HEAD>”);
out.println(”<META http-equiv=Content-Type”);
out.println(” content=text/html; charset=WINDOWS-1252>”);
out.println(”<META name=GENERATOR content=IBM
WebSphere Studio>”);
out.println(”<TITLE>Temas.html</TITLE>”);
out.println(”</HEAD>”);
while (rs.next()){
out.println(”<BODY background=Imagenes/fondo.gif>
<P align=left><FONT”);
out.println(”color=#800000 face=Imprint MT Shadow size=4>
</FONT><FONT”);
235
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
236
out.println(” color=#800000 face=Imprint MT Shadow size=5>
<B><U><IMG border=0”);
out.println(” src=Imagenes/libros.gif width=95 height=71></U>
</B>     <B>  <U>”+
rs.getString(”nombre”)+” ”+rs.getString(”apellido”)+”</U>
<BR></B></FONT>”);
}
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<P></P>”);
out.println(”<P><IMG border=0 src=Imagenes/barra.gif
width=1005 height=6></P>”);
out.println(”<P align=center><BR>”);
out.println(”<U>POR FAVOR SELECCIONE EL TEMA
EN EL QUE DESEA EVALUARSE.</U></FONT></P>”);
out.println(”<FORM action=Cuestionario method= post>
<INPUT TYPE =hidden name=lu value=”+lu+”><BR><TABLE
align=center border=1>”);
out.println(” <TBODY>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
<INPUT type=”+”submit”+” name=”+”tema1”+” value=”+”
TEMA 1 ”+”></FONT></B></FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
237
INTRODUCCION A LOS SISTEMAS OPERATIVOS</FONT></B>
</FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
<INPUT type=”+”submit”+” name=”+”tema2”+” value=”+”
TEMA 2 ”+”>
</FONT></B></FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
PROCESOS Y ADMINISTRACIÓN DEL PROCESADOR</FONT>
</B></FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
<INPUT type=”+”submit”+” name=”+”tema3”+” value=”+”
TEMA 3 ”+”>
</FONT></B></FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
ADMINISTRACIÓN DE LA MEMORIA</FONT></B></FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
<INPUT type=”+”submit”+” name=”+”tema4”+” value=”+”
TEMA 4 ”+”>
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
238
</FONT></B></FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
SISTEMAS DE ARCHIVOS</FONT></B></FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
<INPUT type=”+”submit”+” name=”+”tema5”+” value=”+”
TEMA 5 ”+”>
</FONT></B></FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
ENTRADA / SALIDA</FONT></B></FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
<INPUT type=”+”submit”+” name=”+”tema6”+” value=”+”
TEMA 6 ”+”>
</FONT></B></FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0
face=Bell MT>BLOQUEOS</FONT></B></FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
<INPUT type=”+”submit”+” name=”+”tema7”+” value=”+”
TEMA 7 ”+”>
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
239
</FONT></B></FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
INTRODUCCIÓN A LOS SISTEMAS DISTRIBUIDOS</FONT></B>
</FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
<INPUT type=”+”submit”+” name=”+”tema8”+” value=”+”
TEMA 8 ”+”>
</FONT></B></FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS</FONT></B>
</FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
<INPUT type=”+”submit”+” name=”+”tema9”+” value=”+”
TEMA 9 ”+”>
</FONT></B></FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS</FONT></B></FONT>
</TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
240
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
<INPUT type=”+”submit”+” name=”+”tema10”+”
value=”+”TEMA 10”+”>
</FONT></B></FONT></TD>”);
out.println(” <TD align=”+”left”+”><FONT size=2><B>
<FONT color=#0000a0 face=Bell MT> PROCESOS Y PROCESADORES
EN SISTEMAS DISTRIBUIDOS</FONT></B></FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><INPUT type=”+”submit”+”
name=”+”tema11”+” value=”+”TEMA 11”+”></FONT></B>
</FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
SISTEMAS DISTRIBUIDOS DE ARCHIVOS</FONT></B></FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><INPUT type=”+”submit”+”
name=”+”tema12”+” value=”+”TEMA 12”+”></FONT></B>
</FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
RENDIMIENTO</FONT></B></FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><INPUT type=”+”submit”+”
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
241
name=”+”tema13”+” value=”+”TEMA 13”+”></FONT></B>
</FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
MODELO ANALÍTICO EN RELACIÓN AL RENDIMIENTO</FONT></B>
</FONT></TD>”);
out.println(” </TR>”);
out.println(” <TR>”);
out.println(” <TD><FONT size=2><INPUT type=”+”submit”+”
name=”+”tema14”+” value=”+”TEMA 14”+”></FONT></B>
</FONT></TD>”);
out.println(” <TD><FONT size=2><B><FONT color=#0000a0 face=Bell MT>
SEGURIDAD EN LOS SISTEMAS OPERATIVOS</FONT></B></FONT>
</TD>”);
out.println(” </TR>”);
out.println(” </TBODY>”);
out.println(”</TABLE>”);
out.println(”</FORM>”);
out.println(”<P><BR>”);
out.println(”</P>”);
out.println(”<DIV align=center>”);
out.println(”<TABLE border=0 width=985 height=67>”);
out.println(” <TBODY>”);
out.println(” <TR>”);
out.println(” <TD align=center><IMG type=button value=go back
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
onclick=history.back()”);
out.println(” border=0 src=Imagenes/ATRAS.gif width=110 height=40>
</TD>”);
out.println(” <TD align=center><A href=AYUDA/AYUDA.html
target=_balnk><IMG”);
out.println(” border=0 src=Imagenes/ayuda.gif width=110 height=40>
</A></TD>”);
out.println(” </TR>”);
out.println(” </TBODY>”);
out.println(”</TABLE>”);
out.println(”</DIV>”);
out.println(”</BODY>”);
out.println(”</HTML>”);
rs.close();
stm.close();
}else {
PrintWriter out = response.getWriter();
//devolvemos un error si el alumno intenta registrarse y ya existe
out.println(”<HTML>”);
out.println(”<HEAD>”);
out.println(”<META http-equiv=Content-Type”);
out.println(” content=text/html; charset=WINDOWS-1252>”);
out.println(”<META name=GENERATOR content=IBM
WebSphere Studio>”);
242
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
out.println(”<TITLE>ERRORLU.html</TITLE>”);
out.println(”</HEAD>”);
out.println(”<BODY background=Imagenes/fondo.gif>”);
out.println(”<P align=center><B><FONT face=Imprint MT
Shadow MT Shadow”);
out.println(” color=#800000 size=5><U>ERROR <BR>”);
out.println(”<BR>”);
out.println(”</U></FONT><FONT face=Imprint MT Shadow
MT= Shadow=”);
out.println(” color=#800000 size=2><FONT face=Imprint MT Shadow
MT= Shadow color=#000040 size=2>”+nombre2+”  
”+apellido2+” </FONT>   - YA SE HA REGISTRADO.</FONT>
</B></P>”);
out.println(”<BR>”);
out.println(”<P></P>”);
out.println(”<P><IMG border=0 src=Imagenes/barra.gif width=1005
height=6></P>”);
out.println(”<P align=center><BR>”);
out.println(”<IMG border=0 src=Imagenes/foco.gif width=61
height=65>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<BR>”);
243
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
out.println(”<IMG type=button value=go back”);
out.println(” onclick=history.back() border=0 src=Imagenes/ATRAS.gif”);
out.println(” width=110 height=40>”);
out.println(”<BR>”);
out.println(”</P>”);
out.println(”</BODY>”);
out.println(”</HTML>”);
}
}catch (Exception e) {
System.out.println(”Error en la actualización”+ e.getMessage());
PrintWriter out = response.getWriter();
//devolvemos un error si ingresa algo incorrecto
out.println(”<HTML>”);
out.println(”<HEAD>”);
out.println(”<META http-equiv=Content-Type”);
out.println(” content=text/html; charset=WINDOWS-1252>”);
out.println(”<META name=GENERATOR content=IBM
WebSphere Studio>”);
out.println(”<TITLE>ERRORLU.html</TITLE>”);
out.println(”</HEAD>”);
out.println(”<BODY background=Imagenes/fondo.gif>”);
out.println(”<P align=center><B><FONT face=Imprint MT
Shadow MT Shadow”);
out.println(” color=#800000 size=5><U>ERROR <BR>”);
244
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
245
out.println(”<BR>”);
out.println(”</U></FONT><FONT face=Imprint MT Shadow
MT= Shadow=”);
out.println(” color=#800000 size=2><U>POR FAVOR VUELVA A
INTENTAR</U></FONT></B></P>”);
out.println(”<BR>”);
out.println(”<P></P>”);
out.println(”<P><IMG border=0 src=Imagenes/barra.gif width=1005
height=6></P>”);
out.println(”<P align=center><BR>”);
out.println(”<IMG border=0 src=Imagenes/foco.gif width=61 height=65>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<BR>”);
out.println(”<IMG type=button value=go back”);
out.println(” onclick=history.back() border=0 src=Imagenes/ATRAS.gif”);
out.println(” width=110 height=40>”);
out.println(”<BR>”);
out.println(”</P>”);
out.println(”</BODY>”);
out.println(”</HTML>”);
}
}
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
246
//fin finally
}//fin else
}//fin doPOst()
//fin servlet
8.3.2
HTML
Acontinuación se transcribe el código HTML, correspondiente a una de las
páginas que componen el sistema. La misma muestra una página donde el
alumno puede elegir el tema en el que desea autoevaluarse.
<HTML>
<HEAD>
<META http-equiv=Content-Type
content=text/html; charset=WINDOWS-1252>
<META name=GENERATOR content=IBM WebSphere Studio>
<TITLE>Temas.html</TITLE>
</HEAD>
<BODY background=../Imagenes/fondo.gif><P align=left><FONT
color=”#800000” face=”Imprint MT Shadow” size=”1”></FONT>
<FONT color=”#800000” face=”Imprint MT Shadow” size=”2”><B><U>
<IMG border=”0” src=”../Imagenes/libros.gif” width=”95” height=”71”>
</U></B>     <B><U>
BIENVENIDO:</U></B></FONT><FONT color=#800000 face=Imprint
MT Shadow size=1><BR>
<BR>
<BR>
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
247
POR FAVOR SELECCIONE EL TEMA EN EL QUE DESEA EVALUARSE....
</FONT></P>
<FORM>
<CENTER>
<TABLE border=”1” width=”501”>
<TBODY>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema1” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
INTRODUCCION A LOS SISTEMAS OPERATIVOS</FONT></B>
</FONT></TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema2” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
PROCESOS Y ADMINISTRACIÓN DEL PROCESADOR</FONT></B>
</FONT></TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
248
<INPUT type=”submit” name=”tema3” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
ADMINISTRACIÓN DE LA MEMORIA</FONT></B></FONT></TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema4” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
SISTEMAS DE ARCHIVOS</FONT></B></FONT></TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema5” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
ENTRADA / SALIDA</FONT></B></FONT></TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema6” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
249
BLOQUEOS </FONT></B></FONT></TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema7” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
INTRODUCCIÓN A LOS SISTEMAS DISTRIBUIDOS</FONT></B>
</FONT></TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema8” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS</FONT></B>
</FONT>
</TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema9” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
250
SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS</FONT></B></FONT>
</TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema10” value=”TEMA”></FONT></B>
</FONT></TD>
<TD align=”left”><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell”
MT=””>PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS
</FONT></B></FONT></TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema11” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
SISTEMAS DISTRIBUIDOS DE ARCHIVOS</FONT></B></FONT></TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema12” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell”
MT=””>RENDIMIENTO</FONT></B></FONT></TD>
CAPÍTULO 8. DESCRIPCIÓN DE LA APLICACIÓN
251
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema13” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
MODELO ANALÍTICO EN RELACIÓN AL RENDIMIENTO</FONT></B>
</FONT></TD>
</TR>
<TR>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
<INPUT type=”submit” name=”tema14” value=”TEMA”></FONT></B>
</FONT></TD>
<TD><FONT size=”1”><B><FONT color=”#0000a0” face=”Bell” MT=””>
SEGURIDAD EN LOS SISTEMAS OPERATIVOS</FONT></B></FONT>
</TD>
</TR>
</TBODY>
</TABLE>
</CENTER>
</FORM>
<P><BR>
</P>
<DIV align=left>
<TABLE border=0 width=985 height=67>
<TBODY>
<TR>
<TD align=center><IMG type=button value=go back
onclick=history.back() border=0 src=../Imagenes/ATRAS.gif width=100
height=43></TD>
<TD align=center><A href=../RESULTADOS/RESULTADOS.html
target=_self></A><A href=../AYUDA/AYUDA.html target=_self></A>
</TD> <TD align=center><A href=../AYUDA/AYUDA.html target=_self>
<IMG border=0 src=../Imagenes/ayuda.gif width=100 height=43></A>
</TD>
</TR>
</TBODY>
</TABLE>
</DIV>
<P align=center><A href=../AYUDA/AYUDA.html target=_self> 
</A><A href=../AYUDA/AYUDA.html target=_self></A></P>
</BODY>
</HTML>
Nota: La totalidad del código desarrollado tanto de los servlets utlizados,
como de las páginas HTML, se encuentran en el DVD adjunto.
Capítulo 9
Conclusiones
9.1
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, que
soportan sistemas distribuidos multiplataforma.
Esto ha resultado de gran utilidad al momento de desarrollar una aplicación con WebSphere Application Developer v.5.0 y DB2 UDB WorkGroup
Server Edition v. 8.1, bajo Windows XP service pack 2, utilizando Java 1.5,
para implementarla en un entorno Windows, ha resultado sumamente sencilla,
rápida y eficiente.
Java nace en un intento de resolver simultaneamente los problemas que
se planteaban los desarrolladores de software por la difusion de arquitecturas
incompatibles, tanto entre las diferentes máquinas como entre los diversos
sistemas operativos y sistemas de ventanas que funcionaban sobre una misma
máquina, incrementando la dificultad de crear aplicaciones distribuidas en la
Red.
El uso de Java se destaca en la Web y también sirve para crear todo tipo
de aplicaciones (locales, Intranet o Internet).
En cuanto a las facilidades en el desarrollo de aplicaciones Java para entornos multiplataforma, se pudo apreciar que WebSphere puede ser usado desde
253
CAPÍTULO 9. CONCLUSIONES
254
la Intranet de una organización y/o desde la Internet, con lo cual el sistema
resulta más eficiente, más flexible y adaptable al cambio y, además, con un
soporte menos complejo.
Con respecto al motor de bases de datos DB2, se debe destacar la escalabilidad, integridad y 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; 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, bibliografia, etc.
Se destaca la gran potencialidad de este conjunto de herramientas para el
desarrollo de aplicaciones de gran porte y alta complejidad, para su acceso
desde las Intranets de las organizaciones o desde la Internet.
Se hace notar además que los profesores a cargo de la cátedra de Sistemas
Operativos de la Facultad, han manifestado su interés en el producto desarrollado, debido a que pudieron observar las facilidades y buen desempeño de la
aplicación y las sencillas interfaces gráficas; también se vieron muy interesados
por la facilidad que brinda el sistema al ser operado completamente desde la
Intranet y/o Internet.
9.2
Líneas Futuras de Acción
Se considera que las principales líneas futuras de acción derivadas del presente
trabajo serían las siguientes:
• Desarrollar un esquema de seguridad más elaborado, incorporando criptografía en la gestión de las claves.
• Desarrollar un manejo de activadores desde la base de datos, para automatizar la obtención de las copias de seguridad, haciendo más eficiente
la aplicación.
• Incorporar mecanismos de gestión de fechas de ingreso de preguntas y
respuestas.
• Incorporar links específicos al sitio web de Sistemas Operativos de la
asignatura, en el contexto de las preguntas y respuestas, para facilitar
la corroboración de las mismas por parte de quienes se han evaluado.
• Incorporar evaluaciones referidas a los trabajos prácticos.
• Incorporar otras metodologías de autoevaluación.
Bibliografía
[1] J. Blanco A. Bernaus. Diseño de Páginas Web con HTML, Javascript y
Vbscript. Inforbooks S. L., España, 1996.
[2] L. Joyanes Aguilar. Fundamentos de Programación - Algoritmos y Estructura de Datos - Segunda Edición. Mc Graw Hill/Interamericana de
España, S.A.U., España, 1996.
[3] L. Joyanes Aguilar. Programación Orientada a Objetos - Segunda Edición. Mc Graw Hill/Interamericana de España, S.A.U., España, 1998.
[4] L. Joyanes Aguilar. Educación e Internet. Santillana, 1999.
[5] 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.
[6] M. Gallo González; M. Galán Martín; C. Álvares López. Entornos Virtuales. Principales Líneas y Grupos de Investigación en JIS2002 IV Jornadas
Informática y Sociedad. La Salle, Barcelona-España, 2002.
[7] L. Joyanes Aguilar; L. Rodríguez Baena; M. Fernández Azuela. Fundamentos de Programación - Libro de Problemas.
Mc Graw Hill/Interamericana de España, S.A.U., España, 1996.
[8] L. Boszörményi. Why Java is not my Favourite First-course Language.
Software - Concepts & Tools, N◦ 19, 141-145, 1998.
[9] G. Brassard; P. Bratley. Fundamentos de Algoritmia. Prentice Hall,
Madrid-España, 1997.
[10] Bart Jacob Carla Sadtler, John Ganci. WebSphere Product Family Overview and Architecture. IBM Press, USA, 2004.
256
BIBLIOGRAFÍA
257
[11] J. H. Kingston; B. Cole. Algorithm and Data Structures. Java Edition.
Addison-Wesley, 1999.
[12] IBM Corporation. IBM DB2 Connect Enterprise Edition para OS/02 y
Windows Guía Rápida de Iniciación.
[13] IBM Corporation. IBM DB2 Universal Database Consulta de Mandatos.
IBM Press, USA, 2000.
[14] IBM Corporation. IBM DB2 Universal Database Consulta de Mensajes.
IBM Press, USA, 2000.
[15] IBM Corporation. IBM DB2 Universal Database para Windows Guía
Rápida de Iniciación Versión 7. IBM Press, USA, 2000.
[16] IBM Corporation. IBM DB2 Universal Database Personal Edition Guía
Rápida de Iniciación Versión 7. IBM Press, USA, 2000.
[17] IBM Corporation. IBM DB2 Universal Database Suplemento de Instalación y Configuración Versión 7. IBM Press, USA, 2000.
[18] A. González del Alba Baraja; V. Yague Galaup; L. Joyanes Aguilar. Impacto de las Tecnologías en la Gestión de los Sistemas de Información en
II Congreso Internacional de Sociedad de la Información y del Conocimiento. McGraw Hill, Madrid-España, 2003.
[19] IBM. WebSphere Comerse V5.5 Architecture. IBM Press, USA, 2003.
[20] J. H. Kingston. Algorithms and Data Structures. Desing, Correctnes,
Analysis. Second Edition. Addison-Wesley, 1998.
[21] Ali Arsanjani Mark Endrei, Jenny Ang. Patterns: Service Oriented Architecture and Web Services. IBM Press, USA, 2004.
[22] 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.
[23] N.Ñegroponte. El Mundo Digital. Ediciones B, Barcelona-España, 1995.
[24] Rudyanto Linngar Saida Davies, Surech Amujuri. WebSphere Business
Integration Pub/Sub Solutions. IBM Press, USA, 2004.
[25] E. Castillo; A. Cobo; P. Gómez; C. Solares. JAVA - Un Lenguaje de
Programación Multiplataforma para Internet. Paraninfo, España, 1997.
BIBLIOGRAFÍA
258
[26] A. S. Tanenbaum. Sistemas Operativos Distribuidos. Prentice Hall Hispanoamericana, S.A., México, 1996.
Índice de Materias
actividades con CD-ROM, 24
actividades con e-mail, 24
actividades en Red, 24
administración
de interfase, 175
del servidor, 175
herramientas de, 183
administrativo
almacenamiento, 190
servidor, 190
AIX, 109, 123, 126
alumnos
módulo de, 204
antecedentes elearning, 13
API, 120
interface de programación de aplicaciones, 53
API (Application Programming Interface), 63
APIs, 165, 174
aplicación
descripción de la, 197
aplicación interactiva, 86
aplicación Java, 124
aplicaciones
de WebSphere, 167
Java, 175
applet, 36
programa independiente, 42
seguridad, 45
Applets
259
contenedor de, 154
applets, 42, 158, 176
concepto, 44
appletviewer
visualizador de applets, 42
aprendizaje asíncrono, 7
aprendizaje electrónico
concepto, 1
definición, 2
aprendizaje síncrono, 8
aprendizaje virtual, 6, 13
nuevas formas, 5
productos y servicios, 11
ventajas, 12
arquitecturas
tres niveles de, 154
arrays, 81
asistentes
mejoras en los, 125
aulas virtuales, 18
autoformación, 10
AWT
concepto, 85
interface gráfica de usuario, 85
ayudas
módulo de, 198
B/R, 118
B2B, 147
B2C, 147
base de datos
Segmentación de la, 113
ÍNDICE DE MATERIAS
base de datos relacional
arquitectura de, 120
bases y herramientas
para su e-business, 142
bean
de entidad, 179
de sesión, 179
beans
empresariales, 174
recursos, 181
bibliotecas
de clases, 57
bifurcaciones, 74
if, 74
if else, 75
bloque try, catch, finally, 77
browser
aplicaciones basadas en, 174
navegador, 44
browsers, 158
bucles, 75
do while, 76
for, 76
while, 75
Business Intelligence, 124, 130
bytecodes
serie de códigos, 37
C++
lenguaje de programación
orientado a objetos, 32
C/C++, 72
código fuente, 226
capacitación
continua, 17
capacitación elearning, 16
CD-ROM, 124
cd grabable, 2
centro de depósito, 124
Centro de Desarrollo, 130
260
centro de información, 125
CGI, 177
Clase, 60
clase
características, 79
clase en Java, 79
clase object, 80
clases de utilidad, 81
clase Arrays, 81
clases string y StringBuffer, 83
Double, 84
integer, 84
client/server database, 113
clones, 186
cluster, 115
cluster of uniprocessors, 115
CMP, 181
comentarios, 72
como verificar una actividad de elearning, 30
Component Broker, 171
computación
cliente-servidor de tres niveles,
171
distribuida, 171
conclusiones, 254
conectividad
herramientas de, 112
consultas
módulo de, 211
contenedor
cliente de aplicaciones de, 153
EJB, 188
EJB de, 152
Web, 153, 187
Content-Type, 97
DAS, 118
Data Marts, 112
Datajoiner
ÍNDICE DE MATERIAS
El producto, 112
datos espaciales, 128
DB2
administrador de datos, 122
Introducción a, 109
Universal Database, 109
DB2 Connect, 112
DB2 Data Links Manager, 129
db2 Data Links Manager, 130
DB2 DataJoiner, 126
DB2 Optimizer, 129
DB2 Spatial Extender, 128
DB2 UDB Versión 8.1, 130
DB2 Warehouse Manager, 125, 130
db2ic, 125
DBA, 118
DDL y DML
sentencias de, 127
desafio elearning, 14
tilde no
e-learning, 141
destroy, 100
desventajas elearning, 18
desviaciones
Detección de, 113
DHTML, 159
digitales
activos, 147
dirigir un actividad de elearning, 26
DNS, 185
doGet, 97
doGet (), 100
doPost (), 100
Double, 84
métodos de la clase, 84
download, 147
DrAdmin, 194
DRDA, 119, 126
e-business, 169
261
Web enabled para, 110
e-business on demand
integración en el, 143
e-commerce, 145
e-learning, 16
introducción, 1
planificar e implementar una actividad de, 21
ventajas, 3
educación a distancia, 16
EJB, 165
módulo de, 189
ejemplo de
arrays, 82
bifurcación if, 74
bifurcación if else, 75
bucle for, 76
bucle while, 75
clase, 60
comentario, 72
construcción de nombres de archivos en Java, 90
do while, 76
interface, 61
línea compuesta por tres sentencias, 72
método, 80
matriz, 83
operadores incrementales y relacionales, 70
programa no portable, 88
sentencia return, 77
empleo del elearning para la gerencia, 30
encapsulación, 79
enterprise beans, 152
errores
gestión de, 77
Java, 40
ÍNDICE DE MATERIAS
errores de programación
carga de drivers JDBC, 92
entrada/salida por archivo, 94
fuentes de caracteres, 94
scheduling de los hilos de ejecución, 87
terminación de líneas, 94
uso de características de portabilidad, 89
uso de directorios definidos, 90
escalabilidad, 121
Essbase, 128
estructuras de datos, 216
estructuras de programación, 72
evaluación
módulo de, 201
evaluar la experiencia de elearning,
28
evento, 86
sources, 86
eventos
listeners, 86
expresión, 72
Familia de DB2 UDB, 121
flash crowds, 142
formar el equipo de elearning, 25
front-end
Administrador de utilidades, 119
fuente de datos, 175
garbage collection
manejo automático de memoria, 38
Gestión de Datos, 130
gestión del conocimiento, 5
granularidad
grados de, 110
GUI, 153, 165, 174
GUI Browser, 118
262
herencia, 60, 63, 79
herencia múltiple, 61
HMTL
código fuente de, 247
hosts virtuales, 185
HotJava, 49, 50
HP-UX, 109, 123, 126
HTML, 41, 44, 158
lenguaje de marcación de hipertexto, 44
HTML y XML
formatos, 129
HTTP server y plug-in, 185
HttpServletRequest, 97
HttpServletResponse, 97
IBM
Data Management de, 110
IBM DB2, 181
IBM HTTP, 167
IDE, 159
import, 73
IMS, 112
Informix, 112
inialización de arrays, 82
INIT, 98
instalación
área de ejecución de, 123
instanciación e inicialización, 98
integer, 84
métodos de la clase, 84
interface, 61
interfases administrativas, 191
Internet, 16
Internet Explorer, 48
intranet, 17
Intranets, 110
ISO y OGS
estándares, 128
ISP
ÍNDICE DE MATERIAS
proveedor de servicios de internet, 24
IT, 150
J2EE, 149, 164
Java, 58, 110
aplicaciones corporativas, 52
características, 33
conceptos básicos, 60
Conceptos básicos de, 32
errores de programación, 87
estructura general de un programa, 59
introducción a, 56
Jerarquía de clases en, 63
lenguaje y código en, 56
limitaciones, 40
memoria, 38
orientado a objetos, 34
restricción de seguridad, 46
robustez de, 35
seguridad, 36
ventajas, 39
Java en browsers
definición, 44
Java Standalone, 42
Java VM
máquina virtual Java, 37
JavaSript, 41
javax.servlet.HttpServlet, 97
JCA, 151
JDBC, 153, 158, 195
JDK, 73, 94
Java Development Kit, 36
JFC, 176
JIT
just in time compiler, 49
JNDI, 153
JRE, 124
JSP, 153, 165
263
compilación batch de, 103
modelos de, 100
procesadores, 101
JSPs, 159
JVM, 42, 152
líneas
longitud, 74
launchpad, 123
listener, 86
logs, 120
máquinas virtuales
concepto, 47
métodos, 80
de la clase object, 81
de objeto, 80
módulos, 198
malloc/free
soporte de memoria dinámica,
41
Microsoft, 48
Microsoft Explorer, 47
Microsoft Internet Explorer
navegador para explorar la red,
25
Microsoft SQL Server, 112, 126
middleware, 130, 149
MIME, 178
modelización predictiva, 113
modem, 24
MPP
massively parallel procesing o,
115
MQSeries, 162
multi servidor, 150
multiplataforma, 37, 39, 111
Multiprocesador
Sistema Simétrico, 114
multithreading
ÍNDICE DE MATERIAS
múltiples hilos de ejecución, 48
navegador, 25
Nestcape Navigator, 47
Net Search Extender, 129
Net.Data, Java y CLI
aplicaciones, 129
Netscape, 32, 48
Netscape Navigator
navegador para explorar la red,
25
NT
Windows, 109
NUMA-Q, 126
objetos vivos, 181
OLAP, 110
Kit de iniciación, 127
OLTP, 110
OO
programación orientada a objetos, 57
OOP, 79
operadores, 67
aritméticos, 67
de asignación, 68
de concatenación de cadenas de
caracteres, 70
incrementales, 68
precedencia de, 71
racionales, 69
unarios, 68
Oracle, 112
OS/2, 109
OS/390, 120
OS/400, 109
package, 62, 63
packages, 60
paquete
de comandos, 180
264
distribuido, 180
particiones lógicas, 116
particiones múltiples, 115
perfiles de acceso, 118
plataforma, 143
de software, 144
plug-in, 151
plugins, 40
polimorfismo, 79
POO
programación orientada a objetos, 59
portabilidad, 37
preparar una organización para elearning, 22
producto
familias del, 157
profesores
módulo de, 207
prototipos de depósitos, 125
PSI
proveedor de servicios de internet, 24
QMF para Windows, 126
Quick Installation, 151
RDBMS, 110
recursos, 195
return
do while, 77
RIO, 159
RMI/IIOP, 175
RS/6000, 116
RTTI
runtime type identification, 34
Sample, 124
sentencia, 72
serial database, 113
Server
ÍNDICE DE MATERIAS
Application, 149
Advanced Edition, 149
Enterprise Edition, 150
Standard Edition, 151
server-side, 98
servers de IBM
sistema de administración de,
120
servicio
de demanda, 100
servicios
Web, 174
servidor
de aplicaciones, 152, 183
de grupos, 186
HTTP, 151
HTTP incluido, 185
predefinido, 184
servidores
de aplicaciones y
beans empresariales, 179
genéricos, 195
Web, 178
servlet, 96
ciclo de vida del, 98
codificación de, 97
desarrollo, 96
motor del, 98
servlets, 153, 177
código fuente de, 226
Set-Cookie, 97
shared-nothing configuration, 115
single node/non-parallel, 113
Smart Guides, 125
SmartPhone, 158
SMP, 114
SMP Cluster, 116
SNMP, 120
software, 62
265
Solaris, 123
solución elearning, 14
Soluciones e-business, 130
Spatial Extender, 130
SQL, 120
standalone database, 113
String, 83
métodos de la clase, 83
string, 64
StringBuffer, 83
Sun, 32, 45
Solaris, 109
Sybase, 112
TCP/IP, 120
tecnologías
para mejorar el rendimiento, 18
tecnologías y servicios para elearning, 24
Tex Information Extender, 128
thread, 38
three-tiered, 166, 167
TI
Tecnologías de la Información,
16
tipo de elearning, 22
TOC, 125
uniprocessor system, 113
UNIX, 191
vínculos
análisis de, 113
variable
clasificación, 64
local, 65
miembro de una clase, 65
referencia, 64
variables
miembro, 66
tipo primitivo, 64
ÍNDICE DE MATERIAS
visibilidad y vida de las, 66
ventajas elearning, 17
Versión 7
DB2 Universal Database, 123
virtual
sistema principal, 154
visión general rápida, 124
VisualAge, 120
VSAM, 112
VT, 158
WAS, 191
Web
aplicaciones, 103
módulo, 188
Web Services, 150
webshpere
familia de, 170
WebSphere
Application Server, 161
Application Server Advanced Edition
componentes de, 166
consola administrativa de, 181
Edge Server, 164
Everyplace Suite, 163
para el e-learning, 140
Personalization Server, 163
Portal Server, 163
programación, 175
Site Analyzer, 164
Studio, 168
Transcoding Publisher, 163
Voice Server, 163
WebSphere Application Server
arquitectura de, 183
WebSphere Commerce, 145
WebSphere Everyplace, 145
WebSphere for Commerce
soluciones de portal, 146
266
soluciones digital media, 147
WebSphere for commerce
soluciones B2B, 145
soluciones B2C, 146
WebSphere Host Integration, 157
WebSphere Host Publisher, 158
WebSphere Portal, 145
WebSphere Studio, 157
la familia de herramientas, 159
WebSphere Transcoding Publisher,
158
WebSphere Voice, 145
wizard, 158
workload, 187
WWW, 43
world wide web, 1, 2
XML, 158
XML config, 193
XML Extender, 130
Documentos relacionados
Descargar