Site Tools


Sidebar

Smart Card Solution

User Manual

JavaCard API Samples

Java Card Specification

Knowledge Sharing

javacard:jcvm



Java Card Virtual Machine Specification

Preface

1. Introduction

1.1 Motivation

1.2 The Java Card Virtual Machine

1.3 Java Language Security

1.4 Java Card Runtime Environment Security

2. A Subset of the Java Virtual Machine

2.1 Why a Subset is Needed

2.2 Java Card Platform Language Subset

2.2.1 Unsupported Items

2.2.1.1 Unsupported Features

2.2.1.2 Keywords

2.2.1.3 Unsupported Types

2.2.1.4 Classes

2.2.2 Supported Items

2.2.2.1 Features

2.2.2.2 Keywords

2.2.2.3 Types

2.2.2.4 Classes

2.2.3 Optionally Supported Items

2.2.3.1 Integer Data Type

2.2.3.2 Object Deletion Mechanism

2.2.4 Limitations of the Java Card Virtual Machine

2.2.4.1 Packages

2.2.4.2 Classes

2.2.4.3 Objects

2.2.4.4 Methods

2.2.4.5 Switch Statements

2.2.4.6 Class Initialization

2.2.5 Multiselectable Applets Restrictions

2.2.6 Java Card Platform Remote Method Invocation (RMI) Restrictions

2.2.6.1 Remote Classes and Remote Interfaces

2.2.6.2 Access Control of Remote Interfaces

2.2.6.3 Parameters and Return Values

2.3 Java Card VM Subset

2.3.1 class File Subset

2.3.1.1 Not Supported in Class Files

2.3.1.2 Supported in Class Files

2.3.2 Bytecode Subset

2.3.2.1 Unsupported Bytecodes

2.3.2.2 Supported Bytecodes

2.3.2.3 Static Restrictions on Bytecodes

2.3.3 Exceptions

2.3.3.1 Uncaught and Uncatchable Exceptions

2.3.3.2 Checked Exceptions

2.3.3.3 Runtime Exceptions

2.3.3.4 Errors

3. Structure of the Java Card Virtual Machine

3.1 Data Types and Values

3.2 Words

3.3 Runtime Data Areas

3.4 Contexts

3.5 Frames

3.6 Representation of Objects

3.7 Special Initialization Methods

3.8 Exceptions

3.9 Binary File Formats

3.10 Instruction Set Summary

3.10.1 Types and the Java Card Virtual Machine

4. Binary Representation

4.1 Java Card Platform File Formats

4.1.1 Export File Format

4.1.2 CAP File Format

4.1.3 JAR File Container

4.2 AID-based Naming

4.2.1 The AID Format

4.2.2 AID Usage

4.3 Token-based Linking

4.3.1 Externally Visible Items

4.3.2 Private Tokens

4.3.3 The Export File and Conversion

4.3.4 References - External and Internal

4.3.5 Installation and Linking

4.3.6 Token Assignment

4.3.7 Token Details

4.3.7.1 Package

4.3.7.2 Classes and Interfaces

4.3.7.3 Static Fields

4.3.7.4 Static Methods and Constructors

4.3.7.5 Instance Fields

4.3.7.6 Virtual Methods

4.3.7.7 Interface Methods

4.4 Binary Compatibility

4.5 Package Versions

4.5.1 Assigning

4.5.2 Linking

5. The Export File Format

5.1 Export File Name

5.2 Containment in a JAR File

5.3 Ownership

5.4 Hierarchies Represented

5.5 Export File

5.6 Constant Pool

5.6.1 CONSTANT_Package

5.6.2 CONSTANT_Classref

5.6.3 CONSTANT_Integer

5.6.4 CONSTANT_Utf8

5.7 Classes and Interfaces

5.8 Fields

5.9 Methods

5.10 Attributes

5.10.1 ConstantValue Attribute

6. The CAP File Format

6.1 Component Model

6.1.1 Containment in a JAR File

6.1.2 Defining New Components

6.2 Installation

6.3 Header Component

6.4 Directory Component

6.5 Applet Component

6.6 Import Component

6.7 Constant Pool Component

6.7.1 CONSTANT_Classref

6.7.2 CONSTANT_InstanceFieldref, CONSTANT_VirtualMethodref, and CONSTANT_SuperMethodref

