Java applets are subject to Java security restrictions; however, the security model of Java Card systems differs from standard Java in many ways.
The Security Manager class is not supported on Java Card. Language security policies are implemented by the virtual machine.
Java applets create objects that store and manipulate data. An object is owned by the applet that creates it. Even though an applet may have the reference to an object, it cannot invoke the object’s methods, unless it owns the object or the object is explicitly shared. An applet can share any of its objects with a particular applet or with all applets.
An applet is an independent entity within a Java Card. Its selection, execution, and functionality are not affected by other applets residing on the same card.
Benefits of Java Card Technology
There are several unique benefits of the Java Card technology for smart card vendors and issuers:
- Interoperable –
Applets developed with Java Card technology will run on any Java Card technology-based smart card, independently of the card vendor and underlying hardware.
- Secure –
Java Card technology relies on the inherent security of the Java programming language to provide a secure execution environment. It was designed through an open process, and the platform’s proven industry deployments and security evaluations ensure that card issuers benefit from the most capable and secure technology available today.
- Multi-Application Capable –
Java Card technology enables multiple applications to co-exist securely on a single smart card.
- Dynamic –
New applications can be installed securely after a card has been issued, providing card issuers with the ability to dynamically respond to their customer’s changing needs.
- Open –
Java Card application developers benefit from object-oriented programming and design, and have access to off-the-shelf Java development tools.
Advantages of Developing With Java Card Technology:
Java Card technology offers all the advantages of developing applications in the Java programming language:
- High programmer productivity
- Object-oriented programming with greater code modularity and reusability
- Java language protections apply to Java Card applets, enforcing strong typing and protection attributes
- Availability of powerful off-the-shelf development tools
This article first reviews some fundamental concepts of smart cards, and then explains Java Card 2.0 internals and shows you how to develop a Java Card application.
A Java Card applet is compiled using a regular Java compiler. The output of the compiler (a class file) is input into a Java Card converter which enforces Java Card 2.0 subset compliance, performs name resolution and initial address linking, and optimizes the Java byte code to be suitably running on a Java Card VM. The output of the converter can then be downloaded onto a Java Card. The details of the converter and applet installation protocols aren’t discussed in this article because they haven’t yet been standardized. We hope to cover these areas in future article.
The Java Card adds a new platform to the world of Java. Widespread adoption and deployment of the Java Card will require marketing promotion, more applications and tools development, and time. At the same time, the number of Java Cards in existence could easily extend into the millions within the next few years. Which means you may soon be storing your personal information and downloading applications using a little card you carry around in your wallet or purse.