A year after the first Java Card specification was released in November 1996, every major vendor of smart cards in the world had licensed the technology. Both Schlumberger and GemPlus, companies that combined sell something like 75 percent of all smart cards, already have implementations and development toolkits for sale. By 2001, over 700 million of the 3 billion cards sold will be Java Cards.
Implementing a fully functional Java system on a card with, say, 1K of RAM, 16K of EEPROM, and 24K of ROM, is probably impossible. However, it is possible to fit in a partial version and this is what we now describe. It has two main parts:
|Supported Java Features||Unsupported Java Features|
|boolean , byte , short, int||double, float, long, character, string|
|One-dimensional arrays||Multi-dimensional arrays|
|Java classes, packages, interfaces, exceptions||Dynamic Class Loading|
|Java object-oriented features: inheritance, virtual methods, overloading and dynamic object creation, access scope, and binding rules||Security Manager|
On being given a class file and any required export files produced by a third-party Java compiler, the converter does the following:
The CAP file is loaded onto the card via a pair of installers on and off the chip. The on-chip installer writes it into the smart card memory, links it with the other classes that have already been placed on the card, and creates and initializes any data structures that are used internally by the Java Card runtime environment.
The division of functionality between the interpreter and the CAP file
installer keeps the interpreter small and provides flexibility for installer
Once it has received a CAP file, the interpreter is responsible for
The JVCM handles memory allocation, bytecode execution, object management and security. The native methods handle low-level communication protocols, memory management, cryptographic support and more. The System classes handle the tasks that an operating system core normally would, and invoke the native methods to do this. The API classes are compact 'libraries' that make it easier to create applets. The installer loads applets onto cards. Other extensions are industry-specific libraries; for example the Open Platform extends the JCRE services to meet banks' special security needs.
The JCRE is loaded onto the Java Card at the factory and remains there
till the card is destroyed. When the card is placed in a Card Accepting
Device (CAD), it is activated and begins copying data/programs from EEPROM
and ROM to the faster RAM. During transactions, data and objects that must
be preserved are copied from RAM into EEPROM. Recall that EEPROM preserves
data in the absence of power. When power is lost, the card goes into hibernation.