Java Card Technology Overview

Java Card "S"

Java Card technology enables smart cards and other devices with very limited memory to run small applications, called applets, that employ Java technology. It provides smart card manufacturers with a secure and interoperable execution platform that can store and update multiple applications on a single device. Java Card technology is compatible with existing smart card standards.

The technology enables developers to build, test, and deploy applications and services rapidly and securely. This accelerated process reduces development costs, increases product differentiation, and enhances value to customers. In a manner complementary to the Standard, Enterprise, and Mobile editions of the Java 2 Platform, Java Card technology makes it easy to integrate security tokens into a complete Java software solution.


Almost any type of smart card can benefit from Java Card technology:

  • Subscriber Identity Module (SIM) cards, used in cell phones on most wireless networks
  • Financial cards supporting both online and offline transactions
  • Government and health-care identity cards
  • Cards that provide logical access and physical access to enterprise resources
  • Smart tickets for mass transit

On the majority of cellular telephone networks, a subscriber uses a smart card commonly called a SIM card to activate the telephone. The card authenticates the user and provides encryption keys for digital voice transmission. When fitted with Java Card technology, SIM cards can also provide transactional services such as remote banking and ticketing. Hundreds of millions of SIM cards based on Java Card technology are already powering innovative services in cell phones.

In the banking industry, smart cards give users secure access to a wide array of networked financial services including cash machines, bill paying, and bridge tolls. Java Card technology enables a single smart card to host multiple financial applications, and to deliver third-party services such as mileage programs or secure online trading.

Other applications are available in a wide variety, wherever security and authenticated identity are important, such as in controlling access to secure facilities and to medical records.

Java Card technology will enhance consumer access to new, e-commerce services through a range of connected appliances. Cellular phones and pay-TV equipment are examples of markets where the majority of products now available already include smart card readers.


Smart card vendors and issuers benefit from several unique features of Java Card technology, which is:

  • Interoperable: Applets developed with Java Card technology will run on any Java Card technology-enabled 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. Designed through an open process, 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, enabling card issuers to respond to their customer's changing needs dynamically.
  • Compatible with Existing Standards: The Java Card API is compatible with international standards for smart cards such as ISO7816, or EMV. Major industry-specific standards such as Global Platform and ETSI refer to it.

Developers creating Java Card applications enjoy all the advantages of working in the Java programming language:

  • Object-oriented programming yields greater code modularity and reusability, leading to higher programmer productivity.
  • Protection features characteristic of the Java programming language apply to Java Card applets, enforcing strong typing and protection attributes.
  • Powerful off-the-shelf development tools are readily available.


Sun Microsystems publishes the Java Card Platform Specification and the Java Card Development Kit, which includes a reference implementation based on the specification. Providing the basis for cross-platform and cross-vendor applet interoperability, version 2.2.2 of the specification includes three documents:

  • The Java Card Virtual Machine Specification defines the features, services, and behavior that an implementation of the Java Card technology must support. It includes the instruction set of a Java Card Virtual Machine (VM), the supported subset of the Java language, and the file formats used to install applets and libraries into smart cards and other devices that host Java Card technology.
  • The Java Card Runtime Environment Specification defines the necessary behavior of the runtime environment (RE) in any implementation of the Java Card technology, which must include implementations of the Java Card Virtual Machine, the Java Card API classes, and runtime support services such as the selection and deselection of applets.
  • API for the Java Card Platform complements the Java Card Runtime Environment Specification, and describes the application programming interface of the Java Card technology. The API is compatible with formal international standards and industry-specific standards. It contains the class definitions required to support the Java Card VM and the Java Card RE.

The Java Card Development Kit is a suite of tools for designing implementations of the Java Card technology, and for developing applets based on the Java Card API Specification:

  • C-JCRE is a reference implementation of the Java Card Runtime Environment written in the C programming language. It also includes the Java Card Virtual Machine interpreter.
  • Off-card platform components such as the Java Card Converter and the Java Card Verifier complement C-JCRE, to provide a complete development chain.
  • Additional design and testing tools enable developers to prototype and test applications.

Java Card "S"
The Java Card "S" program enables Java Card licensees to derive fixed-function smart cards from existing Java Card technology-based products. Java Card "S" products have all the functionality and security of standard Java Card smart cards except the dynamic download capability: applications cannot be added or removed after the device has been issued. Java Card "S" products bring the value proposition of Java Card technology to an extended range of smart card products. Card issuers can capitalize on the wealth of applications already developed and certified for the Java Card platform, in smart card products with minimal memory capacity.They can now purchase cards with a wide range of prices and capabilities, while still reaping the benefits of Java Card technology, and using Java Card applets that have already proven their worth. This option dramatically reduces the cost and complexity of application development, functional testing, security evaluation, and application life-cycle management.

Java Card technology is licensed to companies that now represent more than 90 percent of the world's smart card manufacturing capacity. In addition, it provides a range of new opportunities for original equipment manufacturers and their partners across several industries. In particular, the applet interoperability provided by Java Card technology allows card issuers to mix and match third-party applications, including standard payment, stored value, computer authorization, data management, and many more.

Java Card technology licensees can also acquire a license to the Java Card Technology Compatibility Kit (TCK), which can be used to certify a Java Card implementation on a particular platform.

From time to time Sun also provides exclusive deliverables to the licensee community, such as the Java Card Toolkit, or the Java Card Protection Profile. The toolkit is a Java Card simulator and debugger that has been designed for integration into third-party integrated development environments. It gives licensees a realistic simulation and debugging environment within their Java Card development environments. The Java Card Protection Profile reduces the time and cost for Java Card licensees to complete security evaluations under the Common Criteria for IT Security Evaluation. It provides a reusable set of security requirements that is specific to the Java Card platform. The opportunity to evaluate Java Card products against the Common Criteria enables licensees to meet the increasing demand by banks, governments, and other card issuers for security evaluations conducted under the aegis of a rigorous, widely accepted standard.

For information about licensing terms, please contact Sun's Java Partner Engineering group.