Página siguiente Página anterior Índice general

6.5 El verificador de archivos de clases

Cualquier máquina virtual Java contiene un verificador de clases que asegura que las clases cargadas tienen la estructura interna correcta. Si el verificador de clases descubre un problema dentro de una clase genera una excepción. Debido a que una clase es una secuencia de bytes, la máquina virtual no puede saber si una clase en particular es realmente un bytecode correcto o no. Como consecuencia de esto, todas las implementaciones de la máquina virtual disponen de un verificador de clases que puede ser invocado sobre clases no seguras, asegurando de esta forma su corrección.

Uno de los objetivos del verificador de clases es ayudar a obtener aplicaciones robustas. Si un programador malintencionado generara una clase que contuviera un método cuyo código en bytes incluyera una instrucción de salto al final del método podría causar que la máquina virtual no funcionara si el método es invocado.

La especificación recomienda que la verificación del bytecode de las aplicaciones se realice justo después de que la clase halla sido cargada. El verificador de clases lleva a cabo su tarea de comprobación en dos fases:

  1. La primera fase tiene lugar justo después de cargar la clase. En ella el verficador de clases comprueba la estructura interna de la clase, incluyendo la comprobación de la integridad de los bytecodes.
  2. La segunda fase se lleva a cabo mientras se ejecuta el bytecode de la clase. En esta el verficador de clases confirma la existencia de las referencias simbólicas a clases, campos y métodos.

Página siguiente Página anterior Índice general