Would you like to make this site your homepage? It's fast and easy...
Yes, Please make this my home page!
Capitulo 3: K Virtual Machine (KVM)
Resumen de las características del diseño de la KVM:
-
Llamada así por su tamaño (kilobytes).
-
Núcleo de J2ME.
-
CLDC se ejecuta en el tope de KVM.
-
KVM está basado en el Spotless System originalmente desarrollado
por Sun Labs.
-
Implementado en C, aproximadamente 24.000 líneas de código.
-
Tamaño estático de VM ejecutable: entre 40 y 80 KB dependiendo
de la plataforma y las opciones de compilación (w/ o romizing).
-
En Palm y Win32 aproximadamente 60 KB.
Preloading/prelinking ("Romizing")
Una JVM soportando CLDC debe pre-cargar/pre-linkar (preload/prelinking)
algunas clases. Esta tecnologia se denomina Romizing. Normalmente
las implementaciones de VM pequeñas eligen preload todas las clases
del sistema para una particular configuración o perfil. El mecanismo
de preloading son implementaciones dependientes y usualmente están
bajo el alcance de una configuración específica.
Aspectos técnicos (KVM Technical Overview)
-
Compatible con JVM, con algunas restricciones.
-
Implementación modular, con varias opciones en tiempo de compilación
para afinar la VM (tamaño vs. velocidad) y opciones de debugging.
-
Plataforma independiente, totalmente multithreading usando "green" threads.
-
Pequeño ya rapido algoritmo recolector de basura (GC) (garbage collector
algorithm).
KVM: Optimizaciones
-
System class preloading: precarga de las clases del sistema (lo que se
conoce como "romizing") usando JavaCodeCompact.
-
Runtime simonizing of immutable structures: el termino simonizing
se refiere a la facilidad por la cual ciertas estructuras de datos inmutables
en tiempo de ejecución son movidas desde la memoria dinámica
a la memoria estática para poder salvar el Java Heap Space. El termino
se denominó después Doug Simon, el nombre del ingeniero que
lo implementó. La técnica está implementada en la
Palm, la cual es el típico ejemplo de entorno donde hay restricciones
de Heap Space por programa.
-
Chunky stacks y segmented heap: Chunky Stacks es una optimización
que muestra como Java Heap Memory puede ser asignada a multiples chunks
o segmentos. Esto permite a VM asignar más Heap Space en plataformas
con recursos restringidos.
KVM Porting
-
Código fuente bajo SCSL (Sun Community Source License).
-
Tres KVM ports son validos:
-
Win32
-
PalmOS (3.01 o superior)
-
Solaris TM Operating Environment
-
Rapido acceso a los partners y clientes de Sun que quieren trasladar (ported)
la KVM a otras plataformas. Ver KVM Porting Guide.