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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B> &nbsp;<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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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+” &nbsp; ”+apellido2+” </FONT> &nbsp; - 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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&nbsp;</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>&nbsp; </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