Java Card technology provides a secure environment for applications that run on smart cards and other trusted devices with limited memory and processing capabilities. Java Card technology was tailored in order to enable programs written in the Java™ programming language to run on smart cards and other resource–constrained devices. Due to these constraints, every component of the original Java platform was significantly reduced. On the other hand, smart cards require specific security features beyond the scope of the standard Java platform. For instance, even the legitimate holder of a credit card should not be able to tamper with some of the data contained on the card (for instance, its credit value). Moreover, just like browsers are to distrust downloaded applets to protect the local resources, the environment of a Java Card technology-enabled device must prevent the terminal or even the installed applets, which may come from various sources, from accessing vendor–specific confidential data. Multiple applications can be deployed on a single card, and new ones can be added to it even after it has been issued to the end user. Java Card also includes a set of unique tools for developing new products.
Java Card technology that support post-issuance downloading of applications, referred to as Java Card technology-based applets (“Java Card applets” or “applets”). The Java Card technology combines a subset of the Java programming language with a runtime environment optimized for smart cards and similar small-memory embedded devices. The main security goal of the Java Card platform is to counter the unauthorized disclosure or modification of the code and data (keys, PINs, biometric templates, etc) of applications and platform. In order to achieve this goal, the Java Card System provides strong security features such as the secure installation mechanism, firewall mechanism, dedicated API for security services, etc.