The JavaCard Virtual Machine (JCVM) is implemented as 2 separate pieces: "interpreter" and "converter"
The "converter" - is off-card piece - run on a PC or a workstation. The converter loads and preprocesses the class files that make up a Java package and outputs a CAP file(converted applet). The CAP file is then loaded on a Java smart card and executed by the interpreter. In addition to creating a CAP file, the converter generates an Export file representing the public APIs of the package being converted.
The "interpreter" - performs the following tasks:
• Executes bytecode instructions and ultimately executes applets
• Controls memory allocation and object creation
• Plays a crucial role in ensuring runtime security
Informally, the Java Card virtual machine is defined as the on-card piece of the virtual machine - the interpreter, in our current definition.