====== Preface ====== Java Card{{shared:chars:tm.gif}} technology combines a portion of the Java{{shared:chars:tm.gif}} programming language with a runtime environment optimized for smart cards and related, small-memory embedded devices. The goal of Java Card technology is to bring many of the benefits of the Java programming language to the resource-constrained world of smart cards. This document is a specification of the Java Card Platform, Version 2.2.2, Runtime Environment (Java Card Runtime Environment or Java Card RE). A vendor of a Java Card technology-enabled device provides an implementation of the Java Card RE. A Java Card RE implementation within the context of this specification refers to a vendor's implementation of the virtual machine (VM) for the Java Card platform (Java Card virtual machine or Java Card VM), the Java Card Application Programming Interface (API), or other component, based on the Java Card technology specifications. A "reference implementation" is an implementation produced by Sun Microsystems, Inc. Application software written for the Java Card platform is referred to as a Java Card technology-based applet (Java Card applet or card applet). ===== Who Should Use This Specification ===== This specification is intended to assist implementers of the Java Card RE in creating an implementation, developing a specification to extend the Java Card technology specifications, or in creating an extension to the runtime environment for the Java Card platform. This specification is also intended for Java Card applet developers who want a greater understanding of the Java Card technology specifications. ===== Before You Read This Specification ===== Before reading this guide, you should be familiar with the Java programming language, the other Java Card technology specifications, and smart card technology. A good resource for becoming familiar with Java technology and Java Card technology is the Sun Microsystems, Inc. web site, located at **http://java.sun.com** ===== How This Specification Is Organized ===== [[1._Introduction| Chapter 1]], "Introduction," gives an overview of the information contained in this specification. [[2._Lifetime_of_the_Java_Card_Virtual_Machine| Chapter 2]], "Lifetime of the Java Card Virtual Machine," defines the lifetime of the Java Card virtual machine. [[3._Java_Card_Applet_Lifetime| Chapter 3]], "Java Card Applet Lifetime," defines the lifetime of an applet. [[4._Logical_Channels_and_Applet_Selection| Chapter 4]], "Logical Channels and Applet Selection," describes how the Java Card RE handles applet selection. [[5._Transient_Objects| Chapter 5]], "Transient Objects," describes the properties of transient objects. [[6._Applet_Isolation_and_Object_Sharing| Chapter 6]], "Applet Isolation and Object Sharing," describes applet isolation and object sharing. [[7._Transactions_and_Atomicity| Chapter 7]], "Transactions and Atomicity," describes the functionality of atomicity and transactions. [[8._Remote_Method_Invocation_Service| Chapter 8]], "Remote Method Invocation Service," describes the server-side (card-side) functionality of the Remote Method Invocation (RMI) feature of Java Card Platform, Version 2.2.2. [[9._API_Topics| Chapter 9]], "API Topics," describes API functionality required of a Java Card RE but not completely specified in the **//Application Programming Interface, Java Card Platform, Version 2.2.2//**. [[10._Virtual_Machine_Topics| Chapter 10]], "Virtual Machine Topics," describes virtual machine resource failures and security violations. [[11._Applet_Installation_and_Deletion| Chapter 11]], "Applet Installation and Deletion," provides an overview of the Applet Installer and Java Card RE required behavior. [[12._API_Constants| Chapter 12]], "API Constants," provides the numeric value of constants that are not specified in the **//Application Programming Interface, Java Card Platform, Version 2.2.2//**. "[[Glossary| Glossary]]," provides definitions of selected terms used in this specification. ===== Related Books ===== References to various documents or products are made in this guide, Have the following documents available: * **//Application Programming Interface for the Java Card Platform, Version 2.2.2//**. * **//Virtual Machine Specification for the Java Card Platform, Version 2.2.2//**. * **//The Java//****// Language Specification//** by James Gosling, Bill Joy, and Guy L. Steele (Addison-Wesley, 1996). * **//The Java//****// Virtual Machine Specification (Java Series), Second Edition//** by Tim Lindholm and Frank Yellin (Addison-Wesley, 1999). * **//The Java//****// Remote Method Invocation Specification//**, Sun Microsystems, Inc. (**http://java.sun.com/products/jdk/rmi).** * **//The Java Class Libraries: An Annotated Reference, Second Edition (Java Series)//** by Patrick Chan, Rosanna Lee and Doug Kramer (Addison-Wesley, 1999). * **//ISO 7816 Specification//** Parts 1-6. (**http://www.iso.org**) * EMV '96 Integrated Circuit Card Specification for Payment Systems Version 3.0. EMV 2000 Integrated Circuit Card Specification for Payment Systems Version 4.0. (**http://www.emvco.com**) ===== Typographic Conventions ===== Typeface Meaning Examples **AaBbCc123** The names of commands, files, and directories; on-screen computer output Edit your **.login** file. Use **ls -a** to list all files. **% You have mail**. **AaBbCc123** What you type, when contrasted with on-screen computer output **% ****su** **Password:** AaBbCc123 Book titles, new words or terms, words to be emphasized Command-line variable; replace with a real name or value Read Chapter 6 in the User's Guide. These are called **//class//** options. You **//must//** be superuser to do this. To delete a file, type **rm** filename. ===== Accessing Sun Documentation Online ===== Access Java platform technical documentation Java Developer Connection{{shared:chars:tm.gif}} program web site at **http://developer.java.sun.com/developer/infodocs** ===== Sun Welcomes Your Comments ===== We are interested in improving our documentation and welcome your comments and suggestions. You can email your comments to us at **docs@java.sun.com**. Copyright © 2005, Sun Microsystems, Inc. All Rights Reserved.