The Java Card™ application programming interface is a platform designed to create applications for smart cards and smart card devices. In addition to smart card-related programming, Java Card™ is well-suited for the creation of applications on a wide range of small-footprint, low-memory devices, such as some kinds of cell phones. These small applications run very similarly to larger Java® programs; a virtual machine establishes a base environment, and then the Java® code runs within it. The only real difference between standard Java® and a Java Card™ system is the size and a handful of features that have yet to be implemented.
Java Card™ originally came on the market in 1996. At this time, the only use for the technology was in smart card-based systems. As time went on, the number of small computing platforms increased. Now this system is used on a wide range of devices that operate with platform restrictions similar to a smart card system.
The language is suited for an environment that has very limited memory and processing power. The majority of smart card systems use a fixed environment; outside of special equipment, it is very difficult to get a program on or off the card. These environments are often extremely limited in terms of available resources, making the language a perfect fit.
The most common secondary location for Java Card™ is on cellphones. Most modern smartphones actually have enough memory and power to make use of more advanced Java® platforms, so the card systems are often limited to older smartphones or dumbphones. A small selection of other devices use Java Card™ technology, mostly ones that use add-on cards or memory cards for additional programming.
Most Java® systems work the same way, regardless of their intended platform or overall size. A virtual machine creates an emulated environment on the target device. The Java® program runs within that environment with little regard for the system’s actual hardware. The virtual machine installation is different on every platform, but the inner workings are not. As a result, it is possible to run the same application on a wide range of computers or devices with no conversion.
The main goals of the Java Card™ language are compatibility and security. This language is designed to be compatible with nearly any device that wants to use it. This is generally done through individually-coded virtual machines. Once the virtual machine for the hardware is operational, applications are relatively easy to port over.
The second main focus is creating a secure program and platform. Since smart systems often contain sensitive information, the language has a wide range of methods for safeguarding that information while it is in use. These methods range from inner application firewalls to multiple forms of encryption.