274
Universidad Nacional del Nordeste Facultad de Ciencias Exactas y Naturales y Agrimensura Trabajo Final de Aplicación A cceso a Bases de Datos Multiplataforma desde Dispositivos Móviles Manuales Silvana Daniela Maidana - L.U.: 33.548 Prof. Coordinador: Agr. Castor Herrmann Prof. Orientadores: Mgter. David Luis la Red Martínez y Lic. Valeria Uribe. Licenciatura en Sistemas de Información Corrientes - Argentina 2008

Acceso a Bases de Datos Multiplataforma desde …exa.unne.edu.ar/informatica/SO/tfsilvmaidana.pdf · herramientas de desarrollo WebSphere Studio Application Developer, versión 5.0

  • Upload
    donhan

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Universidad Nacional del NordesteFacultad de Ciencias Exactas y Naturales y Agrimensura

Trabajo Final de Aplicación

Acceso a Bases de Datos Multiplataformadesde Dispositivos Móviles Manuales

Silvana Daniela Maidana - L.U.: 33.548

Prof. Coordinador: Agr. Castor HerrmannProf. Orientadores: Mgter. David Luis la Red Martínez y

Lic. Valeria Uribe.

Licenciatura en Sistemas de InformaciónCorrientes - Argentina

2008

A mi familia

Prefacio

En los últimos tiempos han habido importantes avances tecnológicos tan-to en las áreas de comunicaciones móviles como en las de almacenamientode datos; asímismo los requerimientos de la población en la sociedad de lainformación y el conocimiento (SIC), hacen necesario y conveniente estudiartecnologías que permitan obtener información útil del contenido de las basesde datos, mediante dispositivos móviles.

Además, es un hecho de la realidad que en las grandes organizaciones lacomputación móvil ha adquirido una relevancia sustancial como una etapadentro del acceso remoto a los datos, lo cual hace sumamente interesante suestudio y el análisis de sus potencialidades, especialmente teniendo presente laposibilidad de generar servicios de acceso remoto y móvil, desde dispositivosde diferentes tipos, con software multiplataforma.

Asímismo es una constante en los últimos años que las tecnologías de lacomputación móvil intentan hacer y de hecho lo logran en muchos casos, unaampliación de las potencialidades del acceso mediante redes, en este caso, redesinalámbricas.

Este trabajo se basa en el estudio de software de base que permite eldesarrollo de aplicaciones móviles con acceso a base de datos multiplataformasituadas en un servidor web y en el desarrollo de una aplicación Web para laadministración y gestión de la información en la base de datos.

Contempla la posibilidad de poder consultar datos de la base de datos conrespecto a notas de distintas asignaturas por parte de los alumnos registradosen las mismas desde un dispositivo móvil, y la gestión de dichos alumnos,notas y usuarios desde el sistema de administración Web.

Objetivos

El objetivo inicialmente planteado fue la realización de una aplicaciónmóvil desarrollada en J2ME; otro objetivo también fijado como básico fueel desarrollo de la aplicación Web en Java; ambos desarrollados en productosde software de la familia de WebSphere.

Estos objetivos planteados al inicio del trabajo, fueron totalmente cumpli-dos.

Clasificación del Trabajo

vi

El trabajo se clasifica como de utilización de software de base que permite eldesarrollo de aplicaciones móviles con acceso a bases de datos multiplataforma.

Etapas de Desarrollo

• Se ha efectuado una amplia recopilación bibliográfica específica de lostemas pertinentes a la tarea planificada y a los productos de softwareque se emplearon para la concreción del Trabajo Final.

• Se realizaron las traducciones de los manuales correspondientes a lasherramientas de desarrollo WebSphere Studio Application Developer,versión 5.0 para Windows y del WebSphere Studio Device Developer,versión 5.7.

• Como consecuencia de las gestiones realizadas por el Profesor Orienta-dor ante IBM Argentina se han recibido materiales tanto en CD’s comoen libros de dicha empresa, en el marco del Scholars Program de la mis-ma, destinado a Universidades de todo el mundo; se destacan por sernecesarios para la realización del presente Trabajo Final los referentesa productos de software tales como el WebSphere Studio ApplicationDeveloper versión 5.0, WebSphere Studio Device Developer Versión 5.7,como así también el DB2 database para Linux, UNIX y Windows Versión9.

• Se ha realizado un detallado estudio del lenguaje Java, utilizándose laversión JDK 1.4.

• Se ha realizado un detallado estudio del entorno de trabajo ScientificWorkPlace 2.5.0 para la escritura del libro correspondiente al informefinal.

• Se ha realizado un detallado estudio del software para el desarrollo dela aplicación, es decir el estudio de la plataforma integrada de desarrollode aplicaciones Web, WebSphere Studio Application Developer.

• Se ha realizado el estudio del Manejador de Bases de Datos (DBMS)multiplataforma DB2.

• Se ha realizado el desarrollo de la aplicación utilizando páginas HTMLy Servlets de Java en el marco de la herramienta WebSphere StudioApplication Developer en el entorno Windows.

vii

• Se ha realizado el correspondiente testeo de la aplicación móvil en dife-rentes emuladores y el de la aplicación web en diferentes navegadores.

• Una vez finalizada la aplicación se realizó la grabación en DVD de todoel material correspondiente al trabajo final: una versión de cada uno delos módulos, otra referente al libro en formato LaTex y el PDF generado.También se icluyeron los instaladores de los productos utilizados para eldesarrollo, es decir DB2 UDB, WebSphere Studio Application Developery WebSphere Studio Devide Developer.

Objetivos Logrados

Se han alcanzado plenamente la totalidad de los objetivos planteados parael presente trabajo.

Organización del Informe Final

El informe final comprende un libro impreso y un DVD.

El libro impreso está organizado en capítulos, los que se indican a conti-nuación:

• Introducción: presenta una visión general de los sistemas de informaciónen la Sociedad de la Información y del Conocimiento, y una introduccióna Gobierno Electrónico.

• Java: describe las más destacadas características del lenguaje.

• Servlets: resume los aspectos más destacados de estas facilidades.

• J2ME : da una introducción a este lenguaje en pleno auge.

• DB2 : detalla las más relevantes características de esta familia de pro-ductos de gestión de bases de datos multiplataforma.

• WebSphere: presenta los principales aspectos de este entorno de desarro-llo de aplicaciones complejas.

• Aplicación: detalla los aspectos más significativos de las aplicacionesdesarrolladas utilizando las facilidades antes mencionadas.

• Conclusiones: presenta las conclusiones a las que se ha llegado al finalizarel presente trabajo.

viii

El DVD, adjunto al libro impreso, contiene lo siguiente:

• Instaladores del software utilizado.

• Libro del informe final.

• Presentación para la defensa final.

• Copia de seguridad de la base de datos de las aplicaciones.

• Aplicación desarrollada.

Silvana Daniela MaidanaLicenciatura en Sistemas de Información

Universidad Nacional del NordesteL.U.: 33548

Corrientes; 02 de Diciembre de 2008

Índice General

1 Introducción 11.1 Gestión del Conocimiento . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 Una Visión Global . . . . . . . . . . . . . . . . . . . . . 21.1.2 Definición de Conocimiento . . . . . . . . . . . . . . . . 21.1.3 Ciclo de Vida del Conocimiento . . . . . . . . . . . . . . 61.1.4 Conocimiento: la Nueva Materia Prima de las Empresas 71.1.5 La Cultura en la Sociedad del Conocimiento . . . . . . . 81.1.6 Gestión del Conocimiento . . . . . . . . . . . . . . . . . 101.1.7 Portales del Conocimiento . . . . . . . . . . . . . . . . . 151.1.8 Necesidad de la Gestión del Conocimiento . . . . . . . . 161.1.9 Situación Actual en la GC . . . . . . . . . . . . . . . . . 181.1.10 Objetivos de la Gestión del Conocimiento . . . . . . . . 201.1.11 Globalización de la Economía y el Conocimiento . . . . 221.1.12 La Estrategia de Convertir Datos en Conocimieto . . . . 241.1.13 Nuevo Futuro del Conocimiento . . . . . . . . . . . . . . 25

1.2 Gobierno Electrónico . . . . . . . . . . . . . . . . . . . . . . . . 251.2.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . 251.2.2 Definición . . . . . . . . . . . . . . . . . . . . . . . . . . 291.2.3 Modalidades del Gobierno Electrónico . . . . . . . . . . 311.2.4 Las estrategias de Gobierno Electrónico . . . . . . . . . 32

2 JAVA 372.1 Introducción al Lenguaje . . . . . . . . . . . . . . . . . . . . . . 38

2.1.1 Bibliotecas de Clases Estándares de Java . . . . . . . . 392.1.2 Java es Multiplataforma . . . . . . . . . . . . . . . . . . 402.1.3 Características del Lenguaje Java . . . . . . . . . . . . . 40

2.2 Estructura General de un Programa Java . . . . . . . . . . . . 432.3 Conceptos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . 44

2.3.1 Clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

ix

x ÍNDICE GENERAL

2.3.2 Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.3.3 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.3.4 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.3.5 La Jerarquía de Clases de Java (API) . . . . . . . . . . 462.4 Variables Dentro del Lenguaje Java . . . . . . . . . . . . . . . . 47

2.4.1 Visibilidad y Vida de las Variables . . . . . . . . . . . . 492.5 Operadores en Java . . . . . . . . . . . . . . . . . . . . . . . . 50

2.5.1 Operadores Aritméticos . . . . . . . . . . . . . . . . . . 502.5.2 Operadores de Asignación . . . . . . . . . . . . . . . . . 502.5.3 Operadores Unarios . . . . . . . . . . . . . . . . . . . . 512.5.4 Operadores Incrementales . . . . . . . . . . . . . . . . . 512.5.5 Operadores Relacionales . . . . . . . . . . . . . . . . . . 522.5.6 Operador de Concatenación de Cadenas de Caracteres

(+) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532.5.7 Precedencia de Operadores . . . . . . . . . . . . . . . . 54

2.6 Estructuras de Programación . . . . . . . . . . . . . . . . . . . 542.6.1 Sentencias o Expresiones . . . . . . . . . . . . . . . . . . 552.6.2 Comentarios . . . . . . . . . . . . . . . . . . . . . . . . 552.6.3 Bifurcaciones . . . . . . . . . . . . . . . . . . . . . . . . 562.6.4 Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

2.7 Clases en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 602.7.1 Características Importantes de las Clases . . . . . . . . 61

2.7.2 Métodos o Funciones Miembros . . . . . . . . . . . . . . 622.8 Algunas Clases de Utilidad . . . . . . . . . . . . . . . . . . . . 63

2.8.1 Clase Arrays . . . . . . . . . . . . . . . . . . . . . . . . 632.8.2 Clases String y StringBuffer . . . . . . . . . . . . . . . . 652.8.3 Clase Double . . . . . . . . . . . . . . . . . . . . . . . . 662.8.4 Clase Integer . . . . . . . . . . . . . . . . . . . . . . . . 66

2.9 El AWT (Abstract Windows Toolkit) . . . . . . . . . . . . . . . 662.9.1 Qué es el AWT . . . . . . . . . . . . . . . . . . . . . . . 662.9.2 Creación de una Interface Gráfica de Usuario . . . . . . 672.9.3 Objetos “event source” y Objetos “event listener” . . . 672.9.4 Proceso a Seguir Para Crear Una Aplicación Interactiva

(Orientada a Eventos) . . . . . . . . . . . . . . . . . . . 682.10 Errores Frecuentes de Programación . . . . . . . . . . . . . . . 69

2.10.1 Scheduling de Hilos de Ejecución . . . . . . . . . . . . . 692.10.2 Errores en el Uso de las Características de Portabilidad

de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 712.10.3 Uso de Directorios Definidos . . . . . . . . . . . . . . . 71

ÍNDICE GENERAL xi

2.10.4 Carga de Drivers JDBC . . . . . . . . . . . . . . . . . . 742.10.5 Terminación de Líneas . . . . . . . . . . . . . . . . . . . 752.10.6 Entrada/Salida por Archivo . . . . . . . . . . . . . . . . 762.10.7 Fuentes de Caracteres . . . . . . . . . . . . . . . . . . . 76

3 Servlet 773.1 Desarrollando Servlets . . . . . . . . . . . . . . . . . . . . . . . 78

3.1.1 Principios de Codificación de Servlet . . . . . . . . . . 783.1.2 Ciclo de Vida del Servlet . . . . . . . . . . . . . . . . . 793.1.3 Instanciación e Inicialización . . . . . . . . . . . . . . . 813.1.4 Servicio de Demanda . . . . . . . . . . . . . . . . . . . . 813.1.5 Terminación . . . . . . . . . . . . . . . . . . . . . . . . . 813.1.6 Modelos de Acceso JSP . . . . . . . . . . . . . . . . . . 823.1.7 Procesadores JSP . . . . . . . . . . . . . . . . . . . . . . 833.1.8 Compilación Batch de Archivos JSP . . . . . . . . . . . 843.1.9 Desarrollando Aplicaciones . . . . . . . . . . . . . . . . 853.1.10 Fases de Inicialización y de Terminación . . . . . . . . . 853.1.11 Rasgos de Java Servlet API . . . . . . . . . . . . . . . . 863.1.12 Patrones y Guías de Servlets/JSP . . . . . . . . . . . . 86

4 J2ME 914.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

4.1.1 Análisis Comparativo . . . . . . . . . . . . . . . . . . . 934.1.2 Nociones Básicas de J2ME . . . . . . . . . . . . . . . . 95

4.2 Los MIDlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064.2.1 El Gestor de Aplicaciones . . . . . . . . . . . . . . . . . 106

4.3 Interfaces Gráficas de Usuario . . . . . . . . . . . . . . . . . . . 1104.3.1 Introducción a las Interfaces de Usuario . . . . . . . . . 1104.3.2 La Interfaz de Usuario de Alto Nivel . . . . . . . . . . . 1124.3.3 La Interfaz de Usuario de Bajo Nivel . . . . . . . . . . . 114

4.4 Record Management System . . . . . . . . . . . . . . . . . . . . 1174.4.1 Conceptos Básicos . . . . . . . . . . . . . . . . . . . . . 1174.4.2 Operaciones Con Record Stores . . . . . . . . . . . . . . 120

4.5 Comunicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214.5.1 Conceptos Básicos . . . . . . . . . . . . . . . . . . . . . 1214.5.2 Clases y Conexiones del Generic Connection Framework 1214.5.3 Comunicaciones HTTP . . . . . . . . . . . . . . . . . . 1264.5.4 Otras Conexiones . . . . . . . . . . . . . . . . . . . . . . 131

5 Introducción a DB2 135

xii ÍNDICE GENERAL

5.1 DB2 Universal Database (DB2 UDB) . . . . . . . . . . . . . . . 1365.2 Funciones Complementarias . . . . . . . . . . . . . . . . . . . . 1385.3 Configuraciones de Particiones Múltiples . . . . . . . . . . . . . 141

5.3.1 Particiones con un Procesador . . . . . . . . . . . . . . 1415.3.2 Particiones con Múltiples Procesadores . . . . . . . . . . 1425.3.3 Particiones Lógicas de Base de Datos . . . . . . . . . . . 143

5.4 Paralelismo Mejor Adaptable a cada EH . . . . . . . . . . . . . 1435.4.1 Herramientas de Administración . . . . . . . . . . . . . 1445.4.2 Estándares Soportados en DB2 . . . . . . . . . . . . . . 146

5.5 Familia de DB2 UDB . . . . . . . . . . . . . . . . . . . . . . . 1475.6 DB2 UDB Versión 7.2 . . . . . . . . . . . . . . . . . . . . . . . 1485.7 Área de Ejecución de Instalación . . . . . . . . . . . . . . . . . 150

5.7.1 Área de Ejecución del Depósito . . . . . . . . . . . . . . 1505.7.2 Primeros Pasos . . . . . . . . . . . . . . . . . . . . . . . 1505.7.3 Visión General Rápida . . . . . . . . . . . . . . . . . . . 1515.7.4 Centro de Información . . . . . . . . . . . . . . . . . . . 1515.7.5 Mejoras en los Asistentes . . . . . . . . . . . . . . . . . 151

5.8 DB2 UDB Versión 8.1 . . . . . . . . . . . . . . . . . . . . . . . 1565.8.1 Centro de Desarrollo . . . . . . . . . . . . . . . . . . . . 1575.8.2 WebSphere . . . . . . . . . . . . . . . . . . . . . . . . . 1575.8.3 Mejoras en XML Extender . . . . . . . . . . . . . . . . 1575.8.4 DB2 Warehouse Manager . . . . . . . . . . . . . . . . . 1585.8.5 DB2 Warehouse Manager (cont.) . . . . . . . . . . . . . 1595.8.6 Centro de depósito de datos de DB2 . . . . . . . . . . . 1595.8.7 DB2 Spatial Extender . . . . . . . . . . . . . . . . . . . 1605.8.8 DB2 Spatial Extender (cont.) . . . . . . . . . . . . . . . 1615.8.9 Gestión de los Datos . . . . . . . . . . . . . . . . . . . . 1615.8.10 Duplicación (DB2 DataPropagator) . . . . . . . . . . . 1625.8.11 Nuevo Centro de duplicación . . . . . . . . . . . . . . . 1625.8.12 Posibilidades de Gestión . . . . . . . . . . . . . . . . . . 1635.8.13 Soporte de plataformas . . . . . . . . . . . . . . . . . . 1645.8.14 Compatibilidad de la Familia de DB2 . . . . . . . . . . 164

5.9 Principales Ventajas del DB2 UDB . . . . . . . . . . . . . . . . 1655.10 Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

6 WebSphere 1716.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1726.2 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

6.2.1 Arquitectura de la Plataforma . . . . . . . . . . . . . . 1736.3 Características del Workbench . . . . . . . . . . . . . . . . . . 176

ÍNDICE GENERAL xiii

6.3.1 Herramientas Basadas en Plug-in . . . . . . . . . . . . . 1766.3.2 Desarrollo de Herramientas Orientadas en Roles . . . . 1776.3.3 Integración Vertical y Horizontal . . . . . . . . . . . . . 1776.3.4 Estándares Abiertos . . . . . . . . . . . . . . . . . . . . 1786.3.5 Ambiente de Trabajo Distribuido . . . . . . . . . . . . . 1786.3.6 IDE Basado en Archivo . . . . . . . . . . . . . . . . . . 178

6.4 Productos WebSphere Studio . . . . . . . . . . . . . . . . . . . 1786.4.1 WebSphere Studio Site Developer . . . . . . . . . . . . . 1806.4.2 WebSphere Studio Application Developer . . . . . . . . 1806.4.3 WebSphere Studio Application Developer Integration Edi-

tion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1816.4.4 WebSphere Enterprise Developer . . . . . . . . . . . . . 181

6.5 Herramientas de WSAD . . . . . . . . . . . . . . . . . . . . . . 1816.5.1 Herramientas de Desarrollo Java . . . . . . . . . . . . . 1836.5.2 Herramientas de Desarrollo de Aplicaciones Web . . . . 1836.5.3 Herramientas de Desarrollo de Servicios Web . . . . . . 1856.5.4 Herramientas de Desarrollo de Enterprise JavaBeans (EJB)1876.5.5 Herramientas XML y XSL . . . . . . . . . . . . . . . . . 1886.5.6 Herramientas de Base de Datos Relacional . . . . . . . . 1886.5.7 Herramientas de Desarrollo de Aplicaciones Struts . . . 189

6.6 La Experiencia Pervasiva de IBM . . . . . . . . . . . . . . . . . 1906.7 Modelo de Programación de WebSphere . . . . . . . . . . . . . 1946.8 Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1946.9 Alcance de la Arquitectura PvC . . . . . . . . . . . . . . . . . . 1966.10 Modelo de Programación Extremo a Extremo . . . . . . . . . . 1976.11 WebSphere y las Aplicaciones para Dispositivos . . . . . . . . . 1986.12 La Plataforma de Servicios Pervasivos . . . . . . . . . . . . . . 1986.13 Modelo de Programación de WebSphere . . . . . . . . . . . . . 2006.14 WebSphere Studio Device Developer IDE . . . . . . . . . . . . 201

6.14.1 Developer IDE . . . . . . . . . . . . . . . . . . . . . . . 2016.14.2 WebSphere Studio Device Developer . . . . . . . . . . . 2016.14.3 Trabajar con el IDE . . . . . . . . . . . . . . . . . . . . 2046.14.4 Configuración J2ME . . . . . . . . . . . . . . . . . . . . 2086.14.5 Construcción y Ejecución en Dispositivos . . . . . . . . 208

7 Aplicación 2157.1 Descripción General . . . . . . . . . . . . . . . . . . . . . . . . 2157.2 Análisis del Sistema . . . . . . . . . . . . . . . . . . . . . . . . 216

7.2.1 Modelo de Datos . . . . . . . . . . . . . . . . . . . . . . 2167.2.2 Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . 216

xiv ÍNDICE GENERAL

7.3 Aplicación Móvil . . . . . . . . . . . . . . . . . . . . . . . . . . 2167.4 Aplicación Web . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

8 Conclusiones 241

Bibliografía 243

Índice de Materias 247

Índice de Figuras

1.1 Ciclo de Vida del Conocimiento. . . . . . . . . . . . . . . . . . 71.2 El Contexto del Capital Intelectual. . . . . . . . . . . . . . . . 91.3 La Cultura Propicia de la Gestión del Conocimiento. . . . . . . 101.4 El Proceso de Conocimiento. . . . . . . . . . . . . . . . . . . . 131.5 Proceso Clave en la Gestión del Conocimiento. . . . . . . . . . 16

3.1 Ciclo de Vida de un Servlet. . . . . . . . . . . . . . . . . . . . . 803.2 Requerimiento de un Archivo JSP. . . . . . . . . . . . . . . . . 823.3 Requerimiento de un Servlet. . . . . . . . . . . . . . . . . . . . 83

4.1 Versiones de Java . . . . . . . . . . . . . . . . . . . . . . . . . . 944.2 Relación entre las APIs de la plataforma Java. . . . . . . . . . 954.3 Entorno de ejecución de J2ME . . . . . . . . . . . . . . . . . . 964.4 Preverificación de clases en CDLC/KVM. . . . . . . . . . . . . 994.5 Arquitectura del entorno de ejecución de J2ME . . . . . . . . . 1054.6 Ciclo de vida de un MIDlet. . . . . . . . . . . . . . . . . . . . . 1074.7 Estados de un MIDlet. . . . . . . . . . . . . . . . . . . . . . . . 1104.8 Jerarquía de clases derivadas de Display e Item . . . . . . . . . 1114.9 Comunicación entre un MIDlet y el RMS . . . . . . . . . . . . 1184.10 Acceso a un RMS a través de una MIDlet suite . . . . . . . . . 1184.11 Estructura de un Record Store . . . . . . . . . . . . . . . . . . 1194.12 Estructura completa de un Record Store . . . . . . . . . . . . . 1204.13 Jerarquía de interfaces . . . . . . . . . . . . . . . . . . . . . . . 122

5.1 Almacenamiento de Documentos XML en DB2. . . . . . . . . . 1375.2 Esquema Conceptual de los Almacenes de Datos. . . . . . . . . 1395.3 Almacenamiento de Datos Espaciales . . . . . . . . . . . . . . . 1555.4 Centro de Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . 1585.5 DB2 Warehouse Manager. . . . . . . . . . . . . . . . . . . . . . 1595.6 Centro de Duplicación de DB2 versión 8.0. . . . . . . . . . . . . 163

xv

xvi ÍNDICE DE FIGURAS

5.7 Replicación de Datos en DB2. . . . . . . . . . . . . . . . . . . . 167

6.1 Soluciones IBM WebSphere . . . . . . . . . . . . . . . . . . . . 1726.2 Eclipse SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1746.3 Plataforma Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . 1756.4 Productos WebSphere . . . . . . . . . . . . . . . . . . . . . . . 1796.5 Entorno de desarrollo de WebSphere Studio Application Deve-

loper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826.6 Experiencia pervasiva de IBM . . . . . . . . . . . . . . . . . . . 1916.7 Computación ubicua . . . . . . . . . . . . . . . . . . . . . . . . 1926.8 Experiencia ubicua extendida a la plataforma WebSphere . . . 1936.9 Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1956.10 Arquitectura PVC . . . . . . . . . . . . . . . . . . . . . . . . . 1966.11 Modelo de programación extremo a extremo . . . . . . . . . . . 1976.12 Paquete de la plataforma de servicios pervasivos. . . . . . . . . 1996.13 Modelo de programación de WebSphere. . . . . . . . . . . . . . 2006.14 WebSphere Studio Device Developer IDE . . . . . . . . . . . . 2026.15 WebSphere Studio Device Developer . . . . . . . . . . . . . . . 2036.16 Gestor de Actualizaciones. . . . . . . . . . . . . . . . . . . . . . 2046.17 Barra de herramientas. . . . . . . . . . . . . . . . . . . . . . . . 2066.18 Wizart par configurar construcciones. . . . . . . . . . . . . . . 2096.19 Creación de dispositivos. . . . . . . . . . . . . . . . . . . . . . . 2116.20 Ejecución de una aplicación. . . . . . . . . . . . . . . . . . . . . 213

7.1 Modelo de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . 2177.2 Diagrama de caso de uso de la aplicación móvil. . . . . . . . . . 2187.3 Diagrama de caso de uso de la aplicación Web. . . . . . . . . . 2197.4 Pantalla inicial. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2207.5 Menú principal. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2217.6 Registro en el sistema. . . . . . . . . . . . . . . . . . . . . . . . 2237.7 Login. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2247.8 Mensaje de error en el logueo. . . . . . . . . . . . . . . . . . . . 2257.9 Menú de asignaturas. . . . . . . . . . . . . . . . . . . . . . . . . 2267.10 Menú de opciones para la consulta de notas. . . . . . . . . . . . 2277.11 Error en la elección de la asignatura. . . . . . . . . . . . . . . . 2297.12 Resultado de la consulta. . . . . . . . . . . . . . . . . . . . . . 2307.13 Pantalla de bienvenida . . . . . . . . . . . . . . . . . . . . . . . 2317.14 Listado de alumnos de SO. . . . . . . . . . . . . . . . . . . . . 2327.15 Alta de alumnos. . . . . . . . . . . . . . . . . . . . . . . . . . . 2337.16 Edición de alumnos. . . . . . . . . . . . . . . . . . . . . . . . . 234

ÍNDICE DE FIGURAS xvii

7.17 Consulta de alumnos. . . . . . . . . . . . . . . . . . . . . . . . 2357.18 Selección del archivo Excel. . . . . . . . . . . . . . . . . . . . . 2367.19 Lectura del archivo Excel. . . . . . . . . . . . . . . . . . . . . . 2377.20 Confirmación de la operación. . . . . . . . . . . . . . . . . . . . 2387.21 Estadísticas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

Índice de Tablas

2.1 Tipos de Variables. . . . . . . . . . . . . . . . . . . . . . . . . . 482.2 Categorías de Variables. . . . . . . . . . . . . . . . . . . . . . . 482.3 Tipos Primitivos de Variables. . . . . . . . . . . . . . . . . . . . 492.4 Operadores de asignación. . . . . . . . . . . . . . . . . . . . . . 512.5 Operadores relacionales. . . . . . . . . . . . . . . . . . . . . . . 522.6 Precedencia de Operadores. . . . . . . . . . . . . . . . . . . . . 54

4.1 Librerías de configuración CDC. . . . . . . . . . . . . . . . . . 1024.2 Librerías de configuración CLDC. . . . . . . . . . . . . . . . . . 1034.3 Tipo de listas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134.4 Código de teclas. . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.5 Métodos relacionados con la etapa de establecimiento . . . . . 1284.6 Tipos de peticiones . . . . . . . . . . . . . . . . . . . . . . . . . 128

5.1 Paralelismo mejor Adaptable a cada Entorno de Hardware . . . 144

xix

Capítulo 1

Introducción

1.1 Gestión del Conocimiento

1

2 CAPÍTULO 1. INTRODUCCIÓN

1.1.1 Una Visión Global

Es un hecho de la realidad contemporánea que los vertiginosos adelantos re-gistrados en las TIC (Tecnologías de la Información y de las Comunicaciones)han convertido a nuestro planeta en lo que se ha dado en llamar “la aldeaglobal” [1, Joyanes], permitiendo que nuestra sociedad sea conocida como la“sociedad de la información y el conocimiento” o “cibersociedad” [2, Joyanes,Lombardo], en la cual la profusión de redes de datos ha permitido interconec-tar a diversidad de equipos informáticos de diferentes tecnologías de hardwarey de software constituyendo una verdadera red mundial multiplataforma, queha generado la posibilidad de nuevas formas de interacción de las personasy de las empresas, impactando en la educación, las actividades sociales, elcomercio, etc.

Debido a que la información es poder, es muy importante el lugar en dondese almacena, su organización y de qué forma se puede brindarla a las distintaspersonas y entidades, independientemente de su localización geográfica y desu plataforma tecnológica.

La necesidad de mejorar la manera de acceder y manejar los datos haevolucionado por lo que se debe profundizar el estudio de temas de gran interés,como lo es la tecnología multiplataforma y su aplicación en la red en ambientescomerciales y gubernamentales de dimensiones considerables.

El desarrollo del presente trabajo se ve motivado además por la posibili-dad de desarrollar experiencias y conocimientos vinculados con entornos detrabajo propios del ambiente universitario, de la seguridad que se precisa en elmanejo de la información y de la importancia actual de la interrelación de lasactividades de las organizaciones desde el punto de vista de su gestión inter-na y su interrelación con el medio mediante la Web, todo ello en el contextomayor de la sociedad de la información y el conocimiento.

1.1.2 Definición de Conocimiento

El conocimiento es materia de estudio de distintas disciplinas, tales como lafilosofía, la gestión empresarial y, más recientemente la informática, por ello seencuentran diferentes definiciones según el punto de vista e interés de quienesse pronuncien. Conviene conocer, en aras a un mejor entendimiento y colabo-ración más eficaz con personas de distintas culturas, diversas definiciones asícomo la terminología que rodea al concepto conocimiento [3, Maestre].

1.1. GESTIÓN DEL CONOCIMIENTO 3

Para la definición de conocimiento varios autores interesados en la infor-mática, se apoyan en las definiciones de otros dos conceptos: dato e informa-ción. Parece oportuno traer aquí las definiciones dadas por la Real AcademiaEspañola al respecto:

• Dato: antecedente necesario para llegar al conocimiento exacto de unacosa o para deducir las consecuencias legítimas de un hecho.

• Información: acción y efecto de informar o informarse.

• Conocimiento: acción y efecto de conocer. Noción, ciencia, sabiduría.Cada una de las facultades sensoriales del hombre en la medida en queestán activas.

Como seguramente resultará útil para completar y para establecer diferen-ciaciones posteriores con otros términos, se adjuntan las definiciones dadaspor la misma institución a los conceptos informar y conocer:

• Informar : enterar, dar noticia de una cosa.

• Conocer : averiguar por el ejercicio de las facultades intelectuales la na-turaleza, cualidades y relaciones de las cosas.

Además es oportuno traer hasta aquí la definición del Webster’s New Ency-clopedia Dictionary sobre knowledge (conocimiento): Knowledge:

• understanding gained by actual experience (a knowledge of carpentry):

— the state of being aware of something or of having information.

— range of information or awareness.

• the act of understanding: clear perception of truth.

• something learned and kept in mind.

Que puede traducirse por: Conocimiento:

• comprensión obtenida por medio de la experiencia efectiva (conocimientode carpintería):

4 CAPÍTULO 1. INTRODUCCIÓN

— el estado de saber de algo o de tener información.

— rango de información o sapiencia.

• el acto de comprensión: clara percepción de la verdad.

• algo aprendido y retenido en la mente.

No completamente satisfechos con estas definiciones académicas, expertosde las distintas disciplinas que se ocupan del conocimiento están aportando lassuyas. A continuación se exponen algunas de las muchas que, por su enfoque,parecen más relevantes.

Stephen Denning , director de programas de gestión del conocimiento delWorld Bank (Banco Mundial), declara: “En el lenguaje cotidiano se diferenciaentre información (datos estructurados en modo significativo) y conocimiento(algo en lo que se cree que es cierto y fiable)”. No obstante, algunas objecionesa los términos cierto y fiable están empañando la distinción. El uso indistintoque a veces se hace de los términos información y conocimiento puede llevar ala confusión si no se hace hincapié en que el término conocimiento se empleaahora con un sentido nuevo.

En un intento por definir el concepto conocimiento nos sirve de ayuda elrecordar que la mente humana es capaz de dos clases de conocimiento: elracional y el intuitivo.

En el mundo occidental, el conocimiento intuitivo ha sido a menudo deva-luado en favor del conocimiento racional científico. Sin embargo, la dificultadde transferir el conocimiento de una persona a otra, ha llevado a intensificar laimportancia del conocimiento intuitivo. En el mundo oriental, el conocimien-to intuitivo siempre ha sido considerado muy importante, hasta el punto deconsiderarlo como el conocimiento superior mientras que asocian las cienciasal conocimiento inferior.

Dos reconocidos expertos, Nonaka y Takeuchi , en el área de la Ciencia delConocimiento, tal como se instruye en Japón, afirman que: “el conocimientose puede definir como creencias justificadamente ciertas y técnicas adquiridasempíricamente”.

Thomas H. Davenport , profesor de gestión de la información en la Escuelade Negocios de la Universidad de Boston, y Donald A. Marchand , profesor degestión y estrategia de la información en el IMD International de Suiza coin-ciden en afirmar que “el conocimiento es información que se encuentra dentro

1.1. GESTIÓN DEL CONOCIMIENTO 5

de la mente de las personas; sin una persona que conozca y sea consciente deello, no existe el conocimiento”.

Estos profesores se interesan por el conocimiento desde el punto de vista dela gestión empresarial. Y añaden: los datos, la información y el conocimientoson distintos puntos a lo largo de un espectro sin solución de continuidadcaracterizado por un valor y una aportación humana cada vez mayores. Losdatos -los símbolos que representan los sucesos y actividades humanas a queestamos expuestos cotidianamente- tienen poco valor en sí mismos, aunquetienen la ventaja de ser fáciles de almacenar y manipular informáticamente. Lainformación es lo que obtenemos a partir de los datos cuando los interpretamosy contextualizamos como humanos que somos.

Es asimismo el vehículo que utilizamos para expresar y comunicar el cono-cimiento, tanto en el seno de la empresa como en nuestras propias vidas. Lainformación tiene más valor que los datos y, al mismo tiempo, un mayor gradode ambigüedad, como puede atestiguar cualquier directivo que haya discutidoalguna vez sobre las muchas interpretaciones que pueden darse de términoscomo cliente, pedido y remesa dentro de una misma empresa.

El conocimiento tiene un gran valor, ya que los seres humanos crean a partirde él nuevas ideas, visiones e interpretaciones y las aplican directamente al usode la información y la toma de decisiones.

Para otro conocido experto, Joseph Novak , el conocimiento es creado porcada uno de nosotros asimilando lo que sabemos con lo que captamos pormedio de nuestras experiencias u observaciones.

La consultora PricewaterhouseCoopers conviene en definir el conocimientocomo información combinada con experiencia en su uso, situada en un contex-to, junto con su interpretación y reflexión. Otra consultora, Arthur Andersen,simplifica la definición de conocimiento afirmado que es información que tienevalor. En la misma línea de pragmatismo, Ernst & Young define el conoci-miento como mensajes con valor.

Pedro Maestre, conocido y respetado alto ejecutivo español en el campode las tecnologías de la información y comunicaciones, en su Diccionario deGestión del Conocimiento e Informática [3, Maestre] propone las definicionessiguientes:

• Dato: cadena de caracteres, expresados en un determinado sistema decodificación, asociada a un hecho o concepto.

6 CAPÍTULO 1. INTRODUCCIÓN

• Información: conjunto de datos interrelacionados de forma que aportenutilidad en la gestión o dirección de una organización. En cierta medida,la información, es la forma más elemental de conocimiento ya que, en símisma, no aporta predictibilidad.

• Conocimiento: resultado obtenido al aplicar una o varias reglas obje-tivas de actuación a una información o conjunto de informaciones. Elconocimiento implica cierta capacidad de hacer predicciones a partir deunas determinadas informaciones y de unas reglas genéricas.

En el ámbito de la literatura sobre organización y gestión empresarial, elconcepto conocimiento, muy a menudo, se encuentra entremezclado y pocodiferenciado de los conceptos capacidad y habilidad.

1.1.3 Ciclo de Vida del Conocimiento

El ciclo de vida del conocimiento depende de la distinción entre conocimientotácito y conocimiento explícito. Ambos tipos de conocimientos son necesariosy se produce una realimentación continua entre ambos.

El conocimiento tácito que se comparte con otras personas pasa a formarparte del nuevo conocimiento tácito de estas últimas (socialización).

El conocimiento tácito que se almacena, se transforma en nuevo conoci-miento explícito (exteriorización).

El conocimiento explícito al ser adquirido por una persona se transforma ennuevo conocimiento tácito, ya que ésta añadirá su juicio, fruto de sus propiosconocimientos y experiencias previas (interiorización).

El conocimiento explícito puede combinarse con otros conocimientos ex-plícitos dando lugar a nuevos conocimientos explícitos (combinación).

Lamentablemente la pérdida de una persona, bien sea por decisión propiao como fruto de un proceso de reducción de costes supone una merma mu-chas veces irreparable de conocimiento tácito, y por tanto de la totalidad delconocimiento de una organización.

El punto esencial del ciclo de vida del conocimiento radica en que el conoci-miento que no fluye, no crece y a menudo envejece y se vuelve obsoleto e inútil;por el contrario, el conocimiento que fluye, se comparte y se intercambia, ge-

1.1. GESTIÓN DEL CONOCIMIENTO 7

Figura 1.1: Ciclo de Vida del Conocimiento.

nera nuevo conocimiento. El flujo de conocimiento posibilita la interacciónentre el conocimiento tácito que poseen e intercambian las personas con elconocimiento explícito que reside en documentos y librerías. Es por esto queel flujo del conocimiento constituye el aspecto fundamental de la gestión delconocimiento (ver figura 1.1 de la página 7).

1.1.4 Conocimiento: la Nueva Materia Prima de las Empresas

En la era digital que vivimos la riqueza de las empresas comienza a apoyarseen el producto conocimiento. Conocimiento e información, no solo el cono-cimiento científico, sino noticias, informes, ocio, comunicación, servicios... sehan convertido en las materias primas principales de la economía y sus pro-ductos clave. El conocimiento hoy día se compra y se vende en cifras nuncavistas. Los activos de capital que se necesitan para crear riqueza no son latierra ni el trabajo físico, ni las máquinas, herramientas o fábricas, son y seránlos activos del conocimiento.

Nos adentramos en la sociedad del conocimiento, que convive sin fisurascon la sociedad de la información o cibersociedad. Las organizaciones empre-sariales y públicas disponen de un recurso vital e intangible que les permitedesarrollar su actividad esencial: el conocimiento. Los soportes básicos delconocimiento son:

8 CAPÍTULO 1. INTRODUCCIÓN

1. Los recursos humanos que intervienen en los proceso de producción o desoporte organizacional (formación, capacidades, cualidades personales,etc.).

2. La información manejada en dichos procesos que capacita a estas perso-nas a incrementar su formación o habilidades para el desarrollo de sustareas.

La función de estos dos factores hace emerger el conocimiento. La organi-zación, en base a ello, necesita convertir los datos en conocimiento y difundirlosrápidamente dentro de ella misma allá donde sea preciso. Esta concepción hahecho considerar a la organización como una suprarred de recursos humanos,de información y de comunicaciones. Así aparece como un concepto vital enlas empresas la gestión del conocimiento y los sistemas y herramientas inteli-gentes:

• Los recursos humanos que intervienen en los proceso de producción o desoporte organizacional (formación, capacidades, cualidades personales,etc).

• La información manejada en dichos procesos que capacita a estas per-sonas a incrementar su formación o habilidades para el desarrollo de sustareas.

El contexto del capital intelectual se grafica en la figura 1.2 de la página9.

1.1.5 La Cultura en la Nueva Sociedad del Conocimiento

Las tecnologías de la información y comunicación han tenido un impacto con-siderable en la cultura. Es de gran importancia el impacto de los medios decomunicación clásicos, y también la influencia de la multimedia, realidad vir-tual y autopistas de la información en el ámbito cultural y que se denominacibercultura: es el nuevo concepto que define la cultura, sociedad y vida delos próximos años y es un término que engloba todo lo que sea movimiento,evolución y en definitiva cultura a través del prefijo ciber que le proporcionaun nuevo estado, en el que el canal de desarrollo [4, Joyanes] es su propio flujotecnológico.

1.1. GESTIÓN DEL CONOCIMIENTO 9

Figura 1.2: El Contexto del Capital Intelectual.

10 CAPÍTULO 1. INTRODUCCIÓN

Compartir

Cultura Propicia a la GC

Funciones y Reconocimientos e Actividades y

Responsabilidades incentivos medios

Innovar

Colaborar

Figura 1.3: La Cultura Propicia de la Gestión del Conocimiento.

La cibercultura abarca todo el conjunto de posibilidades que ya existían,añadiendo la ventaja del pensamiento artificial y unos interfaces que simulanlos procesos de creación y los transportan a gran velocidad, ya sea en el interiorde la propia computadora, o a otras computadoras situadas a distancia.

La cultura propicia a la gestión de conocimiento se grafica en la figura 1.3de la página 10.

1.1.6 Gestión del Conocimiento

De todos los tipos de capital intelectual, el del conocimiento es el más complejoy el más difícil de gestionar. Esta disciplina no es nueva, sino que sus raíces seremontan a la inteligencia artificial, cuyo objetivo final ha sido la sintetizacióndel comportamiento humano mediante ordenadores.

1.1. GESTIÓN DEL CONOCIMIENTO 11

Las Bases de Conocimientos son depósitos o almacenes de datos (reposito-rios) del conocimiento del negocio (funciones, reglas, cálculos, informes, etc.)totalmente independiente de la plataforma de ejecución, que mediante tecno-logías de la inteligencia artificial son capaces de deducir, generar y mantenerautomáticamente estructuras normalizadas de bases de datos y programas.

Desde hace algunos años se viene hablando de la gestión del conocimiento(GC) de forma creciente en medios de comunicación, mesas redondas, con-ferencias, .... En el conjunto del Producto Interior Bruto de los países másdesarrollados, cada vez tiene un mayor peso la generación de riqueza por mediode los servicios en detrimento del sector productivo.

Esto es, lo inmaterial está desplazando a lo material como base de la for-mación de riqueza de los países. No es extraño que cuando se consolida unatendencia de esta naturaleza la preocupación por los activos inmateriales, porlo intelectual, se acrecienta de forma muy significativa. Surge así el interés porla gestión de los activos inmateriales.

“La necesaria y progresivamente acelerada adaptación a un contexto eco-nómico caracterizado por la globalidad y la competitividad, junto con su corre-lato de desregulación generalizada de los mercados, erige, cada vez con másclaridad, al factor humano y su gestión en las empresas como el elementodeterminante del diferencial de competitividad de las mismas”.

A diferencia de otros factores clave de todo proceso productivo, como latecnología y la organización de los procesos, no es directamente atribuible elrendimiento del factor humano a un mayor o menor nivel de inversión en elmismo, siendo necesaria una adecuada y compleja gestión de este recurso parapoder obtener el desarrollo diferencial [3, Maestre].

La atención que se está prestando a la gestión del conocimiento está cre-ciendo a una velocidad impresionante. Revistas y diarios de economía y librospublican innumerables teorías y casos sobre gestión del conocimiento y sustópicos; el número de conferencias organizadas por todo el mundo es muyelevado y sigue aumentando.

¿Por qué se habla ahora tanto de gestión del conocimiento?

El comienzo del 2000 contempló la emergente y paulatina importancia de lagestión del conocimiento, posiblemente porque después de las distintas teoríasde gestión como la calidad, que tuvo su trascendencia en los 80, la reingenieríade procesos o el cambio estratégico, que tanto se han aplicado en los 90,

12 CAPÍTULO 1. INTRODUCCIÓN

surge la necesidad de un nuevo enfoque que integre modelos de gestión denegocio anteriores y que se centre en las personas como instrumentos capacesde apalancar los conocimientos y crear valores para la empresa.

Los gestores habituados a las reducciones de costes y al incremento con-tinuo de la calidad, como instrumentos de gestión, vuelcan su atención alcrecimiento a través del conocimiento y la innovación.

Las encuestas indican que la mayoría de las empresas consideran la gestióndel conocimiento como un elemento decisivo de su estrategia. Pero el conceptomismo de gestión del conocimiento es problemático. La abundancia de tér-minos que lo rodean crea confusión, y ponerlo en práctica exige la existenciaprevia de una sólida cultura del aprendizaje y puede ser caro.

La creciente aceptación de Internet permite a los trabajadores explorarmás y más oportunidades laborales. Los trabajadores son más demandantes ytiene mayor movilidad que nunca. Las organizaciones reconocen que sus acti-vos claves son los activos intelectuales y que sus prácticas de contratación y deretención deben reflejar esta situación. Este reconocimiento está ocasionandoen las organizaciones alrededor de todo el mundo que desarrollen nuevos méto-dos de medida y gestión de estos activos. De hecho, el enfoque se desplaza deuna gestión de recursos humanos hacia la optimización de activos humanos.(Oracle Corporation).

Parece muy claro que con independencia de su denominación (gestión delcapital intelectual, gestión del capital humano, gestión de recursos humanos,gestión del factor humano, gestión del talento), la gestión del conocimiento hadespertado un gran interés entre los distintos agentes del mundo empresarialy económico.

El proceso del conocimiento se grafica en la figura 1.4 de la página 13.

Tecnologías de la Gestión del Conocimiento

Las tecnologías de GC deben permitir:

• Identificar conocimientos necesarios.

• Identificar dónde y quién tiene el conocimiento o si necesita ser creado.

• Reunir y capturar el conocimiento identificado.

1.1. GESTIÓN DEL CONOCIMIENTO 13

Figura 1.4: El Proceso de Conocimiento.

• Determinar su importancia.

• Resumir y sintetizar la información disponible.

• Distribuir la información a distintos niveles.

• Actualizar, eliminar y modificar el conocimiento obsoleto.

• Guardar y organizar el conocimiento obsoleto, en su caso, para futurasconsultas.

¿Porqué gestionar el conocimiento?

La importancia del pensamiento sobre el conocimiento en términos de sim-plicidad es que se pueden: aplicar conceptos similares, recurriendo a situacio-nes que produzcan efectos predecibles:

• Aplicar conceptos a nuevas situaciones para producir innovaciones.

• Refinar directrices a través de aplicaciones repetidas y verificación.

La gestión del conocimiento es la mezcla de los siguientes componentes:

• Personas: Aquellas que producen y aquellas que utilizan conocimientoque será la base para la acción.

14 CAPÍTULO 1. INTRODUCCIÓN

• Contenido: El flujo de datos, información y conocimiento importantesen el éxito del negocio.

• Tecnología: La infraestructura técnica que facilita la captura, almacena-miento y entrega del contenido a aquellas personas que lo necesitan, enel lugar oportuno y en el momento que lo necesitan.

La tecnología es un facilitador, pero no es la solución.

Se trata de comenzar la aplicación de conceptos básicos de GC para orga-nizar personas, contenidos y tecnologías para una solución dirigida.

Conclusiones y Tendencias

Las Intranets/Extranets corporativas serán lugares clave para acceder a lainformación de gestión y al conocimiento corporativo.

La interfaz de usuario será similar a los portales de Internet.

Los Portales Corporativos evolucionarán de ser lugares de inicio hasta con-vertirse en frontales de acceso personalizados de acuerdo con las necesidadesy preferencias de cada individuo.

Los paquetes de aplicaciones que proporcionan soluciones a la gestión delconocimiento están todavía inmaduros. Su versatilidad depende de su ca-pacidad de integración, al no ser soluciones totales (Soluciones completas/amedida).

No parece probable la aparición de una solución integrada en un solo pa-quete de aplicaciones a corto plazo.

Investigación: La UPSAM (Universidad Pontificia de Salamanca) trabajaen metodologías de valoración de GC y CI y su impacto en organizacionesformales en entornos Cliente/Servidor Universales.

Herramientas capaces de transformar datos en conocimiento: Dataware-house, Datamining, DSS, OLAP...etc.

Herramientas para la transferencia de conocimiento día a día: Servicios deColaboración, Groupware: Exchange, Lotus Notes 5, flujos de trabajo (wor-kflow).

1.1. GESTIÓN DEL CONOCIMIENTO 15

Herramientas de Integración: ERP, EAI, Call-centers (Web/IP),...etc.

El futuro viene marcado por:

• Convergencia telefonía móvil/fija-Internet.

• Internet móvil.

• m-comercio / e-comercio.

• Tecnologías (WAP, GPRS, UMTS, Java, XML, CORBA, XHTML, IP,...).

• El comercio electrónico competirá con el comercio tradicional en pocosaños y las formas más usuales serán:

— comercio-e (B2C).

— negocio-e (B2B).

— aprovisionamiento-e (e-procurement).

— negocio-e para empleados (B2E).

1.1.7 Portales del Conocimiento

La gestión del conocimiento es la nueva filosofía empresarial que pronto seráaceptada por universidades, organizaciones e instituciones de todo tipo, se haconvertido en una necesidad más que en una moda. El nuevo activo de las em-presas, el capital intelectual, está basado en el conocimiento y la experienciaque toda organización tiene dentro de sí. Sin embargo, la estrategia de con-vertir datos en información, y esta a su vez en conocimiento para una correctatoma de decisiones, requiere el uso de una interfaz con el usuario. Esta interfazse está configurando como un portal corporativo: el portal de conocimiento.

La planificación, diseño, construcción y mantenimiento de un portal de co-nocimiento requiere de tecnologías de la información y las comunicaciones quese convierten en la espina dorsal de los programas de gestión de conocimiento.

El proceso clave en la gestión del conocimiento se puede observar en lafigura 1.5 de la página 16.

16 CAPÍTULO 1. INTRODUCCIÓN

Factor Humano

Tecnología Conocimiento

Figura 1.5: Proceso Clave en la Gestión del Conocimiento.

1.1.8 Necesidad de la Gestión del Conocimiento

Ya durante la última década, hemos contemplado cómo la utilización del cono-cimiento y de otros activos intelectuales ha desplazado a otros factores comofuente de ventaja competitiva. Otras circunstancias han contribuido, también,al reconocimiento del conocimiento como un activo importante [3, Maestre].En síntesis, se puede afirmar que los factores que han despertado al interéspor la gestión del conocimiento son:

• Las reestructuraciones y reajustes que han disuelto redes personales yhan ocasionado la pérdida de expertos que poseían los conocimientos yexperiencias para investigar, analizar problemas y encontrar soluciones.

• Las inversiones masivas en tecnologías de información y comunicacionesque permiten un mejor acceso a la información interna y externa a lascorporaciones. Tecnologías que facilitan los medios para crear informa-ción y capturar el conocimiento.

• La necesidad de un contacto más estrecho con los clientes.

• La necesidad de difundir y compartir las experiencias con un mayornúmero de empleados.

• Una mayor capacidad de los empleados para aportar soluciones.

• Un mayor interés por las técnicas para incorporar las mejores prácticasexistentes en otras corporaciones (benchmarking).

1.1. GESTIÓN DEL CONOCIMIENTO 17

• La necesidad de unificar y adaptar respuestas ante la globalización delmercado.

• La demanda de los clientes de aprovecharse de las experiencias desarro-lladas en cualquier punto de las corporaciones proveedoras.

• La necesidad de colaboración de los trabajadores del conocimiento.

• La necesidad de reducir los tiempos de respuesta en desarrollo de pro-ductos y atención a clientes.

El enfoque basado en los resultados, que empieza definiendo el móvil quelleva a toda la corporación y situando la GC en ese contexto, fue el que uti-lizaron en una encuesta reciente sobre el conocimiento llevada a cabo porla Cranfield School of Management en asociación con la revista InformationStrategy.

Entre otros temas, se pidió a las empresas europeas encuestadas que clasi-ficaran por orden de importancia once posibles beneficios de los programas deGC.

Sorprendentemente, la competitividad (ventaja competitiva) fue valoradamuy por encima de cualquier otro beneficio. El único elemento que recibióuna valoración equiparable fue la rentabilidad (aumento de beneficios), queaparecía en segundo o tercer lugar en todos los países (excepto en Alemania,donde ocupaba el octavo lugar).

El crecimiento de las ventas aparecía en casi todos los casos en últimolugar. En conjunto, esto indica que las empresas están buscando nichos dealtos márgenes. Y estos sólo pueden mantenerse si las empresas tienen algoúnico que ofrecer, lo que a su vez, obliga a las organizaciones a aprovechar susconocimientos.

Las firmas consultoras, de las que la casi totalidad de ellas ha implantadoprocesos internos de gestión del conocimiento, han visto un área clara de ne-gocio en el ofrecimiento de servicios a sus clientes para ayudarles en su propiagestión de conocimiento. Los objetivos que, según declaran, suelen perseguirsus clientes por medio de la gestión del conocimiento son los siguientes:

• Incremento de la velocidad de entrega de productos y servicios.

• Mejora de los productos y servicios.

18 CAPÍTULO 1. INTRODUCCIÓN

• Aceleración de la capacidad de innovación.

• Mejora de la cuota de mercado.

• Incremento de la flexibilidad.

• Reducción de costes.

• Adquisición de nuevo conocimiento con mayor rapidez para anticiparsea los cambios.

1.1.9 Situación Actual en la Gestión del Conocimiento

Muchas empresas han emprendido programas específicos de la gestión del co-nocimiento para que esa gestión contribuya a generar mayor valor para susclientes o destinatarios, sus empleados, y sus accionistas o propietarios. Lospilares o elementos más comunes de esos programas son:

• Las personas que crean, guardan, comparten y usan los conocimientos.Son el elemento básico, pero también el más complejo y su conocimientoel más volátil.

• Los procesos que facilitan la identificación, selección, captura, elabora-ción, distribución y uso de los conocimientos.

• Los sistemas que almacenan, procesan, transmiten y apoyan la utili-zación de los conocimientos. No son el pilar central, pero permiten yfacilitan la gestión.

• La cultura de la organización. Contiene conocimientos profundos, esta-bles y arraigados. Por esa razón la cultura puede constituir un poderosoaliado o impulsor, o un enemigo encarnizado y una barrera para el pro-ceso de utilización de los conocimientos.

No todos los programas de gestión del conocimiento conocidos tienen éxito,pero los que se desarrollan exitosamente responden a varios criterios comunes:

• Relación con resultados, finales o intermedios, de la actividad, utilizan-do indicadores adecuados como: calidad del servicio, ingresos, gastos,tiempos, ... Si el conocimiento es un activo, su gestión se orientará haciala eficacia y la rentabilidad.

1.1. GESTIÓN DEL CONOCIMIENTO 19

• Finalidad y objetivos claros, concretos y prácticos. Lenguaje compren-sible y sin jerga técnica.

• Apoyo visible y sin reservas de la dirección. Encabezar las iniciativas valemás que todos los discursos. Además, la dirección ha de proporcionarlos medios necesarios y clarificar los tipos de conocimientos clave parala organización.

• Comienzo con una actitud flexible. Anticipar y adaptarse sin sorpresasa los rápidos cambios que, con toda seguridad, aparecerán.

• Obtención inicial de algunos resultados rápidos que resuelvan situacio-nes o problemas comúnmente compartidos, buscando oportunidades yponiendo en evidencia la utilidad del programa.

• Infraestructura técnica, organizativa y humana adecuadas. El énfasis es-tá en las personas, no en las máquinas, pero estas sirven como soportesy facilitadoras del proceso. Por ejemplo, conviene utilizar tecnologíasaccesibles, fáciles, estándar, y orientadas al conocimiento como infraes-tructura básica (Internet, extranet, etc.).

• Estructura del conocimiento flexible y estándar. El conocimiento estáunido a las personas que lo crean, mantienen, y utilizan y puede ser máso menos explícito. Sus categorías y significados cambian con frecuencia.Las reglas para su actualización y uso deben ser simples, conocidas yasumidas por los utilizadores.

• Canales múltiples para transferir los conocimientos, reforzándose mutua-mente.

• Cultura abierta al conocimiento. La forma de trabajar creando, com-partiendo, y utilizando los conocimientos, suele demandar un cambioen los patrones actuales. La comunicación y la formación constituyenherramientas de refuerzo para los nuevos modelos.

• Reconocimiento, valoración y recompensa de las conductas favorablesa la creación, transmisión y utilización de los conocimientos. Quizásel factor de éxito más clave sea la motivación. Por tanto las actuacio-nes motivadoras para reforzar las conductas positivas están enfocadasal medio y largo plazo, y se enlazan con los sistemas de evaluación deresultados y desempeño, así como con la estructura retributiva.

Las corporaciones deberían realizar los siguientes acciones:

20 CAPÍTULO 1. INTRODUCCIÓN

• Evaluar el impacto de la gestión del conocimiento en la corporación oanalizar la magnitud y los componentes del capital intelectual en el valordel mercado.

• Determinar si el capital intelectual debe ser reinvertido para alinearlocon los objetivos corporativos.

1.1.10 Objetivos de la Gestión del Conocimiento

De la gestión del conocimiento se ocupan varias disciplinas y subsiguientesteorías, tales como las ciencias sobre gestión o sobre educación, y sobre lossistemas de información o sobre comunicación. A pesar de las diferencias quepueden encontrarse según la óptica de estas disciplinas, podemos observarcuatro objetivos comunes a la hora de aplicar la gestión del conocimiento.Estos son:

• Explotar el conocimiento existente del mejor modo posible. El conoci-miento que se encuentra disperso entre los empleados que trabajan enlocalidades diferentes; el conocimiento que se haya almacenado en distin-tos medios tales como papel, audio, videos, bases de datos, etc. ¿Cómopuede una organización crear sinergia entre todas estas fuentes y mejorarsu rendimiento permanentemente?

Esencialmente, el objetivo que se persigue es hacer que el conocimientoexistente sea más productivo.

• Renovar el conocimiento de las personas y de la organización por mediode procesos de aprendizaje. Hay que aprender más rápidamente que loscompetidores y aplicar el nuevo conocimiento con la mayor eficienciaposible.

Este objetivo se encuentra muy próximo al concepto de organización queaprende e innova.

• Transformar el conocimiento de las personas en capital estructural de laorganización. Los empleados constituyen el principal activo de la orga-nización, pero estos pueden abandonarla en cualquier momento. Paraque las organizaciones puedan servir a sus clientes sin altibajos, es ne-cesario que el conocimiento individual pase a ser colectivo. Ello eliminalos riesgos de pérdida de conocimiento y aumenta la velocidad a la queel conocimiento sea productivo.

1.1. GESTIÓN DEL CONOCIMIENTO 21

• Alinear la estrategia corporativa con las capacidades y competencias. Yasea con las existentes así como con las nuevas que surgen para mejorarla ventaja competitiva. Para aprovecharse de las nuevas oportunidades,las organizaciones deben conocer sus competencias actuales.

Para lograr estos objetivos las organizaciones deberán poner en prácticavarias acciones que dependerán de los siguientes factores:

— Estilo directivo y liderazgo.

— Estructura organizativa y funcional.

— Cultura.

— Tecnología (facilitador).

Las organizaciones quieren modos sistemáticos para la identificación y con-versión de las habilidades, conocimientos y experiencias individuales en cono-cimiento de la organización. La capacidad de la organización para que elconocimiento se utilice depende sobretodo del grado de entusiasmo de las per-sonas en compartirlo. Esto está muy ligado a la cultura, entendiendo por talcomo el ambiente que influye en el comportamiento..

Si el conocimiento es cuidadosamente identificado, desarrollado y aplicadorepresenta una fuente de ventaja competitiva ya que es potencialmente valioso,escaso, difícil de imitar y complicado de sustituir.

Las áreas de aplicación, que son los objetivos primeros para la GC, puedenser clasificadas en dos grupos:

• Mejora de actividades.

• Comprensión de lo que existe.

La aplicación del conocimiento para que las personas realicen las tareasmejor es un área de beneficios claro. Las personas pueden mejorar el diseñode los productos, de los procesos o de los servicios así como las operaciones,ventas y análisis de inversión.

Siendo las consecuencias de estas mejoras casi evidentes, los beneficiosdeben ser medidos y analizados en términos de mejora de resultados corpora-tivos. La GC es un medio para la mejora corporativa y no en fin en sí misma.

22 CAPÍTULO 1. INTRODUCCIÓN

Es esencial una colaboración estrecha con los usuarios del conocimiento paradeterminar donde se encuentran las áreas de mayor potencial de mejora y siello sería visto como una contribución positiva.

El segundo grupo lo constituyen las acciones para entender mejor lo queexiste, lo que ocurre y como utilizarlo eficientemente. Un subgrupo de estaárea de aplicación consiste en utilizar mejor y proteger el capital intelectualexistente. Otro subgrupo lo constituye el uso de la GC para conocer tendenciastecnológicas, nuevas previsiones económicas o nuevas demandas del mercado.

Aún cuando se capturen y se pongan a disposición los mejores conocimien-tos, si no se reutilizan no se obtendrán beneficios. Hay que motivar a losusuarios a la reutilización.

Para ello los conocimientos deben cumplir las siguientes cualidades:

• Relevancia.

• Accesibilidad.

• Fiabilidad.

• Actualidad.

1.1.11 Globalización de la Economía y el Conocimiento

El proceso de creación de la cibersociedad entraña la extensión de la globalidada todos los aspectos de la vida. De todos estos aspectos, hoy día la economíaes el factor más influyente, y por consiguiente la formación de una economíaglobal es uno de los objetivos clave de la sociedad actual. Las tecnologías dela información están contribuyendo a la globalización.

La globalización derrumba comodidades, rompe esquemas y rutinas, elimi-na privilegios y aumenta riesgos a comunidades políticas, empresas e institu-ciones, sin olvidar a los ciudadanos.

La información enriquece a los pueblos que, tradicionalmente aislados porrazones geográficas o políticas, acceden a las Tecnologías de la Información.La revolución de la información ha modificado radicalmente la organización delas grandes empresas, que se diseñaron con ideas y organización centralizadoray que ahora han pasado a descentralizarse casi en su totalidad y con grandes

1.1. GESTIÓN DEL CONOCIMIENTO 23

beneficios para estructuras aisladas eficientes, y han abierto la posibilidad deltrabajo a domicilio.

Varias décadas atrás, respetables profetas del cambio social, tales comoAlvin Toffler y Peter Drucker, predijeron la emergencia de una nueva economíaen la que el poder del cerebro, en lugar del poder de las máquinas, se convertiríaen el centro de la economía y en el activo más crítico de las organizaciones.

Hoy en día estas predicciones son ya una realidad: hemos entrado en laera del conocimiento en la que la mayoría de los trabajadores son conside-rados “trabajadores del conocimiento” y en la que el flujo de la informacióny del conocimiento tienen más impacto en los resultados que el movimientode mercancías. Sin duda este desplazamiento de la economía es el resultadodel crecimiento y dominio de la industria de los servicios que constituye enlos países desarrollados el sector de mayor empleo y de mayor crecimiento (enEuropa aproximadamente un 65% de la población activa) [3, Maestre].

Durante la ultima década, hemos contemplado cómo la utilización del co-nocimiento y de otros activos intelectuales ha desplazado a otros factores comofuente de ventaja competitiva, tanto para la reducción de costes como parala pronta satisfacción de la demanda de clientes. Además, el porcentaje decontenido inmaterial en un producto es cada vez más valorado por el mercadoen su conjunto.

El conocimiento en sus distintos ámbitos -acerca de nuestros clientes, nues-tros competidores, nuestras personas, tecnologías, productos o servicios, pro-cesos y sistemas- constituye una poderosa fuente de ventaja competitiva, pro-bablemente la principal y, cuando el conocimiento es profundo, la más difícil-mente adquirible externamente o desarrollable internamente y, por tanto, lamás valiosa. El conocimiento puede influir radicalmente en la forma de des-arrollar la actividad de las organizaciones y puede incluso transformar la formade hacer negocio.

A medida que el comercio ha seguido desarrollándose, la contribución rela-tiva de la información y el conocimiento al valor de las organizaciones continuacreciendo. Esto se traduce en la valoración bursátil de las empresas. Como esnotorio la valoración de las empresas en las que las expectativas de crecimien-to o el conocimiento de marca son los puntos fuertes supera notablemente larelación valor bursátil/facturación de otras empresas consolidadas correspon-dientes a sectores productivos tradicionales.

Los activos intangibles representan una proporción mayor del valor de mer-

24 CAPÍTULO 1. INTRODUCCIÓN

cado comparado a los activos tangibles de capital, terrenos, edificios y bienesde equipo.

1.1.12 La Estrategia de Convertir los Datos en Conocimientopara la Empresa

Las empresas están cambiando el modo de capturar, valorar y utilizar el cono-cimiento. El conocimiento corporativo se define como el quehacer diario y losprocesos que definen el modo en que una organización lleva a cabo los nego-cios. Es preciso convertir el conocimiento en negocio mediante una adecuadagestión que mida y valore el conocimiento en los niveles clave: estratégico, delnegocio y operativo.

Las herramientas tecnológicas que requiere la empresa para una correctagestión del conocimiento son:

• Navegadores, como portales de acceso a la información, tanto a Internet,a través de la red Intranet de la empresa, como a las redes Extranet desocios y proveedores. Los navegadores deben incluir buscadores inteli-gentes.

• Almacenamiento de datos (datawarehousing) con buenos almacenes dedatos (datawarehouse).

• Minería de datos (datamining) para facilitar el acceso de información ycanales de distribución.

• Asistentes digitales personales (PDA).

• Tablones de anuncios electrónicos.

• Sistemas de audio.

• Groupware (trabajo en grupo). Incluyen tecnologías como correo-e, ges-tión documental, grupos de discusión, sistemas de apoyo a la decisión,tales como Lotus Notes, Exchange, etc.

• Videoconferencias.

• ......

1.2. GOBIERNO ELECTRÓNICO 25

1.1.13 Nuevo Futuro del Conocimiento

La dimensión globalizadora se extenderá prácticamente a todas las actividadesde la sociedad. A medida que se globalice el mundo de los negocios e Internetcrezca, se producirá un lugar de trabajo sin fisuras.

La globalización facilita que disciplinas y proyectos que antes estaban di-vididos están ahora colaborando y no compiten entre sí. Está emergiendo unlenguaje común que antes no existía y que permite a la gente entenderse sinimportar las fronteras. La misma puede observarse en la figura ?? de la página??.

Internet va a crear una sociedad global que estará más conectada graciasal correo electrónico y en breve por la videoconferencia y a las aplicacionesWeb (www) [4, Joyanes].

1.2 Gobierno Electrónico

1.2.1 Introducción

Las administraciones públicas del siglo XXI se enfrentan a un cambio en eltipo de relación con los ciudadanos. Se está evolucionando de un esquemaadministración - administrado hacia un modelo de oferente - demandante de

26 CAPÍTULO 1. INTRODUCCIÓN

servicios.

El e-Government es uno de los elementos clave de este nuevo escenario,cuyas principales señas de identidad son la irrupción e incorporación masiva denuevas tecnologías, el incremento en la exigencia de calidad y la estructuraciónde nuevos servicios públicos.

Al igual que ha venido ocurriendo con el sector privado, el sector público havisto cómo las tecnologías de la información y la comunicación han comenzadoa irrumpir en los procedimientos y en el funcionamiento de la administraciónpública, proclamando mayores dosis de eficiencia, más transparencia y mayoragilidad en la prestación de servicios a los ciudadanos [10].

La mayor parte de estas tecnologías han mostrado su valor añadido en elmundo de la empresa y, con ligeras modificaciones, comienzan a ser abrazadaspor el sector público, en algunos casos en busca de eficiencias que impactenpositivamente las maltrechas finanzas públicas y, en otros, como respuestaa una ciudadanía que demanda más información, más transparencia y máseficiencia en la administración pública.

La adopción de las TIC se ha convertido para los gobiernos de todo elmundo no sólo en un catalizador de una renovación desesperadamente nece-sitada, sino también en elemento central de desarrollo en la medida en queempuja a ciudadanos y empresarios a participar de las posibilidades de lanueva economía.

Sin entrar a valorar si la incorporación de la e en la administración públicapara convertirla en gobierno electrónico es buena o mala, resulta un hecho quese trata de un fenómeno imparable y que la cuestión fundamental para losgobiernos no es si deben o no embarcarse en un Plan de Gobierno Electrónicosino cuándo y cómo deben hacerlo.

El gobierno es la industria más grande del mundo. Según la OCDE , lascompras gubernamentales suponen en promedio el 17% del PIB de cualquierpaís, por tanto, el nivel de eficiencia en el funcionamiento de la administraciónpública afecta de forma significativa a la competitividad del país en general.

Las empresas relacionadas con las TIC han llevado a cabo enormes esfuer-zos de inversión que han permitido no sólo que la famosa Ley de Moore de quela capacidad de procesamiento de un chip se duplica cada 18 meses se cumplacon creces sino que, en general, la tecnología se haya hecho omnipresente ennuestra vida cotidiana para facilitar la atención de forma más sencilla y más

1.2. GOBIERNO ELECTRÓNICO 27

rápida de necesidades como la compra de un billete de avión, la solicitud deuna línea telefónica o el envío de dinero a un hijo que está estudiando lejosdel hogar.

Por supuesto, los gobiernos de todo el mundo han seguido la estela delsector privado y han incorporado tecnologías avanzadas tanto en el manejointerno de sus operaciones como en la gestión de sus relaciones con la ciuda-danía.

Los herramientas ERP (Enterprise Resource Planning) o CRM (Custo-mer Relationship Management), inicialmente diseñadas para el mundo de laempresa, han experimentado una importante nivel de adopción por parte delsector público.

Si bien hay que reconocer la contribución de la tecnología a este procesomodernizador, la experiencia aconseja que los responsables de los proyectosde transformación de la administración pública no sitúen la tecnología en elcentro del proyecto sino como herramienta de apoyo fundamental.

En el diseño de estos proyectos resulta crítico evitar ciertos errores que sehan dado con relativa frecuencia:

• automatizar la ineficiencia.

• informatizar la corrupción.

• rediseñar la administración pública para que funcione de acuerdo con unprograma de software.

La tecnología debe situarse al servicio de la modernización de la admi-nistración, en lugar de diseñar la modernización en función de la tecnología.Las posibilidades de transformación de la administración pública utilizandolas nuevas tecnologías son espectaculares y los gobiernos pioneros del gobier-no electrónico como los de Australia o Canadá, no sólo muestran con orgullosus logros y los comparten con la comunidad internacional sino que refuerzanconstantemente sus ya de por sí ambiciosos planes de gobierno electrónico.

Conviene en cualquier caso, introducir cierta dosis de realismo en la ma-gia del gobierno electrónico. Los ahorros tardan en llegar por dos razonesfundamentales.

En primer lugar, se requieren elevadas tasas de uso de la solución que llevaun tiempo alcanzar.

28 CAPÍTULO 1. INTRODUCCIÓN

En segundo, el gobierno electrónico aún no sustituye la forma tradicionalde prestar servicios y el gobierno debe mantener ambas por un tiempo, lo cual,inicialmente incrementa los costos en lugar de disminuirlos.

En realidad parece que el límite en las posibilidades de uso de las nuevastecnologías está en la mente de los seres humanos.

Suena a historia de ciencia ficción pensar que los cirujanos desde los Es-tados Unidos puedan realizar intervenciones quirúrgicas en pacientes que seencuentran en Europa o Africa. Pues es ya una realidad, y un hospital esta-dounidense ha realizado ya 5 operaciones de este tipo. El cirujano en EstadosUnidos dirige el bisturí a través de un mando conectado vía internet con elhospital en el que se encuentra el paciente mientras va siguiendo el proceso através de una pantalla de televisión.

Las posibilidades en el ámbito de la educación se presentan igualmentemotivadoras y el Instituto Tecnológico de Monterrey es un excelente ejemplo.

Según Douglas Holmes en su libro eGov: eBusiness Strategies for Go-vernment, el Tec de Monterrey es el sistema educativo geográficamente másdisperso en el mundo proporcionando cursos online a 43.000 (datos del año2000) estudiantes de México y el resto de América Latina.

Volviendo al gobierno electrónico, algunas experiencias han estado opera-tivas durante un período de tiempo suficientemente largo como para afirmarque efectivamente su impacto es ampliamente positivo y justifica con creces lainversión.

Todas estas experiencias muestran que la transformación de la adminis-tración pública es un proceso complejo, que debe estar bien planificado, querequiere una aproximación gradual y, sobre todo, que debe ser participativoy contar con las aportaciones de todos aquellos que se verán afectados por elcambio: funcionarios del gobierno, empresarios, ciudadanos, sociedad civil yla colectividad académica.

1.2. GOBIERNO ELECTRÓNICO 29

1.2.2 Definición

Se entiende por e-Government el conjunto de procesos y sistemas soportede los mismos, que permiten el acceso telemático interno (gestores) y exter-no (usuarios) a los servicios ofrecidos por una administración, tanto para laconsulta de información como para la teletramitación.

El e-Government, como elemento integrante del nuevo esquema de relaciónentre la administración y los ciudadanos, exige una adaptación y evolución delos sistemas de información públicos actuales.

En el sistema resultante, que tecnológicamente ha de sustentarse en unmodelo único e integrado, aparecen cuatro conceptos clave, sobre los que debepivotar su definición y alcance:

1. Accesibilidad.

Profundizando en una administración transparente y abierta al ciudada-no, aumentando el número de servicios ofrecidos, mejorando la calidad delos mismos, reforzando el papel de terceros colaboradores en los procesosde gestión y avanzando hacia el modelo de ventanilla única.

Desde el punto de vista de los sistemas de información, la accesibilidadhace referencia al acceso interno a aplicaciones y datos, así como, fun-damentalmente, al acceso externo, en su doble vertiente de consulta yteletramitación; ambos, bajo la cobertura de los aspectos relativos a laseguridad, tanto desde un punto de vista técnico como normativo.

30 CAPÍTULO 1. INTRODUCCIÓN

2. Conocimiento.

Estructurando, consolidando e interrelacionando los datos de los siste-mas de información para que, a partir de los mismos, sea posible generarinformación y conocimiento de la realidad que nos rodea en todos susniveles de agregación: país / comunidad / provincia / municipio / ciu-dadano.

Tecnológicamente, esto implica diseñar y alimentar un repositorio de in-formación corporativo, dotándolo de herramientas (Business Intelligencey Data Warehouse) para explotar los datos en dos vertientes básicas:información a terceros e información a los gestores públicos.

3. Eficacia.

Logrando optimizar la actividad operativa de las administraciones, fa-cilitando la agilidad y flexibilidad de la gestión y la racionalización deesfuerzos y recursos. Para ello, el sistema debe abarcar el conjunto deprocesos, actividades, tareas y flujos de información de la administraciónde forma normalizada (procedimientos, documentos, formularios, etc.) eintegrada (dato único, imágenes).

En otras palabras, el sistema ha de comunicarse con los cuatro gran-des grupos de procesos que operan en los sistemas de la administraciónpública: la gestión económicofinanciera, la gestión de recursos humanos,los procesos departamentales y la gestión de expedientes, que engloba,estructura y da coherencia a todos ellos.

4. Solidez y evolución.

Desarrollando los componentes del sistema sobre una arquitectura desistemas de información basada en el modelo de proceso definido e im-plementando una plataforma tecnológica avanzada, robusta y con capa-cidad de evolución, que facilite la incorporación de nuevas herramientasde gestión y permita la reutilización de componentes.

Una tentadora aproximación al e-Government desde una perspectiva úni-camente de accesibilidad proporciona a corto plazo éxitos aparentes, pero cho-ca inmediatamente con las necesidades derivadas de disponibilidad de infor-mación veraz y actualizada y con los requerimientos de la teletramitación, encuanto a la integración de sus resultados con la tramitación tradicional.

Frente a dicha tentación, que tantas experiencias frustradas ha generado,el planteamiento de Ibermática se basa en diseñar un escenario completo e

1.2. GOBIERNO ELECTRÓNICO 31

integrado con los elementos definidos previamente.

A partir de dicho objetivo final, cada organización, en función de su situa-ción actual, necesidades, prioridades y recursos, podrá abordarlo en diferentesetapas, secuenciando sus diferentes componentes. Pero no debería perderse lavisión global del proceso, si se quiere que la implantación del proyecto sea, enel corto, medio y largo plazo, un éxito.

1.2.3 Modalidades del Gobierno Electrónico

Existen 4 ámbitos de operación en la administración pública y el nombre decada uno define claramente el concepto al que alude [11] [10]:

1. Gobierno-Ciudadanos (G2C)

En este ámbito el gobierno debe centrarse en construir puntos únicosde entrada que permitan un acceso fácil y eficiente a cualquier serviciode la administración pública. Estos servicios pueden ser renovaciones delicencia, certificados de nacimiento / muerte, certificados de matrimonio,así como la asistencia a los ciudadanos en los servicios básicos tales comola educación, la atención de la salud, bibliotecas, etc.

2. Gobierno-Empresarios (G2B)

En esta área el gobierno debe también construir puntos únicos de entra-da, reducir procesos redundantes y facilitar la presentación de informa-ción, documentos legales, formularios de impuestos o cualquier otro do-cumento de obligada presentación ante la administración pública. Entrelos servicios prestados a las empresas se incluyen la obtención de informa-ción empresarial actual, descarga de formularios de solicitud, renovaciónde licencias, registro de las empresas, obtención de permisos, y el pa-go de impuestos. Los servicios ofrecidos a través de transacciones G2Btambién pueden ayudar al desarrollo de las empresas, específicamente eldesarrollo de las pequeñas y medianas empresas.

3. Gobierno-Otros Gobiernos (G2G)

En este aspecto, el gobierno debe buscar mecanismos que faciliten el usocompartido de información, eviten la duplicación de procedimientos yfaciliten la gestión de trámites y documentos entre los diferentes niveles

32 CAPÍTULO 1. INTRODUCCIÓN

de gobierno. Hay 2 (dos) niveles,: a nivel local o nacional y a nivel inter-nacional. Los servicios G2G pueden ser utilizados como un instrumentode las relaciones internacionales.

4. Intragobierno (IG)

En este ámbito el gobierno debe perseguir la eliminación de la corrup-ción, la reducción de costos, la mejora de los procedimientos internos deoperación y la prestación de un óptimo servicio a los ciudadanos.

1.2.4 Las estrategias de Gobierno Electrónico

A pesar de la relativa juventud del término gobierno electrónico o e-gobierno,en los últimos tres años han proliferado los documentos denominados estra-tegias de gobierno electrónico o planes de gobierno electrónico que, a la parque ordenan las acciones de los gobiernos que los diseñan, contribuyen a laconsolidación del concepto e-gobierno.

Si bien la aplicación de las tecnologías de la información al funcionamientode la administración pública es casi tan vieja como la historia de la compu-tadora, la combinación de estas tecnologías con la tecnologías relacionadasde telecomunicación con una visión renovadora del gobierno y su forma derelacionarse con los ciudadanos, es mucho más reciente.

La generalización del término gobierno electrónico para referirse a lo des-crito en la frase anterior, el establecimiento de departamentos de e-gobiernoen las empresas de consultoría y de tecnología, así como la intensificación de larealización de estudios, rankings y ensayos sobre el e-gobierno es un fenómenode los últimos cinco años.

En cualquier caso, desde que en la primera mitad de los 90 internet cobravida de forma parecida a como lo conocemos hoy, no en sus orígenes como AR-PANET hace más de treinta años cuando Larry Roberts y su equipo buscabanun mecanismo seguro de comunicación ante un ataque a los mecanismos decomunicación tradicionales, los esfuerzos aislados por utilizarlo en la adminis-tración pública se han sucedido y algunos han quedado para la historia comopioneros del e-gobierno.

Como ya se ha mencionado, es justo reconocer en este punto, la valiosacontribución en este aspecto de David Osborne y Ted Gaebler con su libroReinventing Government, el cual se convirtió en fuente de inspiración para

1.2. GOBIERNO ELECTRÓNICO 33

funcionarios públicos de todo el mundo durante la década de los 90, aludena las tecnologías de la información y la comunicación (TICs) como la excusaque los gobiernos necesitaban para cambiar y que los medios de comunicaciónprecisaban para sentir cierta atracción por esta transformación.

Inspirados por este libro y otros documentos acerca de las posibilidadesde las TIC como herramienta de transformación de la administración pública,algunos gobiernos, para ser precisos, algunas agencias o departamentos dentrode los gobiernos, se lanzan a experimentar con la posibilidad de empezar amanejar sus relaciones con los ciudadanos a través de internet.

En general, se trataba de esfuerzos aislados, dentro de agencias que teníanla fortuna de contar con algún recurso financiero extra para experimentar conlas posibilidades del e-gobierno y, sobre todo, que contaban que con un líderdispuesto a asumir ciertos riesgos y manejar todas las dificultades de este tipode procesos.

Estas actuaciones individuales, pronto se empiezan a extender y, a la vezque permiten comenzar a mostrar resultados a los escépticos acerca de lasposibilidades del gobierno electrónico, generan inquietud acerca de como ponerorden en cada gobierno, acerca de este nuevo virus que se extiende de formaimparable ya no sólo por la espíritu renovador de ciertos funcionarios públicos,sino por demanda popular.

La población quiere que su gobierno sea eficiente, transparente y fácilmenteaccesible, y descubre que internet puede aportar mucho en esa línea, así esque comienza a demandar servicios públicos en línea, que además de ahorrartiempo y dinero de desplazamientos, están operativos las veinticuatro horasdel día, los siete días de la semana, durante todos los días del año.

La proliferación de estas iniciativas aisladas, comienza a generar la preocu-pación en los gobiernos acerca de cómo establecer mecanismos de coordinaciónque garanticen tanto un óptimo aprovechamiento de los recursos públicos co-mo la posibilidad de integración de las diferentes soluciones a medida que elgobierno avanza en la senda del gobierno electrónico.

Es justo esta inquietud la que empuja a los gobiernos a establecer planeso estrategias de gobierno electrónico y sentar las bases institucionales parallevar a cabo las iniciativas de gobierno electrónico con el necesario orden y larequerida eficiencia.

34 CAPÍTULO 1. INTRODUCCIÓN

Funciones de una Estrategia de Gobierno Electrónico

Un plan de gobierno electrónico cumple un rol que va más allá del aspectocoordinador y racionalizador del gasto público.

Las principales contribuciones de un plan de gobierno electrónico podríanresumirse en los siguientes puntos:

• Mapa-guía para el avance del e-gobierno, que orienta las actuaciones detodos los implicados.

• Mecanismo de control, que permite asignar responsabilidades y monito-rear el cumplimiento de las mismas.

• Elemento de referencia para la resolución de dudas operativas relaciona-das con la implementación del e-gobierno.

• Instrumento de organización y manejo del cambio cultural necesario.

• Herramienta de marketing para la venta política del concepto que, bienutilizado, permite conseguir el indispensable apoyo político.

• Mecanismo de captación de recursos financieros que puede servir de re-ferente para el establecimiento de alianzas con el sector privado, para laincorporación de inversores privados a proyectos de gobierno electrónicoy para la asignación de los recursos públicos a aquellos proyectos queaporten mayor valor añadido al país.

Elementos Para la Creación de una Estrategia de Gobierno Elec-trónico

Uno de los pilares de las estrategias de gobierno electrónico de Estados Uni-dos, Reino Unido y Australia, entre otros países que han logrado avancesimportantes en gobierno electrónico, es la definición de una serie de estánda-res tecnológicos que deben respetar todos los proyectos de gobierno electrónicoque se desarrollen en la órbita del respectivo gobierno mencionado.

La mayor parte de estas estrategias de gobierno electrónico no son docu-mentos interminables e ininteligibles, por el contrario, tienen entre treinta ycincuenta páginas y suelen estar bastante enfocados, incluyendo la siguienteinformación:

1.2. GOBIERNO ELECTRÓNICO 35

• Análisis de la situación actual que permite identificar los problemas fun-damentales.

• Visión estratégica del tipo de gobierno que se quiere construir.

• Objetivos a alcanzar para materializar esa visión.

• Areas de acción con su respectivo nivel de prioridad.

• Actividades a realizar en cada área, responsables e hitos.

• Aspectos institucionales para el desarrollo del plan de e-gobierno elec-trónico.

• Aspectos organizativos. Gestión del cambio institucional y manejo delos recursos humanos.

• Aspectos legales.

• Estrategia de marketing interno y externo.

• Riesgos, dificultades y mecanismos para combatirlos.

• Calendario.

• Recursos.

Capítulo 2

JAVA

37

38 CAPÍTULO 2. JAVA

2.1 Introducción al Lenguaje

Java es un lenguaje orientado a objetos. Esto significa que posee ciertascaracterísticas que hoy día se consideran estándares en los lenguajes OO:

• Objetos.

• Clases.

• Métodos.

• Subclases.

• Herencia simple.

• Enlace dinámico.

• Encapsulamiento.

Para programar orientado a objetos es necesario primero diseñar un conjun-to de clases. La claridad, eficiencia y mantenibilidad del programa resultantedependerá principalmente de la calidad del diseño de clases. Un buen diseñode clases significará una gran economía en tiempo de desarrollo y mantención.

Lamentablemente se necesita mucha habilidad y experiencia para logrardiseños de clases de calidad. Un mal diseño de clases puede llevar a programasOO de peor calidad y de más alto costo que el programa equivalente no OO[5, Castillo-Cobo-Solares].

Por qué entonces la ventaja de programar en un lenguaje OO, si se requiereuna experiencia que probablemente una persona nunca tendrá el tiempo depráctica para llegar a obtenerla. La respuesta a este interrogante es que Java esun lenguaje multiparadigma (como muchos otros lenguajes de programación).No se necesita hacer un diseño de clases para programar una aplicación de millíneas.

Entonces otro interrogante podrá ser porque no programar con otro len-guaje más simples, como puede ser Visual Basic, si no se necesita que seaOO. La respuesta a ésto es la gran ventaja de un lenguaje OO, que son lasbibliotecas de clases que se pueden construir para la aplicación [12, JoyanesAguilar-Zahonero Martínez]. Una biblioteca de clases cumple el mismo objeti-vo de una biblioteca de procedimientos en una lenguaje como C. Sin embargo:

2.1. INTRODUCCIÓN AL LENGUAJE 39

Una biblioteca de clases es mucho más fácil de usar que una biblioteca deprocedimientos, incluso para programadores sin experiencia en orientación aobjetos. Esto se debe a que las clases ofrecen mecanismos de abstracción máseficaces que los procedimientos.

Se puede distinguir entre varios tipos de programadores en Java:

— El diseñador de clases: es el encargado de definir qué clases ofreceuna biblioteca y cuál es la funcionalidad que se espera de estas cla-ses. Esta persona tiene que ser muy hábil y de mucha experiencia.Un diseño equivocado puede conducir a clases que son incompren-sibles para los clientes de la biblioteca.

— El programador de clases de biblioteca: sólo programa la clasesespecificadas por el diseñador de clases. Esta persona debe entenderorientación a objetos, pero no requiere mayor experiencia en diseñode clases.

— El cliente de bibliotecas: es el programador de aplicaciones. Él sólousa las clases que otros han diseñado y programado. Como en elcaso anterior necesita entender orientación a objetos y conocer labiblioteca que va usar, pero no necesita mayor experiencia.

Tanto programadores de clases como clientes de bibliotecas pueden llegara convertirse en buenos diseñadores de clases en la medida que adquieranexperiencia, comparando los diseños de las bibliotecas que utilicen.

Por lo tanto es importante destacar que no se necesita gran experiencia endiseño orientado a objetos para poder aprovechar las ventajas de la orientacióna objetos [13, Joyanes Aguilar].

2.1.1 Bibliotecas de Clases Estándares de Java

Toda implementación de Java debe tener las siguientes bibliotecas de clases:

• Manejo de archivos.

• Comunicación de datos.

• Acceso a la red Internet..

• Acceso a bases de datos.

40 CAPÍTULO 2. JAVA

• Interfaces gráficas.

La interfaz de programación de estas clases es estándar, es decir en todasellas las operaciones se invocan con el mismo nombre y los mismos argumentos.

2.1.2 Java es Multiplataforma

Los programas en Java pueden ejecutarse en cualquiera de las siguientes pla-taformas, sin necesidad de hacer cambios:

Windows.

Power/Mac.

Unix (Solaris, Silicon Graphics, ...).

La compatibilidad es total:

A nivel de fuentes: el lenguaje es exactamente el mismo en todas lasplataformas.

A nivel de bibliotecas: en todas las plataformas están presentes las mismasbibliotecas estándares.

A nivel del código compilado: el código intermedio que genera el compiladores el mismo para todas las plataformas. Lo que cambia es el intérprete delcódigo intermedio.

2.1.3 Características del Lenguaje Java

• Robustez

En Java no se pueden cometer los cuatro errores que se mencionarán acontinuación:

Java siempre chequea los índices al acceder a un arreglo.

Java realiza chequeo de tipos durante la compilación (al igual que C).En una asignación entre punteros el compilador verifica que los tipos seancompatibles.

2.1. INTRODUCCIÓN AL LENGUAJE 41

Además, Java realiza chequeo de tipos durante la ejecución (cosa que C yC++ no hacen). Cuando un programa usa un cast para acceder a un objetocomo si fuese de un tipo específico, se verifica durante la ejecución que elobjeto en cuestión sea compatible con el cast que se le aplica. Si el objeto noes compatible, entonces se levanta una excepción que informa al programadorla línea exacta en donde está la fuente del error.

Java posee un recolector de basuras que administra automáticamente lamemoria. Es el recolector el que determina cuando se puede liberar el espacioocupado por un objeto. El programador no puede liberar explícitamente elespacio ocupado por un objeto.

Java no posee aritmética de punteros, porque es una propiedad que no senecesita para programar aplicaciones. En C sólo se necesita la aritmética depunteros para programa malloc/free o para programar el núcleo del sistemaoperativo.

Por lo tanto Java no es un lenguaje para hacer sistemas operativos oadministradores de memoria, pero sí es un excelente lenguaje para programaraplicaciones.

• Flexibilidad

Java combina flexibilidad, robustez y legibilidad gracias a una mezcla dechequeo de tipos durante la compilación y durante la ejecución. En Java sepueden tener punteros a objetos de un tipo específico y también se puedentener punteros a objetos de cualquier tipo. Estos punteros se pueden convertira punteros de un tipo específico aplicando un cast, en cuyo caso se chequea entiempo de ejecución de que el objeto sea de un tipo compatible.

El programador usa entonces punteros de tipo específico en la mayoría delos casos con el fin de ganar legibilidad y en unos pocos casos usa punterosa tipos desconocidos cuando necesita tener flexibilidad. Por lo tanto Javacombina la robustez de Pascal con la flexibilidad de Lisp, sin que lo programaspierdan legibilidad en ningún caso.

• Administración Automática de la Memoria

En Java los programadores no necesitan preocuparse de liberar un trozode memoria cuando ya no lo necesitan. Es el recolector de basuras el quedetermina cuando se puede liberar la memoria ocupada por un objeto.

42 CAPÍTULO 2. JAVA

Un recolector de basuras es un gran aporte a la productividad. Se haestudiado en casos concretos que los programadores han dedicado un 40% deltiempo de desarrollo a determinar en qué momento se puede liberar un trozode memoria.

Además este porcentaje de tiempo aumenta a medida que aumenta lacomplejidad del software en desarrollo. Es relativamente sencillo liberar co-rrectamente la memoria en un programa de 1000 líneas. Sin embargo, es difícilhacerlo en un programa de 10000 líneas. Y se puede postular que es imposibleliberar correctamente la memoria en un programa de 100000 líneas.

Para entender mejor esta afirmación, se podría suponer que se realizó unprograma de 1000 líneas hace un par de meses y ahora se necesita hacer algunasmodificaciones. Ahora, para esta altura ya se habrán olvidado gran parte delos detalles de la lógica de ese programa y no será sencillo determinar si unpuntero referencia un objeto que todavía existe, o si ya fue liberado. Peor aún,supóngase que el programa fue hecho por otra persona y evalúe cuán probablees cometer errores de memoria al tratar de modificar ese programa.

Volviendo al caso de un programa de 100000 líneas. Este tipo de pro-gramas los desarrolla un grupo de programadores que pueden tomar años enterminarlo. Cada programador desarrolla un módulo que eventualmente utili-za objetos de otros módulos desarrollados por otros programadores. Entonces,quién libera la memoria de estos objetos, cómo se ponen de acuerdo los progra-madores sobre cuándo y quién libera un objeto compartido, o cómo probar elprograma completo ante las infinitas condiciones de borde que pueden existiren un programa de 100000 líneas.

Es inevitable que la fase de prueba dejará pasar errores en el manejo de me-moria que sólo serán detectados más tarde por el usuario final. Probablementese incorporan otros errores en la fase de mantención.

Resumiendo, se puede concluir que: todo programa de 100000 líneas quelibera explícitamente la memoria tiene errores latentes, sin un recolector debasuras no hay verdadera modularidad y un recolector de basuras resuelvetodos los problemas de manejo de memoria en forma trivial.

El interrogante sería cuál es el impacto de un recolector de basura en eldesempeño de un programa. El sobrecosto de la recolección de basuras no essuperior al 100%. Es decir si se tiene un programa que libera explícitamente lamemoria y que toma tiempo X, el mismo programa modificado de modo queutilice un recolector de basuras para liberar la memoria tomará un tiempo no

2.2. ESTRUCTURA GENERAL DE UN PROGRAMA JAVA 43

superior a 2X. Este sobrecosto no es importante si se considera el periódicoincremento en la velocidad de los procesadores.

El impacto que un recolector de basura en el tiempo de desarrollo y en laconfiabilidad del software resultante es muchos más importante que la pérdidaen eficiencia.

2.2 Estructura General de un Programa Java

En el siguiente ejemplo se presenta la estructura habitual de un programarealizado en cualquier lenguaje orientado a objetos u OOP (Object OrientedProgramming), y en particular en el lenguaje Java:

import java.awt.*;

import java.lang.String;

import java.lang.Integer;

import java.awt.event.WindowEvent;

import java.util.*;

import java.awt.TextField;

public class Simu extends Frame implements ActionListener,ItemListener{

MenuBar barra;

m1 =new Menu(“Archivo”);

barra.add(m1);

m2 =new Menu(“Ver”);

barra.add(m2);

....

public static void main(String argv [ ]){

Simu menus = new Simu();

menus.setTitle(“Simulación de Redes”);

menus.setVisible(true);

}

}

44 CAPÍTULO 2. JAVA

Aparece una clase que contiene el programa principal Simu (aquel quecontiene la función main()) y algunas clases de usuario (las específicas dela aplicación que se está desarrollando) que son utilizadas por el programaprincipal. La aplicación se ejecuta por medio del nombre de la clase quecontiene la función main(). Las clases de Java se agrupan en packages, queson librerías de clases. Si las clases no se definen como pertenecientes a unpackage, se utiliza un package por defecto (default) que es el directorio activo.

2.3 Conceptos Básicos

2.3.1 Clase

Una clase es una agrupación de datos (variables o campos) y de funciones(métodos) que operan sobre esos datos. A estos datos y funciones pertenecien-tes a una clase se les denomina variables y métodos o funciones miembro. Laprogramación orientada a objetos se basa en la programación de clases [13, Jo-yanes]. Un programa se construye a partir de un conjunto de clases.

Una vez definida e implementada una clase, es posible declarar elementosde esta clase de modo similar a como se declaran las variables del lenguaje (int,double, String). Los elementos declarados de una clase se denominan objetosde 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 objetotiene sus propias copias de las variables miembro, con sus propios valores, engeneral distintos de los demás objetos de la clase. Las clases pueden tenervariables static, que son propias de la clase y no de cada objeto [14, Bosz].

Ejemplo:

public abstract class FuncionActivacion implements Cloneable,Serializable{

/*constructor sin argumentos que permite la herencia */

public FuncionActivacion () {

}

}

2.3. CONCEPTOS BÁSICOS 45

2.3.2 Herencia

La herencia permite que se puedan definir nuevas clases basadas en clasesexistentes, lo cual facilita reutilizar código previamente desarrollado. Si unaclase deriva de otra (extends) hereda todas sus variables y métodos. La clasederivada puede añadir nuevas variables y métodos y/o redefinir las variablesy métodos heredados.

En Java, a diferencia de otros lenguajes orientados a objetos, una clase sólopuede derivar de una única clase, con lo cual no es posible realizar herenciamúltiple en base a clases. Sin embargo es posible “simular” la herencia múltipleen base a las interfaces.

2.3.3 Interface

Una interface es un conjunto de declaraciones de funciones. Si una clase im-plementa (implements) una interface, debe definir todas las funciones especi-ficadas 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 cuyocaso incorpora todos los métodos de las interfaces de las que deriva.

Ejemplo: La clase TangenteHiperbólica se extiende de la clase FunciónAc-tivación que implementa la interface Serializable.

/*función de activación tangente hiperbólica */

public class TangenteHiperbolica extends FuncionActivacion implements Se-rializable{

/*constructor sin argumentos */

public TangenteHiperbolica () {

}

}

2.3.4 Package

Un package es una agrupación de clases. Existen una serie de packages inclui-dos en el lenguaje.

46 CAPÍTULO 2. JAVA

Además el programador puede crear sus propios packages. Todas las clasesque 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 nombresentre clases importadas, el compilador obliga a cualificar en el código losnombres de dichas clases con el nombre del package.

3. Para ayudar en el control de la accesibilidad de clases y miembros.

Por las razones citadas, durante la etapa de Diseño del Software desarrolla-do, se ha decido crear dos paquetes, calculos e interfase, utilizando la sentenciapackage.

package myprojects.simu;

import myprojects.calculos.*;

import myprojects.interfase.*;

2.3.5 La Jerarquía de Clases de Java (API)

Durante la generación de código en Java, es recomendable y casi necesariotener siempre a la vista la documentación on-line del API de Java 1.1 o Java1.2. En dicha documentación es posible ver tanto la jerarquía de clases, esdecir la relación de herencia entre clases, como la información de los distintospackages que componen las librerías base de Java.

Es importante distinguir entre lo que significa herencia y package. Unpackage es una agrupación arbitraria de clases, una forma de organizar lasclases. La herencia sin embargo consiste en crear nuevas clases en base a otrasya existentes. Las clases incluidas en un package no derivan en general de lamisma clase.

En la documentación on-line se presentan ambas visiones: “Package Index”y “Class Hierarchy”. La primera presenta la estructura del API de Javaagrupada por packages, mientras que en la segunda aparece la jerarquía declases. Hay que resaltar el hecho de que todas las clases en Java son derivadas

2.4. VARIABLES DENTRO DEL LENGUAJE JAVA 47

de la clase java.lang.Object, por lo que heredan todos los métodos y variablesde ésta.

Si se selecciona una clase en particular, la documentación muestra unadescripción detallada de todos los métodos y variables de la clase. A su vezmuestra su herencia completa (partiendo de la clase java.lang.Object).

2.4 Variables Dentro del Lenguaje Java

Una variable en Java es un identificador que representa una palabra de me-moria que contiene información. El tipo de información almacenado en unavariable 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 únicoy almacenan directamente ese valor siempre que pertenezca al rango deese tipo. Por ejemplo una variable int almacena un valor entero como1, 2, 0, -1, etc. Esto significa que al asignar una variable entera a otravariable entera, se copia el valor de la primera en el espacio que ocupala segunda variable.

2. Variables referencia. Las variables referencia son referencias o nombresde una información más compleja: arrays u objetos de una determinadaclase. Una referencia a un objeto es la dirección de un área en memoriadestinada a representar ese objeto. El área de memoria se solicita conel operador new. Al asignar una variable de tipo referencia a objeto aotra variable se asigna la dirección y no el objeto referenciado por esadirección. Esto significa que ambas variables quedan referenciando elmismo objeto. En Java una variable no puede almacenar directamenteun objeto, como ocurre en C y C++. Por lo tanto cuando se dice enJava que una variable es un string, lo que se quiere decir en realidad esque la variable es una referencia a un string.

Desde el punto de vista de su papel dentro del programa, las variablespueden ser:

1. Variables miembro de una clase: Se definen en una clase, fuera de cual-quier método; pueden ser tipos primitivos o referencias.

48 CAPÍTULO 2. JAVA

2. Variables locales: Se definen dentro de un método o más en generaldentro de cualquier bloque entre llaves {}. Se crean en el interior delbloque y se destruyen al finalizar dicho bloque. Pueden ser también tiposprimitivos o referencias.

En la Tabla 2.1 de la pág. 48 se muestra una declaración, el nombre de lavariable introducida y el tipo de información que almacena la variable:

Declaración Identificador Tipo

int i; i enteroString s; s referencia a stringint a []; a referencia a arreglo de enterosint[]b; b referencia a arreglo de enteros

Tabla 2.1: Tipos de Variables.

En la Tabla 2.2 de la pág. 48 se muestran las dos grandes categorías detipos para las variables en Java:

Tipos Primitivos Referencias a Objetos

int, short, byte, long Stringschar, boolean Arreglosfloat, double otros objetos

Tabla 2.2: Categorías de Variables.

En la Tabla 2.3de la pág. 49 se indica para cada tipo primitivo el númerode bits que se emplea en su representación y el rango de valores que se puedealmacenar en las variables de estos tipos.

Se dice que un tipo A es de mayor rango que un tipo B si A es un super-conjunto de B. Esto quiere decir que las variables de tipo B siempre se puedenasignar 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 mayorrango que byte. Float y double son de mayor rango que int. Double es demayor rango que float.

Esto se puede quedar resumido de la siguiente manera:

2.4. VARIABLES DENTRO DEL LENGUAJE JAVA 49

Tipo Bits Rango Ejemplos

int 32 −231..231 − 1 0,1,5,-120,...short 16 −215..215 − 1 0,1,5,-120,...byte 8 −27..27 − 1 0,1,5,-120,...long 64 −263..263 − 1 0,1,5,-120,...

boolean 1 n/a false, truechar 16 n/a ‘a’,‘A’,‘0’,‘*’,...float 32 IEEE 1.2

double 64 IEEE 1.2

Tabla 2.3: Tipos Primitivos de Variables.

double > float > long > int > short > byte

2.4.1 Visibilidad y Vida de las Variables

Se entiende por visibilidad, ámbito o scope de una variable, la parte de laaplicación donde dicha variable es accesible y por lo tanto puede ser utilizadaen cualquier expresión. En Java todos las variables deben estar incluidas enuna clase. En general las variables declaradas dentro de unas llaves {}, esdecir dentro de un bloque, son visibles y existen dentro de estas llaves. Porejemplo las variables declaradas al principio de una función existen mientrasse ejecute la función; las variables declaradas dentro de un bloque if no seránválidas al finalizar las sentencias correspondientes a dicho if y las variablesmiembro de una clase (es decir declaradas entre las llaves {} de la clase perofuera de cualquier método) son válidas mientras existe el objeto de la clase.

Las variables miembro de una clase declaradas como public son accesiblesa través de una referencia a un objeto de dicha clase utilizando el operadorpunto (.). Las variables miembro declaradas como private no son accesiblesdirectamente desde otras clases. Las funciones miembro de una clase tienenacceso directo a todas las variables miembro de la clase sin necesidad de ante-poner el nombre de un objeto de la clase. Sin embargo las funciones miembrode una clase B derivada de otra A, tienen acceso a todas las variables miem-bro de A declaradas como public o protected, pero no a las declaradas comoprivate. Una clase derivada sólo puede acceder directamente a las variables yfunciones miembro de su clase base declaradas como public o protected. Otra

50 CAPÍTULO 2. JAVA

característica del lenguaje es que es posible declarar una variable dentro de unbloque con el mismo nombre que una variable miembro, pero no con el nom-bre de otra variable local. La variable declarada dentro del bloque oculta a lavariable miembro en ese bloque. Para acceder a la variable miembro ocultaserá preciso utilizar el operador this.

Uno de los aspectos más importantes en la programación orientada a ob-jetos (OOP) es la forma en la cual son creados y eliminados los objetos. Laforma de crear nuevos objetos es utilizar el operador new. Cuando se utilizael operador new, la variable de tipo referencia guarda la posición de memoriadonde está almacenado este nuevo objeto. Para cada objeto se lleva cuentade por cuántas variables de tipo referencia es apuntado. La eliminación delos objetos la realiza el denominado garbage collector, quien automáticamentelibera o borra la memoria ocupada por un objeto cuando no existe ningunareferencia apuntando a ese objeto. Lo anterior significa que aunque una varia-ble de tipo referencia deje de existir, el objeto al cual apunta no es eliminadosi hay otras referencias apuntando a ese mismo objeto.

2.5 Operadores en Java

Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.Estos operadores se describen brevemente a continuación.

2.5.1 Operadores Aritméticos

Son operadores binarios (requieren siempre dos operandos) que realizan lasoperaciones aritméticas habituales: suma (+), resta (-), multiplicación (*),división (/) y resto de la división (%).

2.5.2 Operadores de Asignación

Los operadores de asignación permiten asignar un valor a una variable. Eloperador de asignación por excelencia es el operador igual (=). La formageneral de las sentencias de asignación con este operador es:

variable = expression;

2.5. OPERADORES EN JAVA 51

Java dispone de otros operadores de asignación. Se trata de versionesabreviadas del operador (=) que realizan operaciones “acumulativas” sobreuna variable.

La siguiente Tabla 2.4 de la pág. 51, muestra estos operadores y su equi-

valencia con el uso del operador igual (=).

Operador Utilización ExpresiónEquivalente

+ = op1 + = op2 op1 = op1 + op2- = op1 - = op2 op1 = op1 - op2= * op1 * = op2 op1 = op1 * op2= / op1 / = op2 op1 = op1 / op2% = op1% = op2 op1 = op1 % op2

Tabla 2.4: Operadores de asignación.

2.5.3 Operadores Unarios

Los operadores más (+) y menos (-) unarios sirven para mantener o cambiarel signo de una

variable, constante o expresión numérica. Su uso en Java es el estándarde estos operadores.

2.5.4 Operadores Incrementales

Java dispone del operador incremento (++) y decremento (—). El operador(++) incrementa en una unidad la variable a la que se aplica, mientras que (—)la reduce en una unidad. Estos operadores se pueden utilizar de dos formas:

1. Precediendo a la variable (por ejemplo: ++i). En este caso primero seincrementa la

variable y luego se utiliza (ya incrementada) en la expresión en la queaparece.

52 CAPÍTULO 2. JAVA

2. Siguiendo a la variable (por ejemplo: i++). En este caso primero seutiliza la variable en la expresión (con el valor anterior) y luego se incre-menta.

En muchas ocasiones estos operadores se utilizan para incrementar unavariable fuera de una expresión. En este caso ambos operadores son equiva-lente. Si se utilizan en una expresión más complicada, el resultado de utilizarestos operadores en una u otra de sus formas será diferente. La actualizaciónde contadores en bucles for es una de las aplicaciones más frecuentes de estosoperadores.

2.5.5 Operadores Relacionales

Los operadores relacionales sirven para realizar comparaciones de igualdad,desigualdad y relación de menor o mayor. El resultado de estos operadoreses siempre un valor boolean (true o false) según se cumpla o no la relaciónconsiderada. La siguiente Tabla 2.5 de la pág. 52 muestra los operadoresrelacionales de Java.

Operador Utilización El resultado es true

> op1 > op2 si op1 es mayor que op2> = op1 >= op2 si op1 es mayor o igual que op2< op1 < op2 si op1 es menor que op 2< = op1 <= op2 si op1 es menor o igual que op2= = op1 == op2 si op1 y op2 son iguales! = op1 != op2 sio p1 y op2 son diferentes

Tabla 2.5: Operadores relacionales.

Estos operadores se utilizan con mucha frecuencia en las bifurcaciones yen los bucles, que se verán luego.

Ejemplo de Operadores Incrementales y Operadores Relacionales en unmétodo.

public void cambiarParesEntrenamiento(double[ ] paresEntrenamiento){

2.5. OPERADORES EN JAVA 53

/* inicialización de sus valores a partir de los valores pasados como argumentos*/

for(int i = 0; i< paresEntrenamiento.length; i++)

{for(int j = 0; j< numeroNeuronasEntrada; j++)

{entradaEntrenamiento[i][j] = paresEntrenamiento[i][j];

}

for(int j = 0; j< numeroSalidas; j++)

{salidaEntrenamiento[i][j] = paresEntrenamiento[i][j+numeroNeuronasEntrada];

}

}

}

2.5.6 Operador de Concatenación de Cadenas de Caracteres(+)

El operador más (+) se utiliza también para concatenar cadenas de caracte-res. Por ejemplo, para escribir una cantidad con un rótulo puede utilizarse lasentencia:

editor.append(“Error Obtenido:” + String.valueOf(imprimoError) + “\n”);

editor.append(“Iteraciones:”+ String.valueOf(imprimoIteraciones) + “\n”);

editor.append(“Inicio: ” + horaInicial.toString() + “\n”);

editor.append(“Final: ” + horaFinal.toString() + “\n”);

donde el operador de concatenación se utiliza dos veces para construir lacadena de caracteres que se desea imprimir. Las variables imprimoErrror,imprimoIteraciones, horaInicial, horaFinal son convertidas en cadena de ca-racteres para poder concatenarlas.

54 CAPÍTULO 2. JAVA

2.5.7 Precedencia de Operadores

El orden en que se realizan las operaciones es fundamental para determinarel resultado de una expresión. Por ejemplo, el resultado de x/y*z depende dequé operación (la división o el producto) se realice primero. La Tabla 2.6 dela pág. 54 muestra el orden en que se ejecutan los distintos operadores en unasentencia, de mayor a menor precedencia:

Nombre Sintáxis

Postfijos [ ] .(params) expr++ expr-Unarios ++expr —expr +expr -expr !

De creación (type) exprMultiplicativo * / %

Adición + -Shift << >> >>>

Relacional <> <= >= instanceofIgualdad = = ! =

AND &Or Excluyente ^Or Incluyente |

Logico AND &&Logico OR ||

Condicional ?:Asignación = += -= *= /= %= &= ^= |= <<= >>= >>>=

Tabla 2.6: Precedencia de Operadores.

En Java, todos los operadores binarios, excepto los operadores de asig-nación, se evalúan de izquierda a derecha. Los operadores de asignación seevalúan de derecha a izquierda, lo que significa que el valor de la izquierda secopia sobre la variable de la derecha.

2.6 Estructuras de Programación

Las estructuras de programación o estructuras de control permiten tomar de-cisiones y realizar un proceso repetidas veces. Son los denominados bifurca-ciones y bucles. En la mayoría de los lenguajes de programación, este tipo de

2.6. ESTRUCTURAS DE PROGRAMACIÓN 55

estructuras son comunes en cuanto a concepto, aunque su sintaxis varía de unlenguaje a otro. La sintaxis de Java coincide prácticamente con la utilizadaen C/C++, lo que hace que para un programador de C/C++ no suponganinguna dificultad adicional.

2.6.1 Sentencias o Expresiones

Una expresión es un conjunto variables unidos por operadores. Son órdenesque se le dan al computador para que realice una tarea determinada.

Una sentencia es una expresión que acaba en punto y coma (;). Se permiteincluir varias sentencias en una línea, aunque lo habitual es utilizar una líneapara cada sentencia. A continuación se muestra un ejemplo de una líneacompuesta de tres sentencias:

i = 0; j = 5; x = i + j;

2.6.2 Comentarios

Existen dos formas diferentes de introducir comentarios entre el código de Java(en realidad son tres, como pronto se verá). Son similares a la forma de reali-zar comentarios en el lenguaje C/C++. Los comentarios son tremendamenteútiles para poder entender el código utilizado, facilitando de ese modo futurasrevisiones y correcciones. Además permite que cualquier persona distinta alprogramador original pueda comprender el código escrito de una forma másrápida. Se recomienda acostumbrarse a comentar el código desarrollado. Deesta forma se simplifica también la tarea de estudio y revisión posteriores.

Java interpreta que todo lo que aparece a la derecha de dos barras “//” en una línea cualquiera del código es un comentario del programador y nolo tiene en cuenta. El comentario puede empezar al comienzo de la línea oa continuación de una instrucción que debe ser ejecutada. La segunda formade incluir comentarios consiste en escribir el texto entre los símbolos “ /* */”. Este segundo método es válido para comentar más de una línea de código.Por ejemplo:

// Esta línea es un comentario

int a=1; // Comentario a la derecha de una sentencia

56 CAPÍTULO 2. JAVA

// Esta es la forma de comentar más de una línea utilizando

// las dos barras. Requiere incluir dos barras al comienzo de cada línea

/* Esta segunda forma es mucho más cómoda para comentar un número ele-vado de líneas ya que sólo requiere modificar el comienzo y el final. */

En Java existe además una forma especial de introducir los comentarios(utilizando /***/ más algunos caracteres especiales) que permite generar auto-máticamente la documentación sobre las clases y packages desarrollados por elprogramador. Una vez introducidos los comentarios, el programa javadoc.exe(incluido en el JDK) genera de forma automática la información de forma si-milar a la presentada en la propia documentación del JDK. La sintaxis de estoscomentarios y la forma de utilizar el programa javadoc.exe se puede encontraren la información que viene con el JDK.

2.6.3 Bifurcaciones

Las bifurcaciones permiten ejecutar una de entre varias acciones en funcióndel valor de una expresión lógica o relacional. Se tratan de estructuras muyimportantes ya que son las encargadas de controlar el flujo de ejecución de unprograma. Se exponen dos variantes del de tipo if.

Bifurcación if

Esta estructura permite ejecutar un conjunto de sentencias en función del valorque tenga la expresión de comparación. Ejemplo: se ejecuta si la expresión decomparación (error < errorMinimo) tiene valor true:

protected void comprobarNuevoMinimo() {

if (error < errorMinimo)

{errorMinimo = error;

vectorDisMinimo = (double[ ])(vectorDis.clone());

} /* fin del if */

}

Las llaves {} sirven para agrupar en un bloque las sentencias que se hande ejecutar, y no son necesarias si sólo hay una sentencia dentro del if.

2.6. ESTRUCTURAS DE PROGRAMACIÓN 57

Bifurcación if else

Análoga a la anterior, de la cual es una ampliación. Las sentencias incluidasen el else se ejecutan en el caso de no cumplirse la expresión de comparación(false),

Ejemplo:

public double decirSalidaActual(int indiceEtapa) {

if(pila != null)

{return pila[indiceEtapa];}

else

{System.out.println(“Fallo: Pila no creada”);

return 0;

}

}

2.6.4 Bucles

Un bucle se utiliza para realizar un proceso repetidas veces. Se denominatambién lazo o loop. El código incluido entre las llaves {} (opcionales si elproceso repetitivo consta de una sola línea), se ejecutará mientras se cumplaunas determinadas condiciones. Hay que prestar especial atención a los buclesinfinitos, hecho que ocurre cuando la condición de finalizar el bucle (boolea-nExpression) 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++ mientrasla expresión (capas.charAt(fin)!=‘,’ && capas.charAt(fin)!=-1) sea verdadera.

for (int j=0; j < numeroCapas; j++)

{int fin = principio;

try {

58 CAPÍTULO 2. JAVA

while (capas.charAt(fin) != ‘,’ && capas.charAt(fin) != -1)

{fin++;

}

}

}

Bucle for

A continuación se podrá apreciar la utilización del bucle for:

/* calcular el nuevo vector de diseño */

for (int i = 0; i < vectorDis.length; i++)

{vectorDis[i] = vectorDis[i] + learningRate * S[i];

}

La sentencia int i = 0 (inicialización) se ejecuta al comienzo del for, ei++ (incremento) después de vectorDis[i] = vectorDis[i] + learningRate * S[i](sentencia). La expresión booleana (vectorDis.length) se evalúa al comienzode cada iteración; el bucle termina cuando la expresión de comparación tomael valor false.

Bucle do while

Es similar al bucle while pero con la particularidad de que el control está alfinal del bucle (lo que hace que el bucle se ejecute al menos una vez, inde-pendientemente de que la condición se cumpla o no). Una vez ejecutados lassentencias, se evalúa la condición: si resulta true se vuelven a ejecutar lassentencias incluidas en el bucle, mientras que si la condición se evalúa a falsefinaliza el bucle.

do{

/* calcular el gradiente del vector fijar el vector de diseño */

2.6. ESTRUCTURAS DE PROGRAMACIÓN 59

problema.fijoVector(vectorDis);

/* incrementar el contador de iteraciones*/

step++;

} while (error > errorDeseado && step < iteracionesMaximas);

/* ... hasta que el error sea menor o igual que el deseado o */

/* se alcance el número de iteraciones pasado como argumento */

problema.fijoVector(vectorDis);

Sentencia return

Una forma de salir de un bucle es utilizar la sentencia return. Esta sentenciasale también de un método o de una función. En el caso de que la funcióndevuelva alguna variable, este valor se deberá poner a continuación del return.

public double devuelveErrorMinimo()

{return errorMinimo;

}

Bloque try{...} catch{...} finally{...}

Java incorpora en el propio lenguaje la gestión de errores. El mejor momentopara detectar los errores es durante la compilación. Sin embargo prácticamentesólo los errores de sintaxis son detectados en esta operación. El resto deproblemas surgen durante la ejecución de los programas.

En el lenguaje Java, una Exception es un cierto tipo de error o una con-dició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óndel programa. En este caso conviene terminar ordenadamente y dar un men-saje explicando el tipo de error que se ha producido. Otras excepciones, comopor ejemplo no encontrar un fichero en el que hay que leer o escribir algo,pueden ser recuperables. En este caso el programa debe dar al usuario la

60 CAPÍTULO 2. JAVA

oportunidad de corregir el error (dando por ejemplo un nuevo path del ficherono encontrado).

Los errores se representan mediante clases derivadas de la clase Throwable,pero los que tiene que chequear un programador derivan de Exception (ja-va.lang.Exception que a su vez deriva de Throwable). Existen algunos tiposde excepciones que Java obliga a tener en cuenta. Esto se hace mediante eluso de bloques try, catch y finally.

El código dentro del bloque try está “vigilado”: Si se produce una situaciónanormal y se lanza como consecuencia una excepción, el control pasa al bloquecatch que se hace cargo de la situación y decide lo que hay que hacer. Se puedenincluir tantos bloques catch como se desee, cada uno de los cuales tratará untipo 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 eltipo de error.

En el caso en que el código de un método pueda generar una Exceptiony no se desee incluir en dicho método la gestión del error (es decir los buclestry/catch correspondientes), es necesario que el método pase la Exception almétodo desde el que ha sido llamado. Esto se consigue mediante la adición dela palabra throws seguida del nombre de la Exception concreta, después de lalista de argumentos del método. A su vez el método superior deberá incluirlos bloques try/catch o volver a pasar la Exception. De esta forma se puede irpasando la Exception de un método a otro hasta llegar al último método delprograma, el método main().

2.7 Clases en Java

Las clases son el centro de la Programación Orientada a Objetos (OOP -Object Oriented Programming). Algunos conceptos importantes de la POOson 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). Lasvariables miembro y los métodos pueden ser public, private, protectedy package. De esta forma se puede controlar el acceso y evitar un usoinadecuado.

2.7. CLASES EN JAVA 61

2. Herencia: Una clase puede derivar de otra (extends), y en ese caso heredatodas sus variables y métodos. Una clase derivada puede añadir nuevasvariables y métodos y/o redefinir las variables y métodos heredados.

3. Polimorfismo: Los objetos de distintas clases pertenecientes a una mismajerarquía o que implementan una misma interface pueden tratarse deuna forma general e individualizada, al mismo tiempo. Esto facilita laprogramación y el mantenimiento del código.

2.7.1 Características Importantes de las Clases

A continuación se enumeran algunas características importantes de las clases:

1. Todas las variables y funciones de Java deben pertenecer a una clase.No hay variables y funciones globales.

2. Si una clase deriva de otra (extends), hereda todas sus variables y méto-dos.

3. Java tiene una jerarquía de clases estándar de la que pueden derivar lasclases que crean los usuarios.

4. Una clase sólo puede heredar de una única clase (en Java no hay herenciamúltiple). Si al definir una clase no se especifica de qué clase deriva, pordefecto la clase deriva de Object. La clase Object es la base de toda lajerarquía de clases de Java.

5. En un fichero se pueden definir varias clases, pero en un fichero no puedehaber más que una clase public. Este fichero se debe llamar como la clasepublic que contiene con extensión *.java. Con algunas excepciones, lohabitual es escribir una sola clase por fichero.

6. Si una clase contenida en un fichero no es public, no es necesario que elfichero se llame como la clase.

7. Los métodos de una clase pueden referirse de modo global al objeto deesa clase al que se aplican por medio de la referencia this.

8. Las clases se pueden agrupar en packages, introduciendo una línea alcomienzo del fichero (package packageName;). Esta agrupación en pac-kages está relacionada con la jerarquía de directorios y ficheros en la quese guardan las clases.

62 CAPÍTULO 2. JAVA

2.7.2 Métodos o Funciones Miembros

Métodos de Objeto

Los métodos son funciones definidas dentro de una clase. Salvo los métodosstatic o de clase, se aplican siempre a un objeto de la clase por medio deloperador punto (.). Dicho objeto es su argumento implícito. Los métodospueden además tener otros argumentos explícitos que van entre paréntesis, acontinuación del nombre del método.

La primera línea de la definición de un método se llama declaración oheader; el código comprendido entre las llaves {} es el cuerpo o body delmé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 clasesde Java. Todas las clases de Java derivan de Object.

La clase Object tiene métodos interesantes para cualquier objeto que sonheredados 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. Elmétodo original heredado de Object lanza una CloneNotSupporte-dException. Si se desea poder clonar una clase hay que implementarla interface Cloneable y redefinir el método clone(). Este métododebe hacer una copia miembro a miembro del objeto original. Nodebería llamar al operador new ni a los constructores.

• equals(): Indica si dos objetos son o no iguales. Devuelve true sison iguales, tanto si son referencias al mismo objeto como si sonobjetos distintos con iguales valores de las variables miembro.

2.8. ALGUNAS CLASES DE UTILIDAD 63

• toString(): Devuelve un String que contiene una representación delobjeto como cadena de caracteres, por ejemplo para imprimirlo oexportarlo.

• 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 lepueden aplicar métodos para determinar el nombre de la clase, susuper-clase, las interfaces implementadas, etc. Se puede crear unobjeto de la misma clase que otro sin saber de qué clase es.

• notify(), notifyAll() y wait(): Son métodos relacionados con losthreads (hilos).

2.8 Algunas Clases de Utilidad

2.8.1 Clase Arrays

Los arrays de Java (vectores, matrices, hiper-matrices de más de dos dimensio-nes) 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étodosde Object pueden ser utilizados con arrays.

Algunas de sus características más importantes de los arrays son las si-guientes:

1. Los arrays se crean con el operador new seguido del tipo y número deelementos.

2. Se puede acceder al número de elementos de un array con la variablemiembro implícita length (por ejemplo, vect.length).

3. Se accede a los elementos de un array con los corchetes [ ] y un índiceque varía de 0 a length-1.

4. Se pueden crear arrays de objetos de cualquier tipo. En principio unarray de objetos es un array de referencias que hay que completar lla-mando al operador new.

64 CAPÍTULO 2. JAVA

5. Los elementos de un array se inicializan al valor por defecto del tipo co-rrespondiente (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éto-dos por referencia.

7. Se pueden crear arrays anónimos (por ejemplo, crear un nuevo arraycomo argumento actual en la llamada a un método).

Inicialización de Arrays

Los arrays se pueden inicializar con valores entre llaves {...} separados porcomas. También los arrays de objetos se pueden inicializar con varias llamadasa new dentro de unas llaves {...}.

Si se igualan dos referencias a un array no se copia el array, sino que setiene un array con dos nombres, apuntando al mismo y único objeto.

Ejemplo de creación de una referencia a un array:

/*vector de pesos */

public double[ ] pesos;

También existen arrays bidimensionales, que se crean de un modo muysimilar al de C++ (con reserva dinámica de memoria). En Java una matrizes un vector de vectores fila, o más en concreto un vector de referencias a losvectores fila. Con este esquema, cada fila podría tener un número de elementosdiferente.

Una matriz se puede crear directamente en la siguiente forma:

/*vector de las entradas de los pares de entrenamiento*/

protected double[ ][ ] entradaEntrenamiento;

2.8. ALGUNAS CLASES DE UTILIDAD 65

2.8.2 Clases String y StringBuffer

Las clases String y StringBuffer están orientadas a manejar cadenas de caracte-res. La clase String está orientada a manejar cadenas de caracteres constantes,es decir, que no pueden cambiar. La clase StringBuffer permite que el pro-gramador cambie la cadena insertando, borrando, etc. La primera es máseficiente, mientras que la segunda permite más posibilidades.

Ambas clases pertenecen al package java.lang, y por lo tanto no hay queimportarlas. Hay que indicar que el operador de concatenación (+) entreobjetos de tipo String utiliza internamente objetos de la clase StringBuffer yel método append().

Los métodos de String se pueden utilizar directamente sobre literals (ca-denas 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 byteso de caracteres.

• String(String str) yString(StringBuffer sb): Costructores a partir de unobjeto String o StringBuffer.

• charAt(int): Devuelve el carácter en la posición especificada.

• getChars(int, int, char[ ], int): Copia los caracteres indicados en la po-sició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 lo-cale).

• toUpperCase(): Convierte en mayúsculas (puede tener en cuenta el lo-cale).

• valueOf(): Devuelve la representación como String de sus argumento.Admite Object, arrays de caracteres y los tipos primitivos.

66 CAPÍTULO 2. JAVA

2.8.3 Clase Double

La clase java.lang.Double deriva de Number, que a su vez deriva de Object.Esta clase contiene un valor primitivo de tipo double.

Algunos Métodos de la Clase Double

• Double(double) y Double(String): Los constructores de esta clase.

• doubleValue(), floatValue(), longValue(), intValue(), shortValue(), byte-Value(): Métodos para obtener el valor del tipo primitivo.

• String toString(), Double valueOf(String): Conversores con la clase String.

• isInfinite(), isNaN(): Métodos de chequear condiciones.

• equals(Object): Compara con otro objeto.

2.8.4 Clase Integer

La clase java.lang.Integer tiene como variable miembro un valor de tipo int.

Algunos Métodos de la Clase Integer

• Integer(int) y Integer(String): Constructores de la clase.

• doubleValue(), floatValue(), longValue(),intValue(), shortValue(), byte-Value(): Conversores con otros tipos primitivos.

• Integer decode(String), Integer parseInt(String), String toString(), In-teger ValueOf(String): Conversores con String del sistema a partir delnombre de dicha propiedad.

2.9 El AWT (Abstract Windows Toolkit)

2.9.1 Qué es el AWT

El AWT (Abstract Windows Toolkit) es la parte de Java que se ocupa deconstruir interfaces gráficas de usuario. Aunque el AWT ha estado presente

2.9. EL AWT (ABSTRACT WINDOWS TOOLKIT) 67

en Java desde la versión 1.0, la versión 1.1 representó un cambio notable, sobretodo en lo que respecta al modelo de eventos. La versión 1.2 ha incorporado unmodelo distinto de componentes llamado Swing, que también está disponibleen la versión 1.1 como package adicional.

2.9.2 Creación de una Interface Gráfica de Usuario

Para construir una interface gráfica de usuario hace falta:

1. Un “contenedor” o container, que es la ventana o parte de la ventanadonde se situarán los componentes (botones, barras de desplazamien-to, etc.) y donde se realizarán los dibujos. Se correspondería con unformulario o una picture box de Visual Basic.

2. Los componentes: menúes, botones de comando, barras de desplaza-miento, cajas y áreas de texto, botones de opción y selección, etc. Secorresponderían con los controles de Visual Basic.

3. El modelo de eventos. El usuario controla la aplicación actuando so-bre los componentes, de ordinario con el ratón o con el teclado. Cadavez que el usuario realiza una determinada acción, se produce el eventocorrespondiente, que el sistema operativo transmite al AWT.

El AWT crea un objeto de una determinada clase de evento, derivada deAWTEvent. Este evento es transmitido a un determinado método para quelo gestione. En Visual Basic el entorno de desarrollo crea automáticamenteel procedimiento que va a gestionar el evento (uniendo el nombre del controlcon el tipo del evento mediante el carácter _ ) y el usuario no tiene más queintroducir el código. En Java esto es un poco más complicado: el componenteu objeto que recibe el evento debe “registrar” o indicar previamente qué objetose va a hacer cargo de gestionar ese evento.

2.9.3 Objetos “event source” y Objetos “event listener”

El modelo de eventos de Java está basado en que los objetos sobre los quese producen los eventos (event sources) “registran” los objetos que habrán degestionarlos (event listeners), para lo cual los event listeners habrán de dispo-ner de los métodos adecuados. Estos métodos se llamarán automáticamente

68 CAPÍTULO 2. JAVA

cuando se produzca el evento. La forma de garantizar que los event listenersdisponen de los métodos apropiados para gestionar los eventos es obligarles aimplementar una determinada interface Listener. Las interfaces Listener secorresponden con los tipos de eventos que se pueden producir.

Las capacidades gráficas del AWT resultan pobres y complicadas en com-paración con lo que se puede conseguir con Visual Basic, pero tienen la ventajade poder ser ejecutadas casi en cualquier ordenador y con cualquier sistemaoperativo.

2.9.4 Proceso a Seguir Para Crear Una Aplicación Interactiva(Orientada a Eventos)

Pasos que se pueden seguir para construir una aplicación orientada a eventossencilla, con interface gráfica de usuario:

1. Determinar los componentes que van a constituir la interface de usuario(botones, cajas de texto, menúes, etc.).

2. Crear una clase para la aplicación que contenga la función main().

3. Crear una clase Ventana, sub-clase de Frame, que responda al eventoWindowClosing().

4. La función main() deberá crear un objeto de la clase Ventana (en elque se van a introducir las componentes seleccionadas) y mostrarla porpantalla con el tamaño y posición adecuados.

5. Añadir al objeto Ventana todos los componentes y menúes que debacontener.

6. Definir los objetos Listener (objetos que se ocuparán de responder a loseventos, cuyas clases implementan las distintas interfaces Listener) paracada uno de los eventos que deban estar soportados. En aplicacionespequeñas, el propio objeto Ventana se puede ocupar de responder a loseventos de sus componentes. En programas más grandes se puede crearuno o más objetos de clases especiales para ocuparse de los eventos.

7. Finalmente, se deben implementar los métodos de las interfaces Listenerque se vayan a hacer cargo de la gestión de los eventos.

2.10. ERRORES FRECUENTES DE PROGRAMACIÓN 69

En la aplicación se podrá observar la gran variedad de componentes deAWT que se utilizaron. También se acudió a los paquetes de Swing , porejemplo para la implementación de un hilo en la presentación de la aplicación.

El objetivo de este capítulo ha sido brindar nociones leves sobre este len-guaje de programación, mostrando algunos ejemplos que se pueden encontraren el código fuente de la aplicación.

2.10 Errores más Frecuentes en la Programacióncon Java

A continuación se presenta una varios ejemplos de errores, vistos desde elpunto 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 algunosde ellos en los que puede caer cualquier programador.

Hay muchísimas formas cometer fallos a la hora de programar en Java; al-gunas 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ónmás obvios, también son los que con más frecuencia cometen los programado-res.

Quizás muchos de los fallos se evitarían si los programadores intentaránaplicar calidad a sus programas desde el momento mismo de concebir el progra-ma, y no la tendencia de aplicar pureza a la aplicación en el último momento.

2.10.1 Scheduling de Hilos de Ejecución

El scheduling de los hilos de ejecución, es decir, el tiempo que el sistemadestina a la ejecución de cada uno de los hilos de ejecución, puede ser distintoen diferentes plataformas. Si no se tienen en cuenta las prioridades o se dejaal azar la prevención de que dos hilos de ejecución accedan a un mismo objetoal mismo tiempo, el programa no será portable.

El siguiente programa, por ejemplo, no es portable:

class Contador implements Runnable

70 CAPÍTULO 2. JAVA

{

static long valor = 0;

public void run() {

valor += 1;

}

public static void main( String args[] )

{

try

{

Thread hilo1 = new Thread( new Contador() );

hilo1.setPriority( 1 );

Thread hilo2 = new Thread( new Contador() );

hilo2.setPriority( 2 );

hilo1.start();

hilo2.start();

hilo1.join();

hilo2.join();

Systtem.out.println( valor );

} catch( Exception e ) {

e.printStackTrace();

}

}

}

Este programa puede no imprimir “2” en todas las plataformas, porque losdos hilos de ejecución no están sincronizados y, desgraciadamente, este es unproblema muy profundo y no hay forma de detectar su presencia ni adivinarel momento en que va a ocurrir.

2.10. ERRORES FRECUENTES DE PROGRAMACIÓN 71

Una solución simple, y drástica, es hacer todos los métodos sincronizados.Pero esto también tiene problemas porque puede presentar como puntos sinretorno 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 proble-máticos de la programación Java, porque la naturaleza del problema se vuelveglobal, al intervenir varios hilos de ejecución. No se puede buscar el problemaen una parte del programa, es imprescindible entender y tratar el programaen su globalidad.

Además, hay ejemplos de contención de hilos que no serán detectados. Porejemplo, en la clase Contador anterior no se detectará el problema ya que lacontención está en el acceso al campo, en lugar de en el acceso al método.

2.10.2 Errores en el Uso de las Características de Portabilidadde Java

Hay características de portabilidad en el API de Java. Es posible, pero menosportable, escribir código que no haga uso de estas características. Muchas delas propiedades del sistema proporcionan información sobre la portabilidad;por ejemplo, se pueden utilizar las propiedades del sistema para conocer cuáles el carácter definido como fin de línea o el que se emplea como terminador delarchivo, para emplear el adecuado a la plataforma en que se está ejecutandoel programa.

Java proporciona dos métodos para facilitar la escritura de programasportables en este sentido. Por un lado, utilizar el método println() en vez deimprimir las cadenas seguidas del terminador de cadena embebido; o también,utilizar la expresión System.getProperty(“line.separator”) para conocer cuál esel terminado de línea que se utiliza en la plataforma en que se está ejecutandoel programa.

En general, el uso de las propiedades facilita en gran modo la portabilidady debería extenderse su uso siempre que fuese aplicable.

2.10.3 Uso de Directorios Definidos

Un error muy común y fácil de cometer entre los programadores, aunque igualde fácil de corregir es la designación en el código de nombre de los archivos, que

72 CAPÍTULO 2. JAVA

pueden dar lugar a problemas de portabilidad, pero cuando se añade el direc-torio en que se sitúan, seguro que estos problemas aparecerán. Estos fallos sonmás comunes entre programadores con viejos hábitos, que eran dependientesdel sistema operativo, y que son difíciles de olvidar.

La forma más portable de construir un File para un fichero en un direc-torio es utilizar el constructor File(File,String). Otra forma sería utilizar laspropiedades 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 delsistema.

En Unix los caminos absolutos empiezan por /, mientras que en Windowspueden empezar por cualquier letra. Por esta razón, el uso de caminos abso-lutos que no sean dependientes de una entrada por operador o de la consultade las propiedades del sistema no será portable.

El ejemplo siguiente proporciona una clase útil para la construcción denombres de archivos. La última versión del JDK es mucho más exhaustiva, ydetecta más fácilmente los errores cometidos en los directorios y nombres deficheros.

import java.io.File;

import java.util.StringTokenizer;

public class UtilFichero {

/* Crea un nuevo fichero con el nombre de otros. Si la base inicial es

* nula, parte del directorio actual

*/

public static File dirInicial( File base,String path[] ) {

File valor = base;

int i=0;

if( valor == null && path.length == 0 ) {

valor = new File( path[i++] );

}

2.10. ERRORES FRECUENTES DE PROGRAMACIÓN 73

for( ; i < path.length; i++ ) {

valor = new File( valor,path[i] );

}

return( valor );

}

public static File desdeOrigen( String path[] ) {

return( dirInicial( null,path ) );

}

public static File desdeProp( String nombrePropiedad ) {

String pd = System.getProperty( nombrePropiedad );

return( new File( pd ) );

}

// Utilizando la propiedad del sistema “user.dir”

public static File userDir() {

return( desdeProp( “user.dir” ) );

}

// Utilizando la propiedad del sistema “java.home”

public static File javaHome() {

return( desdeProp( “java.home” ) );

}

// Utilizando la propiedad del sistema “user.home”

74 CAPÍTULO 2. JAVA

public static File userHome() {

return( desdeProp( “user.home” ) );

}

/* Separa el primer argumento, utilizando el segundo argumetno como

* carácter separador.

* Es muy útil a la hora de crear caminos de ficheros portables

*/

public static String[] split( String p,String sep ) {

StringTokenizer st = new StringTokenizer( p,sep );

String valor[] = new String[st.countTokens()];

for( int i=0; i < valor.length; i++ ) {

valor[i] = st.nextToken();

}

return( valor );

}

}

2.10.4 Carga de Drivers JDBC

El interfaz JDBC, definido por el paquete java.sql, proporciona gran flexibili-dad a la hora de codificar la carga del driver JDBC a utilizar. Esta flexibilidadpermite la sustitución de diferentes drivers sin que haya que modificar el códi-go, a través de la clase DriverManager, que selecciona entre los drivers dispo-nibles en el momento de establecer la conexión. Los drivers se pueden poner adisposición de DriverManager a través de la propiedad del sistema jdbc.driverso cargándolos explícitamente usando el método java.lang.Class.forName().

También es posible la carga de una selección de drivers, dejando que el me-canismo de selección de DriverManager encuentre el adecuado en el momentode establecer la conexión con la base de datos.

2.10. ERRORES FRECUENTES DE PROGRAMACIÓN 75

Hay que tener siempre en cuenta los siguientes puntos:

• La prueba de drivers se intenta siempre en el orden en que se han re-gistrado, por lo que los primeros drivers tienen prioridad sobre los úl-timos cargados, con la máxima prioridad para los drivers listados enjdbc.drivers.

• Un driver que incluya código nativo fallará al cargarlo sobre cualquierplataforma diferente de la que fue diseñado; por lo que el programadeberá recoger la excepción ClassNotFoundException.

• Un driver con código nativo no debe registrarse con DriverManager has-ta que no se sepa que la carga ha tenido éxito.

• Un driver con código nativo no está protegido por la caja negra de Java,así que puede presentar potenciales problemas de seguridad.

2.10.5 Terminación de Líneas

Las distintas plataformas de sistemas operativos tienen distintas convencionespara la terminación de líneas en un fichero de texto. Por esto debería utilizarseel 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 leero escribir texto en un archivo.

En el JDK 1.1 se utilizan las clases java.io.Reader y java.io.Writer paramanejar la conversión del set de caracteres, pero el problema puede surgircuando se leen o escriben archivos ASCII planos, porque en el ASCII estándarno hay un carácter específico para la terminación de líneas; algunas máquinasutilizan \n, otras usan \r, y otras emplean la secuencia \r\n.

Enarbolando la bandera de la portabilidad, deberían utilizarse los métodosprintln() 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 pararecoger una línea completa de texto.

Los otros métodos readLine() son igualmente útiles, pero el de la claseBufferedReader proporciona al código también la traslación.

76 CAPÍTULO 2. JAVA

2.10.6 Entrada/Salida por Archivo

Las clases de entrada y salida del JDK 1.0 no son portables a plataformas queno soporten formatos nativos de archivos no-ASCII. Es fácil para el progra-mador suponer alegremente que todo el mundo es ASCII. Pero la realidad noes esa, los chinos y los japoneses, por ejemplo, no puedes escribir nada con loscaracteres ASCII. Hay que tener esto en cuenta si se quiere que los programasviajen fuera del país propio.

2.10.7 Fuentes de Caracteres

El tamaño y disponibilidad de varios tipos de fuentes varía de pantalla a panta-lla, incluso en una misma plataforma hardware, dependiendo de la instalaciónque se haya hecho. Esto es algo que no descalifica totalmente el programa,porque se verá defectuosamente, pero el programa podrá seguir usándose; pe-ro debería prevenirse, porque se presupone que el programador desea que susoftware aparezca de la mejor manera posible en cualquier plataforma.

El modo mejor de evitar todo esto es no codificar directamente el tamañode los textos, dejar que los textos asuman su tamaño en relación al layout, yutilizar los métodos de la clase FontMetrics para encontrar el tamaño en queaparecen los caracteres de una cadena sobre un Canvas. Cuando se coloca unafuente que no se encuentra entre las de defecto, hay que asegurarse siemprede colocar alguna de respaldo en el bloque catch.

Cuando se crea un menú para seleccionar fuentes de caracteres, se deberíautilizar el método java.awt.Toolkit.getFontList(), en lugar de especificar unalista de fuentes.

Cuando se actualice un programa del JDK 1.0 al JDK 1.1, hay que teneren cuenta que los nombre de las fuentes de caracteres se han actualizado, talcomo se indica en la documentación del método getFontList().

Capítulo 3

Servlet

77

78 CAPÍTULO 3. SERVLET

3.1 Desarrollando Servlets

Los servlets son programas de Java que construyen respuestas dinámicas parael cliente, tal como páginas Web. Los servlets reciben y responden a lasdemandas de los clientes Web, normalmente por HTTP.

Los servlets son más eficientes que los programas (CGI) porque son carga-dos de una sola vez en la memoria, y cada demanda es manejada por un hilode la máquina virtual de Java, no por el sistema operativo.

Además los servlets son escalables, dando soporte para unamulti-aplicaciónde configuración del servidor. [17, IBM Press]

Permiten utilizar datos caché, acceso a información de base de datos, ycompartir datos con otro servlets, archivos JSP y (en algunos ambientes) conlos bean empresariales.

3.1.1 Principios de Codificación de Servlet

Para crear un servlet de HTTP, es necesario extender las clases:

javax.servlet.HttpServlet y sustituir cualquier método que se desee imple-mentar en el servlet. Por ejemplo, un servlet reemplaza el método doGet paramanejar las demandas Get de los clientes.

El HttpServletRequest representa los requerimientos de un cliente. Esteobjeto da acceso al servlet, a la información incluida como datos en formatoHTML, encabezados HTTP, etc.

El HttpServletResponse representa la respuesta del servlet.

El servlet usa este objeto para devolverle datos al cliente como erroresde HTTP (200, 404, y otros), encabezados de respuesta (Content-Type, Set-Cookie, y otros), y datos de salida para escribir cadenas de salida de respuestao salida impresa.

El principio de un servlet podría parecerse al siguiente ejemplo:

import java.io.*;

import javax.servlet.*;

3.1. DESARROLLANDO SERVLETS 79

import javax.servlet.http.*;

import java.util.*;

public class MyServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{

3.1.2 Ciclo de Vida del Servlet

Las clases javax.servlet.http.HttpServlet definen métodos tales como:

• Iniciar un servlet.

• Solicitar servicios.

• Quitar un servlet del servidor.

Éstos son conocidos como métodos del ciclo de vida y son llamados en lasiguiente secuencia:

• Se construye el servlet.

• Se inicializa con el método INIT.

• Se manejan llamadas de los clientes al método de servicio.

• Se saca el servlet de servicio.

• Se destruye con el método destruir.

• Se finaliza el servlet y la basura es recolectada.

En la figura 3.1 de la página 80 se puede apreciar gráficamente el Ciclo deVida de un Servlet.

80 CAPÍTULO 3. SERVLET

Figura 3.1: Ciclo de Vida de un Servlet.

3.1. DESARROLLANDO SERVLETS 81

3.1.3 Instanciación e Inicialización

El motor del servlet (la función del Servidor de Aplicaciones que procesa ser-vlets, archivos JSP, y otros tipos de server-side incluyendo codificación) creauna instancia del servlet. El motor del servlet crea el objeto de configuracióndel servlet y lo usa para pasar los parámetros de inicialización del servlet almétodo INIT. La inicialización de los parámetros persiste hasta que el ser-vlet se destruye y es aplicada a todas las invocaciones de ese servlet hastadestruirse.

Si la inicialización tiene éxito, el servlet está disponible para el servicio. Sila inicialización falla, el motor del servlet descarga el servlet. El administradorpuede inhabilitar una aplicación y el servlet para el servicio. En tales casos,la aplicación y el servlet permanecen inhabilitados hasta que el administradorlos habilite.

3.1.4 Servicio de Demanda

Una demanda del cliente llega al servidor de aplicaciones. El motor del servletcrea un objeto demanda y un objeto respuesta. El motor del servlet invocaal método de servicio del servlet, procesa el requerimiento y usa métodos delobjeto respuesta para crear la respuesta para el cliente.

El método de servicio recibe información sobre el requerimiento del objetodemanda, procesa el requerimiento, y usa los métodos del objeto respuestapara crear la contestación para el cliente. El método de servicio puede invocarotros métodos para procesar el requerimiento, tales como doGet (), doPost (),o métodos del usuario.

3.1.5 Terminación

El motor del servlet invoca al método destroy () del servlet cuando apropiay descarga el servlet. La Máquina Virtual de Java realiza la recolección debasura después de la destrucción del servlet.

Cuando el contenedor Web ya no necesita que el servlet o una nueva ins-tancia del servlet se recarguen, invoca al método destroy () del servlet. Elcontenedor Web también puede llamar al método destroy () si el motor ne-cesita conservar recursos o una llamada pendiente a un método service () del

82 CAPÍTULO 3. SERVLET

Figura 3.2: Requerimiento de un Archivo JSP.

servlet excediendo el timeout. La Máquina Virtual de Java realiza recolecciónde basura después del destroy.

3.1.6 Modelos de Acceso JSP

Se puede acceder a los archivos JSP de dos maneras:

El browser envía un requerimiento para los archivos JSP.

Los archivos JSP acceden a los beans u otros componentes que generancontenido dinámico para ser enviado al browser como se muestra en la figura3.2 de la página 82.

Cuando el servidor Web recibe un requerimiento para un archivo JSP, elservidor envía ese requerimiento al servidor de aplicaciones. El servidor deaplicaciones analiza el archivo JSP y genera código fuente de Java que secompila y se ejecuta como un servlet.

El requerimiento se envía a un servlet que genera contenido dinámico yllama a un archivo JSP para enviar el contenido a un browser, como se muestraen la figura 3.3 de la página 83.

Este modelo de acceso facilita la generación de contenido separado deldespliegue de contenido.

El servidor de aplicaciones proporciona un juego de métodos en el objetoHttpServiceRequest object y el objeto HttpServiceResponse. Estos métodospermiten una invocación de servlet para colocar un objeto (normalmente un

3.1. DESARROLLANDO SERVLETS 83

Figura 3.3: Requerimiento de un Servlet.

bean) en un objeto demanda y pasa ese requerimiento a otra página (normal-mente un archivo JSP) para el despliegue. La página invocada recupera elbeans del objeto demanda y genera el HTML que recibe el cliente.

3.1.7 Procesadores JSP

Cada procesador de JSP es un servlet que se puede adherir a una aplicaciónWeb para manejar todos los requerimientos JSP pertenecientes a la misma.

Cuando se instala el Application Server en un servidor Web, la configura-ción del servidor Web pasa los requerimientos HTTP para los archivos JSP(archivos con la extensión .jsp) al Application Server.

El procesador de JSP crea y compila un servlet desde cada archivo JSP.El procesador produce estos archivos para cada JSP:

• Archivos Java que contienen el código del lenguaje Java para el servlet.

84 CAPÍTULO 3. SERVLET

• Archivos de clase que se compilan en el servlet.

El procesador de JSP pone los archivos .java, y .class en un camino es-pecífico al procesador. Los archivos .java y .class tienen el mismo nombre dearchivos. El procesador usa una convención de denominación que incluye elagregado de subrayado de los caracteres y un sufijo para el nombre del archivoJSP.

Por ejemplo, si el nombre del archivo JSP es simple.jsp, los archivos gene-rados son: _simple_xjsp.java y _simple_xjsp.class.

Como todos los servlets, un servlet generado desde un archivo JSP se ex-tiende desde javax.servlet.http.HttpServlet. El código Java de servlet contienedeclaraciones de importación para las clases necesarias y una declaración depaquete, si la clase del servlet es parte de un paquete.

Si el archivo JSP contiene sintaxis de JSP (como directivas y scriptlets), elprocesador de JSP convierte la sintaxis de JSP al código Java equivalente. Siel archivo JSP contiene etiquetas HTML, el procesador agrega el código Javaa fin de que el servlet realice la salida de HTML carácter por carácter.

3.1.8 Compilación Batch de Archivos JSP

WebSphere Application Server proporciona un compilador batch de JSP. Alusar la función del compilador batch de archivos JSP, se habilitan respuestasmás rápidas al requerimiento inicial del cliente para los archivos JSP en elservidor Web de producción.

El compilador batch ahorra recursos del sistema y proporciona seguridad enel servidor de aplicaciones, especificando cuándo el servidor está chequeandoun archivo de clase o recompilando un archivo JSP. El servidor de aplicacionessupervisará la compilación de los archivos JSP para cambios, y automática-mente compilará y recargará los archivos JSP, siempre que el servidor de apli-caciones descubra que el archivo JSP ha cambiado. Modificando este proceso,se puede ahorrar tiempo y recursos consumidos por las compilaciones y asegu-rar 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 unaaplicación.

3.1. DESARROLLANDO SERVLETS 85

3.1.9 Desarrollando Aplicaciones

Para WebSphere Application Server, las aplicaciones son combinaciones debloques que trabajan conjuntamente para el logro de una función de la lógicacomercial. Las aplicaciones Web son grupos de uno o más servlets, más elcontenido estático.

Aplicaciones Web = servlets + archivos JSP + archivos XML + archivosHTML + gráficos.

El modelo de programación de WebSphere Application Server está basadoen la plataforma Java de Sun (J2SE). El ambiente J2SE soporta la base paraconstruir redes centrales de aplicaciones empresariales para correr sobre unavariedad de sistemas. El software J2SE consiste en los Java SDK StandardEdition y el Java Runtime Environment (JRE) Standard Edition.

3.1.10 Fases de Inicialización y de Terminación

Un motor del servlet crea una instancia de un servlet en los siguientes mo-mentos:

• Automáticamente en el arranque de la aplicación, si esa opción se con-figura para el servlet.

• En la primera demanda del cliente para el servlet después del arranquede la aplicación.

• Cuando el servlet se vuelve a cargar.

El método INIT ejecuta sólo una vez durante la vida del servlet. Ejecutacuando el motor del servlet carga el servlet. Con el Application Server sepuede configurar el servlet para ser cargado cuando comienza la aplicación ocuando un cliente accede por primera vez al servlet. El método INIT no serepite a menos que muchos clientes accedan al servlet.

El método destroy () ejecuta sólo una vez durante la vida del servlet. Esopasa cuando el motor del servlet detiene el servlet. Típicamente, se detienenservlets como parte del proceso de detener la aplicación.

86 CAPÍTULO 3. SERVLET

3.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 de-mandas HTTP (como servlets y archivos JSP) y los archivos relacionados aesos recursos (como HTML estático y GIFs). El motor del servlet genera unsolo despachado de requerimiento por cada servlet o JSP cuando se produceuna instanciación. El despachador recibe el pedido del cliente y despacha lademanda al recurso.

• Un contexto del servlet para la aplicación.

3.1.12 Patrones y Guías de Servlets/JSP

En esta sección se proporciona las pautas específicas sobre cómo organizar unaaplicación que usa servlets y JSPs.

• Patrones Servlet/JSP.

Con este modelo es posible organizar una aplicación Web en el servlets yJavaServer 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 ser-vidor de aplicación Web, no es fácil definir la granularidad de servlets y cómointeractúan los servlets. Pero sin un buen diseño para el servlets y JSP esdifícil mantener la aplicación.

Además en la fase del análisis de un proyecto, usa casos y diagramas detransición de estados ampliamente usados para describir el resultado de la fasedel análisis. Podría ser útil trazar esos resultados en el diseño e implementaciónde la fase.

3.1. DESARROLLANDO SERVLETS 87

En un caso se puede contemplar el servlet como el evento central y procesatodas las demandas del cliente. Ejecuta la acción necesaria para ese eventoy envía el requerimiento a uno (de muchos) JavaServer Page por desplegar elresultado. 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 quellevar a cabo mucha lógica en ese servlet.

En otro caso se puede tener tantos servlets como JavaServer Pages y en-cadenarlos. Esto significa que un servlet obtiene un requerimiento, ejecuta laacción correcta, y llama al JavaServer Page específico para ese servlet, paradesplegar el resultado. Un requerimiento de ese JSP entonces obtiene otro ser-vlet, y así sucesivamente. Será difícil mantener muchos servlets y JSP, puedeconfundirse al intentar entender el flujo de la aplicación.

Una solución que tiene una granularidad entre esos extremos es dividien-do la aplicación en estados diferentes. Se intenta transferir un diagrama detransición de estados (por ejemplo, modelado con RationalRose) en páginasHTML, servlets y JavaServer Pages.

• Applicabilidad.

Este modelo puede usarse en toda aplicación servlet /JSP. Es recomenda-ble este modelo sobre todo en las aplicaciones Web complejas donde muchaspá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 eldespliegue de un estado dado o invoca la acción que causa una tran-sición fuera del estado. Esta responsabilidad lo hace el controladoren un Modelo-Vista-Controlador (MVC) basado en la aplicación.

— JavaServerPage: es el indicador de la generación de código HTMLpara un resultado del requerimiento dado.

— Wrapper de Tareas: encapsula el acceso al proceso empresarial denegocios (datos back-end y función). Esta función realiza el modelode wrapper de tareas en una aplicación MVC.

88 CAPÍTULO 3. SERVLET

— Páginas HTML: en caso de contenido estático y transiciones de es-tado, no es necesario tecnologías complejas. Un indicador de estadoestático de página HTML.

• Colaboradores.

Un flujo de aplicación Web puede capturarse en un diagrama de transiciónde estado (que es, a propósito, una documentación buena para el flujo de laaplicación). Un diagrama de transición de estado contiene nombres de estadoconectados con los nombres de las ramas.

La solución,es trazar cada componente del diagrama de transición de estadoa un componente de la arquitectura de e-business para que pueda manejarsemediante WebSphere Aplication Server.

Se separa en el diagrama los estados estáticos y los estados dinámicos.

Las transiciones de estado estáticos son inherentes. Como ellos son estáti-cos en el controlador y en las transiciones, se puede codificar un estado comouna 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. Conformea 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. Estosignifica que se captura un servlet por estado dinámico. Nombrando la con-vención, el servlet es llamado después del estado: < State>Servlet. Haciendoesto se consigue un método fácil de documentación.

Pensando sobre cada interacción entre el navegador y el servidor de apli-caciones Web (por ejemplo, el servlet) como una sola unidad de trabajo, desó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 unestado dado, y el otro maneja las acciones que causan un cambio de estado.

• Despliegue de Patrones.

3.1. DESARROLLANDO SERVLETS 89

Este modelo normalmente se manifiesta dentro de HTML como un link,resultando en un requerimiento Get. El flujo de control para este modelo es:

— El servlet invoca el método apropiado de sólo lectura en el modelode estado (ese es el wrapper de la tarea) y selecciona el JSP paraocuparse del resultado.

— El servlet inicializa el objeto de datos asociado con el JSP, carga elresultado 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 di-señar una aplicación Web, mediante la utilización de servlets, JSPs, wrapperde tareas y páginas HTML.

Capítulo 4

J2ME

91

92 CAPÍTULO 4. J2ME

4.1 Introducción

La empresa Sun Microsystems lanzó a mediados de los años 90 el lenguaje deprogramación Java que, aunque en un principio fue diseñado para generar apli-caciones que controlaran electrodomésticos como lavadoras, frigoríficos, etc.,debido a su gran robustez e independencia de la plataforma donde se ejecuta-se el código, desde sus comienzos se utilizó para la creación de componentesinteractivos integrados en páginas Web y programación de aplicaciones inde-pendientes [18].

Estos componentes se denominaron applets y casi todo el trabajo de losprogramadores se dedicó al desarrollo de éstos. Con los años, Java ha pro-gresado enormemente en varios ámbitos como servicios HTTP, servidores deaplicaciones, acceso a bases de datos (JDBC).

Como se ve, Java se ha ido adaptando a las necesidades tanto de los usua-rios como de las empresas ofreciendo soluciones y servicios tanto a unos comoa otros.

En estos últimos años Java ha desarrollado soluciones personalizadas paracada ámbito tecnológico. Sun ha agrupado cada uno de esos ámbitos en unaedición distinta de su lenguaje Java. Estas ediciones son Java 2 Stantard Edi-tion, orientada al desarrollo de aplicaciones independientes y de applets, Java2 Enterprise Edition, enfocada al entorno empresarial y Java 2 Micro Edition,orientada a la programación de aplicaciones para pequeños dispositivos.

La edición Java 2 Micro Edition fue presentada en 1999 por Sun Microsys-tems con el propósito de habilitar aplicaciones Java para pequeños dispositivos.En esta presentación, lo que realmente se mostró fue una primera versión deuna nueva Java Virtual Machine (JVM) que podía ejecutarse en dispositivosPalm.

Java Micro Edition es la versión del lenguaje Java que está orientada aldesarrollo de aplicaciones para dispositivos pequeños con capacidades restrin-gidas tanto en pantalla gráfica, como de procesamiento y memoria (teléfonosmóviles, PDA’s, Handhelds, Pagers, etc.).

La tardía aparición de esta tecnología, puede ser debido a que las necesi-dades de los usuarios de telefonía móvil ha cambiado mucho en estos últimosaños y cada vez demandan más servicios y prestaciones por parte tanto de losterminales como de las compañías. Además el uso de esta tecnología depende

4.1. INTRODUCCIÓN 93

del asentamiento en el mercado de otras, como GPRS, íntimamente asociadaa J2ME y que no ha estado a nuestro alcance hasta hace poco.

4.1.1 Análisis Comparativo

Sun, dispuesto a proporcionar las herramientas necesarias para cubrir las ne-cesidades de todos los usuarios, creó distintas versiones de Java.

El paquete Java 2 se divide en 3 ediciones distintas.

Java 2 Platform, Standard Edition (J2SE): Esta edición de Java es laque en cierta forma recoge la iniciativa original del lenguaje Java. Tiene lassiguientes características:

• Inspirado inicialmente en C++, pero con componentes de alto nivel,como soporte nativo de strings y recolector de basura.

• Código independiente de la plataforma, precompilado a bytecodes inter-medio y ejecutado en el cliente por una JVM (Java Virtual Machine).

• Modelo de seguridad tipo sandbox proporcionado por la JVM.

• Abstracción del sistema operativo subyacente mediante un juego com-pleto de APIs de programación.

Esta versión de Java contiene el conjunto básico de herramientas usadaspara desarrollar Java Applets, así cómo las APIs orientadas a la programaciónde aplicaciones de usuario final: Interfaz gráfica de usuario, multimedia, redesde comunicación, etc.

Java 2 Platform, Enterprise Edition (J2EE): Esta versión está orientadaal entorno empresarial. El software empresarial tiene unas características pro-pias marcadas: está pensado no para ser ejecutado en un equipo, sino paraejecutarse sobre una red de ordenadores de manera distribuida y remota me-diante EJBs (Enterprise Java Beans). De hecho, el sistema se monta sobrevarias unidades o aplicaciones.

En muchos casos, además, el software empresarial requiere que se sea ca-paz de integrar datos provenientes de entornos heterogéneos. Esta edición

94 CAPÍTULO 4. J2ME

Figura 4.1: Versiones de Java

está orientada especialmente al desarrollo de servicios web, servicios de nom-bres, persistencia de objetos, XML, autenticación, APIs para la gestión detransacciones, etc.

El cometido de esta especificación es ampliar la J2SE para dar soporte alos requisitos de las aplicaciones de empresa.

Java 2 Platform, Micro Edition (J2ME): Esta versión de Java está en-focada a la aplicación de la tecnología Java en dispositivos electrónicos concapacidades computacionales y gráficas muy reducidas, tales como teléfonosmóviles, PDAs o electrodomésticos inteligentes.

Esta edición tiene unos componentes básicos que la diferencian de las otrasversiones, como el uso de una máquina virtual denominada KVM (Kilo VirtualMachine, debido a que requiere sólo unos pocos Kilobytes de memoria parafuncionar) en vez del uso de la JVM clásica, inclusión de un pequeño y rápidorecolector de basura y otras diferencias que se verán más adelante (ver fig. 4.1de la pág. 94).

4.1. INTRODUCCIÓN 95

J2ME J2SE J2EE

javax.microedition

Figura 4.2: Relación entre las APIs de la plataforma Java.

J2ME representa una versión simplificada de J2SE. Sun separó estas dosversiones ya que J2ME estaba pensada para dispositivos con limitaciones deproceso y capacidad gráfica. También separó J2SE de J2EE porque esteúltimo exigía unas características muy pesadas o especializadas de E/S, trabajoen red, etc.

Por tanto, separó ambos productos por razones de eficiencia. Hoy, J2EE esun superconjunto de J2SE pues contiene toda la funcionalidad de éste y máscaracterísticas, así como J2ME es un subconjunto de J2SE (excepto por elpaquete javax.microedition) ya que, contiene varias limitaciones con respectoa J2SE (ver fig. 4.2 de la pág. 95).

4.1.2 Nociones Básicas de J2ME

Los componentes que forman parte de esta tecnología son:

• Por un lado se tiene una serie de máquinas virtuales Java con diferentesrequisitos, cada una para diferentes tipos de pequeños dispositivos.

96 CAPÍTULO 4. J2ME

Figura 4.3: Entorno de ejecución de J2ME

• Configuraciones, que son un conjunto de clases básicas orientadas a con-formar el corazón de las implementaciones para dispositivos de caracte-rísticas específicas. Existen 2 configuraciones definidas en J2ME: Con-nected Limited Device Configuration (CLDC ) enfocada a dispositivoscon restricciones de procesamiento y memoria, y Connected Device Con-figuration (CDC ) enfocada a dispositivos con más recursos.

• Perfiles, que son unas bibliotecas Java de clases específicas orientadas aimplementar funcionalidades de más alto nivel para familias específicasde dispositivos.

Un entorno de ejecución determinado de J2ME se compone entonces deuna selección de (ver fig. 4.3 de la pág. 96):

1. Máquina virtual.

2. Configuración.

3. Perfil.

4. Paquetes Opcionales.

4.1. INTRODUCCIÓN 97

Máquinas Virtuales J2ME

Una máquina virtual de Java (JVM ) es un programa encargado de interpretarcódigo intermedio (bytecode) de los programas Java precompilados a códigomáquina ejecutable por la plataforma, efectuar las llamadas pertinentes alsistema operativo subyacente y observar las reglas de seguridad y correcciónde código definidas para el lenguaje Java.

De esta forma, la JVM proporciona al programa Java independencia dela plataforma con respecto al hardware y al sistema operativo subyacente.Las implementaciones tradicionales de JVM son, en general, muy pesadas encuanto a memoria ocupada y requerimientos computacionales.

J2ME define varias JVMs de referencia adecuadas al ámbito de los disposi-tivos electrónicos que, en algunos casos, suprimen algunas características conel fin de obtener una implementación menos exigente.

Como existen dos configuraciones (CLDC y CDC), cada una requiere supropia máquina virtual. La VM (Virtual Machine) de la configuración CLDCse denomina KVM y la de la configuración CDC se denomina CVM.

Las características principales de cada una de las máquinas virtuales son:

• KVM

Se corresponde con la Máquina Virtual más pequeña desarrollada por Sun.Su nombre KVM proviene de Kilobyte (haciendo referencia a la baja ocupaciónde memoria, entre 40Kb y 80Kb).

Se trata de una implementación de Máquina Virtual reducida y especial-mente orientada a dispositivos con bajas capacidades computacionales y dememoria. La KVM está escrita en lenguaje C, aproximadamente unas 24000líneas de código, y fue diseñada para ser:

• Pequeña, con una carga de memoria entre los 40Kb y los 80 Kb, depen-diendo de la plataforma y las opciones de compilación.

• Alta portabilidad.

• Modulable.

98 CAPÍTULO 4. J2ME

• Lo más completa y rápida posible y sin sacrificar características para lasque fue diseñada.

Sin embargo, esta baja ocupación de memoria hace que posea algunaslimitaciones con respecto a la clásica Java Virtual Machine (JVM):

1. No hay soporte para tipos en coma flotante. No existen por tanto los ti-pos double ni float. Esta limitación está presente porque los dispositivoscarecen del hardware necesario para estas operaciones.

2. No existe soporte para JNI (Java Native Interface) debido a los recursoslimitados de memoria.

3. No existen cargadores de clases (class loaders) definidos por el usuario.Sólo existen los predefinidos.

4. No se permiten los grupos de hilos o hilos daemon. Cuándo queramosutilizar grupos de hilos utilizaremos los objetos Colección para almacenarcada hilo en el ámbito de la aplicación.

5. No existe la finalización de instancias de clases. No existe el métodoObject.finalize().

6. No hay referencias débiles1.

7. Limitada capacidad para el manejo de excepciones debido a que el ma-nejo de éstas depende en gran parte de las APIs de cada dispositivo porlo que son éstos los que controlan la mayoría de las excepciones.

8. Reflexión2.

Aparte de la no inclusión de estas características, la verificación de clasesmerece un comentario aparte.

El verificador de clases estándar de Java es demasiado grande para laKVM. De hecho es más grande que la propia KVM y el consumo de memoriaes excesivo, más de 100Kb para las aplicaciones típicas.

1 Un objeto que está siendo apuntado mediante una referencia débil es un candidato parala recolección de basura. Estas referencias están permitidas en J2SE, pero no en J2ME.

2 La reflexión es el mecanismo por el cual los objetos pueden obtener información de otrosobjetos en tiempo de ejecución como, por ejemplo, los archivos de clases cargados o suscampos y métodos.

4.1. INTRODUCCIÓN 99

Figura 4.4: Preverificación de clases en CDLC/KVM.

Este verificador de clases es el encargado de rechazar las clases no válidasen tiempo de ejecución. Este mecanismo verifica los bytecodes de las clasesJava realizando las siguientes comprobaciones:

• Ver que el código no sobrepase los límites de la pila de la VM.

• Comprobar que no se utilizan las variables locales antes de ser iniciali-zadas.

• Comprobar que se respetan los campos, métodos y los modificadores decontrol de acceso a clases.

Por esta razón los dispositivos que usen la configuración CLDC y KVMintroducen un algoritmo de verificación de clases en dos pasos (ver fig. 4.4 dela pág. 99).

• CVM

La CVM (Compact Virtual Machine) ha sido tomada como Máquina Vir-tual Java de referencia para la configuración CDC y soporta las mismas ca-racterísticas que la Máquina Virtual de J2SE.

100 CAPÍTULO 4. J2ME

Está orientada a dispositivos electrónicos con procesadores de 32 bits degama alta y en torno a 2Mb o más de memoria RAM. Las características quepresenta esta Máquina Virtual son:

1. Sistema de memoria avanzado.

2. Tiempo de espera bajo para el recolector de basura.

3. Separación completa de la VM del sistema de memoria.

4. Recolector de basura modularizado.

5. Portabilidad.

6. Rápida sincronización.

7. Ejecución de las clases Java fuera de la memoria de sólo lectura (ROM).

8. Soporte nativo de hilos.

9. Baja ocupación en memoria de las clases.

10. Proporciona soporte e interfaces para servicios en Sistemas Operativosde Tiempo Real.

11. Conversión de hilos Java a hilos nativos.

12. Soporte para todas las características de Java2 v1.3 y librerías de se-guridad, referencias débiles, Interfaz Nativa de Java (JNI), invocaciónremota de métodos (RMI), Interfaz de depuración de la Máquina Vir-tual (JVMDI).

Configuraciones

Una configuración es el conjunto mínimo de APIs Java que permiten desarro-llar aplicaciones para un grupo de dispositivos.

Estas APIs describen las características básicas, comunes a todos los dis-positivos:

• Características soportadas del lenguaje de programación Java.

• Características soportadas por la Máquina Virtual Java.

4.1. INTRODUCCIÓN 101

• Bibliotecas básicas de Java y APIs soportadas.

Existen dos configuraciones en J2ME: CLDC, orientada a dispositivos conlimitaciones computacionales y de memoria y CDC, orientada a dispositivoscon no tantas limitaciones.

Configuración de dispositivos con conexión, CDC (Connected Limited Con-figuration)

La CDC está orientada a dispositivos con cierta capacidad computacional yde memoria. Por ejemplo, decodificadores de televisión digital, televisores conInternet, algunos electrodomésticos y sistemas de navegación en automóviles.

CDC usa una Máquina Virtual Java similar en sus características a una deJ2SE, pero con limitaciones en el apartado gráfico y de memoria del disposi-tivo.

Esta Máquina Virtual es la CVM (Compact Virtual Machine). La confi-guración CDC está enfocada a dispositivos con las siguientes capacidades:

• Procesador de 32 bits.

• Disponer de 2 Mb o más de memoria total, incluyendo memoria RAM yROM.

• Poseer la funcionalidad completa de la Máquina Virtual Java2.

• Conectividad a algún tipo de red.

La CDC está basada en J2SE v1.3 e incluye varios paquetes Java de laedición estándar.

Las peculiaridades de la CDC están contenidas principalmente en el pa-quete javax.microedition.io, que incluye soporte para comunicaciones http ybasadas en datagramas (ver table 4.1 de la pág.102).

Configuración de dispositivos limitados con conexión, CLDC (ConnectedLimited Device Configuration).

La CLDC está orientada a dispositivos dotados de conexión y con limi-taciones en cuanto a capacidad gráfica, cómputo y memoria. Un ejemplo deéstos dispositivos son: teléfonos móviles, buscapersonas (pagers), PDAs, or-ganizadores personales, etc.

102 CAPÍTULO 4. J2ME

Nombre de Paquete CDC Descripción

java.io Clases e interfaces estándar de E/S.java.lang Clases básicas del lenguaje.java.lang.ref Clases de referencia.java.lang.reflect Clases e interfaces de reflection.java.math Paquete de matemáticas.java.net Clases e interfaces de red.java.security Clases e interfaces de seguridadjava.security.cert Clases de certificados de seguridad.java.text Paquete de texto.java.util Clases de utilidades estándar.java.util.jar Clases y utilidades para archivos JAR.java.util.zip Clases y utilidades para archivos ZIP y

comprimidos.javax.microedition.io Clases e interfaces para conexión genérica

CDC.

Tabla 4.1: Librerías de configuración CDC.

CLDC está orientado a dispositivos con ciertas restricciones.

Algunas de éstas restricciones vienen dadas por el uso de la KVM, necesariaal trabajar con la CLDC debido a su pequeño tamaño. Los dispositivos queusan CLDC deben cumplir los siguientes requisitos:

• Disponer entre 160 Kb y 512 Kb de memoria total disponible. Comomínimo se debe disponer de 128 Kb de memoria no volátil para la Máqui-na Virtual Java y las bibliotecas CLDC, y 32 Kb de memoria volátil parala Máquina Virtual en tiempo de ejecución.

• Procesador de 16 o 32 bits con al menos 25 Mhz de velocidad.

• Ofrecer bajo consumo, debido a que éstos dispositivos trabajan con su-ministro de energía limitado, normalmente baterías.

• Tener conexión a algún tipo de red, normalmente sin cable, con conexiónintermitente y ancho de banda limitado (unos 9600 bps).

La CLDC aporta las siguientes funcionalidades a los dispositivos (ver table

4.1. INTRODUCCIÓN 103

4.2 de la pág. 103):

• Un subconjunto del lenguaje Java y todas las restricciones de su MáquinaVirtual (KVM).

• Un subconjunto de las bibliotecas Java del núcleo.

• Soporte para E/S básica.

• Soporte para acceso a redes.

• Seguridad.

Nombre de Paquete CLDC Descripción

java.io Clases e interfaces estándar de E/S.java.lang Clases básicas del lenguaje.java.lang.ref Clases de referencia.java.lang.reflect Clases e interfaces de reflection.

Tabla 4.2: Librerías de configuración CLDC.

Perfiles

El perfil es el que define las APIs que controlan el ciclo de vida de la aplicación,interfaz de usuario, etc. Más concretamente, un perfil es un conjunto de APIsorientado a un ámbito de aplicación determinado.

Los perfiles identifican un grupo de dispositivos por la funcionalidad queproporcionan (electrodomésticos, teléfonos móviles, etc.) y el tipo de aplica-ciones que se ejecutarán en ellos.

Las librerías de la interfaz gráfica son un componente muy importante en ladefinición de un perfil. Se puede encontrar grandes diferencias entre interfaces,desde el menú textual de los teléfonos móviles hasta los táctiles de los PDAs.

El perfil establece unas APIs que definen las características de un dispo-sitivo, mientras que la configuración hace lo propio con una familia de ellos.Esto hace que a la hora de construir una aplicación se cuente tanto con lasAPIs del perfil como de la configuración.

104 CAPÍTULO 4. J2ME

Un perfil siempre se construye sobre una configuración determinada. Deeste modo, se podrá pensar en un perfil como un conjunto de APIs que dotana una configuración de funcionalidad específica.

Existen unos perfiles que se construirán sobre la configuración CDC y otrossobre la CLDC.

Para la configuración CDC existen los siguientes perfiles:

• Foundation Profile.

• Personal Profile.

• RMI Profile.

Para la configuración CLDC los siguientes:

• PDA Profile.

• Mobile Information Device Profile (MIDP).

En la fig. 4.5 de la pág. 105 se puede ver cómo quedaría el esquema delentorno de ejecución al completo.

Un perfil puede ser construido sobre cualquier otro. Sin embargo, unaplataforma J2ME sólo puede contener una configuración.

Foundation Profile: Este perfil define una serie de APIs sobre la CDCorientadas a dispositivos que carecen de interfaz gráfica como, por ejemplo,decodificadores de televisión digital.

Este perfil incluye gran parte de los paquetes de la J2SE, pero excluyetotalmente los paquetes “java.awt” Abstract Windows Toolkit (AWT) y “ja-va.swing” que conforman la interfaz gráfica de usuario (GUI) de J2SE. Si unaaplicación requiriera una GUI, entonces sería necesario un perfil adicional.

Personal Profile: El Personal Profile es un subconjunto de la plataformaJ2SE v1.3, y proporciona un entorno con un completo soporte gráfico AWT.

El objetivo es el de dotar a la configuración CDC de una interfaz gráficacompleta, con capacidades web y soporte de applets Java. Este perfil requiereuna implementación del Foundation Profile.

4.1. INTRODUCCIÓN 105

Figura 4.5: Arquitectura del entorno de ejecución de J2ME

RMI Profile: Este perfil requiere una implementación del Foundation Pro-file y se construye encima de él. El perfil RMI soporta un subconjunto delas APIs J2SE v1.3 RMI. Algunas características de estas APIs se han elimi-nado del perfil RMI debido a las limitaciones de cómputo y memoria de losdispositivos.

PDA Profile: El PDA Profile está construido sobre CLDC. Pretende abar-car PDAs de gama baja, tipo Palm, con una pantalla y algún tipo de puntero(ratón o lápiz) y una resolución de al menos 20000 pixels (al menos 200x100pixels) con un factor 2:1.

Mobile Information Device Profile (MIDP): Este perfil está construido so-bre la configuración CLDC. Al igual que CLDC fue la primera configuracióndefinida para J2ME, MIDP fue el primer perfil definido para esta plataforma.

Este perfil está orientado para dispositivos con las siguientes característi-cas:

• Reducida capacidad computacional y de memoria.

• Conectividad limitada (en torno a 9600 bps).

• Capacidad gráfica muy reducida (mínimo un display de 96x54 pixels

106 CAPÍTULO 4. J2ME

monocromo).

• Entrada de datos alfanumérica reducida.

• 28 Kb de memoria no volátil para componentes MIDP.

• 8 Kb de memoria no volátil para datos persistentes de aplicaciones.

• 32 Kb de memoria volátil en tiempo de ejecución para la pila Java.

Los tipos de dispositivos que se adaptan a estas características son: teléfo-nos móviles, buscapersonas (pagers) o PDAs de gama baja con conectividad.

Las aplicaciones desarrolladas utilizando MIDP reciben el nombre de MI-Dlets (por simpatía con APPlets). Entonces un MIDlet es una aplicación Javarealizada con el perfil MIDP sobre la configuración CLDC.

4.2 Los MIDlets

Los MIDlets son aplicaciones creadas usando la especificación MIDP. Estándiseñados para ser ejecutados en dispositivos con poca capacidad gráfica, decómputo y de memoria.

Estos dispositivos no disponen de líneas de comandos donde poder ejecu-tar las aplicaciones requeridas, si no que reside en él un software que es elencargado de ejecutar los MIDlets y gestionar los recursos que éstos ocupan.Este software no es otro que el gestor de aplicaciones.

4.2.1 El Gestor de Aplicaciones

El gestor de aplicaciones o AMS (Application Management System) es el soft-ware encargado de gestionar los MIDlets. Este software reside en el dispositivoy es el que permite ejecutar, pausar o destruir las aplicaciones J2ME.

El AMS realiza dos grandes funciones:

• Por un lado gestiona el ciclo de vida de los MIDlets.

• Por otro, es el encargado de controlar los estados por los que pasa el MI-Dlet mientras está en la memoria del dispositivo, es decir, en ejecución.

4.2. LOS MIDLETS 107

Figura 4.6: Ciclo de vida de un MIDlet.

Ciclo de Vida de un MIDlet

El ciclo de vida de un MIDlet pasa por 5 fases (ver fig. 4.6 de la pág. 107):descubrimiento, instalación, ejecución, actualización y borrado.

El AMS es el encargado de gestionar cada una de estas fases de la siguientemanera:

1. Descubrimiento: Esta fase es la etapa previa a la instalación del MIDlety es dónde se selecciona a través del gestor de aplicaciones la aplicacióna descargar. Por tanto, el gestor de aplicaciones tiene que proporcionarlos mecanismos necesarios para realizar la elección del MIDlet a descar-gar. El AMS puede ser capaz de realizar la descarga de aplicaciones de

108 CAPÍTULO 4. J2ME

diferentes maneras, dependiendo de las capacidades del dispositivo. Porejemplo, esta descarga se puede realizar mediante un cable conectado aun ordenador o mediante una conexión inalámbrica.

2. Instalación: Una vez descargado el MIDlet en el dispositivo, comienzael proceso de instalación. En esta fase el gestor de aplicaciones con-trola todo el proceso informando al usuario tanto de la evolución de lainstalación como de si existiese algún problema durante ésta. Cuándoun MIDlet está instalado en el dispositivo, todas sus clases, archivos yalmacenamiento persistente están preparados y listos para su uso.

3. Ejecución: Mediante el gestor de aplicaciones se puede iniciar la ejecu-ción de los MIDlets. En esta fase, el AMS tiene la función de gestionar losestados del MIDlet en función de los eventos que se produzcan duranteesta ejecución.

4. Actualización: El AMS tiene que ser capaz de detectar después de unadescarga si el MIDlet descargado es una actualización de un MIDlet yapresente en el dispositivo. Si es así, tiene que informar de ello, ademásde dar la oportunidad de decidir si se desea realizar la actualizaciónpertinente o no.

5. Borrado: En esta fase el AMS es el encargado de borrar el MIDlet selec-cionado del dispositivo. El AMS pedirá confirmación antes de procedera su borrado e informará de cualquier circunstancia que se produzca.

Hay que indicar que el MIDlet puede permanecer en el dispositivo todoel tiempo que se desee. Después de la fase de instalación, el MIDlet quedaalmacenado en una zona de memoria persistente del dispositivo MID.

El usuario de éste dispositivo es el encargado de decidir en qué momentoquiere eliminar la aplicación y así se lo hará saber al AMS mediante algunaopción que éste suministre.

Estados de un MIDlet en Fase de Ejecución

Además de gestionar el ciclo de vida de los MIDlets, el AMS es el encargado decontrolar los estados del MIDlet durante su ejecución. Durante ésta el MIDletes cargado en la memoria del dispositivo y es aquí donde puede transitar entre3 estados diferentes: Activo, en pausa y destruido.

4.2. LOS MIDLETS 109

Cuándo un MIDlet comienza su ejecución, está en el estado “Activo” pero,¿qué ocurre si durante su ejecución se recibe una llamada o un mensaje?. Elgestor de aplicaciones debe ser capaz de cambiar el estado de la aplicación enfunción de los eventos externos al ámbito de ejecución de la aplicación que sevayan produciendo.

En este caso, el gestor de aplicaciones interrumpiría la ejecución del MIDletsin que se viese afectada la ejecución de éste y lo pasaría al estado de “Pausa”para atender la llamada o leer el mensaje.

Una vez que se termine de trabajar con el MIDlet y se salga de él, éstepasaría al estado de “Destruido” dónde sería eliminado de la memoria deldispositivo. Cuándo se dice que el MIDlet pasa al estado “Destruido” y eseliminado de memoria, se refiere a la memoria volátil del dispositivo que esusada para la ejecución de aplicaciones.

Una vez finalizada la ejecución del MIDlet se podrá volver a invocarlo lasveces que se desee ya que éste permanece en la zona de memoria persistentehasta el momento que se desinstale.

Estados de un MIDlet

Un MIDlet durante su ejecución pasa por 3 estados diferentes:

• Activo: El MIDlet está actualmente en ejecución.

• Pausa: El MIDlet no está actualmente en ejecución. En este estado elMIDlet no debe usar ningún recurso compartido. Para volver a pasar aejecución tiene que cambiar su estado a Activo.

• Destruido: El MIDlet no está en ejecución ni puede transitar a otroestado. Además se liberan todos los recursos ocupados por el MIDlet.

La fig. 4.7 de la pág. 110 muestra el diagrama de estados de un MIDleten ejecución:

Un MIDlet puede cambiar de estado mediante una llamada a los métodosMIDlet.startApp(), MIDlet.pauseApp() o MIDlet.destroyApp().

El gestor de aplicaciones cambia el estado de los MIDlets haciendo unallamada a cualquiera de los métodos anteriores.

110 CAPÍTULO 4. J2ME

Figura 4.7: Estados de un MIDlet.

Un MIDlet también puede cambiar de estado por sí mismo.

4.3 Interfaces Gráficas de Usuario

4.3.1 Introducción a las Interfaces de Usuario

Teniendo en cuenta la diversidad de aplicaciones que se podrán realizar paralos dispositivos MID (dispositivos que soportan MIDP), y los elementos queproporcionan la configuración CLDC y el perfil MIDP, se dividirá a estoselementos en dos grupos:

• Por un lado se verá los elementos que componen la interfaz de usuariode alto nivel. Esta interfaz usa componentes tales como botones, cajasde texto, formularios, etc. Estos elementos son implementados por cadadispositivo y la finalidad de usar las APIs de alto nivel es su portabilidad.Al usar estos elementos, se pierde el control del aspecto de la aplicaciónya que la estética de estos componentes depende exclusivamente del dis-

4.3. INTERFACES GRÁFICAS DE USUARIO 111

Figura 4.8: Jerarquía de clases derivadas de Display e Item

positivo donde se ejecute. En cambio, usando estas APIs de alto nivelse gana un alto grado de portabilidad de la misma aplicación entre dis-tintos dispositivos. Fundamentalmente, se usan estas APIs cuando sedesea construir aplicaciones de negocios.

• Por otro lado se tienen las interfaces de usuario de bajo nivel. Al crearuna aplicación usando las APIs de bajo nivel, se tendrá un control totalde lo que aparecerá por pantalla. Estas APIs darán un control completosobre los recursos del dispositivo y se podrá controlar eventos de bajonivel como, por ejemplo, el rastreo de pulsaciones de teclas. General-mente, estas APIs se utilizan para la creación de juegos donde el controlsobre lo que aparece por pantalla y las acciones del usuario juegan unpapel fundamental.

El paquete javax.microedition.lcdui incluye las clases necesarias para crearinterfaces de usuario, tanto de alto nivel como de bajo nivel. En la fig. 4.8 dela pág. 111 se ve la organización de estas clases.

112 CAPÍTULO 4. J2ME

La Clase Display

La clase Display representa el manejador de la pantalla y los dispositivos deentrada. Todo MIDlet debe poseer por lo menos un objeto Display. En esteobjeto Display se podrán incluir tantos objetos Displayable como se desee.

La clase Display puede obtener información sobre las características de lapantalla del dispositivo donde se ejecute el MIDlet, además de ser capaz demostrar los objetos que componen las interfaces.

La Clase Displayable

La clase Displayable representa a las pantallas de la aplicación.

Cada objeto Display puede tener tantos objetos Displayable como se desee.

Las aplicaciones estarán formadas por varias pantallas que se crearán den-tro del método constructor. Mediante los métodos getCurrent y setCurrent secontrolará qué pantalla estará visible y accesible en cada momento.

La clase abstracta Displayable incluye los métodos encargados de manejarlos eventos de pantalla y añadir o eliminar comandos.

4.3.2 La Interfaz de Usuario de Alto Nivel

La clase Screen es la superclase de todas las clases que conforman la interfazde usuario de alto nivel.

Algunas de estas clases son:

La Clase Alert

El objeto Alert representa una pantalla de aviso. Normalmente se usa cuandose desea avisar al usuario de una situación especial como, por ejemplo, unerror. Un Alert está formado por un título, texto e imágenes.

4.3. INTERFACES GRÁFICAS DE USUARIO 113

La Clase List

La clase List permite construir pantallas que poseen una lista de opciones.Esto será muy útil para crear menús de manera independiente. La clase Listimplementa la interfaz Choice y esto da la posibilidad de crear tres tiposdistintos de listas (ver tabla 4.3 de la pág. 113).

Tipo Descripción

EXCLUSIVE Lista en la que un sólo elemento puede ser seleccionadoa la vez.

IMPLICIT Lista en la que la selección de un elemento provoca unevento.

MULTIPLE Lista en la que cualquier número de elementos puedenserseleccionados al mismo tiempo.

Tabla 4.3: Tipo de listas.

La Clase TextBox:

Una TextBox es una pantalla que permite editar texto en ella. Cuando secrea un TextBox, se tendrá que especificar su capacidad, es decir, el númeromáximo de caracteres.

Permite también poner restricciones al texto que se puede incluir en unaTextBox. Estas restricciones se encuentran en la clase TextField.

La Clase Form

Un formulario (clase Form) es un componente que actúa como contenedor deun número indeterminado de objetos. Todos los objetos que puede contenerun formulario derivan de la clase Item.

El número de objetos que se puede insertar en un formulario es variable.

114 CAPÍTULO 4. J2ME

4.3.3 La Interfaz de Usuario de Bajo Nivel

Todas las pantallas que se crean usando las APIs de bajo nivel heredan de laclase Canvas.

La clase Canvas es la superclase de todas las pantallas que usan las APIsde bajo nivel, al igual que Screen lo era para las pantallas que usaban las APIsde alto nivel.

No existe ningún impedimento que permita usar en el mismo MIDlet pan-tallas tanto derivadas de Canvas como de Screen.

La clase Canvas permite manejar eventos de bajo nivel y dibujar cualquiercosa por pantalla. Por esta razón se usa como base para la realización dejuegos.

Esta clase posee un método abstracto paint() que se debe implementarobligatoriamente y es el que se encarga de dibujar en la pantalla del dispositivoMID.

Eventos de Bajo Nivel

Los eventos dentro de la clase Canvas se manejan principalmente de dos formasdistintas:

• A través de Commands.

• A través de códigos de teclas. Este método es el que Canvas proporcionapara detectar eventos de bajo nivel. Estos códigos son valores numéricosque están asociados a las diferentes teclas de un MID. Estos códigos secorresponden con las teclas de un teclado convencional de un teléfonomóvil (0-9,*,#). La clase Canvas proporciona estos códigos a través deconstantes que tienen asociados valores enteros (ver tabla 4.4 de la pág.115).

Con estos códigos anteriores se podrá conocer cuál es la tecla que ha pul-sado el usuario.

Canvas, además proporciona unos métodos que permitirán manejar estoseventos con facilidad. La implementación de estos métodos es vacía, por lo

4.3. INTERFACES GRÁFICAS DE USUARIO 115

Nombre Valor

KEY_NUM0 48KEY_NUM1 49KEY_NUM2 50KEY_NUM3 51KEY_NUM4 52KEY_NUM5 53KEY_NUM6 54KEY_NUM7 55KEY_NUM8 56KEY_NUM9 57KEY_STAR 42KEY_POUND 35

Tabla 4.4: Código de teclas.

que se debe implementar los que se necesiten en la aplicación de acuerdo conel propósito de ésta.

Manipulación de Elementos en una Pantalla Canvas

El Método Paint() La clase Canvas posee un método abstracto paint (Gra-phics g) que se ocupa de dibujar el contenido de la pantalla.

Para ello, se usa un objeto de la clase Graphics que es el que contienelas herramientas gráficas necesarias y que se pasa como parámetro al métodopaint().

Cuando se implemente este método se debe tener en cuenta lo siguiente:

• El método paint() nunca debe ser llamado desde el programa. El gestorde aplicaciones es el que se encarga de realizar la llamada a éste métodocuando sea necesario.

• Cuando se desee que se redibuje la pantalla actual debido a alguna ac-ción en concreto del usuario o como parte de alguna animación, se deberealizar una llamada al método repaint(). Al igual que ocurre con los

116 CAPÍTULO 4. J2ME

eventos de teclado, la petición se encolará y será servida cuando retornentodas las peticiones anteriores a ella.

• La implementación del MID no se encarga de limpiar la pantalla antesde cada llamada al método paint(). Por esta razón, éste método debepintar cada pixel de la pantalla para, de esta forma, evitar que se veanporciones no deseadas de pantallas anteriores.

La Clase Graphics Cuando se invoca al método paint(Graphics g) sedebe pasarle como parámetro un objeto Graphics. Este objeto proporciona lacapacidad de dibujar en una pantalla Canvas. Un objeto Graphics se obtendrásólo de dos maneras:

• Dentro del método paint() de la clase Canvas. Aquí se puede usar elobjeto Graphics para pintar en la pantalla del dispositivo.

• A través de una imagen.

La clase Graphics posee multitud de métodos que permiten seleccionarcolores, dibujar texto, figuras geométricas, etc.

Manejo de Colores La clase Graphics proporciona métodos con los que sepuede seleccionar colores, pintar la pantalla de un color determinado o zonasde ellas, dibujar líneas, rectángulos, etc.

Se dispone de varios métodos que suministra la clase Display con los quese puede saber si el dispositivo en cuestión cuenta con pantalla a color o escalade grises (Display.isColor()), y también se puede conocer el número de coloressoportados (Display.numColors()).

En particular, la clase Graphics proporciona un modelo de color de 24 bits,con 8 bits para cada componente de color: rojo, verde y azul.

Se puede seleccionar un color invocando al método Graphics.setColor(intRGB) o Graphics.setColor(int rojo, int verde, int azul) donde se indica losniveles de los componentes que conforman el color a usar.

Graphics g;

g.setColor(0,0,0) // Se selecciona el color negro

4.4. RECORD MANAGEMENT SYSTEM 117

g.setColor(255,255,255) // Se selecciona el color blanco

g.setColor(0,0,255) // Se selecciona el color azul

Manejo de Texto Es posible incluir texto en una pantalla Canvas. Aligual que con los colores, es posible seleccionar un estilo de letra con el queposteriormente se podrá escribir texto por pantalla. Para ello se tiene la claseFont que permitirá seleccionar el tipo de letra y almacenarlo en un objeto deeste tipo para posteriormente usarlo en el Canvas.

Para seleccionar un tipo de letra se debe tener en cuenta los tres atributosque definen una fuente: Aspecto, Estilo y Tamaño.

Realizando combinaciones de atributos se tienen bastantes tipos de fuentesdonde elegir.

4.4 Record Management System

4.4.1 Conceptos Básicos

El sistema de gestión de registros o RMS , permite almacenar informaciónentre cada ejecución del MIDlet.

Esta información será guardada en el dispositivo en una zona de memoriadedicada para este propósito. La cantidad de memoria y la zona asignada paraello dependerá de cada dispositivo.

Modelo de Datos

El RMS está implementado en una base de datos basada en registros (ver fig.4.9 de la pág. 118).

LosMIDlets son los encargados de crear los Record Stores para comunicarsecon ellos. Estos Record Stores quedan almacenados en el dispositivo y puedenser accedidos por cualquier MIDlet que pertenezca a la misma suite (ver fig.4.10 de la pág. 118).

118 CAPÍTULO 4. J2ME

Figura 4.9: Comunicación entre un MIDlet y el RMS

Figura 4.10: Acceso a un RMS a través de una MIDlet suite

4.4. RECORD MANAGEMENT SYSTEM 119

Figura 4.11: Estructura de un Record Store

Record Stores

Las propiedades de estos almacenes de registros son:

1. Cada Record Store está compuesto por cero o más registros.

2. Un nombre de Record Store es sensible a mayúsculas y minúsculas y estáformado por un máximo de 32 caracteres UNICODE.

3. Dentro de una suite no pueden coexistir dos Record Stores con el mismonombre.

4. Si una suite de MIDlets es borrada del dispositivo MID, todos los RecordStores pertenecientes a esa suite se borrarán.

5. Es posible que un MIDlet acceda a un Record Store creado por otrasuite, siempre que ésta de permiso para ello.

Un Record Store tal como su nombre indica es un almacén de registros.Estos registros son la unidad básica de información que utiliza la clase Re-cordStore para almacenar datos.

Cada uno de estos registros está formado por dos unidades:

• Un número identificador de registro (Record ID) que es un valor enteroque realiza la función de clave primaria en la base de datos.

• Un array de bytes que es utilizado para almacenar la información deseada(ver fig. 4.11 de la pág. 119).

Además de un nombre, cada Record Store también posee otros dos atribu-tos:

120 CAPÍTULO 4. J2ME

Figura 4.12: Estructura completa de un Record Store

• Número de versión: Es un valor entero que se actualiza conforme sevayan insertando, modificando o borrando registros en el Record Store.

• Marca temporal: Es un entero de tipo long que representa el número demilisegundos desde el 1 de enero de 1970 hasta el momento de realizarla última modificación en el Record Store (ver fig. 4.12 de la pág. 120).

4.4.2 Operaciones Con Record Stores

Creación de un Record Store

La clase RecordStore no dispone de ningún constructor, pero posee el métodoestático:

static RecordStore openRecordStore(String name, boolean createIfNecce-sary)

Este método abre el Record Store con el nombre pasado como parámetro ocrea uno si no existe cuando el parámetro createIfNeccesary es true. Además,existen otra versión alternativa de este método:

• static RecordStore openRecordStore(String name, boolean createIfNec-cesary, int autorización, boolean writable).

4.5. COMUNICACIONES 121

4.5 Comunicaciones

4.5.1 Conceptos Básicos

En J2ME y J2SE se usan streams para escribir y leer datos. Estas clasesestán en el paquete java.io por lo que no forman parte del perfil MIDP. Encambio, se dispone del paquete javax.microedition.io, el cual contiene las clasesque dan soporte para el trabajo en red y comunicaciones en las aplicacionesMIDP. Este paquete existe en contraposición con el paquete java.net de J2SE.

Las aplicaciones MIDP usan los paquetes javax.microedition.io y java.iode la siguiente manera. El primer paquete contiene numerosas clases quepermitirán crear y manejar diferentes conexiones de red. Estas conexionespodrán usar diferentes formas de comunicación: HTTP, datagramas, sockets.De esta manera, el paquete java.io se encargará de proporcionar las clasesnecesarias para leer y escribir en estas conexiones.

Las clases orientadas a la conexión en red y comunicaciones reciben elnombre de Generic Connection Framwork . En la Figura 4.13 de la página 122se ve cómo se organizan jerárquicamente. También se verá cómo se organizanlas interfaces que nos suministra la especificación MIDP y que están en unnivel superior al GCF ya que implementan los detalles de diversos protocolosde comunicación.

Como se ve, la raíz del árbol es la interfaz Connection que representa laconexión más genérica y abstracta que podemos crear. El resto de interfacesque derivan de Connection representan los distintos tipos de conexiones quese pueden crear.

4.5.2 Clases y Conexiones del Generic Connection Framework

La anterior jerarquía de clases nos da una idea de la filosofía que sigue elGeneric Connection Framework. Los dispositivos MID, poseen bastantes res-tricciones. Por esta razón, se hace imposible poseer la implementación de losdistintos protocolos existentes. Lo que proporciona el Generic Connection Fra-mework es una sola clase Connector que esconde los detalles de la conexión.Esta clase puede por sí misma crear cualquier tipo de conexión: Archivos,Http, socket, etc.

122 CAPÍTULO 4. J2ME

Figura 4.13: Jerarquía de interfaces

4.5. COMUNICACIONES 123

Clase Connector

public class Connector

El GCF proporciona la clase Connector que esconde los detalles de laconexión. De esta forma se podrá realizar cualquier tipo de conexión usandosólo esta clase y sin preocuparse de cómo se implementa el protocolo requerido.

La conexión se realiza mediante el siguiente mensaje genérico:

Connector.open(protocolo:dirección;parámetros);

Algunos ejemplo de invocación son:

Connector.open(http://direccionquesea.es);

Connector.open(file://autoexec.bat);

Connector.open(socket://direccion:0000);

La clase Connector se encarga de buscar la clase específica que implementeel protocolo requerido. Si esta clase se encuentra, el método open() devuelveun objeto que implementa la interfaz Connection.

Interfaz Connection

public abstract interface Connection

La interfaz Connection se encuentra en lo más alto de la jerarquía de in-terfaces del Generic Connection Framework, por lo que cualquier otra interfazderiva de él. Una conexión de tipo Connection se crea después de que un obje-to Connector invoque al método open(). Esta interfaz representa a la conexiónmás abstracta y genérica posible. Por esta razón, el único método que poseeesta interfaz es el de public void close() que cierra la conexión..

Interfaz InputConnection

public abstract interface InputConnection extends Connection

La interfaz InputConnection representa una conexión basada en streamsde entrada. Esta interfaz sólo posee dos métodos que devuelven objetos de tipo

124 CAPÍTULO 4. J2ME

InputStreams, estos métodos son DataInputStream openDataInputStream() eInputStream openInputStream().

El siguiente ejemplo ilustra cómo se realiza una conexión a través de estainterfaz:

String url = www.midireccion.com;

InputConnection conexión = (InputConnection)Connector.open(url);

DataInputStream dis = conexion.openDataInputStream();

Interfaz OutputConnection

public abstract interface OutputConnection extends Connection

La interfaz OutputConnection representa una conexión basada en streamsde salida. Esta interfaz sólo posee dos métodos que devuelven objetos de ti-po OutputStreams, estos métodos son DataOutputStream openDataOutputS-tream() y OutputStream openOutputStream().

La conexión a través de esta interfaz se realiza de forma análoga a lainterfaz InputConnection.

Interfaz StreamConnection

public abstract interface StreamConnection extends InputConnection, Output-Connection

Esta interfaz representa una conexión basada en streams tanto de entradacomo de salida. No añade ningún método nuevo, si no que hereda los métodosde los interfaces que están por encima de él. Su única misión en la jerarquíadel GCF es representar un tipo de conexión cuyos datos pueden ser tratadoscomo streams de bytes y en la que es posible leer y escribir.

El siguiente ejemplo ilustra cómo se crea una conexión de este tipo en laque se va a crear un stream de entrada del que se leerá la información:

StreamConnection sc = (StreamConnection)Connector.open(url);

InputStream is = sc.openInputStream();

4.5. COMUNICACIONES 125

ByteArrayOutputStream baos = new ByteArrayOutputStream();

int c;

while((c = is.read()) != -1){

baos.write(c);

}

Téngase en cuenta que la dirección url que se usa al crear la conexión puedeapuntar a un fichero (url = http://www.direccion.com/fichero1.txt) o a unaimagen (url = http://www.direccion.com/imagen.png); en cualquier caso, esainformación la guardamos en un ByteArrayOutputStream que podemos tratarde la manera que más convenga.

Interfaz ContentConnection

public abstract interface ContentConnection extends StreamConnection

La interfaz ContentConnection extiende a la interfaz StreamConnection.Esta interfaz representa conexiones que pueden describir su contenido de al-guna forma. En las conexiones anteriores se transmitían bytes sin importarsu composición, pero en estas conexiones la estructura de bytes a transmitirdebe ser conocida de antemano.

Concretamente, esta interfaz representa a familias de protocolos en los quese definen atributos los cuales describen los datos que se transportan.

Con esta interfaz podemos conocer de antemano la longitud de datos querecibimos, con lo que las operaciones de lectura de datos se pueden simplificarmucho haciendo uso de esta información. Este mecanismo de lectura se puedeapreciar en el siguiente ejemplo donde se sustituye el bucle usado para realizarla lectura de datos por dos simples líneas de código:

ContentConnection cc = (ContentConnection)Connector.open(url);

is = cc.openInputStream();

byte[] datos;

int long = (int)cc.getLength();

126 CAPÍTULO 4. J2ME

if (long != -1) {

datos = new byte[long];

is.read(datos);

}

else // Realizamos bucle de lectura de datos

Este algoritmo mejora al bucle del ejemplo anterior ya que realizamos lalectura de datos de una sola vez, en vez de byte a byte.

Interfaz StreamConnectionNotifier

public abstract interface StreamConnectionNotifier extends Connection

Esta interfaz deriva directamente de Connection. Representa al estableci-miento de conexiones lanzadas por clientes remotos. Si la conexión se realizacon éxito, se devuelve un StreamConnection para establecer la comunicación.

Interfaz DatagramConnection

public abstract interface DatagramConnection extends Connection

Esta interfaz define las capacidades que debe tener una conexión basadaen datagramas. A partir de esta interfaz se pueden definir distintos protocolosbasados en datagramas, pero su implementación habría que realizarla a niveldel perfil.

4.5.3 Comunicaciones HTTP

Como se ha dicho, el GCF esconde los detalles de la conexión y además noimplementa ningún protocolo en concreto ya que esta implementación debeestar en el nivel de los perfiles. En este punto se verá en detalle la interfazHttpConnection que implementa el protocolo HTTP.

El protocolo HTTP es un protocolo de tipo petición/respuesta. El fun-cionamiento de este protocolo es el siguiente: El cliente realiza una peticiónal servidor y espera a que éste le envíe una respuesta. Normalmente, esta

4.5. COMUNICACIONES 127

comunicación es la que suele realizarse entre un navegador web (cliente) y unservidor web (servidor).

Una conexión HTTP pasa por tres estados, como ilustra la figura ?? de lapágina ??.

Estados de una conexión HTTP

Estado de Establecimiento

En este estado es dónde se establecerá los parámetros de la comunicación. Elcliente prepara la petición que va a realizar al servidor, además de negociarcon él una serie de parámetros como el formato, idioma, etc.

Existen dos métodos que sólo pueden ser invocados en este estado (verTabla 4.5 en la pág. 128).

El primer método establece el tipo de petición que vamos a realizar. Estapetición puede ser de los tipos indicados en la Tabla 4.6 de la pág. 128.

El segundo método establece cierta información adicional a la petición.Esta información permite negociar entre el cliente y el servidor detalles de lapetición como, por ejemplo, idioma, formato, etc. Estos campos forman partede la cabecera de la petición.

128 CAPÍTULO 4. J2ME

Método Descripción

public void setRequestMet-hod(String tipo)

Establece el tipo de petición.

public void setRequestPro-perty(String clave, Stringvalor)

Establece una propiedad de la petición.

Tabla 4.5: Métodos relacionados con la etapa de establecimiento

Tipo Descripción

GET Petición de información en la que los datosse env an como parte del URL.

POST Petición de información en la que los datosse env an aparte en un stream.

HEAD Petición de metainformación.

Tabla 4.6: Tipos de peticiones

Peticiones GET A continuación se muestra un ejemplo en el que se preparauna conexión mediante la interfaz HttpConnection usando una petición de tipoGET.

//Creamos la conexión

String url = http://www.midireccion.com/local?sala=1&luz=apagada;

HttpConnection hc = (HttpConnection)Connector.open(url);

// Informamos del tipo de petición que vamos a efectuar

hc.setRequestMethod(HttpConnection.GET);

//Establecemos algunos campos de cabecera

hc.setRequestProperty(User-Agent,Profile/MIDP-2.0

Configuration/CLDC-1.0);

hc.setRequestProperty(Content-Language,es-ES);

El código anterior establece la comunicación con el servidor y deja prepara-

4.5. COMUNICACIONES 129

da una conexión para intercambiar información con éste. Como se aprecia, lainformación sobre la petición va incluida en la cabecera de la dirección URL.El cuerpo de la petición lo forma la cadena sala=1&luz=apagada. Esta in-formación va detrás del símbolo ? situado al final de la dirección URL. Cadaparámetro de la petición va separado del siguiente por el símbolo &.

Peticiones POST En una petición de este tipo, el cuerpo de la peticiónse envía en un stream después de iniciar la conexión. El siguiente ejemplomuestra cómo se realiza el envío del cuerpo de la petición:

//Creamos la conexión

String url = http://www.midireccion.com;

HttpConnection hc = (HttpConnection)Connector.open(url);

// Informamos del tipo de petición que vamos a efectuar

hc.setRequestMethod(HttpConnection.POST);

//Establecemos algunos campos de cabecera

hc.setRequestProperty(User-Agent,Profile/MIDP-2.0

Configuration/CLDC-1.0);

hc.setRequestProperty(Content-Language,es-ES);

// Enviamos el cuerpo de la petición

OutputStream os = hc.openOutputStream();

os.write(sala=1.getBytes());

os.write(&luz=apagada.getBytes());

os.flush();

Estado de Conexión

En este estado se realiza el intercambio de información entre el cliente y elservidor. En los ejemplos anteriores se ha visto la manera de enviar la peticiónal servidor. Este es un buen momento para ver cómo se realiza la respuesta

130 CAPÍTULO 4. J2ME

del servidor hacia el cliente.

Respuesta del Servidor Al igual que la petición del cliente poseía distintaspartes, la respuesta del servidor se compone de:

• Línea de estado.

• Cabecera.

• Cuerpo de la respuesta.

La interfaz HttpConnection dispone de 35 códigos de estado diferentes.Básicamente podemos dividirlos en cinco clases de la siguiente manera:

• 1xx Código de información

• 2xx Código de éxito.

• 3xx Código de redirección.

• 4xx Código de error del cliente.

• 5xx Código de error del servidor.

Por ejemplo, el código 400 corresponde a la constante HTTP_BAD_REQUEST.En realidad la respuesta del servidor posee el siguiente formato:

HTTP/1.1 400 Bad Request.

HTTP/1.1 200 OK.

En la respuesta se incluye el protocolo usado, seguido del código de estadoy de un mensaje de respuesta. Este mensaje es el devuelto al invocar el métodogetResponseMessage().

Estado de Cierre

La conexión entra en este estado una vez que se termina la comunicación entreel cliente y el servidor invocando al método close().

4.5. COMUNICACIONES 131

4.5.4 Otras Conexiones

Interfaz HttpsConnection

public interface HttpsConnection extends HttpConnection

HTTPS es la versión segura del protocolo HTTP. Esta interfaz define losmétodos necesarios para establecer una conexión de este tipo. En esta cone-xión, los parámetros de la petición se deben establecer antes de que ésta seenvíe.

Un objeto de tipo HttpsConnection es devuelto invocando al método Con-nector.open(url) de la siguiente manera:

String url = https://www.direccion.com;

HttpsConnection conexion = (HttpsConnection)Connector.open(url);

Algunos métodos de esta interfaz pueden lanzar la excepción Certifica-teException para indicar distintos fallos mientras se establece una conexiónsegura.

Interfaz UDPDatagramConnection

public interface UDPDatagramConnection extends DatagramConnection

Esta interfaz representa una conexión basada en datagramas en los que seconoce su dirección final. Esta interfaz se usa cuando el parámetro url delmétodo Connector.open(url) tiene el siguiente formato:

url = datagram://<host>:<port>;

y la conexión se realiza de la siguiente manera :

UDPDatagramConnection dc =

UDPDatagramConnection)Connector.open(url);

Si la cadena de conexión omite el host y el port, el sistema deberá delocalizar un puerto libre.

132 CAPÍTULO 4. J2ME

Interfaz CommConnection

public interface CommConnection extends StreamConnection

Esta interfaz representa una conexión mediante un puerto serie. Tal ycomo su nombre indica, en esta conexión los bits de datos se transmiten se-cuencialmente, en serie. Esta conexión se establece cuando el parámetro urlque le pasamos al método Connector.open(url) tiene el siguiente formato:

url = comm:<port><parámetros>;

y la conexión se realiza de la siguiente manera :

CommConnection cc = (CommConnection)Connector.open(url);

Los parámetros van separados por ; .

Por otro lado el nombre del puerto se debe indicar según el siguiente cri-terio:

• COM# para puertos RS-232.

• IR# para puertos IrDA IRCOMM.

donde # indica el número asignado al puerto.

Interfaz SocketConnection

public interface SocketConnection extends StreamConnection

Esta interfaz define una conexión entre sockets basados en streams. Laconexión con el socket de destino tiene el siguiente formato:

url = socket://<host>:<port>;

y la conexión se realiza de la siguiente manera :

SocketConnection sc = (SocketConnection)Connector.open(url);

Esta conexión está basada en la interfaz StreamConnection. Un Stream-Connection puede ser tanto de entrada como de salida. Por otro lado si, por

4.5. COMUNICACIONES 133

ejemplo, el sistema proporciona un sistema de comunicación duplex, para ce-rrar la comunicación a través del socket es necesario cerrar los streams deentrada y de salida.

Si tan sólo se cierra el canal de entrada, se puede seguir mandando infor-mación por el de salida. Incluso una vez cerrados ambos, es posible volverlosa abrir si aún no se ha cerrado el socket.

Interfaz SecureConnection

public interface SecureConnection extends SocketConnection

Esta interfaz representa una conexión segura entre sockets. Esta conexiónse consigue invocando al método Connector.open(url) de la siguiente forma:

String url = ssl://<host>:<port>;

y la conexión se realiza de la siguiente manera :

SecureConnection ssc = (SecureConnection)Connector.open(url);

Si el establecimiento de la conexión falla, se lanzaría una excepción deltipo CertificateException.

Interfaz ServerSocketConnection

public interface ServerSocketConnection extends StreamConnectionNotifier

Esta interfaz representa una conexión con un servidor de sockets. Este tipode conexión se establece cuando invocamos al método Connector.open(url) sinespecificar el host:

ServerSocketConnection ssc =

(ServerSocketConnection)Connector.open(socket://:00);

Capítulo 5

Introducción a DB2

135

136 CAPÍTULO 5. INTRODUCCIÓN A DB2

5.1 DB2 Universal Database (DB2 UDB)

DB2 Universal Database, es una base de datos universal. Es completamenteescalable, veloz y confiable. Corre en modo nativo en casi todas las platafor-mas, como Windows NT, Sun Solaris, HP-UX, AIX, y OS/2 [19].

• Características y funciones:

— DB2 UDB es el producto principal de la estrategia de Data Mana-gement de IBM.

— DB2 UDB es un sistema para administración de bases de datos re-lacionales (RDBMS) multiplataforma, especialmente diseñada paraambientes distribuidos, permitiendo que los usuarios locales com-partan información con los recursos centrales.

• Integridad :

DB2 UDB incluye características de integridad, asegurando la protecciónde 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 losusuarios.

• Múltiples usos:

Provee la capacidad de hacer frente a múltiples necesidades, desde proce-samiento transaccional de misión crítica (OLTP), hasta análisis exhaustivo delos datos para el soporte a la toma de decisiones (OLAP).

• Escalabilidad :

Sus características distintivas de escalabilidad le permiten almacenar in-formación en un amplio rango de equipos, desde una PC portátil hasta uncomplejo ambiente de mainframes procesando en paralelo.

• Web enabled para e-business:

5.1. DB2 UNIVERSAL DATABASE (DB2 UDB) 137

Figura 5.1: Almacenamiento de Documentos XML en DB2.

Incluye tecnología basada en Web que permite generar aplicaciones en lasIntranets y responder a las oportunidades de negocios disponibles en Internet.Además, DB2 UDB provee soporte a Java.En la figura 5.1 de la pág.137 segrafica el almacenamiento de documentos XML mediante DB2.

• Facilidad de instalación y uso:

La primera versión de DB2 para NT fue reconocida en el mercado comouna base de datos muy poderosa, pero difícil de instalar y usar. En estaversión (DB2 UDB), IBM agregó muchas herramientas gráficas para facilitarel uso tanto de usuarios, como administradores y desarrolladores. Incluye guíaspara operaciones como instalación, configuración de performance, setup, etc.Además, se agregaron herramientas para facilitar las tareas de integración conotras bases de datos, tecnologías de networking y desarrollo de aplicaciones[20].

• Universalidad :

138 CAPÍTULO 5. INTRODUCCIÓN A DB2

DB2 UDB es la única base de datos realmente universal, esmultiplataforma(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 tipode datos incluyendo texto, audio, imágenes y video o cualquier otro definidopor el usuario.

5.2 Funciones Complementarias

• Conectividad.

Las herramientas de conectividad permiten acceder a los datos más allá dedonde ellos se encuentren. El slogan “cualquier cliente, a cualquier servidor,en cualquier red” está completamente sustentado por la funcionalidad que susherramientas ofrecen. EL DB2 Connect permite acceder a los datos de DB2 enmainframe o AS/400, desde Windows NT, Windows 95 / 98, OS/2 o cualquierade los Unix soportados. Además, el producto Datajoiner posibilita acceder deforma ú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 detoma de decisiones en cualquier tamaño y tipo de organización. Está dirigidoa 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 datosautomáticamente y sin programar una línea de código.En la figura 5.2 de lapág. 139 se refleja el Esquema Conceptual de Almacenes de Datos en DB2 [19].

• Data Mining.

DB2 UDB posibilita el análisis orientado al descubrimiento de informa-ción escondida en los datos, realizando modelización predictiva, segmentaciónde la base de datos, análisis de vínculos, o detección de desviaciones. Inclu-ye las siguientes técnicas: clustering (segmentación), clasificación, predicción,

5.2. FUNCIONES COMPLEMENTARIAS 139

Figura 5.2: Esquema Conceptual de los Almacenes de Datos.

descubrimiento asociativo, descubrimiento secuencial de patrones y secuenciastemporales. Todas las técnicas mencionadas permiten realizar segmentaciónde 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 (uniprocessorsystem), y entorno nodo simple/ no paralelo (single node/non-parallel).

La base de datos en este ambiente sirve para cubrir todas las necesidadesde un departamento o de una pequeña oficina de una empresa donde los da-tos y los recursos del sistema (incluyendo un único procesador o CPU) sonadministrados por un único administrador de la base.

• Capacidad y Escalabilidad.

A este ambiente se le pueden agregar mas discos. Al tener uno o másservidores de entrada-salida para mas de un disco permite que más de unaoperación de entrada-salida ocurra al mismo tiempo.

140 CAPÍTULO 5. INTRODUCCIÓN A DB2

Un sistema de procesador único esta limitado por la cantidad de espacioen disco que pueda manejar dicho procesador. Sin embargo, como la carga detrabajo aumenta, una sola CPU puede llegar a ser insuficiente para satisfacerlas peticiones solicitadas por los usuarios, aún sin importar cuántos discos y/omemoria adicional hayan sido agregados [21].

Si se ha alcanzado la máxima capacidad o escalabilidad, se podría conside-rar cambiarse a un sistema de partición única con múltiples procesadores. Acontinuación se describe esta configuración.

— Partición Simple con Múltiples Procesadores

Este entorno se compone de varios procesadores de igual potencia dentrode la misma máquina, llamándose a este ambiente Sistema Simétrico Multipro-cesador (symmetric multi-processor o SMP). Los recursos tales como espaciode disco y memoria son compartidos. En esta máquina se encuentran másdiscos y memoria en comparación a una base de datos de partición simple, enel ambiente de procesador único.

Este entorno es de fácil administración, debido a que todo esta ubicado enuna sola máquina y además los discos y memoria están compartidos.

Con varios procesadores disponibles, diferentes operaciones de la base dedatos pueden ser completadas significativamente más rápido que en bases dedatos asignadas a un solo procesador. DB2 también puede dividir el trabajode una consulta simple entre los procesadores disponibles para mejorar lavelocidad 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 laventaja de trabajar con múltiples procesadores.

∗ Capacidad y Escalabilidad

En este entorno se pueden agregar más procesadores. Sin embargo, esposible que los distintos procesadores traten de acceder al mismo dato en elmismo tiempo, lo cual generará la aparición de limitaciones a medida que lasoperaciones de se incrementen. Con discos y memoria compartidos, se puedeefectivamente compartir todos los datos de la base.

Una aplicación en un procesador puede estar accediendo un dato al mismotiempo que otra aplicación lo hace en otro procesador, causando así que la

5.3. CONFIGURACIONES DE PARTICIONES MÚLTIPLES 141

segunda aplicación espere para acceder a ese dato.

Se puede incrementar la capacidad de entrada-salida de la partición de labase 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 lassolicitudes de entrada-salida. Al tener uno o mas servidores de entrada-salidapara cada disco permite que una o mas operaciones de entrada-salida tenganlugar al mismo tiempo.

Si se ha alcanzado la máxima capacidad o escalabilidad, se puede conside-rar la idea de cambiar la base a un sistema de partición múltiple, descrito acontinuación.

5.3 Configuraciones de Particiones Múltiples

Además de los entornos antes mencionados, se puede dividir la base de datosen particiones múltiples, cada una en su propia máquina. Y además variasmá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 lascuales 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áquinasconectadas 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 procesamien-to masivo en paralelo (massively parallel procesing o MPP), o configuración

142 CAPÍTULO 5. INTRODUCCIÓN A DB2

compartido-nada (shared-nothing configuration). El último nombre reflejaexactamente el arreglo de recursos en este ambiente.

A diferencia de un entorno SMP (Sistema Simétrico Multiprocesador), unentorno MPP (Particiones Múltiples con un procesador) no tiene discos nimemoria compartidos. El entorno MPP elimina las limitaciones introducidasal compartir memoria y disco.

Un entorno de base de datos particionado permite que una base de datoscontinué siendo un conjunto lógico mientras que físicamente esta dividida através de más de una partición. Para los usuarios y/o aplicaciones, la basede datos puede ser utilizada como un todo y el hecho de que los datos estánparticionados es transparente. El trabajo a ser realizado con los datos puedeser dividido para cada administrador de base de datos, de esta forma cadaadministrador de la base de datos en cada partición, trabaja sobre su propiaparte de la base de datos.

• Capacidad y Escalabilidad:

En este entorno se pueden agregar mas particiones de base de datos (nodos)a la configuración. En algunas plataformas, por ejemplo RS/6000, el máximoes de 512 nodos. Sin embargo, podría existir un problema práctico relacionadocon la administración de tal numero de máquinas e instancias.

Si se ha llegado a la máxima escalabilidad y capacidad, se puede consi-derar la opción de migrar a un sistema donde cada partición posea múltiplesprocesadores.

5.3.2 Particiones con Múltiples Procesadores

Como alternativa de una configuración en la cual cada partición tiene unprocesador único, se puede utilizar una en la cual una partición poseamúltiplesprocesadores. A esto se lo denomina Cúmulo SMP (SMP Cluster).

Esta configuración combina las ventajas de un SMP y el paralelismo deun MPP. Esto significa que una consulta (query) puede ser realizada en unapartición simple a través de múltiples procesadores. Además esto implicaque una consulta (query) puede ser hecha en paralelo a través de particionesmúltiples.

5.4. PARALELISMO MEJOR ADAPTABLE A CADA EH 143

• Capacidad y Escalabilidad

En este entorno se pueden adicionar mas particiones a la base de datos,como se vé en la sección anterior. También se pueden agregar mas procesadoresa 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ísi-ca en que no se logra el control de la máquina entera. A pesar de que lamáquina comparte sus recursos, la partición no lo hace. Esto significa que losprocesadores 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 escalabi-lidad. El administrador de base de datos múltiple que se ejecuta en particioneslógicas múltiples, puede hacer un uso más completo de los recursos disponiblesque un administrador de una base simple de datos. Se gana mayor escalabilidadsobre una máquina SMP mediante la adición de particiones, particularmenteen aquellas máquinas con varios procesadores.

Mediante la partición de la base de datos, se puede administrar y recuperarcada partición por separado.

También se debe notar que la habilidad de tener dos o mas particionescoexistiendo en la misma máquina (sin importar el número de procesadores)permite una mayor flexibilidad al diseñar configuraciones avanzadas de dispo-nibilidad y estrategias para hacer frente a caídas del sistema.

5.4 Resúmen del ParalelismoMejor Adaptable a ca-da Entorno de Hardware

La siguiente tabla 5.1 de la pág. 144 resume los tipos de paralelismo que mejorse adaptan a los diferentes entornos de hardware.

144 CAPÍTULO 5. INTRODUCCIÓN A DB2

Entorno de Paralelismo Paralelismo Inter Paralelismo InterHardware I/O Consulta Consulta

Paralelismo Intra Paralelismo InterPartición Partición

Partición Simple, Si No NoÚnico ProcesadorPartición Simple, Si Si No

MúltiplesProcesadores

Particiones Múltiples, Si No SiUn Procesador

Particiones Múltiples, Si Si SiMúltiples

ProcesadoresParticiones Lógicas Si Si Side Base de Datos

Tabla 5.1: Paralelismo mejor Adaptable a cada Entorno de Hardware

5.4.1 Herramientas de Administración

Desde el punto de vista del administrador de base de datos, el DB2 incluyeuna larga lista de herramientas DBA. Además de esto hay: utilidades paraB/R, reorganizador, importar/exportar y alta velocidad de llamadas, estánincluidas 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 quehabilita administración remota de servidores DB2. Esta instancia es creada yusada en una forma similar a cualquier instancia de DB2. Se puede tener unasola DAS sobre la máquina.

• Asistente para la Configuración de clientes.

El asistente de configuración de clientes ayuda a manejar las conexionesde las bases de datos con servidores de base de datos remotas [22].

5.4. PARALELISMO MEJOR ADAPTABLE A CADA EH 145

Este puede correr bajo servidores OS/2 y Windows NT, así como el clientecorre bajo OS/2, Windows NT y Windows 95. Con el asistente de configura-ción de clientes se podrá :

— Definir conexiones a base de datos de modo que éstas pueden serutilizadas por aplicaciones. Existen 3 métodos:

∗ Examinar la red por base de datos disponibles y seleccionaruna. El cliente automáticamente se configura para esa base dedatos.

∗ Usar los perfiles de acceso a base de datos que provee el admi-nistrador para definir automáticamente las conexiones.

∗ Configuración manual de conexiones a base de datos para mo-dificar 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 sistemapara asegurar que se puede establecer la conexión con el servidorque necesita.

— Enlazar aplicaciones a una base de datos seleccionando utilidadeso 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 deaplicaciones 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 admi-nistrador de utilidades de front-end, quienes ejecutan el dominio. Por default,el dominio es iniciado sobre toda partición en una base de datos particiona-da, pero se puede también usar la utilidad front-end para iniciar un dominiosimple de una partición específica para monitorear la actividad a través de la

146 CAPÍTULO 5. INTRODUCCIÓN A DB2

partición de base de datos encontradas allí. O un dominio puede monitorearla actividad sobre una partición-simple de base de datos.

Además un administrador de dominio colecciona estadísticas sobre las apli-caciones que corren a través de la base de datos. Estas son chequeadas a travésde reglas que pueden ser especificadas en el archivo de configuración del ad-ministrador aplicadas a esa base de datos específica.

El administrador actúa de acuerdo a éstas reglas. Por Ej.: una reglapuede indicar que la aplicación esta usando demasiados recursos. En éste casoel administrador puede cambiar las prioridades de la aplicación o forzarla adejar la base de datos, de acuerdo con las instrucciones específicas en el archivode 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 labase de datos en la que el administrador detecta la violación de recurso. Si laacción asociada con la regla es de forzar la aplicación, ésta será forzada siempreque el administrador que ha detectado la violación del recurso esté corriendosobre el nodo coordinador de la aplicación o en un entorno particionado de labase de datos.

El administrador también almacena (logs) cualquier acción que tome, sepueden consultar éstos archivos log para rever las acciones tomadas por eladministrador.

5.4.2 Estándares Soportados en DB2

La UDB DB2 se adapta muy bien a los estándares industriales haciéndolamuy integrable con otros productos IBM y también con aquellos que no lo son.La UDB DB2 soporta estándares API incluyendo ANSI SQL92E, MicrosoftOBDC y JAVA/JDBC.

Con respecto a las aplicaciones de tipo cliente, se tienen procedimientosalmacenados y funciones definidas por el usuario a través de VisualAge. Estoprovee una amplia elección de desarrollo de aplicaciones y herramientas finalespara ser elegidas por los usuarios.

La UDB DB2 también puede ser integrada con servicios de seguridad paraadministrar servidores de nombre y direcciones. DB2 también soporta SNMPy puede ser monitoreada desde cualquier Sistema de Administración de Servers

5.5. FAMILIA DE DB2 UDB 147

de IBM .

Para poder establecer una comunicación con otras bases de datos rela-cionales, 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ásfácil la implementación de un entorno abierto de redes. La UDB DB2 tambiénincluye 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 resultadosaunque los times de ciertos datos no hayan podido ser evaluados. Esta funciónfavorece la compatibilidad con ciertos sistemas como ser OS/390.

5.5 Familia de DB2 UDB

El Software manejador de base de datos ha evolucionado en el corazón de lacomputación empresarial.

Como las compañías se mueven en la era de Internet de la comunicacióncon banda ancha, las bases de datos pueden ser capaces de almacenar y servirenormes archivos multimedia, manejar volúmenes de datos crecientes, mani-pular el aumento en el número de usuarios, entregar firmemente mejora enla performance y soportar las aplicaciones de futuras generaciones. Con suhabilidad virtual ilimitada para la escalabilidad, extensibilidad multimedia,fiabilidad y performance en la dirección industrial y franqueza en su platafor-ma, DB2 Universal Database ha ayudado a dirigir esta evolución.

El primer sistema manejador de base de datos relacional disponible enla Web multimedia, bastante robusto para encontrar demandas de grandescorporaciones 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 dedatos en:

• e-business

148 CAPÍTULO 5. INTRODUCCIÓN A DB2

El poder de DB2 Universal Database más la demanda de aplicaciones e-busines, tal como comercio electrónico, planificación de recursos empresariales,administración de conexión con el cliente, suministro en cadena, autoservicioWeb y negocios inteligentes.

Con respecto a la escalabilidad , la fuerza industrial de base de datos puedeser 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 tomade decisiones. Acerca del acceso a los datos, análisis y decisiones que ayu-dan al control de costos, revela nuevas oportunidades, estimulo al mercadocompartido e incremento de la lealtad del cliente.

• Data Management

El Administrador de datos DB2 es más que una simple aplicación. Serefiere a dónde se almacenan los datos, cómo accederlos rápidamente, cómoevitar las pérdidas de datos y como administrar la base de datos para unamejor performance con respecto al hardware y las variadas aplicaciones.

• DB2 Family

DB2 Universal Database continua para encontrar la demanda del entornocomputacional heterogéneos de hoy en día. Es decir, abre soluciones para quepuedan acceder e integrar datos de múltiples recursos separados geográfica-mente en diferentes plataformas.

Universal Database es un nombre ambicioso. Sugiere un producto desig-nado para el uso de una variedad de propósitos y entornos, y es una buenadescripción de DB2 UDB. Cada nuevo desempeño de DB2 UDB se fundamentafuertemente en versiones anteriores.

5.6 DB2 UDB Versión 7.2

• La versión 7.2 de DB2 UDB incluye:

5.6. DB2 UDB VERSIÓN 7.2 149

— MQ-Assist wizard— MQ Series Integration— DB2 Enterprise - Edición extendida en Linux— DB2 Universal Database Enterprise Edicion para Linux en S/390— DB2 Connect Enterprise Edición para Linux en S/390— DB2 Connect Web Starter Kit— JDBC 2.0 soportado en HP-UX y Linux— Exploitation of the Linux 2.4 kernel

• Incremento en negocios inteligentes, como ser:

— Nuevos recursos warehouse, como i2, SAP R/3, requerimientos demensajes MQSeries y objetos Microsoft OLE DB

— El almacenamiento de dato expande su rol como una herramientade integración central para limpiar y calificar los instrumentos paraadicionar apoyo de diferentes tipos

— Mejorar el apoyo para crear y cambiar el almacenamiento en tabla— Requerimiento de acceso distribuido para nuevos recursos de da-

tos, como ser Sybase y Microsoft SQL Server, plataformas como elentorno operativo Solaris y Linux

— Requerimientos de acceso distribuido desde procedimientos SQL— Replicación de enlace a datos en un entorno operativo Solaris— Proceso lógico en almacenamiento y funciones SQL para realzar la

capacidad de transformación y limpiado de los datos

• Realce de la administración de datos:

— Demanda de archivos lógicos.— Cambio de la identidad de las columnas.— Soporte de 64-bit en el entorno operativo AIX, HP-UX y Solaris.— Encriptación y desencriptación de cadenas de datos para funciones

de usuarios definidos Incremental y delta backup.— Serie de soporte.— Creación de contenido paralelo.

• Incrementos de la Familia de DB2, tal como:

— Capacidad para correr procedimientos SQL sin compilarlos.— Administración de enlace a datos en entorno de desarrollo Solaris.

150 CAPÍTULO 5. INTRODUCCIÓN A DB2

5.7 Área de Ejecución de Instalación

Al insertar el CD-ROM del producto DB2 Universal Database Versión 7 , lacaracterística de ejecución automática ya no le lleva a la primera pantalla delprograma de configuración de DB2. En lugar de ello, inicia el DB2 Launchpad.

El DB2 Launchpad es una ventana que proporciona las opciones siguientes:

• Notas del release.

• Prerrequisitos de instalación.

• Visión general rápida.

• Instalar.

• Salir.

DB2 Launchpad le proporciona acceso a la información necesaria del CD-ROM antes de iniciar una instalación de DB2.

5.7.1 Área de Ejecución del Depósito

La primera vez que abra el Centro de depósito de datos, también se abrirá elÁrea de ejecución del depósito. Esta área de ejecución simplifica el trabajode 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 deejecución seleccionándola en el menú Centro de depósito de datos.

5.7.2 Primeros Pasos

En la Versión 7, la herramienta Primeros pasos, que se utiliza para crear y verla base de datos SAMPLE en un servidor DB2, se ha ampliado para permitiropciones de cliente. En un cliente, existe la opción de conectarse a la basede datos SAMPLE (utilizando el Asistente de configuración de cliente) o decrear 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 elproceso analítico en línea (OLAP)

5.7. ÁREA DE EJECUCIÓN DE INSTALACIÓN 151

Estas bases de datos son necesarias para la guía de aprendizaje de BusinessIntelligence. Dado que Primeros pasos es una aplicación Java, puede utilizarseen todos los sistemas operativos soportados por DB2, a condición de que seinstale el JRE (Java Run-Time Environment) apropiado en la estación detrabajo.

5.7.3 Visión General Rápida

La Visión general rápida de DB2 Universal Database es una presentación dealto nivel que, en un breve periodo de tiempo (20 a 25 minutos), presentalos cambios, las características, las ventajas, las posibilidades y las fuentes deinformación asociadas con DB2 Universal Database. Pone un énfasis especialen e-business, business intelligence (inteligencia comercial - BI) y la gestiónde datos. La navegación por Visión general rápida es flexible, proporcionándocontrol sobre la experiencia de aprendizaje.

5.7.4 Centro de Información

El Centro de información, al que se puede acceder seleccionando Ayuda -Centro de información desde el Centro de control, es ahora más fácil de utilizar.En el Centro de información se puede ver la información por tema o porcategoría. El Centro de información contiene un enlace para realizar búsquedasen la biblioteca entera de DB2.

También es posible acceder a la ayuda con el mandato db2ic en UNIX obien desde el menú Inicio en los sistemas operativos Windows.

5.7.5 Mejoras en los Asistentes

Todos los asistentes (denominados SmartGuides en versiones anteriores) tienenun aspecto nuevo con una Tabla de contenido (TOC) en el lado izquierdo. Sepuede ajustar el tamaño de la TOC para hacerla más grande de forma quese pueda visualizar u ocultar por completo todo el texto. (Algunos asistentescontienen una página de Introducción que presenta el asistente y una páginade Resúmen que resume la información que se ha entrado).

Se pueden encontrar instrucciones o ayuda en cada página del asistente,en las ventanas emergentes de información para cada campo o control y en los

152 CAPÍTULO 5. INTRODUCCIÓN A DB2

enlaces que se identifican como texto subrayado. También está disponible unafunción Sugerencias.

Esta sección contiene información sobre productos y paquetes que se hanunido 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, controlary acceder a los depósitos de datos de DB2. El DB2 Warehouse Managersimplifica y acelera la creación de prototipos de depósito así como el desarrolloy el despliegue de depósitos. Proporciona al centro de datos el control paramanejar las consultas, analizar los costes, gestionar los recursos y hacer unseguimiento del uso.

Ayuda a satisfacer los requisitos del usuario para buscar información, ac-ceder a ella e interpretarla. Proporciona herramientas y técnicas flexibles paracrear, gestionar y acceder al depósito. Y satisface las necesidades de informa-ción más comunes para empresas de cualquier tamaño.

• QMF para Windows

QMF para Windows está incluido en DB2 Warehouse Manager. Propor-ciona una herramienta de consulta de múltiples finalidades para la informacióncomercial, el compartimiento de datos, la protección de recursos del servidor,el desarrollo de aplicaciones sólido y la conectividad nativa a todas las plata-formas 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 uti-lizando la DRDA (Arquitectura de Bases de Datos Relacionales Distribuidas).Hay soporte para un entorno de base de datos heterogéneo disponible median-te el DB2 DataJoiner , que permite a los usuarios acceder a bases de datos deestaciones de trabajo no relacionales o de otro proveedor.

• DB2 Query Patroller

Query Patroller para DB2 Universal Database está disponible para Enter-prise Edition y proporciona soporte para HP-UX y NUMA-Q, además de lossistemas operativos Windows de 32 bits y las plataformas AIX y Solaris.

5.7. ÁREA DE EJECUCIÓN DE INSTALACIÓN 153

Esto permite gestionar, manejar y planificar consultas de análisis comercialy utilizar de forma más completa los recursos disponibles en dichos servidoresDB2.

• DB2 Relational Connect

DB2 Relational Connect se utiliza en un sistema federado para consultar yrecuperar datos ubicados en otros DBMS, como, por ejemplo, Oracle, Sybasey Microsoft SQL Server . Las sentencias de SQL pueden hacer referencia avarios 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, enuna tabla de Oracle y en una vista de Sybase.

En DB2 Versión 7.1, DB2 Relational Connect estaba disponible para Ora-cle en las plataformas Windows NT y AIX. En DB2 Versión 7.2, se ha amplia-do el soporte de Oracle para incluir sistemas operativos adicionales, pues se haañadido soporte para las fuentes de datos Sybase y Microsoft SQL Server. LosDBMS soportados incluyen Oracle, Sybase, Microsoft SQL Server y miembrosde la familia DB2 Universal Database (tales como DB2 para OS/390, DB2para OS/400 y DB2 para Windows).

DB2 Relational Connect también puede utilizarse con el Centro de depósitode datos para mejorar el rendimiento de selección en las fuentes Oracle, Sybasey Microsoft SQL Server a fin de cargar un depósito de datos de DB2.

DB2 Relational Connect funciona bajo algunas restricciones. Las peticio-nes distribuidas están limitadas a operaciones de sólo lectura en DB2 Versión7.

Además, no pueden ejecutarse operaciones de programa de utilidad (comoLOAD, REORG, REORGCHK, IMPORT y RUNSTATS) para los apodos.No obstante, es posible utilizar un recurso de paso a través a fin de emitirsentencias de DDL y DML directamente a los DBMS utilizando el dialecto deSQL asociado con esa fuente de datos.

DB2 Relational Connect es un producto opcional que puede utilizarse conDB2 Universal Database Enterprise Edition, DB2 Universal Database Enter-prise -Extended Edition, DB2 Connect Enterprise Edition y DB2 ConnectUnlimited Edition para los sistemas operativos Windows NT, AIX y Linux yel entorno operativo Solaris.

154 CAPÍTULO 5. INTRODUCCIÓN A DB2

• Kit de iniciación de OLAP de DB2

DB2 Universal Database incluye el Kit de iniciación de OLAP de DB2que se basa funcionalmente en el Servidor OLAP de DB2 Versión 7. El Kit deiniciación del Servidor OLAP de DB2 permite a los usuarios de DB2 UniversalDatabase explorar y aplicar posibilidades analíticas en línea antes de adquirirel producto completo, el Servidor OLAP de DB2, para realizar un análisis máscomplejo o para el despliegue en grandes grupos de usuarios.

Las aplicaciones desarrolladas por el Kit de iniciación de OLAP de DB2se 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 basanen Essbase, la tecnología OLAP líder del mercado de Hyperion Solutions.

• DB2 Spatial Extender

DB2 Spatial Extender puede tener directamente a DB2 Universal Databasecomo sistema principal. Esto facilita la inclusión de atributos espaciales, porejemplo distancia o tiempo de manejo, en los análisis comerciales.

Esta integración permite a los datos espaciales aprovechar las ventajas derendimiento 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 Consor-tium) para el almacenamiento, la indexación y la consulta de datos espaciales.En la figura 5.3 de la pág. 155 el Almacenamiento de Datos Espaciales enDB2.

• DB2 Universal Database Text Information Extender

DB2 Universal Database Text Information Extender proporciona una nue-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 deun mecanismo de búsqueda de textos rápido con las estrategias inteligentes deDB2 Optimizer . Construido sobre la base del éxito de los expansores actuales,DB2 Universal Database Text Information Extender aumenta, y empieza acombinar, la funcionalidad clave de DB2 Text Extender y DB2 Net SearchExtender en un solo producto integrado para el mercado actual orientado a lainformación.

5.7. ÁREA DE EJECUCIÓN DE INSTALACIÓN 155

Figura 5.3: Almacenamiento de Datos Espaciales

Utilizando el mecanismo de búsqueda de textos DB2 Net Search Extendery la interfaz de búsqueda DB2 Text Extender, DB2 Universal Database TextInformation Extender proporciona la línea base para una nueva generación deproductos de recuperación de textos. El resultado es un método de fácil usoy muy integrado para la búsqueda de documentos de la base de datos o dedocumentos externos utilizando DB2 Data Links Manager.

• DB2 Net Search Extender

DB2 Universal Database Net Search Extender proporciona un método dealto rendimiento de búsqueda de texto almacenado en bases de datos DB2.La realización de búsquedas utilizando este producto puede ser especialmen-te provechosa en aplicaciones de Internet donde el rendimiento es un factorimportante.

Net Search Extender puede añadir la potencia de la recuperación rápida detextos completos a las aplicaciones Net.Data, Java y CLI. Sus características lepermiten almacenar documentos de texto no estructurados de hasta 2 gigaby-tes en bases de datos. Ofrece a los desarrolladores de aplicaciones un métodorápido, versátil e inteligente para realizar búsquedas en dichos documentos.

• Application Development Client

156 CAPÍTULO 5. INTRODUCCIÓN A DB2

El Kit del desarrollador de software se llama ahora DB2 Application De-velopment Client.

• DB2 Life Sciences Data Connect

Cuando los estudiosos de las ciencias de la vida necesitan información paradesarrollar su trabajo, a menudo combinan datos de diversas fuentes a fin deconseguir lo que necesitan. No obstante, en las industrias dedicadas a lasciencias de la vida y a la biotecnología, existen enormes cantidades de datosque residen en fuentes de datos especializadas con prestaciones de consultapatentadas. Por tales diferencias de funcionamiento, a los usuarios les resultadifícil recoger los datos en una sola fuente y con un solo formato para trabajarcon ellos.

IBM DB2 Life Sciences Data Connect es un sistema middleware de basesde datos que permite trabajar con una base de datos virtual cuyos datossubyacentes pueden estar almacenados en múltiples fuentes de datos dentrode la industria dedicada a las ciencias de la vida.

Utilizando DB2 Life Sciences Data Connect, ejecuta una sola consultadirigida a la base de datos virtual y es posible establecer conexiones que,de lo contrario, quizá no se encontraría consultando cada fuente de datosindividualmente.

5.8 DB2 UDB Versión 8.1

Cada nueva versión de DB2 Universal Database se crea sobre la base sólida dela versión anterior. En la Versión 8.1 ofrece incluso un soporte más potentepara Business Intelligence, Gestión de Datos y Soluciones e-business.

DB2 Universal Database Versión 8.1 contiene muchas características nue-vas, que incluyen el Centro de desarrollo, funciones ampliadas de XML Exten-der, soporte de Linux para DB2 Warehouse Manager, integración de SpatialExtender con herramientas de IBM Business Intelligence, un nuevo Centro deduplicació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 64bits ampliado y nuevos asistentes de Instalación de DB2 y Centro de controlde DB2.

5.8. DB2 UDB VERSIÓN 8.1 157

5.8.1 Centro de Desarrollo

En la versión 8.1, el Centro de desarrollo sustituye al Stored Procedure Buildery proporciona un funcionamiento incrementado. Mediante el Centro de des-arrollo, el usuario puede desarrollar procedimientos almacenados y funcionesdefinidas por el usuario como se muestra en la figura5.4 de la página158. Tam-bié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 servi-dor.

• Depurador de SQL para depurar rutinas; incluye vistas para puntos deinterrupción, variables y pila de llamadas.

• Una interfaz mejorada para controlar el entorno de desarrollo.

• Asistentes para construir funciones definidas por el usuario para MQSe-ries, fuentes de datos OLE DB y documentos XML.

• Asistentes para exportar, importar y desplegar rutinas e información deproyectos Productos y Paquetes Nuevos.

5.8.2 WebSphere

Utilizando una tecnología parecida a la que se encuentra en el Centro dedesarrollo, WebSphere Studio Application Developer proporciona también uncreador de procedimientos almacenados y un creador de funciones definidas porel usuario. Si utiliza WebSphere para desarrollar aplicaciones, puede acceder amuchas de las mismas características del Centro de desarrollo y aprovecharsetanto del conjunto de productos WebSphere como de la potencia de DB2.

5.8.3 Mejoras en XML Extender

Se han añadido nuevas características a XML Extender : ahora, XML Extendersoporta servicios de Web con los servicios Web Object Runtime Framework

158 CAPÍTULO 5. INTRODUCCIÓN A DB2

Figura 5.4: Centro de Desarrollo

(WORF), conjunto de herramientas para implantar servicios de Web con DB2.Asimismo, XML Extender soporta ahora MQSeries, de forma que es posibleenviar documentos XML a las colas de mensajes de MQSeries, y recuperarlosde las mismas.

5.8.4 DB2 Warehouse Manager

Se han añadido nuevas características y mejoras a DB2 Warehouse Manager:

Con el soporte de carga paralela nativa para DB2 Universal DatabaseEnterprise Server Edition, es posible cargar grandes volúmenes de datos conmás rapidez.

DB2 Warehouse Manager tiene capacidades ampliadas, por lo que se puedeincrementar y mejorar el rendimiento de las operaciones de depósito, mani-pular 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 DB2Warehouse Manager.

5.8. DB2 UDB VERSIÓN 8.1 159

Figura 5.5: DB2 Warehouse Manager.

5.8.5 DB2 Warehouse Manager (cont.)

• Ahora, el Gestor de catálogos de información soporta un rango másamplio de sistemas operativos. El Centro de catálogos de información,que es una nueva interfaz, proporciona unas funciones y un uso mejoradospara trabajar con metadatos comerciales.

• Ahora se soportan XP de Linux y de Windows(R) para el agente dedepósito, además de los sistemas operativos que ya se soportaban: Win-dows NT, Windows 2000, AIX(R) y Solaris Operating Environment(R).

• El transformador de limpieza realiza ahora transformaciones con SQL,lo que tiene como resultado un mejor rendimiento.

En la figura5.5 de la pégina159 se puede observar un esquema del funcio-namiento de DB2 Warehouse Manager.

5.8.6 Centro de depósito de datos de DB2

Se han añadido nuevas características al Centro de depósito de datos:

El soporte de servidor de depósito se amplía a AIX. El servidor de depósi-to y el iniciador de sesiones de depósito, que se ejecutan como servicios enWindows, se ejecutan como daemons en AIX.

Es posible exportar e importar metadatos del lenguaje de código y exportarestos objetos:

160 CAPÍTULO 5. INTRODUCCIÓN A DB2

Tablas, archivos y vistas de origen

Tablas y archivos de destino

El proceso en cascada (varios intervalos) permite gestionar varios pasosdefiniendo y habilitando una planificación y un flujo de tareas para los procesosque contienen los pasos.

Con el nuevo paso Select and Update de SQL, se puede actualizar unatabla de destino del depósito de datos sin sustituir la tabla completa ni grabarcódigo adicional.

Ahora, la Guía de aprendizaje de Business Intelligence se compone de dosguí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 BusinessIntelligence: Lecciones ampliadas sobre depósito de datos.

5.8.7 DB2 Spatial Extender

Se han añadido nuevas características a Spatial Extender:

Ahora, Spatial Extender está integrado en las herramientas de IBM Busi-ness 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/OScon 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 moda-lidades 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 índiceespacial.

La interfaz de Spatial Extender está ahora orientada al objeto.

5.8. DB2 UDB VERSIÓN 8.1 161

5.8.8 DB2 Spatial Extender (cont.)

Ahora, Spatial Extender ha mejorado su rendimiento y funciones:

Se ha mejorado el rendimiento de las funciones de importación y exporta-ció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 SpatialExtender.

Se han ampliado las funciones existentes.

Ahora se tiene acceso a funciones espaciales adicionales.

5.8.9 Gestión de los Datos

Las nuevas características de DB2 Universal Database Versión 8.1 incluyen:

Un Servidor de administración de bases de datos rediseñado

Agrupamiento multidimensional de los datos

El Centro de desarrollo de DB2

El Centro de salud de DB2

Una supervisión mejorada de los puntos muertos

SQL en funciones definidas por el usuario

Un instalador basado en Java en UNIX(R)

La posibilidad de cambiar parámetros en línea

Mejoras en la duplicación

162 CAPÍTULO 5. INTRODUCCIÓN A DB2

5.8.10 Duplicación (DB2 DataPropagator)

El DataPropagator de DB2 Versión 8.1 ha mejorado el uso, la fiabilidad, elrendimiento, las posibilidades de servicio y la seguridad. El nuevo Centrode duplicación facilita la configuración, el mantenimiento y la supervisión deduplicaciones. La duplicación se ejecuta con más rapidez que antes.

5.8.11 Nuevo Centro de duplicación

Las nuevas características del Centro de duplicación incluyen:

• Un iniciador que le permitirá configurar con rapidez el escenario de du-plicación de extremo a extremo

• La posibilidad de especificar “perfiles” específicos del servidor y del sis-tema operativo, así como de denominar convenios y propiedades para lastablas de destino, tablas de CD y tablas de control

• La posibilidad de iniciar y detener los programas Capture, Apply y Mo-nitor desde el Centro de duplicación

• Un supervisor de alertas que envía alertas por correo electrónico cuandose superan los umbrales definidos por el usuario o se producen problemas

• La posibilidad de calcular estadísticas tales como relación de productivi-dad, valores de latencia y el número de errores de los programas Capturey Apply

• Una comprobación mejorada de los errores y una validación de las ope-raciones de duplicación.

En la figura 5.6 de la página 163 se puede observar el nuevo esquema defuncionamiento junto con las nuevas características del Centro de Duplicaciónde la versión 8.0.

5.8. DB2 UDB VERSIÓN 8.1 163

Figura 5.6: Centro de Duplicación de DB2 versión 8.0.

5.8.12 Posibilidades de Gestión

Fundaciones de Bases de Datos de Autogestión Disponibles

A partir de DB2 Universal Database Versión 8.1, verá incorporada en DB2 unaapasionante tecnología inteligente; la base de datos se supervisa a sí misma yaconseja 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 debases de datos de las tareas mundanas, de forma que se pueden centrar en lasactividades que hacen prosperar el negocio.

Visualizador de Memoria

El Visualizador de memoria ayuda a los administradores de bases de datos asupervisar, gráficamente y en tiempo real, el rendimiento relativo a la memoriade una instancia y las bases de datos de la misma.

164 CAPÍTULO 5. INTRODUCCIÓN A DB2

Supervisor de salud

Herramienta para la “gestión por excepción”, el Supervisor de salud evalúa lasalud del sistema de bases de datos y notifica al usuario, por correo electróni-co o mediante un buscapersonas, los problemas potenciales o existentes. Elsupervisor se ejecuta sobre cada una de las instancias de DB2.

5.8.13 Soporte de plataformas

Con el soporte de 64 bits, se dispone de más espacio de direcciones paraalmacenar más datos en la memoria y poder acceder a ellos con mucha mayorrapidez.

Los productos DB2 Versión 8.1 siguientes proporcionan soporte de 64 bits:

• DB2 Personal Edition.

• DB2 Enterprise Server Edition.

• DB2 Connect Personal Edition.

• DB2 Connect Enterprise Edition.

• DB2 Application Development Client.

• DB2 Administration Client.

• DB2 Run-Time Client.

• DB2 Warehouse Manager.

• DB2 Spatial Extender.

5.8.14 Compatibilidad de la Familia de DB2

Asistente para la Configuración de DB2

La instalación de DB2 en plataformas Windows y UNIX resulta ahora másfácil mediante la utilización del Asistente para la configuración de DB2. Estainterfaz gráfica permite instalar productos DB2 directamente o crear archi-vos de respuestas para permitir una instalación posterior. En los sistemas

5.9. PRINCIPALES VENTAJAS DEL DB2 UDB 165

UNIX, también se puede utilizar el Asistente para la configuración de DB2para 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 Herramientasde administración se han ampliado para abarcar un ámbito más amplio defunciones, en comparación con las de que se disponía en versiones anterioresde DB2. Por ejemplo, un asistente de DB2 Versión 8.1 brinda el conjunto totalde opciones disponibles para crear una tabla.

5.9 Principales Ventajas del DB2 UDB

• Fácil y simple

Muchos expertos de la industria y usuarios han elogiado las nuevas he-rramientas que IBM desarrolló para facilitar la administración y uso del DB2Universal Database. Utiliza una interfase gráfica, estilo browser, para accedery manejar objetos de la base de datos. Incluye “smart.guides” que facilitan latarea de configuración, sirviendo como guía paso a paso para lograr un rendi-miento óptimo de la base de datos y para asistir al usuario en la creación deteclas con plantillas predefinidas. Las herramientas mencionadas, más otrasincluidas en DB2 Universal Database, están listas para ser integradas a Tivoli .

166 CAPÍTULO 5. INTRODUCCIÓN A DB2

• Aplicaciones existentes

Más del 70% de las empresas top del mundo confían en DB2 UniversalDatabase para manejar aplicaciones críticas, las cuales pueden hacer uso delas siguientes aplicaciones de negocios:

— On-line Transaction Processing (OLTP)

— Data Warehousing

— Decision Support

— Data Mining

Al evaluar DB2 Universal Database por primera vez, se deben considerarlos beneficios a corto y largo plazo al utilizar un código base unificado pa-ra todas las aplicaciones, y para todas las plataformas, desde laptops hastasistemas de procesamiento paralelo.

Además, se dispone de numerosas aplicaciones desarrolladas a nivel mun-dial, entre ellas las de SAP, People Soft. y Baan.

• Herramientas de replicación

La replicación de datos es la tecnología clave para aprovechar todo el poderde los ambientes distribuidos ya que permite enviar los datos a cualquier sitiopara cubrir todos los requerimientos de la empresa; desde oficinas centrales asucursales, usuarios móviles, proveedores, clientes y socios de negocios. En lafigura 5.7 de la pág. 167 se muestra un esquema de replicación de datos enDB2.

DB2 Universal Database incluye todo lo necesario para implementar unasolución de replicación de datos en cualquier tipo de ambiente distribuido oheterogéneo.

• Soporte OLAP

DB2 Universal Database ofrece nuevas capacidades para realizar análi-sis multidimensional y procesamiento analítico en línea (OLAP). Incluye fun-ciones de ROLLUP, CUBE y grouping sets. Soporta STAR JOINS . Estasfacilidades son utilizadas normalmente en todas las aplicaciones de businessintelligence.

5.9. PRINCIPALES VENTAJAS DEL DB2 UDB 167

Figura 5.7: Replicación de Datos en DB2.

• Lista para Internet

Gracias a su alcance global y bajo costo, Internet puede ser una soluciónde negocios muy poderosa. Si se desea realmente aprovechar las oportunidadesde negocios utilizando la Web, se debe considerar la mejor manera de llegara un mercado que está esperando las 24 horas de los 7 días de la semana. Labase de datos a seleccionar debe estar preparada para brindar acceso rápido yalta disponibilidad a información que requiere actualización constante.

DB2 Universal Database provee la capacidad de hacer backups en línea,evitando interrupciones en la disponibilidad del sistema. Permite realizar ope-raciones comerciales garantizando un alto nivel de seguridad y confiabilidad.

DB2 cumple con los siguientes requerimientos:

• Soporta el paradigma de network-computing utilizando Java y JDBC.

Permite el acceso a DB2 Universal Database desde una amplia variedadde plataformas de clientes, utilizando JDBC vía Java applets desde cualquierWeb Browser. Adicionalmente, se puede desarrollar una aplicación Fen Javay acceder a DB2 utilizando directamente JDBC. También permite codificar“stored procedures” en Java.

• Brinda excelente nivel de seguridad.

Brinda servicios de autenticación y autorización que pueden ser fácilmenteintegrados a servicios de redes y sistemas operativos.

168 CAPÍTULO 5. INTRODUCCIÓN A DB2

• Net.Data brinda acceso a sus datos corporativos desde la Web.

Ofreciendo un alto nivel de performance y escalabilidad en el acceso dedatos residentes en DB2 Universal Database, incorporando multimedia.

• Multimedia.

DB2 Universal Database incluye la capacidad nativa de almacenar variadostipos de datos: alfanuméricos, video, imagen, audio y los que defina el usuario.

Otra gran diferencia: la escalabilidad de DB2 Universal Database permiteel almacenamiento de grandes volúmenes de datos aprovechando al máximo lacapacidad de las plataformas soportadas por DB2.

DB2 Universal Database permite realizar búsquedas sofisticadas e inteli-gentes en cualquier documento utilizando innumerables criterios.

Además, permite que el usuario defina funciones -llamadas UDFs- y tiposde datos propios -llamados UDTs. Estos facilitan enormemente la tarea deadministración de datos por parte de los desarrolladores, asegurando la con-sistencia de los mismos y minimizando los errores por operaciones inválidas.

Formida Software Corp. ha desarrollado una solución para la industria dela salud, que incluye las capacidades multimedia de DB2 Universal Databa-se. La aplicación maneja datos complejos, tales como: imágenes de rayos X,gráficos, video, mapas para la localización de médicos y hospitales, además dearchivos de historias clínicas e información de seguros.

5.10 Conclusión

DB2 Universal Database es un sistema de gestión de bases de datos relacionalescompletamente habilitado para la Web que se puede escalar, desde procesa-dores simples hasta multiprocesadores simétricos y agrupamientos paralelosmasivos.

Mediante él, se puede influir en todos los aspectos relativos a la informa-ción de la empresa, más allá de simples filas y columnas de datos alfanuméri-cos, incluyendo información en formato XML, imágenes, video en modalidad

5.10. CONCLUSIÓN 169

continua y otros formatos ricos en medios. También se pueden realizar tran-sacciones más allá de las cargas de trabajo, que incluyen la toma de decisionesen 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 inclusolos usuarios novatos puedan realizar tareas de administración de bases de da-tos. Delegando la identificación anticipada de problemas de base de datos, ladeterminación y la resolución a los usuarios novatos de DB2, se puede reducirel coste asociado y, a la vez, rebajar el coste total de la propiedad. Ade-más, DB2 proporciona un soporte aún más potente de e-business a través deuna regrabación y optimización automática de consultas mejoradas, el agru-pamiento multidimensional de los datos, las tablas automáticas de resumen,Java, XML, servicios Web, posibilidades federadas, soluciones portátiles y unsoporte incorporado ampliado para soluciones de Business Intelligence (BI).

Capítulo 6

WebSphere

171

172 CAPÍTULO 6. WEBSPHERE

Figura 6.1: Soluciones IBM WebSphere

6.1 Introducción

WebSphere fue diseñado para integrar personas, procesos, información y apli-caciones con nuevos desarrollos (ver fig. 6.1 de la pág. 172).

La plataforma Websphere está desarrollada a partir de estándares abiertoscomo J2EE, XML y Web Services. Esta plataforma tiene la fiabilidad, escala-bilidad y seguridad extensamente probada en todos los productos de SoftwareIBM.

WebSphere Studio Application Developer es uno de los productos de lafamilia WebSphere Studio que ha sido desarrollado basado en el Workbenchde Eclipse.

La plataforma delWorkbench de Eclipse fué diseñado por IBM y liberado ala comunidad open source. Es una plataforma abierta, portable y universal deherramientas que provee marcos, servicios y herramientas para la construciónde aplicaciones [17].

En esencia, Workbench proporciona la insfraestructura de herramientas.Con esta insfraestructura, los desarrolladores de heramientas son capaces deconcentrarse en la real construcción de sus herramientas.

6.2. ECLIPSE 173

El Workbench ha sido diseñado para una máxima flexibilidad para apoyarel desarrollo de herramientas de las nuevas tecnologías que puedan surgir enel futuro.

Ambientes de desarrollo escritos por Workbench deben soportar un mode-lo de desarrollo basado en roles, en el cual los resultados del trabajo de losdesarrolladores será consistente. Los desarrolladores no deberían estar preocu-pados en cómo las diferentes herramientas individuales pueden estar tratandosus archivos.

La familia de productos de WebSphere Studio se basa en un ambiente dedesarrollo integrado (IDE) para desarrollar, testear, depurar y ejecutar lasaplicaciones. Brinda soporte a cada fase del ciclo de vida del desarrollo de laaplicación.

6.2 Eclipse

Eclipse en una plataforma abierta para la integración de herramientas cons-truida por una comunidad de proveedores de herramientas. Esta provee demáxima flexibilidad y control sobre su tecnología de software a los desarrolla-dores, con una licencia pública común que provee código fuente libre y derechosde redistribución.

Industrias líderes como IBM, Borland, Merant, QNX Software Systems,Rational Software, RedHat, SuSE, TogetherSoft, y WebGain formaron la juntainicial directiva del proyecto Eclipse (ver fig. 6.2 de la pág. 174).

6.2.1 Arquitectura de la Plataforma

Eclipse es una plataforma que ha sido diseñada desde cero. Por diseño, laplataforma no provee en si misma de gran cantidad de funcionalidades. Elvalor de la plataforma es lo que fomenta: un rápido desarrollo de característicasintegradas basadas en un modelo de plug-in (ver fig.6.3 de la pág. 175).

Eclipse provee un modelo de interfaz de usuario (UI ) para trabajar conherramientas. Está diseñado para funcionar en múltiples sistemas operativosmientras que brinda una fuerte integración con cada uno de los mismos. Losplug-ins pueden ser programados por las APIs portables de Eclipse y funcionarsin cambios en cualquiera de los sistemas operativos.

174 CAPÍTULO 6. WEBSPHERE

Figura 6.2: Eclipse SDK

6.2. ECLIPSE 175

Figura 6.3: Plataforma Eclipse

176 CAPÍTULO 6. WEBSPHERE

La plataforma Eclipse utiliza el modelo de un Workbench común paraintegrar las herramientas desde el punto de vista del usuario final.

6.3 Características del Workbench

Eclipse Workbench brinda un conjunto de APIs, modelos y marcos para edi-tores de fuentes de desarrollo y otras interfaces de usuario, así como tambiénel acceso a servicios comunes para la gestión de recursos, depuración y equiposde programación.

Las principales características del Workbench Eclipse son las siguientes:

• Herramientas basadas en plug-in.

• Desarrollo de herramientas orientadas en roles.

• Integración vertical y horizontal.

• Estándares abiertos.

• Ambiente de trabajo distribuido.

• IDE basado en archivo.

6.3.1 Herramientas Basadas en Plug-in

Workbench proporciona una plataforma plug-in flexible. Diferentes herra-mientas pueden conectarse al mismo, con cada herramienta provee una nuevafuncionalidad para ser agregada al Workbench o a los plug-in ya existentes.

Cada plug-in se integra al Workbench y a las otras herramientas. Lo idealsería que el usuario final no notara ninguna diferencia al pasar de una herra-mienta a otra.

Al programar con las APIs de Eclipse, los plug-in pueden fusionar sincambios en cualquiera de los sistemas operativos.

La plataforma se encarga de la logística del ambiente de base y provee unmodelo estándar de navegación de usuario.

6.3. CARACTERÍSTICAS DEL WORKBENCH 177

Cada plug-in puede concentrarse en el desempeño de un pequeño númerode tareas. Algunos ejemplos de tales tareas son: testear, depurar y diagramar.

Ya que Workbench está basado en una arquitectura abierta cada equipode desarrollo de plug-ins puede centrarse en su área de especialización. Estopermite al equipo de expertos en gestión construir interfaces y a los expertosde utilidades, construir las herramientas del usuario final. Si éstas están biendiseñadas y utilizan la normaAPI, nuevas e importantes características puedenañadirse al Workbench y productos basados en Workbench sin afectar otrasherramientas.

6.3.2 Desarrollo de Herramientas Orientadas en Roles

El Workbench está diseñado para proporcionar soporte para el desarrollo e-business o un conjunto de roles.

Dentro de los productos basados enWorkbench, las perspectivas orientadasa tareas filtran la complejidad general y presentan al desarrollador sólo conaquellas funciones que son relevantes para la tarea.

Los usuarios pueden cambiar las perspectivas en función de lo que estántrabajando en cualquier momento dado, o en función de su papel actual en elproyecto.

Debido a que diferentes desarrolladores están acostumbrados a trabajaren diferentes formas, cualquier perspectiva puede ser aún más personalizada,y ya que todas las herramientas y perspectivas se construyen utilizando latecnología de Eclipse Workbench, éstas comparten una vista y diseño común,lo que reduce las curvas de aprendizaje y ayuda a maximizar la productividad.

Todos los recursos de desarrollo para todos los proyectos se almacenan enun único repositorio, por lo tanto, los desarrolladores son capaces de compartirfácilmente su trabajo.

6.3.3 Integración Vertical y Horizontal

Tradicionalmente los proveedores de software han proporcionado herramientasverticales obligando a los clientes a hacer su propia integración. El objetivode Eclipse Workbench es proporcionar una plataforma que los proveedores desoftware pueden ampliar fácilmente.

178 CAPÍTULO 6. WEBSPHERE

Por ejemplo, cada producto de la familia de WebSphere Studio que se ba-sa en Workbench ofrece un conjunto de herramientas integradas permitiendocentrarse en la construcción de aplicaciones en lugar de la integración de he-rramientas.

Además se puede integrar fácilmente otras herramientas de otros vende-dores o desarrolladores locales, siempre y cuando se ajusten al protocolo deplug-in de Workbench.

6.3.4 Estándares Abiertos

El conjunto Workbench Eclipse, así como todos los productos de la familia deWebSphere Studio, se basan en estándares abiertos y el código que generantambién cumple con ellos.

Esto permite construir y desplegar del lado del servidor las aplicacionesque se ajustan a las especificaciones de Servlet, JavaServer Pages y EJB.

6.3.5 Ambiente de Trabajo Distribuido

Los equipos de desarrollo de aplicaciones son cada vez más distribuidos, y seencuentran bajo una creciente presión para entregar soluciones con rapidez. Enese medio ambiente es fundamental disponer de herramientas de desarrollo quepuedan apoyar estas necesidades y al mismo tiempo abordar las necesidadespersonalizadas.

6.3.6 IDE Basado en Archivo

Todo el contenido se guarda como archivos. Recursos tales como clases Javay archivos HTML son almacenados en el sistema de archivos, lo que los hacede fácil acceso.

6.4 Productos WebSphere Studio

La familia de productos de WebSphere Studio tiene los siguientes miembros:(ver fig. 6.4 de la pág. 179).

6.4. PRODUCTOS WEBSPHERE STUDIO 179

Figura 6.4: Productos WebSphere

• WebSphere Studio Site Developer Advanced.

• WebSphere Studio Application Developer.

• WebSphere Studio Application Developer Integration Edition.

• WebSphere Studio Enterprise Developer.

Estos productos proporcionan apoyo para el desarrollo, testeo y despliegueaplicaciones Webs y J2EE.

Desde la perspectiva de la arquitectura de Eclipse, WebSphere Studio SiteDeveloper es un conjunto de plug-ins para WebSphere Studio Workbench.

WebSphere Studio Application Developer es otro conjunto de plug-ins paraWebSphere Studio Workbench que es un superconjunto de WebSphere StudioSite Developer, y así sucesivamente.

WebSphere Studio Device Developer no es parte de esta cadena, sin embar-go se basa en WebSphere Studio Workbench al igual que los otros. Además,WebSphere Studio Device Developer puede funcionar como un plug-in para

180 CAPÍTULO 6. WEBSPHERE

WebSphere Studio Site Developer y WebSphere Studio Application Developerpara ampliar su funcionalidad y permitir que tanto el cliente como el servidor,estén dentro de una plataforma, o puede ser instalado stand-alone.

6.4.1 WebSphere Studio Site Developer

WebSphere Studio Site Developer es un IDE destinado a los desarrolladoresWeb para desarrollar y gestionar complejos sitios Web. Es fácil de utilizar,minimiza el tiempo y esfuerzo necesario para crear, administrar y depurarsitios web de multi-plataforma.

Es diseñado de acuerdo con el J2SE y J2EE y soporta las especificacionesJSP, servlets, HTML, JavaScript y DHTML. Además, incluye herramientaspara el desarrollo de imágenes y GIFs animados.

Con WebSphere Studio Site Developer se podrá desarrollar aplicacionesWeb que utilizan las siguientes tecnologías:

• JSP.

• Servlets.

• Web services.

6.4.2 WebSphere Studio Application Developer

WebSphere Studio Application Developer está diseñado para desarrolladoresprofesionales de Java y J2EE, que requieren integrar Java, Web, XML, yservicios Web.

Incluye todas las características del WebSphere Studio Site Developer , yañade herramientas para el desarrollo de aplicaciones EJB, así como la ejecu-ción de perfiles, etc.

Los desarrolladores pueden construir rápidamente, testear la lógica de ne-gocio y mejorar la presentación antes de desplegar en un servidor de produc-ción.

6.5. HERRAMIENTAS DE WSAD 181

6.4.3 WebSphere Studio Application Developer Integration Edi-tion

Incluye toda la funcionalidad del Application Developer, además de:

• Potentes herramientas gráficas para construir rápida y facilmente aplica-ciones para integrar aplicaciones J2EE con sistemas back.end, ayudandoa ahorrar tiempo y dinero por la reutilización de recursos existentes.

• Asistentes que ayudan en la construcción y despliegue de servicios Webcomplejos, componentes EJB, flows, y otros servicios Web.

• Apoyo para toda la Empresa.

6.4.4 WebSphere Enterprise Developer

Enterprise Developer incluye toda la funcionalidad de WebSphere Studio Ap-plication Developer Integración Edition , además de, entre otros:

• Integración de entornos transaccionales como CICS e IMS.

• Crear nuevas aplicaciones EIS, como parte de una aplicación J2EE.

• Desarrollar y mantener aplicaciones z / OS.

• Soporta Java, COBOL, PL / I, y EGL.

Otro núcleo de tecnología que se integra dentro de Enterprise Developer:

• WebSphere Studio Asset Analyzer (WSAA): Identifica los procesos deaplicación y puntos de conexión, y proporciona la capacidad de generarcomponentes de código existente.

6.5 Herramientas de desarrollo suministradas conWebSphere Studio Application Developer

Entre las herramientas que podemos encontrar en WSAD tenemos las siguien-tes (ver fig. 6.5 de la pág. 182):

182 CAPÍTULO 6. WEBSPHERE

Figura 6.5: Entorno de desarrollo de WebSphere Studio Application Develo-per.

6.5. HERRAMIENTAS DE WSAD 183

6.5.1 Herramientas de Desarrollo Java

Las herramientas de desarrollo Java incluidas junto con WebSphere Studiopermiten desarrollar cualquier aplicación Java. Añaden perspectivas Java alentorno de trabajo, así como varias vistas, editores, asistentes, constructoresy herramientas para fusionar y propagar código.

Las herramientas de desarrollo Java ofrecen las siguientes prestaciones:

• Soporte de JDK 1.3.

• Soporte conectable en tiempo de ejecución para la conmutación de JREy para pasar a múltiples entornos de tiempo de ejecución de IBM y otrosdistribuidores.

• Compilación incremental automática.

• Un depurador para la depuración local y remota.

• Capacidad para ejecutar código que tenga errores en los métodos.

• Protección contra errores y recuperación automática.

• Notificación y corrección de errores.

• Editor de texto Java con resaltado completo de la sintaxis y ayuda totaldel contenido.

• Herramientas de propagación que permiten reorganizar las aplicacionesJava.

• Herramientas de búsqueda inteligente, de comparación y de fusión paralos archivos fuente Java.

• Cuaderno para evaluar los fragmentos de código.

6.5.2 Herramientas de Desarrollo de Aplicaciones Web

El entorno de desarrollo Web de WebSphere Studio proporciona las herra-mientas necesarias para desarrollar aplicaciones Web tal como se define en laespecificación de Sun Microsystems Java Servlet 2.3 Specification y la especi-ficación de Sun Microsystems JSP 1.2.

184 CAPÍTULO 6. WEBSPHERE

Las aplicaciones Web incluyen páginas Web estáticas, JavaServer Pages(JSP), servlets Java, descriptores de despliegue (archivos web.xml) y otrosrecursos Web.

Este entorno reúne todos los aspectos del desarrollo de aplicaciones Weben una interfaz común. Todos los miembros del equipo del sitio Web, incluidoslos autores del contenido, los artistas gráficos, los programadores y los web-masters, pueden trabajar en los mismos proyectos y acceder a los archivos quenecesitan.

Dentro del entorno de desarrollo Web integrado resulta fácil crear, en-samblar, publicar, desplegar y mantener en colaboración aplicaciones Webdinámicas e interactivas.

El entorno de desarrollo Web incluye las siguientes posibilidades de altonivel:

• Herramientas para JavaServer Faces, llamadas componentes Faces y Ob-jetos de datos de Service (SDO, anteriormente WDO). JavaServer Faceses una infraestructura de IU que proporciona componentes GUI y un mo-delo de eventos para desarrollar interfaces de usuario Web gestionadaspor datos dinámicos. Los Objetos de datos de Service pueden facilitar laconectividad de datos y el enlace de datos con la IU, sin que sea necesarioprogramar.

• Creación de proyectos Web, ya sea utilizando la jerarquía definida porJ2EE o una versión estática que reduce la actividad general del proyectocuando los elementos generales no son necesarios.

• Creación y edición de un archivo descriptor de despliegue Web (web.xml).

• Creación, validación, edición y depuración de archivos JSP y HTML.Están disponibles tanto el editor WYSIWYG como el editor de fuentepara la creación de páginas JSP y HTML.

• Edición, depuración y validación de JavaScript.

• Soporte de códigos JSP (taglib) personalizados, basado en la especifica-ción JSP 1.2.

• Una vista ampliable, llamada vista fragmentos de código que puede uti-lizarse para añadir, catalogar y organizar objetos de programación re-

6.5. HERRAMIENTAS DE WSAD 185

utilizables, como por ejemplo código HTML, JavaScript y JSP conjun-tamente con archivos y bibliotecas de códigos.

• Edición y animación de imágenes.

• Soporte de edición de hoja de estilos en cascada (CSS).

• Importación HTTP/FTP.

• Exportación FTP (copia de un solo recurso) a un servidor.

• Importación, exportación y validación de archivadores Web (WAR).

• Visión, análisis, validación y gestión de enlaces lo que incluye la conver-sión de enlaces, el marcado de enlaces rotos y el arreglo de los enlaces almover o redenominar recursos.

• Creación de servlets mediante un asistente para la creación de servletsnuevos y la adición de correlaciones de servlet al archivo de descriptorde despliegue (web.xml).

• Generación de aplicaciones Web mediante asistentes que crean recursosWeb a partir de beans y consultas de base de datos (SQL).

• Integración con el entorno de prueba de WebSphere.

• Soporte de publicación para varios tipos de servidor Web.

• Desarrollo de Struts y JSF portlet que es parecido al desarrollo de apli-caciones Web.

• Web Site Designer permite editar todo un sitio Web. Puede ver el sitioWeb en una vista Navegación para añadir páginas nuevas y suprimir ymover páginas en este sitio. Además, utilizando una plantilla de página,es posible hacer coherentes el diseño y el estilo a través de un sitio. Laspáginas de un sitio Web están organizadas en una jerarquía y Web SiteDesigner utiliza esta información de estructura para generar automáti-camente enlaces de navegación y mapas de sitios

6.5.3 Herramientas de Desarrollo de Servicios Web

WebSphere Studio proporciona asistentes y otras herramientas para hacer po-sible el rápido desarrollo de servicios Web.

186 CAPÍTULO 6. WEBSPHERE

Los servicios Web son aplicaciones e-business modulares y basadas en es-tándares que las empresas pueden combinar y emparejar dinámicamente paraefectuar transacciones complejas con un mínimo de programación.

Los servicios Web permiten a los compradores y vendedores de todo elmundo descubrirse unos a otros, conectarse dinámicamente y ejecutar tran-sacciones en tiempo real con la mínima interacción humana.

Algunos ejemplos de servicios Web podrían ser artículos de revistas teatra-les, informes meteorológicos, comprobaciones de crédito, cotizaciones en bolsa,asesores de viajes, o procesos de reserva para viajes en compañías aéreas.

Cada uno de estos servicios empresariales autocontenidos es una aplicaciónque se puede integrar fácilmente junto con otros servicios, sean de la misma ode otra compañía, para crear un proceso comercial completo.

Esta interoperatividad permite a las empresas publicar, descubrir y enlazardinámicamente un rango de servicios Web por Internet.

Las herramientas de desarrollo de servicios Web proporcionadas en WebS-phere Studio están basadas en estándares abiertos (de distintas plataformas):

• UDDI (descripción, descubrimiento e integración universales), que per-mite a las empresas autodescribirse, publicar especificaciones técnicassobre cómo quieren llevar a cabo el e-business con otras compañías, ybuscar otras empresas que les proporcionen los bienes y servicios quenecesitan, todo ello por medio de registros UDDI en línea.

• El protocolo simple de acceso a objetos (SOAP), que es un estándar paratransportar de manera fiable mensajes de negocio electrónico desde unaaplicación empresarial a otra por Internet.

• El lenguaje de descripción de servicios Web (WSDL), que describe losprogramas accesibles por Internet (o por otras redes), así como los for-matos de mensaje y los protocolos empleados para comunicarse con ellos.

WebSphere Studio facilita los siguientes procesos para ayudar a construiry desplegar aplicaciones habilitadas para servicios Web:

• Descubrir : Examinar el Registro Comercial UDDI con el fin de localizarservicios Web existentes para la integración.

6.5. HERRAMIENTAS DE WSAD 187

• Crear o transformar : Crear servicios Web a partir de artefactos exis-tentes como son los beans Java, los beans EJB, los URL que toman ydevuelven datos, las llamadas a DB2(R) XML Extender, los procedi-mientos almacenados de DB2 y las consultas SQL.

• Construir : Se puede crear un archivo WSDL que describe el servicio ya continuación genera los envoltorios de Servicio web y bean Java desdedicho WSDL.

• Desplegar : Desplegar servicios Web en los entornos de prueba de WebS-phere Application Server o Apache Tomcat mediante las herramientasde servidor.

• Probar : Probar servicios Web en ejecución local o remota para obtenerun intercambio de información instantáneo.

• Desarrollar : Generar aplicaciones de ejemplo para ayudar a crear lapropia aplicación cliente de servicios Web.

• Publicar : Publicar los servicios Web en el registro comercial UDDI anun-ciándolos para que otras empresas puedan acceder a ellos.

6.5.4 Herramientas de Desarrollo de Enterprise JavaBeans (EJB)

El entorno de desarrollo de EJB presenta un soporte completo de EJB 1.1 y2.0, un cliente de prueba EJB, un entorno de prueba unitario para J2EE y so-porte de despliegue para archivadores Web (WAR) y archivadores de empresa(EAR).

Es posible correlacionar beans de entidad con bases de datos y generarcomponentes EJB para compaginarlos en sistemas de proceso de transacciones.XML proporciona un formato ampliado para los descriptores de despliegue enEJB.

Se incluyen las herramientas de desarrollo EJB siguientes:

• Herramientas para importar / exportar, para la creación y la generaciónde código, y para editar, así como soporte para descriptores de des-pliegue estándar y para extensiones y enlaces específicos de WebSphereApplication Server.

188 CAPÍTULO 6. WEBSPHERE

• Herramientas de correlación entre EJB y RDB, que proporcionan el mo-delo, el entorno de tiempo de ejecución y la interfaz para editar la co-rrelación entre los beans EJB y las tablas de bases de datos relacionalescon las posibilidades descendente y ascendente. Los correlacionadoresdan soporte a las asociaciones, a la herencia, y a los conversores y com-positores como ayudantes en las correlaciones de columnas.

• Un motor de consulta que da soporte al código desplegado, a base degenerar series SQL en clases persistentes.

• Herramientas que proporcionan capacidad para crear, editar y validararchivos EAR.

• Editores para los descriptores de despliegue.

• Visión de esquema RDB gráfico y herramientas de edición.

• Las herramientas de despliegue para los beans de empresa proporcionanun entorno de línea de mandatos de forma que el usuario puede ejecutarprocesos de construcción durante la noche y generar automáticamenteel código de despliegue en modalidad de proceso por lotes.

6.5.5 Herramientas XML y XSL

El completo juego de herramientas XML incluye componentes para generarDTD, esquemas XML y archivos XML, XSD y XSL. También soporta la in-tegración de datos relacionales y XML.

6.5.6 Herramientas de Base de Datos Relacional

WebSphere Studio proporciona herramientas de base de datos relacional nece-sarias para trabajar con bases de datos relacionales en el desarrollo de aplica-ciones.

Las herramientas de base de datos relacional incluyen vistas, asistentes,editores y otras características que facilitan el desarrollo y la prueba de loselementos de base de datos de la aplicación.

A menos que se indique explícitamente, la característica de las herramien-tas de base de datos relacional da soporte a todos los distribuidores de basesde datos.

6.5. HERRAMIENTAS DE WSAD 189

Se puede gestionar las definiciones y conexiones de base de datos que senecesite para el desarrollo de las aplicaciones. Se puede conectar con basesde datos e importar definiciones de base de datos, o definir bases de datos,esquemas, tablas y vistas nuevas.

Conectarse con o realizar importaciones desde varios tipos de bases dedatos, como por ejemplo DB2(R), Oracle, SQL Server, Sybase, Cloudscape eInformix.

El constructor de consultas SQL proporciona una interfaz visual para creary ejecutar sentencias SQL. Se puede crear una sola sentencia o añadir expre-siones y agrupamientos complejos.

Se puede crear una consulta simple utilizando el asistente de sentenciasSQL o bien utilizar el constructor de consultas SQL que da soporte a unaamplia variedad de sentencias.

También hay un editor de SQL con resaltado y ayuda de contenido y quepermite editar y crear manualmente archivos .sql.

El componente constructor de procedimientos almacenados y UDF de DB2proporciona asistentes y herramientas para crear y trabajar con procedimien-tos almacenados y funciones definidas por usuario (UDF) para utilizarlos conDB2 Universal Database.

Cuando se crea una aplicación que acceda a datos DB2, se podrá mejorarel rendimiento de la misma incorporando procedimientos almacenados y UDFregistrados con el servidor de bases de datos. Se puede reducir el tráfico de lared y hacer un mejor uso de la lógica de gestión compartida.

6.5.7 Herramientas de Desarrollo de Aplicaciones Struts

Struts es un conjunto de clases Java y bibliotecas de códigos JSP que propor-cionan una infraestructura conceptual para el desarrollo de aplicaciones Web.La tecnología Struts es de código fuente abierto y se ha desarrollado comoparte del proyecto Jakarta de Apache Software Foundation.

Un diagrama web es un archivo que ayuda a visualizar el flujo de unaaplicación web basada en Struts.

Debido a los niveles de elementos indirectos que implica una aplicaciónStruts, la posibilidad de tener una imagen gráfica del flujo de la aplicación

190 CAPÍTULO 6. WEBSPHERE

puede ayudar a entenderla mejor.

El editor de diagramas web (Web Diagram Editor - WDE):

• Se utiliza para crear diagramas de los flujos de página dirigidos porlógica.

• Tiene soporte portlet para la creación de portlets de Struts.

Se puede utilizar el editor de diagramas para mostrar una aplicación Strutso parte de ella.

Por ejemplo, se tiene una aplicación Struts en tres partes. Una partegestiona el proceso lógico, otra se encarga de las consultas del producto y latercera maneja las actualizaciones del mismo. En este caso, la aplicación sepuede organizar en tres módulos con tres diagramas web o en un módulo conun diagrama web.

También se puede interactuar directamente con los nodos que se represen-tan dentro de un diagrama.

Por ejemplo, si un nodo está sin realizar, efectuando una doble pulsacióncon el ratón sobre el nodo se invoca un asistente que ayuda a crear el nodo.Si un nodo ya está realizado, la doble pulsación invoca el editor que tengaasociado.

6.6 La Experiencia Pervasiva de IBM

La experiencia pervasiva cubre múltiples ubicaciones para acceder a aplicacio-nes y datos a través de diferentes tipos de redes de área local, área personal,y redes de área amplia. Estas pueden ser cableada, inalámbrica o una combi-nación.

El punto final puede ser cualquiera de los pilares pervasivos (un vehículo,una casa, una máquina o una combinación).

Las aplicaciones pueden ser comunes a todas las ubicaciones, o específicospara un subconjunto (ver fig. 6.6 de la pág. 191).

Las ubicaciones individuales tienen necesidades únicas, por lo tanto, la

6.6. LA EXPERIENCIA PERVASIVA DE IBM 191

Figura 6.6: Experiencia pervasiva de IBM

192 CAPÍTULO 6. WEBSPHERE

Figura 6.7: Computación ubicua

computación ubicua también debe acomodarse a las distintas “ubicaciones”móviles que interactúan entre sí.

En la experiencia pervasiva, los usuarios tienen la necesidad de accedera sus aplicaciones desde diversos lugares y las mismas aplicaciones necesitanestar disponibles a través de diversas redes y para cualquier dispositivo (verfig. 6.7 de la pág. 192).

El objetivo es el acceso a datos y aplicaciones en cualquier momento y encualquier lugar desde cualquier dispositivo.

Esto es lo que significa pervasivo: acceso, interacción, integración.

La experiencia pervasiva se extiende a la plataforma WebSphere para en-tregar datos y voz a todos los dispositivos ubicuos (ver fig. 6.8 de la pág.

6.6. LA EXPERIENCIA PERVASIVA DE IBM 193

Figura 6.8: Experiencia ubicua extendida a la plataforma WebSphere

194 CAPÍTULO 6. WEBSPHERE

193).

6.7 Modelo de Programación de WebSphere paraDispositivos Pervasivos

El modelo de programación de WebSphere para dispositivos pervasivos estádiseñado para mover el actual modelo de programación de WebSphere a lomás bajo de la cadena, desde que los dispositivos acceden al navegador.

Proporciona un modelo estándar para los dispositivos de programaciónque sea compatible con el modelo que se está utilizando en el desarrollo J2EE,extendiendo el modelo J2EE para hacerlo más utilizable en el ambiente dedispositivos [22].

6.8 Alcance

El modelo J2EE está diseñado para soportar en general algún tipo de lenguajepara la conexión a navegadores. Se crean servlets o Java Server Pages y, acontinuación son entregados a un navegador para su interpretación.

El dispositivo de salida es siempre un navegador o un agente similar deprestación.

Este agente está siempre conectado a una red con el fin de alcanzar elservidor. Si bien se trata de un excelente modelo de programación, se excluyenmuchos otros métodos de conexión y de salida.

El portal de WebSphere extiende este modelo para soportar a otros forma-tos de salida a través de transcodificación. Por ejemplo, un portlet que produceVoice XML va a interactuar con un teléfono, en lugar de un navegador, perola lógica básica de la aplicación de negocio seguirá siendo la misma.

Naturalmente, aún mejorando el modelo anterior, todavía existen espaciosvacíos.

El modelo de programación de WebSphere para dispositivos pervasivosextiende este modelo aún más a los dispositivos que no son necesariamentenavegadores, y no pueden estar conectados todo el tiempo.

6.8. ALCANCE 195

Figura 6.9: Alcance

196 CAPÍTULO 6. WEBSPHERE

Figura 6.10: Arquitectura PVC

Por ejemplo, WebSphere Everyplace Access proporciona navegación fuerade línea (puede procesar formularios HTML mientras está desconectado, yaque esas operaciones han subido cuando la red estaba disponible).

6.9 Alcance de la Arquitectura PvC

La arquitectura de la computación pervasiva (PVC ) es bastante simple: undispositivo de algún tipo se conecta por alguna red a un servidor que puedetener acceso a datos.

Todas las piezas aquí se basan en estándares (XML, SyncML, JDBC, y asísucesivamente), la industria de tecnologías aceptó que no hay estándares toda-vía por lo que las aplicaciones interoperarán con otras aplicaciones soportandoesas normas (ver fig. 6.10 de la pág. 196).

6.10. MODELO DE PROGRAMACIÓN EXTREMO A EXTREMO 197

Figura 6.11: Modelo de programación extremo a extremo

Dentro de este ámbito, se podrá apoyar el modelo basado en navegador deJ2EE, dispositivos con navegadores, navegación fuera de línea, VXML entre-gado a un teléfono móvil del usuario, y muchas otras opciones.

No se especifica cómo los datos son entregados o cómo son interpretadospor el cliente final. El modelo sólo establece que los datos se mueven de unservidor a través de una red (o redes) a un dispositivo.

6.10 Modelo de Programación Extremo a Extremo

El modelo de programación se basa en la metodología estándar modelo-vista-controlador. Generalmente en J2EE, un servlet actúa como controlador, JavaServer Pages (JSP) proporciona la vista (o la aplicación de salida) y los datosse acceden a través de Enterprise Java Beans (EJBs), que son los modelos delógica y datos de negocio en la parte final (ver fig. 6.11 de la pág. 197).

198 CAPÍTULO 6. WEBSPHERE

Esta arquitectura está siendo empujada a través de la red a nuevos dispo-sitivos.

La desconexión de operaciones permitirá a la lógica de negocio funcionarsi el dispositivo está actualmente conectado a la red o no.

Por ejemplo, las transacciones podrán ser almacenadas en un DB2 R©

Everyplace (DB2e), base de datos a nivel local en un dispositivo, si la redno está disponible, y fluía a la parte final una vez que los sistemas de conecti-vidad de la red fue restaurada.

Con esta funcionalidad, los dispositivos comienzan a actuar como puntosfinales en el modelo de programación.

6.11 WebSphere y las Aplicaciones para Dispositi-vos

Todas estas aplicaciones son construidas por las herramientas de WebSphereStudio. Todas las solicitudes están basadas en estándares abiertos para permi-tir la conectividad y la interoperabilidad con otras aplicaciones, plataformasy dispositivos.

Desde un punto de vista del desarrollo, es posible considerar la utiliza-ción de WebSphere Studio Device Developer como un plug-in para WebSphereStudio Application Developer.

6.12 La Plataforma de Servicios Pervasivos

La plataforma de servicios pervasivos abarca una serie de diferentes entornosde desarrollo (ver fig. 6.12 de la pág. 199).

Sin embargo, el código debería ser similar a través de los ambientes, ytodos los códigos se llevarían a cabo en alguna de las variantes de Java - J2SE,J2ME, etc.

Los pilares soportan diferentes familias de dispositivos, pero la codificaciónsigue siendo básicamente la misma.

Para teléfonos móviles y PDAs, probablemente todavía se verá la progra-

6.12. LA PLATAFORMA DE SERVICIOS PERVASIVOS 199

Figura 6.12: Paquete de la plataforma de servicios pervasivos.

200 CAPÍTULO 6. WEBSPHERE

Figura 6.13: Modelo de programación de WebSphere.

mación de MIDP, ya que es habitual del modelo de programación.

Para set-top boxes y otros dispositivos, se puede tener SMF (kit de utili-dades de desarrollo que facilita la creación de aplicaciones gestionadas por elservidor implementadas en el Services Management Framework) como marcopara entregar paquetes.

6.13 ¿Cuál es el Modelo de Programación de WebS-phere para la Computación Ubicua?

En este punto se desarrolla cómo el modelo de programación extiende el modeloJ2EE : los navegadores son extendidos más allá de HTML a visual (VXML),o una combinación (navegadores y aplicaciones multimodales).

El cliente podrá ser un ordenador portátil, PDA u otro dispositivo.

6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE 201

La red conecta el cliente a un servidor, pero la conexión de red puede seresporádica (ver fig. 6.13 de la pág. 200).

Con el fin de hacer que esto funcione, se necesitará de inteligencia en eldispositivo. Por ejemplo, WebSphere Everyplace Access tiene un cliente quesincroniza Lotus Notes R© databases, buzones de correo Exchange, y bases dedatos DB2 con un solo clic.

DB2 Everyplace podrá ser utilizado como un área de almacenamiento anivel local, hasta que la red está disponible para fluir las transacciones.

MQ Everyplace podrá ser usado para la cola de mensajes a nivel local hastaque la red está disponible para enviar los mensajes a sus destinos.

SMF contiene un motor de servlets y procesador JSP que permite el pro-cesamiento en el dispositivo, y también proporciona un conjunto de instru-mentos para convertir archivos WAR a paquetes para facilitar la distribucióny el despliegue de un código de J2EE a SMF.

6.14 WebSphere Studio Device Developer IDE

6.14.1 Developer IDE

WebSphere Studio Device Developer es una plataforma para el desarrollo, de-puración y despliegue de aplicaciones para dispositivos pequeños. Es miembrode la familia WebSphere.

El entorno de desarrollo integrado también viene con una copia del WebS-phere Micro Environment (IBM-compatible con J2ME JVM), con licencia pa-ra el desarrollo (ver fig. 6.14 de la pág. 202 ).

6.14.2 WebSphere Studio Device Developer

Esta es la funcionalidad básica de WebSphere Studio Device Developer. WebS-phere Studio Device Developer contiene un entorno de desarrollo integrado porel WebSphere Micro Environment (WME, una potencia de Java en tiempode ejecución que implementa las especificaciones J2ME), el WebSphere Cus-tom Environment (WCE, Java en tiempo de ejecución que no implementa lasespecificaciones de J2ME, por lo que es más personalizable), funcionalidad

202 CAPÍTULO 6. WEBSPHERE

Figura 6.14: WebSphere Studio Device Developer IDE

6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE 203

Figura 6.15: WebSphere Studio Device Developer

adicional a través de plug-ins, y el gestor de actualizaciones para permitir laactualización del código a través de la Web (ver fig. 6.15 de la pág. 203).

El WebSphere Custom Environment no se entrega con WebSphere StudioDevice Developer, pero está disponible en la Web a través del Administradorde Actualizaciones.

El WebSphere Studio Device Developer puede también ser instalado comoplug-in en el Site Developer o en el Application Developer, si alguno es detec-tado en la máquina. En anteriores emisiones, había una opción para instalarlocomo plug-in o stand-alone.

Si se desea utilizar WebSphere Studio Application Developer y WebSphereStudio Device Developer por separado en la misma máquina, se deberá instalarel WebSphere Studio Device Developer primero, luego el WebSphere StudioApplication Developer.

Si se necesita más funcionalidad, se podrá añadir plug-ins para WebSphe-re Studio Device Developer (o cualquier miembro de la familia WebSphereStudio).

Las actualizaciones están disponibles a través del gestor de actualizaciones,

204 CAPÍTULO 6. WEBSPHERE

Figura 6.16: Gestor de Actualizaciones.

en la perspectiva Instalación / Actualización (ver fig. 6.16 de la pág. 204).

Se podrá descargar versiones actualizadas de los módulos existentes, asícomo añadir nuevas funcionalidades al WebSphere Studio Device Developer.

6.14.3 Trabajar con el IDE

WebSphere Studio Device Developer utiliza un concepto de espacio de trabajo,un directorio que contiene el código de trabajo (un subdirectorio por cadaproyecto), y un subdirectorio de metadatos que contienen información sobreel código.

WebSphere Studio Device Developer también utiliza el concepto de pro-yecto, una colección de paquetes que componen la totalidad de una aplicación

6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE 205

Java (u otra). Por ejemplo, se podrá crear un Java, J2ME, MIDlet, C u otroproyecto.

Se deberá pensar un proyecto como un super-paquete. Cuando se empiezaun desarrollo desde cero, se crea un proyecto. por lo cual se deberá escoger eltipo apropiado de proyecto.

Varios espacios de trabajo permiten mantener múltiples proyectos por se-parado, todos los proyectos en el espacio de trabajo son reconstruidos cuandose hace un “Reconstruir todos”. En versiones anteriores, esta fue la principalforma para evitar la sobrecarga de la reconstrucción de proyectos. Sin embar-go, en siguientes emisiones, se puede cerrar un proyecto, desde la perspectivade recursos entonces el proyecto no será reconstruido.

Si no se encuentra un proyecto, o se está intentando importar un proyectoy muestra que ya existe, se debe ir a la perspectiva Recursos y asegurarse deque no existe, o si está cerrado.

La pantalla de bienvenida actúa como un archivo readme para la versiónde la herramienta, y se muestra automáticamente la primera vez que invocael producto. También se encuentra en el menú Ayuda.

La herramienta se divide en Perspectivas, barras de herramientas, vista, yeditores. La pantalla entera es a veces llamado el Workbench.

Una perspectiva es una colección predefinida de barras de herramientas,vistas y editores [26].

Barra de Herramientas

La barra de herramientas superior (bajo la barra de menús) contiene todoslos wizards disponibles de WebSphere Studio Device Developer, que cambianpara que coincida con la perspectiva actual.

Los Wizards están disponibles para crear aplicaciones, definir dispositivos,probar código y crear estructuras Java (clases, interfaces, etc) dentro de susprogramas (ver fig. 6.17 de la pág. 206).

La barra izquierda de herramientas contiene todas las perspectivas y / ovistas abiertas.

Cuando se abre una perspectiva, su ícono se añadirá a la parte superior

206 CAPÍTULO 6. WEBSPHERE

Figura 6.17: Barra de herramientas.

derecha de la barra de herramientas.

Perspectiva, Editores y Vistas.

Una perspectiva es un grupo de vistas y editores en la ventana del espacio detrabajo diseñadas para centrarse en una determinada tarea.

En una ventana del espacio de trabajo pueden existir una o varias pers-pectivas. Cada perspectiva contiene una o varias vistas y editores.

Dentro de una ventana, cada perspectiva puede tener un conjunto distintode vistas, pero todas las perspectivas comparten el mismo conjunto de editoresTambién se puede personalizar perspectivas y guardarlas.

Una vista es un componente visual del espacio de trabajo.

Se suele utilizar para navegar en una jerarquía de información (como losrecursos del espacio de trabajo), abrir un editor o visualizar propiedades deleditor activo.

Las modificaciones efectuadas en una vista se guardan inmediatamente.

6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE 207

Sólo puede existir una instancia de un tipo de vista concreto en una ventanadel espacio de trabajo.

Un editor se utiliza para modificar los archivos, y es específico para el tipode archivo que está siendo editado.

Con WebSphere Studio Device Developer, se puede especificar editores ex-ternos para determinados tipos de archivo.

Sólo un editor puede estar activo en cualquier momento, varios editores sepodrán abrir, pero todos estarán en la misma ventana, disponible a través depestañas.

Si se cambia algo en un editor, por lo general se guardará antes de quese utilice (antes de ejecutar el código, por ejemplo). Se podrá configurar unaopción en preferencias para guardar automáticamente un archivo antes de quesea utilizado.

Espacio de Trabajo (Workspaces)

Todo el código se almacena en archivos separados en un “espacio de traba-jo”, un directorio de repositorios basados en valores predeterminados para elespacio de trabajo dentro del directorio de instalación de WebSphere StudioDevice Developer.

Se trata de una importante partida de la familia VisualAge R© de herra-mientas que almacenan código en un repositorio, en lugar de archivos sepa-rados. Esto significa que podrá editar y procesar todos los archivos fuera deWebSphere Studio Device Developer.

Se podrá cambiar el espacio de trabajo, para que tome efecto se deberáreiniciar WebSphere Studio Device Developer para cambiar al nuevo espaciode trabajo.

Un espacio de trabajo contiene un directorio “. metadata ” que WebSphereStudio Device Developer utiliza para mantener la información del proyecto.

208 CAPÍTULO 6. WEBSPHERE

6.14.4 Configuración J2ME

Java 2 Micro Edition (J2ME) es un conjunto estándar de configuraciones yperfiles para el desarrollo de Programas Java en dispositivos embebidos.

Si una aplicación puede aprobar una serie de pruebas, es certificada “JavaPowered”, lo que significa que cumple con las normas de la especificaciónJ2ME.

WebSphere Micro Edition ha sido certificado “Java Powered”.

WebSphere Studio Device Developer por defecto incluye soporte para J2MEen PalmOS y PocketPC. Otras configuraciones y el soporte de otras platafor-mas están disponibles a través del administrador de actualizaciones.

WebSphere Studio Device Developer soporta la descarga de código a unPDA para su ejecución y depuración.

6.14.5 Construcción y Ejecución en Dispositivos

WebSphere Studio Device Developer soporta el despliegue de código para variosdispositivos.

Se debe definir los dispositivos y, a continuación, crear proyectos, se podráconfigurar la ejecución de un proyecto en un dispositivo específico.

Dentro de cada proyecto, se es capaz de construir código para una plata-forma concreta, o múltiples plataformas. Una vez que el código se construye,se podrá ejecutar en un dispositivo específico (ya sea real o un emulador).

WebSphere Studio Device Developer utiliza un emulador MIDP y tambiénse podrá ejecutar código en un JVM separado.

Soporta directamente los dispositivos Palm y el emulador de Palm y Poc-ketPC. Otros dispositivos pueden ser soportados a través de plug-ins desde elfabricante del aparato.

Construcción

Al crear una construcción, se deberá especificar una plataforma y un nombrepara la construcción.

6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE 209

Figura 6.18: Wizart par configurar construcciones.

210 CAPÍTULO 6. WEBSPHERE

Una posible convención de nombres es el nombre del proyecto, así como elnombre del dispositivo de destino (ver fig.6.18 de la pág. 209).

Las plataformas básicas son PalmOS, PocketPC, WINx86, Linux x86, yJAR genéricos. Otros dispositivos se podrán descargar desde el gestor deactualizaciones

Para pruebas sencillas que no requieren un emulador, se podrá seleccio-nar “Ejecutar como → Java Application”. La aplicación se compila y luegoes ejecutada en una JVM. Se verá la salida en la ventana de consola de laperspectiva depuración.

Sin embargo, cada vez que se desee ejecutar en un dispositivo físico oejecutar una aplicación MIDP (que requiere un emulador), se debe crear unconstructor aparte.

Un proyecto puede tener múltiples constructores, en función de sus nece-sidades. Cada constructor debe tener un nombre único dentro del proyecto.

Dispositivos

Cada dispositivo requiere una configuración separada. Todos los dispositi-vos se comparten, por lo que cualquier proyecto puede ser desplegados en undispositivo específico.

WebSphere Studio Device Developer soporta dispositivos Palm (a través deHotSync), emulador Palm, y dispositivos PocketPC (a través de ActiveSync).

WebSphere Studio Device Developer también ejecutará proyectos a nivel lo-cal JVM, y aplicaciones MIDP pueden ser desplegados en un emulador MIDP.

Otros proveedores pueden incluir emuladores soportados a través de plug-ins Eclipse. Estos deben estar disponibles a través del gestor de actualizacio-nes, o directamente desde el proveedor.

Creación de Dispositivos

Hay una función soportada para Palm y dispositivos PocketPC. Por defecto,estas son las únicas opciones para la creación de dispositivo.

Si se añaden plug-ins para otros dispositivos o emuladores, esos nuevos

6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE 211

Figura 6.19: Creación de dispositivos.

dispositivos deberían aparecer como opciones en esta pantalla (ver fig. 6.19de la pág. 211).

Ejecutar una Aplicación

Cuando se inicia un proyecto, se podrá configurar que WebSphere Studio De-vice Developer automáticamente cambie a la perspectiva de depuración enpreferencias.

Si el dispositivo no es compatible con WebSphere Studio Device Develo-per, se tendrá que exportar el código y luego transferirlo al dispositivo paraejecutarlo.

Al configurar una ejecución, en primer lugar hay que elegir el tipo deaplicación que se está construyendo. A continuación, se debe dar un nombre,y seleccionar el proyecto.

Dependiendo del tipo de aplicación, también seleccionar qué constructorusar, por último, a qué dispositivo está dirigido.

Si no se ha definido todos los dispositivos, se podrá pulsar el botón Confi-gurar junto al dispositivos del menú desplegable para definir uno.

Se debe tener un dispositivo definido con el fin de crear una ejecución (verfig. 6.20 de la pág. 213).

6.14. WEBSPHERE STUDIO DEVICE DEVELOPER IDE 213

Figura 6.20: Ejecución de una aplicación.

214 CAPÍTULO 6. WEBSPHERE

Capítulo 7

Aplicación

7.1 Descripción General

El presente trabajo se basa en el estudio de software de base que permite eldesarrollo de aplicaciones Móviles y aplicaciones Web.

Consiste en el desarrollo de dos aplicaciones:

1. Una Aplicación Móvil con acceso a base de datos multiplataforma quepermita la consulta de notas correspondientes a parciales, laboratorios ymonografías de diferentes asignaturas por parte de los alumnos inscriptosen las mismas.

2. Una Aplicación Web para gestión y administración de usuarios, alumnosy notas.

El Objetivo es realizar la aplicación Móvil en J2ME, con la cual el alumnopueda consultar sus notas desde cualquier lugar sin necesidad de dirigirse alestablecimiento educativo, como así también el desarrollo de la aplicación deadministración en Java, mediante la cual los usuarios autorizados (por ej.profesores, adscriptos, etc.) puedan agregar, editar y eliminar tanto usuarioscomo alumnos.

215

216 CAPÍTULO 7. APLICACIÓN

7.2 Análisis del Sistema

7.2.1 Modelo de Datos

El Modelo de Datos del sistema no es complejo ya que no se requiere muchasentidades para el propósito del mismo (ver fig. 7.1 de la pág. 217).

Entidades:

• Alumnos: Contiene información referida al alumno inscrito en las asig-naturas.

• Asignatura: Contiene información referida a la asignatura.

• Nota: Contiene información de las notas correspondientes a un alumnosegún la asignatura en la que se encuentra inscripto.

• Usuarios: Contiene información referente a los usuarios que tienen ac-ceso al sistema de Administración.

• Consultas: Entidad para mantener información sobre la cantidad deconsultas realizadas en el sistema por parte de los alumnos.

• Excel : Entidad utilizada como tabla intermedia en el proceso de cargadel Excel que contiene la información de los alumnos y sus notas.

7.2.2 Casos de Uso

En el Diagrama de Casos de Uso se puede observar los actores y casos de usosdel sistema, incluyendo sus interacciones, tanto de la Aplicación Móvil (verfig. 7.2 de la pág. 218), como de la Aplicación Web (ver fig. 7.3 de la pág.219).

7.3 Aplicación Móvil

La Aplicación Móvil cuenta con un menú inicial mediante el cual se puedeingresar al sistema, consultar la ayuda, configurar la url a la cual se conectaráy salir de la aplicación (ver fig. 7.5 de la pág. 221).

7.3. APLICACIÓN MÓVIL 217

Figura 7.1: Modelo de datos.

218 CAPÍTULO 7. APLICACIÓN

Figura 7.2: Diagrama de caso de uso de la aplicación móvil.

7.3. APLICACIÓN MÓVIL 219

Figura 7.3: Diagrama de caso de uso de la aplicación Web.

220 CAPÍTULO 7. APLICACIÓN

Figura 7.4: Pantalla inicial.

7.3. APLICACIÓN MÓVIL 221

Figura 7.5: Menú principal.

222 CAPÍTULO 7. APLICACIÓN

En la opción entrar, se puede:

1. Registrar en el sistema.

2. Loguear en el sistema.

La opción registrar permite al alumno que haya sido previamente dado dealta en el sistema de Administración en alguna de las asignaturas, obteneruna clave para poder loguearse, la cual obtiene ingresando su DNI, LU y unpassword elegido por el mismo y si el DNI y LU ingresados coinciden con losdatos registrados en la base de datos, se asigna dicho password proveído a esealumno.

En caso de que el alumno haya olvidado su clave, puede volver a realizareste procedimiento las veces que así lo requiera (ver fig. 7.6 de la pág. 223).

La opción de loguearse permite ingresar al sistema propiamente dicho,mediante el ingreso del DNI y el password obtenido en el proceso de registro(ver fig. 7.7 de la pág. 224).

Si el alumno ingresa mal los datos, el sistema muestra un aviso de error(ver fig. 7.8 de la pág. 225), en caso contrario permite acceder al menú deasignaturas (ver fig. 7.9 de la pág. 226).

En el menú de asignaturas se pueden observar las asignaturas para lascuales los alumnos pueden realizar las consultas de sus respectivas notas, eneste caso se tiene:

1. SO (Sistemas Operativos).

2. DAD (Diseño y Administración de Datos).

3. TP (Teleproceso y Sistemas Distribuídos).

Una vez seleccionada cualquiera de las asignaturas se accede al menú delas diferentes opciones, ya sea parciales, laboratorios o monografía, teniendodos parciales con sus respectivos recuperatorios y extraordinario para cadaasignatura, cuatro laboratorios para SO, y seis para DAD y TP (ver fig. 7.10de la pág. 227).

Teniendo en cuenta que las asignaturas corresponden a diferentes años ycuatrimestres de la carrera de Licenciatura en Sistemas de Información, un

7.3. APLICACIÓN MÓVIL 223

Figura 7.6: Registro en el sistema.

224 CAPÍTULO 7. APLICACIÓN

Figura 7.7: Login.

7.3. APLICACIÓN MÓVIL 225

Figura 7.8: Mensaje de error en el logueo.

226 CAPÍTULO 7. APLICACIÓN

Figura 7.9: Menú de asignaturas.

7.3. APLICACIÓN MÓVIL 227

Figura 7.10: Menú de opciones para la consulta de notas.

228 CAPÍTULO 7. APLICACIÓN

alumno no puede estar dado de alta en más de una asignatura, con lo cual siun alumno ingresa a una asignatura en la que no se encuentra registrado elsistema muestra un error (ver fig. 7.11 de la pág. 229), en caso contrario, si elalumno selecciona la asignatura en la cual se encuentra inscripto (cursando),el sistema muestra el resultado de su consulta (ver fig. 7.12 de la pág. 230).

7.4 Aplicación Web

La Aplicación Web, como se mencionó anteriormente, permite la gestión de losalumnos en condiciones de cursar las asignaturas, como así también gestionarlos usuarios que tienen acceso a la misma.

Una vez logueado en el sistema, se tiene un menú con diferentes opciones:

• SO: Muestra el listado de alumnos inscriptos en Sistemas Operativos(ver fig. 7.14 de la pág. 232).

• DAD : Muestra el listado de alumnos inscriptos en Diseño y Administra-ción de Datos.

• TP : Muestra el listado de alumnos inscriptos en Teleproceso y SistemasDistribuídos.

• Estadísticas: Muestra el total de alumnos que realizaron la registracióndesde el dispositivo móvil, y total de consultas realizadas desde el móvilen cada asignatura.

• Usuarios: Muestra los usuarios autorizados en el sistema web.

• Ayuda: Despliega una breve ayuda del sistema para resolver dudas.

En el sistema se puede agregar, editar, consultar y eliminar tanto alumnoscomo usuarios (ver fig. 7.15 de la pág. 233, fig. 7.16 de la pág. 234 y fig. 7.17de la pág. 235).

También el sistema permite leer archivos de Excel, para realizar la cargamasiva de alumnos en cada una de las asignaturas. Se debe seleccionar elarchivo a importar, ver fig. 7.18 de la pág. 236, luego se muestra una páginacon los datos a importar, ver fig. 7.19 de la pág. 237, y una vez confirmado el

7.4. APLICACIÓN WEB 229

Figura 7.11: Error en la elección de la asignatura.

230 CAPÍTULO 7. APLICACIÓN

Figura 7.12: Resultado de la consulta.

7.4. APLICACIÓN WEB 231

Figura 7.13: Pantalla de bienvenida

232 CAPÍTULO 7. APLICACIÓN

Figura 7.14: Listado de alumnos de SO.

7.4. APLICACIÓN WEB 233

Figura 7.15: Alta de alumnos.

234 CAPÍTULO 7. APLICACIÓN

Figura 7.16: Edición de alumnos.

7.4. APLICACIÓN WEB 235

Figura 7.17: Consulta de alumnos.

236 CAPÍTULO 7. APLICACIÓN

Figura 7.18: Selección del archivo Excel.

7.4. APLICACIÓN WEB 237

Figura 7.19: Lectura del archivo Excel.

238 CAPÍTULO 7. APLICACIÓN

Figura 7.20: Confirmación de la operación.

Figura 7.21: Estadísticas.

proceso se muestra una página de confirmación del mismo (ver fig. 7.20 de lapág. 238).

En la opción Estadísticas del menú, se puede observar la cantidad de alum-nos registrados (alumnos que ingresaron al sistema móvil y se registraron desdeallí), y la cantidad de consultas realizadas en las respectivas asignaturas desdeel sistema móvil.

240 CAPÍTULO 7. APLICACIÓN

Capítulo 8

Conclusiones

Conclusiones Acerca de las Tecnologías y Software Utilizados

Se ha podido comprobar las grandes ventajas de la utilización de tecnolo-gías y software, tanto de base de datos como de desarrollo de aplicaciones.

Los productos de WebSphere han demostrado ser herramientas muy poten-tes al momento de desarrollar tanto aplicaciones móviles como web, contandocon asistentes, corrección de errores y otras facilidades que hacen más rápidoy eficiente el trabajo.

Con respecto al motor de bases de datos DB2, se debe destacar la escala-bilidad, Integridad y seguridad; interfaces sencillas y entendibles, completas,intuitivas y con diversos asistentes, permitiendo de esa manera una mejorcomprensión en la utilización de la herramienta.

Asimismo se pudo apreciar las facilidades del Scientific WorkPlace paraescribir libros, por la calidad del producto obtenido, la automatización en elmanejo de índices, la gestión dinámica de espacios, listas de figuras, de tablas,referencias dinámicas a objetos, bibliografía, etc.

Se destaca la gran potencialidad de este conjunto de herramientas para eldesarrollo de aplicaciones de gran porte y alta complejidad, utilizables en unaamplia gama de sistemas operativos y con diversos motores de bases de datos.

Líneas Futuras de Acción

Se considera que las principales líneas futuras de acción derivadas del pre-

241

sente trabajo serían las siguientes:

• Ampliar el modelo de datos actual para soportar una estructura de múl-tiples Facultades y carreras.

• Adaptar la aplicación para poder soportar este nuevo modelo de datos.

• Mejorar el alcance de la protección de datos almacenados mediante laincorporación de métodos de encriptación de datos.

Bibliografía

[1] L. Joyanes Aguilar. Cibersociedad. Mac Graw-Hill, 1997.

[2] J. M. Lombardo Enríquez; L. Joyanes Aguilar; S. Ríos Aguilar; J. M. SaízÁlvares; F. Mata Mata. Gestión e Informática "Orientada al Conoci-miento"en los Modelos de Comercio Electrónico en JIS2002 IV JornadasInformática y Sociedad. La Salle, Barcelona-España, 2002.

[3] P. Maestre Yenes. Diccionario de Gestión del Conocimiento e Informáti-ca. Fundación para la Difusión de las Ingenierías, Informática y Teleco-municación. Madrid-España, 2000.

[4] L. Joyanes Aguilar. La Carrera Mundial por el Conocimiento. Una VisiónDesde la Nueva Economía. Universidad Pontificia de Salamanca, Madrid-España, 2000.

[5] E. Castillo; A. Cobo; P. Gómez; C. Solares. JAVA - Un Lenguaje deProgramación Multiplataforma para Internet. Paraninfo, España, 1997.

[6] A. S. Tanenbaum. Redes de Computadoras. Prentice Hall Hispanoameri-cana S. A., México, 1997.

[7] A. S. Tanenbaum. Sistemas Operativos Distribuidos. Prentice Hall His-panoamericana, S.A., México, 1996.

[8] E. Castillo. Curso de LaTex. Universidad de Cantabria, Cantasbria-España, 1998.

[9] M. C. Muñoz; J. F. Guerra; B. Flores Muro; J. Meza Jaque; F. SanchisMarco. Valoración de la Gestión del Conocimiento a Través de los Indi-cadores del Capital Intelectual en I Congreso Internacional Sociedad dela información. McGrawHill, Madrid-España, 2002.

243

244 BIBLIOGRAFÍA

[10] M. A. Porrúa Vigón. Elementos para la creación de una estrategia degobierno electrónico. VIII Congreso Internacional del CLAD sobre laReforma del Estado y de la Administración Pública, Panamá, 2003.

[11] Patricia J. Pascual. e-Government. UNDP-APDIP, 2003.

[12] L. Joyanes Aguilar; I. Zahonero Martínez. Estructura de Datos - Algo-ritmos, Abstracción y Objetos. Mc Graw Hill/Interamericana de España,S.A.U., España, 1998.

[13] L. Joyanes Aguilar. Programación Orientada a Objetos - Segunda Edi-ción. Mc Graw Hill/Interamericana de España, S.A.U., España, 1998.

[14] L. Boszörményi. Why Java is not my Favourite First-course Language.Software - Concepts & Tools, N◦ 19, 141-145, 1998.

[15] J. H. Kingston. Algorithms and Data Structures. Desing, Correctnes,Analysis. Second Edition. Addison-Wesley, 1998.

[16] G. Brassard; P. Bratley. Fundamentos de Algoritmia. Prentice Hall,Madrid-España, 1997.

[17] F. Ferraz M. Schumacher y H. Sjostrand U. Wahli, I. Brown. WebS-phere Studio Application Developer Version 5 Programming Guide.ibm.com/redbooks, 2003.

[18] Sergio G. Rojas; Lucas O. Díaz. Java a Tope: J2ME(Java 2 Micro Edi-tion).

[19] IBM. IBM DB2 Warehouse Manager Guía de Instalación Versión 7. IBMPress, USA, 2001.

[20] IBM Corporation. IBM DB2 Universal Database para Windows GuíaRápida de Iniciación Versión 7. IBM Press, USA, 2000.

[21] IBM Corporation. IBM DB2 Universal Database Suplemento de Instala-ción y Configuración Versión 7. IBM Press, USA, 2000.

[22] Using WebSphere Studio Device Developer to Build Embedded Java Ap-plications. ibm.com/redbooks, Abril 2004.

[23] IBM Corporation. IBM DB2 Universal Database Consulta de Mandatos.IBM Press, USA, 2000.

BIBLIOGRAFÍA 245

[24] IBM Corporation. IBM DB2 Universal Database Consulta de Mensajes.IBM Press, USA, 2000.

[25] IBM Corporation. IBM DB2 Connect Enterprise Edition para OS/02 yWindows Guía Rápida de Iniciación.

[26] WebSphere Studio Device Developer Product Documentation. ibm, 1998-2004.

Índice de Materias

activos, 11intangibles, 23intelectuales, 23

AIX, 136, 149, 152aldea global, 2API, 146API (Application Programming In-

terface), 46aplicación, 215

aplicación móvil, 216aplicación Web, 228Casos de Uso, 216modelo de Datos, 216

aplicación interactiva, 68aplicación Java, 151aplicación

construcción, 208arquitectura PvC, 196arrays, 63asistentes

mejoras en los, 151AWT

concepto, 66interface gráfica de usuario, 67

B/R, 144B2B, 15B2C, 15B2E, 15barra de herramientas, 205base de datos

Segmentación de la, 138

base de datos relacionalarquitectura de, 147

basesde conocimientos, 11

bibliotecasde clases, 38

bifurcaciones, 56if, 56if else, 57

bloque try, catch, finally, 59bucles, 57

do while, 58for, 58while, 57

Business Intelligence, 151, 156business intelligence, 166

C/C++, 55CD-ROM, 150CDC, 96centro de depósito, 150Centro de Desarrollo, 156, 157centro de información, 151cibercultura, 8cibersociedad, 2Clase, 44clase

características, 61clase en Java, 60clase object, 62clases de utilidad, 63

clase Arrays, 63

247

248 ÍNDICE DE MATERIAS

clases string y StringBuffer, 65Double, 66integer, 66

CLDC, 96client/server database, 139cluster, 141cluster of uniprocessors, 141comentarios, 55competitividad, 17conclusiones, 241conectividad

herramientas de, 138conocer, 3conocimiento, 3

ciclo de vida del, 6corporativo, 24definición de, 2era del, 23gestión del, 10la estrategia de convertir los da-

tos en, 24materia prima de las empresas,

7nuevo futuro del, 25portales del, 15sociedad del

la cultura en la, 8Content-Type, 78CORBA, 15CUBE, 166

DAS, 144Data Marts, 138Datajoiner

El producto, 138datamining, 14, 24datawarehouse, 14, 24datawarehousing, 24dato, 3datos espaciales, 154

DavenportThomas H., 4

DB2administrador de datos, 148Introducción a, 135Universal Database, 136, 165

DB2 Connect, 138DB2 Data Links Manager, 155db2 Data Links Manager, 156DB2 DataJoiner, 152DB2 Optimizer, 154DB2 Spatial Extender, 154DB2 UDB Versión 8.1, 156DB2 Warehouse Manager, 152, 156db2ic, 151DBA, 144DDL y DML

sentencias de, 153Denning

Stephen, 4destroy, 81desviaciones

Detección de, 138dispositivos, 210

creación, 210doGet, 78doGet (), 81doPost (), 81Double, 66

métodos de la clase, 66DRDA, 145, 152Drucker

Peter, 23DSS, 14

e-businessWeb enabled para, 136

e-Government, 29, 30estrategias, 32modalidades, 31

ÍNDICE DE MATERIAS 249

e-procurement, 15EAI, 15Eclipse

Arquitectura de la plataforma,173

economíaglobal, 22

EJB, 187ejecutar una aplicación, 212ejemplo de

arrays, 64bifurcación if, 56bifurcación if else, 57bucle for, 58bucle while, 57clase, 44comentario, 55construcción de nombres de ar-

chivos en Java, 72do while, 58interface, 45línea compuesta por tres sen-

tencias, 55método, 62matriz, 64operadores incrementales y re-

lacionales, 52programa no portable, 69sentencia return, 59

encapsulación, 60era digital, 7ERP, 15errores de programación

carga de drivers JDBC, 74entrada/salida por archivo, 76fuentes de caracteres, 76scheduling de los hilos de eje-

cución, 69terminación de líneas, 75

uso de características de porta-bilidad, 71

uso de directorios definidos, 71escalabilidad, 148Essbase, 154estructuras de programación, 54evento, 67

sources, 67eventos

listeners, 67Exchange, 14, 24experiencia pervasiva, 190expresión, 55

Familia de DB2 UDB, 147Fen Java, 167front-end

Administrador de utilidades, 145

GC, 11Gestión de Datos, 156gestión del conocimiento

conclusiones y tendencias, 14factores, 16necesidad de la, 16objetivos de la, 17, 20programas de la, 18situación actual en la, 18tecnologías de la, 12

globalización, 22de la economía y del conocimien-

to, 22GPRS, 15granularidad

grados de, 136grouping sets, 166Groupware, 14groupware, 24GUI Browser, 144

herencia, 45, 46, 61

250 ÍNDICE DE MATERIAS

HP-UX, 136, 149, 152HTML y XML

formatos, 154HttpServletRequest, 78HttpServletResponse, 78

IBMData Management de, 136

IDE, 204IMS, 138información, 3informar, 3Informix, 138inialización de arrays, 64INIT, 79, 81instalación

área de ejecución de, 150instanciación e inicialización, 81integer, 66

métodos de la clase, 66interface, 45Internet, 25Intranets, 137introducción, 1IP, 15ISO y OGS

estándares, 154

J2EE, 93J2ME, 91, 94

clase Alert, 112clase Canvas, 114clase Display, 112clase Displayable, 112clase Form, 113clase Graphics, 116clase List, 113clase TextBox, 113comunicaciones, 121

clase Connector, 123

comunicaciones HTTP, 126Generic Connection Framwork,

121Interfaz CommConnection, 132Interfaz Connection, 123Interfaz ContentConnection,

125Interfaz DatagramConnection,

126Interfaz HttpsConnection, 131Interfaz InputConnection, 123Interfaz OutputConnection, 124Interfaz SecureConnection, 133Interfaz ServerSocketConnec-

tion, 133Interfaz SocketConnection, 132Interfaz StreamConnection, 124Interfaz StreamConnectionNo-

tifier, 126Interfaz UDPDatagramCon-

nection, 131peticiones GET, 128peticiones POST, 129

configuración, 208configuración CDC, 101configuración CLDC, 101configuraciones, 100CVM, 99Foundation Profile, 104JVM, 97KVM, 97Mobile Information Device Pro-

file, 105PDA Profile, 105perfiles, 103Personal Profile, 104RMI Profile, 105RMS, 117

clase RecordStore, 120

ÍNDICE DE MATERIAS 251

J2SE, 93Java, 15, 39, 40, 137

applets, 167características, 40conceptos, 38conceptos básicos, 44errores de programación, 69estructura general de un pro-

grama, 43flexibilidad de, 41introducción a, 37Jerarquía de clases en, 46y JDBC, 167

javax.servlet.HttpServlet, 78JDK, 56, 75JRE, 151JSP

compilación batch de, 84modelos de, 82procesadores, 83

knowledge, 3

laptops, 166launchpad, 150listener, 68logs, 146Lotus Notes, 24Lotus Notes 5, 14

métodos, 62de la clase object, 62de objeto, 62

MaestrePedro, 5

MarchandDonald A., 4

memoriaadministrador automático de la,

41Microsoft SQL Server, 138, 153

middleware, 156MIDlets, 106

AMS, 106modelización predictiva, 138modelo de programación de WebS-

phere, 194, 200MPP

massively parallel procesing o,141

multiplataforma, 2, 138Multiprocesador

Sistema Simétrico, 140

navegadores, 24Net Search Extender, 155Net.Data, 168Net.Data, Java y CLI

aplicaciones, 155Nonaka, 4Novak

Joseph, 5NT

Windows, 136NUMA-Q, 152

OLAP, 14, 136Kit de iniciación, 154

OLTP, 136OOP, 43, 60operadores, 50

aritméticos, 50de asignación, 50de concatenación de cadenas de

caracteres, 53incrementales, 51precedencia de, 54racionales, 52unarios, 51

Oracle, 138Oracle Corporation, 12

252 ÍNDICE DE MATERIAS

OS/2, 136OS/390, 147OS/400, 136

package, 45, 46packages, 44particiones lógicas, 143particiones múltiples, 141PDA, 24perfiles de acceso, 145perspectiva, editores y vistas, 206plataforma de servicios pervasivos

de WebSphere, 198polimorfismo, 61procesamiento paralelo

sistemas de, 166prototipos de depósitos, 152PVC

computación pervasiva, 196

QMF para Windows, 152

RDBMS, 136replicación de datos, 166return

do while, 59ROLLUP, 166RS/6000, 142

Sample, 150sentencia, 55serial database, 139server-side, 81servers de IBM

sistema de administración de,147

serviciode demanda, 81

servlet, 77ciclo de vida del, 79codificación de, 78

desarrollo, 78motor del, 81

Set-Cookie, 78shared-nothing configuration, 142single node/non-parallel, 139Smart Guides, 151SMF, 200SMP, 140SMP Cluster, 142SNMP, 146SOAP, 186sociedad

de la información y el conoci-miento, 2

software, 46Solaris, 149Soluciones e-business, 156soporte OLAP, 166Spatial Extender, 156SQL, 147standalone database, 139STAR JOINS, 166stored procedures, 167String, 65

métodos de la clase, 65string, 47StringBuffer, 65Struts, 189Sun

Solaris, 136swing, 69Sybase, 138

Takeuchi, 4TCP/IP, 147Tex Information Extender, 154TI, 22TIC, 2, 8Tivoli, 165TOC, 151

ÍNDICE DE MATERIAS 253

TofflerAlvin, 23

UDDI, 186UDFs, 168UDTs, 168UMTS, 15uniprocessor system, 139

vínculosanálisis de, 138

variableclasificación, 47local, 48miembro de una clase, 47referencia, 47

variablesmiembro, 49tipo primitivo, 47visibilidad y vida de las, 49

Versión 7DB2 Universal Database, 150

visión general rápida, 151VisualAge, 146VSAM, 138

WAP, 15WDE, 190Web, 2

aplicaciones, 85Web Browser, 167Web/IP, 15WebSphere, 172WebSphere Studio Device Develo-

per, 201workflow, 14Workspaces, 207WSAA, 181WSAD, 181

XHTML, 15

XML, 15XML Extender, 156