El texto decía algo parecido a -el efecto que produce la JKVM es el de un espectador sentado frente a su televisión viendo una película en la cual el protagonista a su vez ve la tele; si en esa tele se proyectan películas, programas, etc. de los cuales nuestro espectador no dispone (la programación americana, por ejemplo) en realidad, en un primer plano, podría disfrutar igualmente de ellos, aunque en España ni siquiera se emita esa programación-. Así, de forma tan simple quisimos demostrar como una máquina virtual permitía a un teléfono móvil, aparentemente convencional, como era entonces el primer terminal Java, el Motorola Acomppli, ejecutar programas no residentes, descargables, que exigían unos requisitos técnicos impensables.
Técnicamente Y por si alguien sonríe ante ‘tamaña’ sugerencia, explicaremos que el lenguaje de programación Java, antes de ser interpretado necesita de un proceso previo de compilación y que una vez compilado en un fichero (que almacena lo que se denomina j-code) es necesario un intérprete que permita ejecutarlo y ese intérprete es la máquina virtual java. Pero como un mismo programa puede ser ejecutado en distintas plataformas, resulta evidente que existe una JVM para cada una de ellas y que en el caso de los dispositivos móviles, esta fue la KVM que hoy ha pasado a ser una poderosísisma CLDC 1.1 Hotspot (nada que ver con WiFi)
De la KVM a la CLDC En los anales de la historia tecnológica móvil, es decir, hace apenas unos años, cuando los expertos de la Java Community Process (América Online, Ericsson, Fujitsu, Hitachi, Mitsubishi, Motorola, NEC, Nokia, NTT DoCoMo, Palm Computing, SamsungSiemens, Sony y Sun Microsystems, entre otros) plantearon llevar el exitoso lenguaje informático Java y todos sus beneficios a los dispositivos móviles y crear el denominado J2ME, sus colegas se llevaron las manos a la cabeza. En aquello que se denominaba el Memory Budget, se recogían todas las necesidades técnicas del nuevo desarrollo y se hablaba de aplicaciones, librerías, maquina virtual, etc; unos requerimientos que suponían, aproximadamente, 2Mb de memoria para dispositivos que no contaban con más de 128 Kb disponibles -sólo la JVM ocupaba 64 Kb-. Así, para que J2ME fuera una realidad hubo que empezar a hacer concesiones y a eliminar elementos. En principio, se acordó mantener por encima de todo el modelo de seguridad y la compatibilidad binaria y todo lo demás se simplificó, dando como resultado una máquina mucho más lenta y menos optimizada, pero que mantenía aquello que se consideraba crítico y pesaba poco; por eso, por lo de Kilobyte, se le puso el nombre de KVM. Tres años después, nuestros teléfonos móviles son en color, son multimedia, tienen muchísima más capacidad de memoria, permiten descargas de complejísimas aplicaciones profesionales, lúdicas, de orientación, han incorporado procesadores y tecnología mucho más avanzada, tienen más espacio y, por tanto, Sun Microsystem ha ido añadiendo (y por tanto optimizando) aquellas cosas que se suprimieron en su momento. Entre otras: • El Hot Spot. Un elemento que, una vez está el lenguaje en código nativo, realiza una optimización dinámica de este. • Just in time (JIT). Así mismo, se recuperaron compiladores como el JIT, que compila justo en el momento en que se va a usar y lo hace en dos pasos para una mayor rapidez (C++ > generador de código > optimización). • Garbish collector. Como su nombre indica, es un recolector de basura; es decir, un liberador que vacía aquellas zonas de memoria que ya no se utilizan al cerrar la ventana. (Funciona de forma similar al desfragmentador de los PCsy la KVM lo llevaba pero mucho más sencillo). Así, sumando capacidad, sumando funcionalidad, sumando librerías de alto y bajo nivel, los arquitectos de Sun han conseguido que nuestros teléfonos sean máquinas diabólicas cargadas con CLDC 1.1 (Conected Limited Device Configuration), una máquina virtual que ocupa, aproximadamente, 300 Kb. unas cinco veces más que nuestra vieja KVM que, para nosotros hacía de televisor dentro de otro televisor.