6.7.3 CONSTANT_StaticFieldref and CONSTANT_StaticMethodref

6.8 Class Component

6.8.1 type_descriptor

6.8.2 interface_info and class_info

6.8.2.1 interface_info and class_info shared Items

6.8.2.2 interface_info Items

6.8.2.3 class_info Items

6.8.2.4 implemented_interface_info

6.8.2.5 remote_interface_info

6.9 Method Component

6.9.1 exception_handler_info

6.9.2 method_info

6.10 Static Field Component

6.11 Reference Location Component

6.12 Export Component

6.13 Descriptor Component

6.13.1 class_descriptor_info

6.13.2 field_descriptor_info

6.13.3 method_descriptor_info

6.13.4 type_descriptor_info

6.14 Debug Component

6.14.1 The class_debug_info Structure

6.14.1.1 The field_debug_info Structure

6.14.1.2 The method_debug_info Structure

7. Java Card Virtual Machine Instruction Set

7.1 Assumptions The Meaning of "Must"

7.2 Reserved Opcodes

7.3 Virtual Machine Errors

7.4 Security Exceptions

7.5 The Java Card Virtual Machine Instruction Set

7.5.1 aaload

7.5.2 aastore

7.5.3 aconst_null

7.5.4 aload

7.5.5 aload_<n>

7.5.6 anewarray

7.5.7 areturn

7.5.8 arraylength

7.5.9 astore

7.5.10 astore_<n>

7.5.11 athrow

7.5.12 baload

7.5.13 bastore

7.5.14 bipush

7.5.15 bspush

7.5.16 checkcast

7.5.17 dup

7.5.18 dup_x

7.5.19 dup2

7.5.20 getfield_<t>

7.5.21 getfield_<t>_this

7.5.22 getfield_<t>_w

7.5.23 getstatic_<t>

7.5.24 goto

7.5.25 goto_w

7.5.26 i2b

7.5.27 i2s

7.5.28 iadd

7.5.29 iaload

7.5.30 iand

7.5.31 iastore

7.5.32 icmp

7.5.33 iconst_<i>

7.5.34 idiv

7.5.35 if_acmp<cond>

7.5.36 if_acmp<cond>_w

7.5.37 if_scmp<cond>

7.5.38 if_scmp<cond>_w

7.5.39 if<cond>

7.5.40 if<cond>_w

7.5.41 ifnonnull

7.5.42 ifnonnull_w

7.5.43 ifnull

7.5.44 ifnull_w

7.5.45 iinc

7.5.46 iinc_w

7.5.47 iipush

7.5.48 iload

7.5.49 iload_<n>

7.5.50 ilookupswitch

7.5.51 imul

7.5.52 ineg

7.5.53 instanceof

7.5.54 invokeinterface

7.5.55 invokespecial

7.5.56 invokestatic

7.5.57 invokevirtual

7.5.58 ior

7.5.59 irem

7.5.60 ireturn

7.5.61 ishl

7.5.62 ishr

7.5.63 istore

7.5.64 istore_<n>

7.5.65 isub

7.5.66 itableswitch

7.5.67 iushr

7.5.68 ixor

7.5.69 jsr

7.5.70 new

7.5.71 newarray

7.5.72 nop

7.5.73 pop

7.5.74 pop2

7.5.75 putfield_<t>

7.5.76 putfield_<t>_this

7.5.77 putfield_<t>_w

7.5.78 putstatic_<t>

7.5.79 ret

7.5.80 return

7.5.81 s2b

7.5.82 s2i

7.5.83 sadd

7.5.84 saload

7.5.85 sand

7.5.86 sastore

7.5.87 sconst_<s>

7.5.88 sdiv

7.5.89 sinc

7.5.90 sinc_w

7.5.91 sipush

7.5.92 sload

7.5.93 sload_<n>

7.5.94 slookupswitch

7.5.95 smul

7.5.96 sneg

7.5.97 sor

7.5.98 srem

7.5.99 sreturn

7.5.100 sshl

7.5.101 sshr

7.5.102 sspush

7.5.103 sstore

7.5.104 sstore_<n>

7.5.105 ssub

7.5.106 stableswitch

7.5.107 sushr

7.5.108 swap_x

7.5.109 sxor

8. Tables of Instructions

Glossary

Index

javacard/jcvm.txt · Last modified: 2017/05/13 02:43 (external edit)