X CONGRESO INTERNACIONAL DE INGENIERIA DE PROYECTOS VALENCIA, 13-15 Septiembre, 2006 CREACIÓN DE UN CATÁLOGO INDUSTRIAL INTERACTIVO CON JAVA 3D INTEGRADO EN UNA PÁGINA WEB M.A. Vera Vera, J.R. de Andrés Díaz(p), R. Guzmán Sepúlveda Abstract The aim of this Project is to create an Interactive Industrial Catalogue, integrated in a web page and connected to a data base. Besides we will develop the tool to configure that catalogue. The objectives of our web industrial catalogue are: • Integrate catalogue groups with products of different manufacturers • Visualize a tree structure of the contents of the different catalogues • 3D view of the catalogue products or subassemblies and to allow interactivity with zoom, rotation and parts decomposition • Access to every product information instantly • Allow complex subassembly representation • Allow search of products Objectives with the tool • Systematize the industrial catalogue configuration process • Create, edit and delete catalogues • Eliminate catalogue configuration errors Keywords: Java, Industrial Catalogue, Virtual Reality Resumen Este trabajo tiene por objeto la creación de un catálogo industrial interactivo, integrado en una página Web, con conexión a base de datos, y el software o herramienta para la configuración de dicho catálogo. Los objetivos del Catálogo Industrial Web son: • Integrar conjuntos de catálogos con productos de diferentes fabricantes. • Visualizar el contenido de los diferentes catálogos dentro de una estructura arbórea. • Visualizar de forma tridimensional los productos o subconjuntos de los catálogos y permitir la interacción a modo de rotación, zoom y descomposición en piezas. • Acceder a la información vinculada a cada producto de forma instantánea y a través de descargas. • Permitir la representación de conjuntos complejos. • Posibilitar la búsqueda de productos. 1547 Los objetivos que se persiguen con la herramienta son: • Sistematizar el proceso de configuración del Catálogo Industrial. • Crear, editar y eliminar catálogos. • Suprimir los posibles errores en la configuración de catálogos. Palabras clave: Java, Catalogo Industrial, Realidad Virtual 1. Introducción El término Realidad Virtual suele asociarse a casi todo aquello que tiene que ver con imágenes en tres dimensiones generadas por ordenador y con la interacción de los usuarios con este ambiente gráfico. El presente proyecto enfoca la Realidad Virtual a través de Internet, mediante su aplicación a un catálogo online, en el que poder interactuar con productos industriales tridimensionales pertenecientes a una base de datos continuamente actualizada, y evitar así la descarga e instalación de los catálogos. 2. Análisis de soluciones El término Web3D hace referencia a cualquier lenguaje de programación, protocolo, formato de archivo o tecnología que pueda ser usado para la creación y presentación de universos tridimensionales interactivos a través de Internet. Tres de esos lenguajes se incluyen como estándares abiertos: VRML (Virtual Reality Modeling Language), Java3D y X3D (Extensible 3D). Una de las principales diferencias entre VRML/X3D y Java3D, a nivel conceptual, es que Java3D se define como un lenguaje de programación de escenarios 3D a bajo nivel. Es decir, que la creación de objetos y elementos tridimensionales en Java3D requiere no sólo la formación de los elementos 3D, sino también la definición de todos los aspectos relacionados con la visualización y control de las capacidades del escenario. Esto tiene sus ventajas e inconvenientes. Por ejemplo, para la creación del escenario más simple, el código en Java3D es notoriamente superior al necesario en VRML/X3D, pero por otro lado el control de los distintos elementos presentes en el sistema es superior y más natural en Java3D. Esto no quiere decir que no sea posible controlar el mundo virtual en VRML para crear una interacción con el usuario, pero sí que es más complejo. Otro aspecto destacable es la pérdida de velocidad y prestaciones en el caso de Java3D frente a otros visores de VRML/X3D desarrollados en C/C++. Existe también la posibilidad de emplear Java3D como visor de archivos VRML/X3D. Para ello sólo es necesario emplear alguno de los cargadores (loaders) de VRML/X3D desarrollados para Java3D. 2.1. Justificación de la solución El Catálogo Industrial está constituido por una escena gráfica tridimensional y una interfaz gráfica de usuario, continuamente en comunicación durante la ejecución del programa. En el caso de VRML/X3D la escena gráfica se mostraría a través de un Plugin, la interfaz de usuario mediante un Applet y la comunicación entre ambos se llevaría a cabo a través de un API externo. El VRML usa el API EAI (External Authoring Interface) para establecer la comunicación de la escena con código Java externo. No todos los browser soportan el EAI. Además, algunos visores de VRML se basan en la JVM (Java Virtual Machine) de Sun’s Microsystem y otros se apoyan en la versión de Microsoft. Por lo tanto, se dan grandes conflictos de 1548 compatibilidad Browser – Plug-in – JVM, existiendo sólo ciertas combinaciones que permiten el acceso a la escena con código externo java. Esto significa que a cada usuario le exigiríamos instalar un Browser, un Plug-in y una JVM compatibles entre sí, que además probablemente se corresponderían con versiones antiguas. El X3D usa el API SAI (Scene Access Interface) para comunicar la escena gráfica con código Java externo. El único browser X3D que soporta actualmente el SAI es el creado por Web3D Consortium, el browser Xj3D, recientemente desarrollado y con apenas documentación y ejemplos al respecto. A los problemas de comunicación de VRML/X3D con código Java externo hay que sumar que ambos están sujetos a la implementación de sus especificaciones VRML/X3D, imposibilitando determinadas acciones o complicando enormemente la programación conforme nos alejamos de las posibilidades más evidentes que ofrecen dichas especificaciones. La ventaja principal de emplear Java3D es que con la simple incorporación de sus librerías da capacidad de ejecución, independientemente de la plataforma, y libera al usuario final de la necesidad de instalar un plug-in específico para el navegador. El empleo de Java3D permite integrar la interfaz gráfica de usuario y la escena gráfica dentro de un mismo applet. Al formar Java3D parte de las APIs de Java no se plantea ninguna limitación ni incompatibilidad a la hora de comunicar la escena gráfica con cualquier otro API de Java, como es a la que pertenece la interfaz gráfica. Java3D no es un formato de archivo como lo pueden ser X3D/VRML y requiere de cargadores para mostrar geometrías de cierta envergadura. Existen cargadores para una gran cantidad de formatos de archivo. La elección del cargador para este proyecto se ha basado en dos aspectos. Por un lado es deseable conocer en profundidad el formato del archivo a cargar. Por otro lado el archivo debe de estar lo suficientemente implantado y difundido para que cualquier programa de CAD (Computer Aided Design) que se utilice para la creación de la geometría tridimensional sea capaz de exportarlo. En cuanto al primer aspecto, el estudio del presente capítulo ha permitido conocer suficientemente los formatos VRML/X3D. En cuanto al segundo aspecto, el siguiente cronograma de la evolución del web3D da una idea del grado de implantación de los estándares, encontrándose VRML ampliamente extendido desde 1997. Figura 1: Cronograma del Web 3D Es por todo ello por lo que se ha decidido para la realización del proyecto elegir el lenguaje de programación Java junto con el API Java3D y la carga de archivos en formato VRML. 1549 VENTAJAS • • • VRML • • • X3D • • • • • • Java3D • • • INCONVENIENTES Formato de archivo 3D Totalmente extendido La mayor parte de la especificación es válida para una amplia variedad de plataformas Facilidad para crear animaciones Rápido en la descarga para pequeñas aplicaciones • • • Hereda las ventajas de VRML (excepto en su extensión) Modular y extensible Perfilado Unifica las 2 APIs de VRML Especificación dividida en 3 partes desarrollables por separado Codifica en VRML97, XML y binario comprimido • • • • Formato reciente. Poca documentación y ejemplos. Poco extendido Programación compleja para aplicaciones no estándar Necesita Plug-in específico según plataforma Programación sujeta a su especificación Xj3D único browser que soporta el API SAI Implementa cualquier necesidad 3D con código Java Independiente de la plataforma Sin limitación ni incompatibilidades en la comunicación escena 3D interfaz gráfica • • • Programación compleja Menores velocidades de descarga No es un formato de archivo (requiere cargadores) • • • • Única especificación con dependencia de sus partes 2 APIs de programación para mismas funciones Programación compleja para aplicaciones no estándar Necesita Plug-in específico según plataforma Programación sujeta a su especificación Incompatibilidades Browser-Plug-in-JVM con el API EAI Tabla 1: ventaja e inconvenientes de los diferentes formatos 3. Desarrollo del proyecto 3.1 La Elección de Java para el proyecto Java es un lenguaje simple y potente, que se adapta perfectamente a los requisitos exigidos por los programas del proyecto. Aún así, cumpliendo las características señaladas, se hubiera desechado si no fuera actual y no estuviese totalmente extendido. Su presencia en nuestras vidas es constante: página Web con applets, tickers de valores de bolsa, contenidos obtenidos de bases de datos por medio de JSP (JavaServer Pages), gestión de mensajería móvil SMS (Short Messaging Service), videojuegos en los móviles, plataformas de televisión interactiva,programación de redes, etcétera. Java permite crear dos tipos de programas: aplicaciones independientes o standalone (programas que se ejecutan en nuestro ordenador, sin necesidad de conexión a Internet, como los programas creados en Visual Basic, C++…) y applets. Un applet es una aplicación diseñada para ser transmitida por Internet y ejecutada en los navegadores compatibles con Java, es decir, es un programa que un navegador puede cargar y ejecutar. Java es el único lenguaje de programación capaz de crear applets. 1550 En nuestro caso, el Catálogo Web desarrollado es un applet, mientras que la herramienta de configuración de dicho Catálogo es una aplicación standalone. Por último y de sumo interés para el proyecto, Java desarrolla el API Java3D, que permite crear programas que representan y posibilitan la interacción con mundos 3D. 3.1.1 La interfaz gráfica de los programas Las JFC (Java Foundation Classes) son parte de la API de Java, compuesto por clases que sirven para crear interfaces gráficas visuales para las aplicaciones independientes Java y los applets. Las JFC contienen dos paquetes gráficos: AWT (Abstract Window Toolkit) y Swing. El proyecto ha empleado en su totalidad componentes Swing, exceptuando un componente particular que no posee su homólogo en el paquete Swing (el componente Canvas 3D). Los componentes Swing tienen capacidades que van más allá de lo que ofrecen los componentes AWT, pero la mayor diferencia y lo que hace que nos decantemos por los primeros, reside en que pueden tomar diferente aspecto y comportamiento independientemente de la plataforma donde se ejecuten, con una apariencia más agradable al usuario. Los componentes AWT, sin embargo, sólo pueden tomar la representación determinada por la plataforma. Tanto AWT como Swing tienen en común un sistema para gestionar los eventos que se producen al interactuar el usuario con la interfaz gráfica; su modelo de eventos. Para cada objeto que represente una interfaz gráfica, se definen objetos "oyentes" (Listener), que esperan a que suceda un determinado evento sobre la interfaz para la ejecución de una determinada acción. 3.2 El núcleo central del Catálogo Industrial: Java3D 3.2.1 Introducción al API Java3D El API Java3D es una interfaz utilizada para realizar aplicaciones y applets que representan gráficos tridimensionales, proporcionando funciones para creación de imágenes, visualizaciones, animaciones y programas de aplicaciones gráficas 3D interactivas. Trabaja con constructores de alto nivel para crear y manipular objetos geométricos en 3D. Estos objetos geométricos residen en un universo virtual que luego es renderizado. El API es sencillo de usar ya que los detalles de renderizado se manejan automáticamente. Un programa Java3D crea ejemplares de objetos Java3D y los sitúa en una estructura de datos de escenario gráfico. Este escenario gráfico es una composición de objetos 3D en una estructura de árbol que especifica completamente el contenido de un universo virtual, y cómo va a ser renderizado. Java3D ni anticipa ni soporta directamente cualquier necesidad posible 3D. En cambio, proporciona la base necesaria para añadir nuevas funcionalidades utilizando código Java. Así el cargador VRML que se usa en el proyecto para cargar la geometría no pertenece al API Java3D sino a una librería externa que proporciona los métodos adecuados para leer y traducir dicha información geométrica en primitivas Java3D. 3.2.2 Las clases del API Java3D del Catálogo Todo programa Java3D está, al menos, parcialmente ensamblado por objetos del árbol de clases Java3D. Esta colección de objetos describe el universo virtual que posteriormente será renderizado. El API define unas 100 clases básicas de menor nivel presentadas en el paquete corazón de Java3D, javax.media.j3d. 1551 Java3D también usa otros paquetes como com.sun.j3d.utils, cuyas clases, conocidas como clases de utilidades, reducen significativamente el número de líneas de código en un programa Java 3D. Además de las clases de los paquetes corazón y de utilidades de Java3D, el Catálogo Industrial usa clases de los paquetes java.awt y javax.vecmath. El paquete java.awt define el "Abstract Windowing Toolkit" (AWT). Las clases AWT crean una ventana para mostrar el renderizado. El paquete javax.vecmath define clases de vectores matemáticos para puntos, vectores, matrices y otros objetos matemáticos. 3.2.3 El grafo de escena del Catálogo Industrial El grafo de escena del Catálogo Industrial posee en su rama de contenido objetos cuya geometría y apariencia son cargadas en formato VRML. En Java3D, la clase Loader lee ficheros de escenas 3D (no ficheros Java 3D) y crea representaciones Java 3D de sus contenidos, que pueden ser añadidos selectivamente a un mundo Java3D. El paquete com.sun.j3d.loaders proporciona el contenido principal para convertir los ficheros creados de otras aplicaciones en aplicaciones Java3D. Como hay una gran variedad de formatos de ficheros para propósitos de representación de escenas 3D y siempre habrá más formatos de ficheros, el código real para cargar un fichero no forma parte de Java3D o del paquete loaders; sólo se incluye el interfaz para el mecanismo de carga. La carga de la geometría de los diferentes productos que se muestran en el catálogo se ha realizado mediante el cargador del formato de archivo VRML j3dvrml97. Este es totalmente gratuito y está disponible en la dirección: https://j3d-vrml97.dev.java.net/ Una vez descargado se deberá incorporar el fichero j3d-vrml97.jar junto con el resto de librerías externas de Java, esto es, en la carpeta ext del directorio de instalación de JRE (Java Runtime Environment) de Java. Los pasos para la carga del contenido del fichero VRML son los siguientes: 1.- Importar la clase cargador. 2.- Declarar un objeto Scene. 3.- Crear un objeto loader. 4.- Cargar el fichero asignando el resultado al objeto Scene. Con estos pasos, el objeto Scene contendría toda la información residente en el archivo VRML. Nuestro objetivo es poder acceder de forma independiente a los nodos definidos por DEF. Esto se lleva a cabo en la clase creada para tal cometido, VrmlLoad. 3.3 La comunicación del Catálogo Industrial con el servidor El Catálogo Industrial en un applet que se ejecuta del lado del cliente. El applet establece una comunicación con una base de datos, lo que obliga a desarrollar también aplicaciones Java del lado del servidor. Las aplicaciones del lado del cliente y del servidor, y su comunicación, serán tratadas en los próximos apartados. 3.3.1 La visualización del Catálogo Industrial a través de Internet Entre las diversas ventajas que presenta Java, su independencia de la plataforma en la que se van a ejecutar las aplicaciones, resulta de especial utilidad para servir de soporte a una 1552 de sus posibilidades más notables: la distribución de programas asociándolos a páginas Web y su ejecución a través de los navegadores. Los programas de Java diseñados e implementados para su ejecución en un navegador se denominan applets. Cualquier ordenador que disponga de un navegador con máquina virtual Java (JVM) podrá ejecutar nuestros programas, independientemente del procesador, arquitectura y sistema operativo que conforme la máquina. La JVM se encuentra incorporada en el JRE (Java Runtime Environment) de Java. Al inicio del proyecto la versión existente era la JRE 5.0 Update 5, disponible de forma gratuita en la dirección de Sun Microsystem: http://java.sun.com/j2se/1.5.0/download.jsp 3.3.2 Los ficheros de configuración del Catálogo Frecuentemente los programas necesitan enviar o recibir información desde una fuente externa. La información puede hallarse en cualquier parte; en un fichero, en disco, en algún lugar de la red, en memoria, en otro programa, etc. También puede ser de cualquier tipo: objetos, caracteres, imágenes, sonidos… Java nos proporciona un completo sistema de entrada/salida por medio del paquete java.io, haciendo uso de los streams. Un stream (flujo de datos) es una abstracción que se asemeja a un tubo por donde viajan datos, de forma que se pueden introducir datos (escribir información) o extraer datos del tubo (leer información). El Catálogo Industrial ofrece la opción de seleccionar un catálogo, desplegando un árbol que muestra todos sus productos y subconjuntos. A su vez, en cada catálogo es posible acceder a opciones de búsqueda de productos. Toda esta información, necesaria para configurar el Catálogo Industrial, es leída desde diversos ficheros de texto que se encuentran en el servidor. Dado que estos ficheros poseen caracteres Unicode y pueden ser perfectamente reconocidos por cualquier persona, para establecer el flujo de datos se ha elegido un stream de caracteres. El Catálogo Industrial requiere para su correcto funcionamiento un archivo con todos los nombres de los catálogos y dos archivos por cada catálogo, uno configura el árbol y el otro proporciona los datos necesarios para las opciones de búsqueda de productos dentro de un catálogo. Todos estos archivos se encuentran en el directorio Archivos, localizados en una dirección relativa conocida respecto del directorio desde el que se ejecuta el Applet del servidor. El primero de estos ficheros tiene por nombre Catalogos.arb y contiene por línea el nombre de cada uno de los catálogos que son posibles seleccionar, precedidos por una letra que indica si el catálogo tiene o no vinculado una base de datos. La letra A indicará que no tiene vinculado una base de datos, mientras que la letra T indicará lo contrario. El ejemplo de la figura 2 muestra el contenido de un fichero Catalogos.arb. Tras la lectura y procesado del fichero, el Catálogo Industrial mostraría la imagen de la figura 3. Una vez seleccionado un catálogo, éste tiene asociado dos ficheros con el mismo nombre que el catálogo, pero con diferentes extensiones: “.arb” y “.bus”. El fichero de extensión “.arb” contiene la información necesaria para desplegar un árbol con todos los productos y subconjuntos que incorpora el catálogo. Cada línea representa un nodo del árbol, iniciada por una letra indicativa del nivel que ocupa dentro del árbol (A -> nivel 1, B -> nivel 2, C -> nivel 3…), seguida del nombre del propio nodo. Es posible crear hasta 10 subniveles. Una letra P en una línea, indicará que tal nodo corresponde a un producto en sí y no a una parte de éste. Las figuras 4 y 5 muestran respectivamente el contenido de un fichero “.arb” y su representación por el Catálogo Industrial, después de ser leído. 1553 Figura 2: Ejemplo de fichero Catalogos.arb Figura 4: Ejemplo de fichero “.arb” Figura 3: Resultado de la lectura Figura 5: Resultado de la lectura Los ficheros de extensión “.bus”, realmente, sólo existirán para los catálogos que tengan vinculados una base de datos, e incorporan toda la información necesaria para acceder a las opciones de búsqueda de productos. Los ficheros “.bus” tienen la misma estructura para cualquier catálogo. Precedidos por la letra A aparecen los nombres de todas las tablas de la base de datos a las que se vincula el catálogo. Precedidos por la letra C aparecen los nombres de los campos sobre los cuales se le van a imponer las restricciones de búsqueda. Una T indicará el tipo de dato de un campo y una i un item dentro de una lista desplegable. 1554 Precedidos de la letra E aparecen los nombres de los campos de la base de datos, junto con sus tablas, con los que se vincula los campos anteriores. La letra R precederá a las relaciones entre las tablas y la N al nombre del campo y tabla que se empleará para la búsqueda y mostrar los resultados por pantalla. Las figuras 6 y 7 muestran respectivamente un ejemplo de un fichero “.bus” y el resultado tras su lectura por el Catálogo Industrial. Figura 6: Ejemplo de fichero “.bus” Figura 7: Resultado de la lectura 1555 Con lo visto, el Catálogo Industrial sería capaz de mostrar los árboles asociados a los catálogos. Estos árboles tienen vinculados para cada producto un archivo VRML. De esta forma, al seleccionar un nodo del árbol, cargará del archivo VRML correspondiente, todos los nodos hojas que cuelguen de él, y los redenrizará en un Canvas3D. 3.3.3 El modelo de comunicación Para la comunicación entre cliente y servidor se usará un modelo de comunicación tipo petición-respuesta: El cliente solicita la realización de cierta acción, mientras que el servidor realiza la acción y responde al cliente. Los servlets de Java proporcionan un mecanismo para ejecutar programas en equipos servidores. Los servlets reciben peticiones desde navegadores Web y devuelven una respuesta en función de los datos que proporcione el cliente y la situación de contexto existente. Un servlet no es más que un programa Java que se ejecuta en un servidor Web y que extiende su funcionalidad. Sun Microsystem es responsable del desarrollo de las especificaciones para los servlets. La implementación de referencia del estándar es desarrollado por la Fundación de Software Apache (www.apache.org) como parte del Proyecto Jakarta, cuyo objetivo es proporcionar soluciones de servidores basadas en la Plataforma Java. La parte relacionada con servlets del Proyecto Jakarta se conoce como Tomcat. Tomcat es la implementación de referencia oficial del estándar y la empleada en el proyecto para el funcionamiento de los servlets. El Catálogo Industrial ofrece la opción de búsqueda de productos que cumplan con determinados requisitos dentro de un catálogo. Tras seleccionar los campos adecuados para la búsqueda, se genera una sentencia SQL (Structured Query Language) que es guardada en un array String. Este array será enviado por medio de una petición post al servidor que delegará al contenedor de servlets Tomcat su procesamiento a través de un servlet. El servlet conectará con la base de datos y realizará una consulta, enviando los resultados al usuario. 3.4 Introducción a la herramienta Catálogo Industrial v1.0 La herramienta Catálogo Industrial v1.0 es un programa creado para facilitar y complementar la labor de configuración del Catálogo Industrial Web. Se podría pensar en generar los ficheros de texto de configuración del Catálogo Web con un editor de texto, puesto que sus estructuras están completamente definidas, pero parece obvio el esfuerzo y tiempo que ello supondría, además de la casi segura generación de errores en la escritura, indeseables en todos los aspectos. La herramienta Catálogo Industrial v1.0 evita la generación de estos errores y guía en todo momento al usuario del programa en la tarea de creación, edición y eliminación de catálogos, de forma intuitiva y sencilla. El empleo de listas de opciones y la selección directa de los archivos VRML que integran cada catálogo, son las opciones elegidas para la consecución de estos objetivos 4. Conclusión y Líneas De Trabajo Futuras El Catálogo Industrial desarrollado permite al usuario la consulta y búsqueda de productos industriales, mostrándolos de forma tridimensional y posibilitando su interacción. De esta forma se permite acceder a los productos de una base de datos continuamente actualizada, sin la necesidad de descargar los catálogos cada vez que se produzca un cambio, y visualizar y descomponer productos, que de otra manera sería demasiado caro conseguir, o simplemente no sería posible. 1556 0 El Catálogo también permite mostrar conjuntos complejos, es decir, productos formados por un número elevado de piezas. El hecho de que cualquier producto pueda ser descompuesto de forma tridimensional en el número de piezas que se desee y la posibilidad de localizar una pieza dentro del conjunto, todo ello a través de Internet, plantea su uso como herramienta para sistemas de mantenimiento y reparación industrial. Para una mayor potencialidad del Catálogo, además de la información que se muestra de manera inmediata de la base de datos en la interfaz gráfica, se ha vinculado una página HTML a cada producto, desde la cual se pueden descargar sus archivos 3D, fotografías y demás información que se considere oportuna. La herramienta permite la incorporación, edición y eliminación de catálogos a través de una interfaz gráfica simple e intuitiva. Todos los datos se introducen mediante menús y listas desplegables, no dando lugar a equívocos. Como líneas de trabajo futuras podemos señalar: • Diseño de una interfaz gráfica más acorde, en función del uso del Catálogo, bien como un catálogo puramente comercial o bien como herramienta para sistemas de mantenimiento y reparación industrial. • Mejora de la interacción con el mundo virtual. Traslación de las piezas con respecto a un sistema de referencia estático y no vinculado al conjunto. Sistema de iluminación más real. • Integración en la interfaz gráfica de usuario de toda la información vinculada a cada producto para evitar tener que acceder a páginas HTML. • Estudio del tamaño de los archivos VRML y su influencia en los tiempos de descarga desde un servidor real, considerándose la posibilidad de incluir en la interfaz gráfica de usuario un sistema que indique el % del progreso de carga. Figura 8: Partes del Catalogo Industrial Referencias Bibliografía 1557 • • • • Harvey M. Deitel, Paul J. Deitel, “Cómo programar en JAVA”, Pearson Education, 2004. Herbert Schildt, “La biblia de Java 2 v5.0”, Ediciones Anaya Multimedia, 2005. Israel Pastrana Vicente, Carlos Araiz García, Víctor Martínez Conte, “Manual imprescindible de Java 2 v5.0”, Ediciones Anaya Multimedia, 2005. J. García López, “Utilización del Lenguaje VRML como apoyo a labores de mantenimiento y reparación de conjuntos complejos”, PFC de ETSII Málaga, 2004. Material informático • • • • • • Editor Java: Netbeans IDE v4.1 Servidor Web contenedor de servlets: jakarta-tomcat v4.1 Modificador formatos de archivos: Polytrans v4.2 Base de datos: Microsoft Access 2002 Navegador: Internet Explorer 6.0 Sistema operativo: Windows XP Direcciones de interés • • • • • • • • http://java.sun.com/ http://es.sun.com/ http://www.java2s.com/ http://www.programacion.com/java/tutoriales/ http://java.sun.com/products/java-media/3d http://java3d.j3d.org/utilities/loaders.html http://jakarta.apache.org/ http://www.web3d.org/ Correspondencia José R. de Andrés Díaz: Universidad de Málaga, Dpto de Expresión Gráfica, Diseño y Proyectos, Plaza El Ejido s/n, 29071 Málaga, Spain. Phone: +34 95 213 20 62 Fax: +34 95 213 20 58 E-mail : deandres@ctima.uma.es URL: http://exp-grafica.uma.es 1558