Básicamente se sitúa en un nivel superior al hardware del sistema sobre el que se pretende ejecutar la aplicación, y este actúa como un "puente" que entiende tanto el bytecode como el sistema sobre el que se pretende ejecutar.