Virtual Machine Specification
Java Card
Platform,
Version 3.0.1
Classic Edition
5-30-09
Figures
Tables
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
| Virtual Machine Specification, Java Card Platform,
v3.0.1, Classic Edition
|
5-30-09
|
    |
Copyright © 2009
Sun Microsystems, Inc. All rights reserved.