Smart cards represent one of the smallest computing platforms in use today. The greatest challenge of Java Card technology design is to fit Java system software in a smart card while conserving enough space for applications. The solution is to support only a subset of the features of the Java language and to apply a split model to implement the Java virtual machine - JavaCard virtual machine.
The Java Card virtual machine is split into two part: one that runs off-card and the other that runs on-card. Smart cards differ from desktop computers in several ways. The memory configuration of a smart card might have on the order of 1K of RAM, 16K of EEPROM, and 24K of ROM. In addition to providing Java language support, Java Card technology defines a runtime environment that supports the smart card memory, communication, security, and application execution model. The Java Card runtime environment conforms to the smart card international standard ISO 7816.
Java Card technology essentially defines a platform on which appli-
cations written in the Java programming language can run in smart cards and other
memory-constrained devices. (Applications written for the Java Card platform are
referred to as applets.) Because of the split virtual machine architecture, this plat-
form is distributed between the smart card and desktop environment in both space
and time. It consists of three parts, each defined in a specification.
• The Java Card 2.1 Virtual Machine (JCVM) Specification defines a subset of the Java programming language and virtual machine definition suitable for smart card applications.
• The Java Card 2.1 Runtime Environment (JCRE) Specification precisely describes Java Card runtime behavior, including memory management, applet management, and other runtime features.
• The Java Card 2.1 Application Programming Interface (API) Specification describes the set of core and extension Java packages and classes for programming smart card applications.
Supported and Unsupported features in JavaCard