Architecture: Java Card Platform
Last updated
Last updated
The architecture of the SIM3 is anchored in the Java Card Virtual Machine (JCVM), which provides a secure and interoperable execution environment for Java Card applets. The JCVM is essential for the execution of bytecode, translating high-level instructions into actions within the SIM3's secure element. The SIM3's architecture is designed to prioritize security, interoperability, and resource efficiency, catering to the diverse needs of Java Card application development within the secure confines of a SIM card environment.
Java Card Virtual Machine (JVCM)
The JCVM serves as the execution engine for Java Card applets, providing a robust environment that supports Java's object-oriented paradigm within the resource-constrained context of a SIM card. It manages the low-level interactions with the hardware, abstracting the complexity of the secure element for applet developers.
Java Card Runtime Environment (JVRE)
Directly interfacing with the JCVM is the JCRE, which is responsible for managing the applet lifecycle, enforcing security policies, and facilitating object sharing among applets in a multi-application setting. It provides the necessary runtime libraries and APIs that applets rely on during execution.
Java Card API (Core)
The core Java Card API layer offers a comprehensive suite of services crucial for the development of secure and interoperable applets. This includes cryptographic services, personalization capabilities, and secure communication protocols. The core API acts as a mediator between the applets and the JCRE, translating high-level requests into secure operations.
Java Card API (Extensions)
Atop the core API, the extensions layer allows for the development of custom applets with specialized functionalities. This layer represents the extensibility of the Java Card platform, enabling developers to innovate beyond the standard API offerings.
Configurability
The architecture supports dynamic configuration parameters, allowing optimization of the JCVM, JCRE, and Java Card API layers according to the specific resource constraints of the hardware platform. This includes settings for heap and stack sizes, transient memory, and transaction buffer sizes, ensuring the platform remains flexible and adaptable to various deployment scenarios.