Download 1. Introducción.
Document related concepts
no text concepts found
Transcript
1. Introducción. En este capítulo se presenta una introducción al proyecto abordando el tema principal en el cual esta centrado: aprovechar las posibilidades que ofrece la maquina virtual de la plataforma J2ME, la KVM. La KVM forma parte de la versión mas reducida del entorno de ejecución Java y se incluye en el software de la plataforma Java 2 Micro Edition (plataforma J2ME). Se usa en dispositivos con memoria y potencia de procesador limitada. Los teléfonos móviles, buscapersonas y asistentes digitales personales (PDA) suelen utilizar una KVM para ofrecer ciertas funciones informáticas habituales. La KVM es similar a la JVM (Máquina virtual Java) ya que ambas son motores que ejecutan las aplicaciones y los applets que utilizan tecnología Java. Se usa en teléfonos y dispositivos móviles mientras que la JVM se utiliza en equipos informáticos. De hecho, la KVM fue concebida como una versión reducida de la maquina virtual genérica limitando el consumo de recursos de la misma. Así por ejemplo de los variados algoritmos de gestión de memoria de los que dispone la JVM solo se mantiene en la KVM uno de ellos que además resulta ser el mas sencillo. Adicionalmente se incorporan mecanismos extras que permiten agilizar la ejecución de ciertas tareas como es el caso de la ejecución de los bytecodes que componen los archivos de clases. La tecnología J2ME utiliza varias máquina virtuales de tamaños distintos aparte de la KVM, que es únicamente una implementación de las Configuraciones para dispositivos con conectividad limitada (Connected Limited Device Configurations, CLDC) disponibles para la ejecución de Java en dispositivos móviles. La plataforma de ejecución Java conlleva una serie de etapas o fases consecutivas: • • • Desarrollo de las aplicaciones Java. Compilación del código fuente de dichas aplicaciones. Mediante esta etapa cada uno de los archivos Java se traduce en un archivo de clases (.class). Interpretación: ejecución del archivo de clases. La maquina virtual opera en tiempo de ejecución en la última de las tres fases anteriormente expuestas. El archivo de clases que se genera en la compilación es básicamente un conjunto de instrucciones especiales denominadas bytecodes que la maquina virtual es capaz de entender. Precisamente la maquina virtual se encarga de transformar esos bytecodes en las funciones que el sistema operativo puede emplear para ejecutar las aplicaciones. Es lo que se conoce como fase de interpretación y es común a todos los lenguajes denominados interpretados. De esta forma la KVM, partiendo del archivo de clases, ejecuta una serie de módulos de forma secuencial y que en primera aproximación se encuentran resumidos en la figura 2.1 dentro del bloque Java run-time environment: Figura 2.1: Estructura simplificada interna de la maquina virtual. Como se puede observar en la Figura 2.1 la maquina virtual tiene cuatro módulos: • • • • Loader: para cargar las clases que se han de ejecutar en memoria. Verifier: verifica las clases que se han cargado. Intérprete: ejecuta los bytecodes. JIT compiler: compila e interpreta los bytecodes en tiempo de ejecución. El JIT compiler es variante del flujo de ejecución normal que permite mejorar el rendimiento en ejecución realizando la compilación e interpretación de forma concurrente. Adicionalmente existen otros módulos que realizan las distintas tareas que para un programador Java son totalmente transparentes. Ejemplos de estas tareas son: • Reserva de memoria para objetos recién creados. • • • Suspensión de un hilo de ejecución. Sincronización en las operaciones de entrada/salida con los recursos del sistema operativo. …. Cuando se programan aplicaciones en la plataforma móvil de Java, los desarrolladores se tienen que enfrentar a un esfuerzo adicional añadido al del diseño e implementación de la aplicación. Dicho esfuerzo consiste en adaptar la aplicación a la forma en la que trabaja la maquina virtual para poder aprovechar al máximo los muy limitados recursos de los dispositivos finales. Otra posibilidad para mejorar aspectos concretos de las aplicaciones J2ME es emplear una implementación propia de la KVM. Para ello es necesario un estudio detallado de la arquitectura y funcionamiento de la misma así como realizar las oportunas pruebas para asegurar sus resultados. Dichas pruebas son en realidad aplicaciones Java que al ejecutarse sobre la maquina virtual realizan mediciones de distinta naturalezas. Estas mediciones suelen ser temporales indicando de esta forma el tiempo que invierte la maquina virtual en realizar determinadas tareas. Las motivaciones que llevan a realizar un estudio de los módulos y del funcionamiento global de la maquina virtual están referidas a hacer mas independiente el diseño de software del dispositivo sobre el que se ejecutan. Es decir, se pretende introducir mejoras específicas en la KVM para lograr que las aplicaciones Java demanden menor cantidad de recursos del procesador. De esta forma, estas aplicaciones podrían ejecutarse en un rango mayor de dispositivos móviles manteniendo las mismas características de funcionamiento. 1.1. Estructuración del proyecto. A continuación se va a describir de forma somera la estructura del proyecto y el contenido de cada uno de los capítulos que integran esta memoria. Los capítulos 2 y 3 presentan una introducción gradual acerca de los términos de los conceptos que serán de utilidad a lo largo de los capítulos. En particular el capítulo 2 presenta una introducción a la tecnología Java en general y el capítulo 3 se adentra un poco más en la plataforma para terminales móviles de Java, la J2ME. En el capítulo 4 se presenta ya una visión global de la estructuración interna de la maquina virtual que emplea la plataforma J2ME denominada KVM. Se comenta en este capítulo a grandes rangos la visión funcional de la arquitectura de la maquina virtual y cuales son los distintos módulos que la integran. Se ha estructurado el proyecto de forma que cada capítulo trata de forma extensa cada uno de los módulos pero siempre siguiendo una estructura común a todos ellos: • • • Presentación de conceptos genéricos asociados. Particularización de dichos conceptos para la KVM. Análisis de la implementación del módulo en cuestión. De los tres puntos anteriormente expuestos el más relevante es el último de ellos y a su vez se estructura de forma lógica en distintos apartados: • • • • • Funcionamiento global del módulo. Presentación de las estructuras de datos que se manejan tales como estructuras, uniones, variables, etc... Estudio de cada una de las operaciones externas que pueden ser invocadas. Configuración parametral del módulo. Conclusiones y visión global. El capítulo 18 recoge como fruto del recorrido a lo largo de la KVM los numerosos parámetros que se han empleado a lo largo de los módulos para configurarla y como se pueden aprovechar para un uso particular. Los capítulos 19 y 20 exponen la forma en la cual todo el análisis de la KVM presentando se puede emplear para adecuar o bien crear nuestra propia implementación de la KVM optimizando o degradando aquel aspecto que nos interese.