search for books and compare prices
Tables of Contents for The Java Virtual Machine Specification
Chapter/Section Title
Page #
Page Count
Preface
xiii
 
Introduction
1
4
A Bit of History
1
1
The Java Virtual Machine
2
1
Summary of Chapters
3
1
Notation
3
2
Java Programming Language Concepts
5
56
Unicode
5
1
Identifiers
6
1
Literals
6
1
Types and Values
7
6
Primitive Types and Values
7
1
Operators on Integral Values
8
1
Floating-Point Types, Value Sets, and Values
8
2
Operators on Floating-Point Values
10
1
Operators on boolean Values
11
1
Reference Types, Objects, and Reference Values
11
1
The Class Object
12
1
The Class String
12
1
Operators on Objects
12
1
Variables
13
3
Initial Values of Variables
14
1
Variables Have Types, Objects Have Classes
15
1
Conversions and Promotions
16
8
Identity Conversions
17
1
Widening Primitive Conversions
17
1
Narrowing Primitive Conversions
18
1
Widening Reference Conversions
19
1
Narrowing Reference Conversions
19
1
Value Set Conversion
20
1
Assignment Conversion
21
1
Method Invocation Conversion
22
1
Casting Conversion
23
1
Numeric Promotion
23
1
Names and Packages
24
4
Simple Names and Qualified Names
24
1
Packages
24
1
Members
25
1
Qualified Names and Access Control
26
1
Fully Qualified Names
27
1
Classes
28
1
Class Names
28
1
Class Modifiers
28
1
Superclasses and Subclasses
29
1
The Class Members
29
1
Fields
29
2
Field Modifiers
30
1
Initialization of Fields
31
1
Methods
31
2
Formal Parameters
32
1
Method Signature
32
1
Method Modifiers
32
1
Static Initializers
33
1
Constructors
34
1
Constructor Modifiers
34
1
Interfaces
35
2
Interface Modifiers
35
1
Superinterfaces
36
1
Interfaces Members
36
1
Overriding, Inheritance, and Overloading in Interfaces
37
1
Nested Classes and Interfaces
37
1
Arrays
38
1
Array Types
38
1
Array Variables
39
1
Array Creation
39
1
Array Access
39
1
Exceptions
39
7
The Causes of Exceptions
40
1
Handling an Exception
41
2
The Exception Hierarchy
43
1
The Classes Exception and RuntimeException
43
3
Execution
46
11
Virtual Machine Start-up
46
2
Loading
48
1
Linking: Verification, Preparation, and Resolution
49
2
Initialization
51
1
Detailed Initialization Procedure
52
2
Creation of New Class Instances
54
2
Finalization of Class Instances
56
1
Unloading of Classes and Interfaces
57
1
Virtual Machine Exit
57
1
FP-strict Expressions
57
1
Threads
58
3
The Structure of the Java Virtual Machine
61
32
The Class File Format
61
1
Data Types
61
1
Primitive Types and Values
62
4
Integral Types and Values
63
1
Floating-Point Types, Value Sets, and Values
63
3
The returnAddress Types and Values
66
1
The boolean Type
66
1
Reference Types and Values
66
1
Runtime Data Areas
67
4
The pc Register
67
1
Java Virtual Machine Stacks
67
1
Heap
68
1
Method Area
69
1
Runtime Constant Pool
70
1
Native Method Stacks
70
1
Frames
71
4
Local Variables
72
1
Operand Stacks
73
1
Dynamic Linking
74
1
Normal Method Invocation Completion
74
1
Abrupt Method Invocation Completion
74
1
Additional Information
75
1
Representation of Objects
75
1
Floating-Point Arithmetic
75
3
Java Virtual Machine Floating-Point Arithmetic and IEEE 754
75
1
Floating-Point Modes
76
1
Value Set Conversion
77
1
Specially Named Initialization Methods
78
1
Exceptions
78
2
Instruction Set Summary
80
11
Types and the Java Virtual Machine
80
3
Load and Store Instructions
83
1
Arthmetic Instructions
84
2
Type Conversion Instructions
86
2
Object Creation and Manipulation
88
1
Operand Stack Management Instructions
88
1
Control Transfer Instructions
88
1
Method Invocation and Return Instructions
89
1
Throwing Exceptions
90
1
Implementing finally
90
1
Synchronization
90
1
Class Libraries
91
1
Public Design, Private Implementation
91
2
The Class File Format
93
62
The ClassFile Structure
94
5
The Internal Form of Fully Qualified Class and Interface Names
99
1
Descriptors
99
4
Grammar Notation
99
1
Field Descriptors
100
2
Method Descriptors
102
1
The Constant Pool
103
9
The CONSTANT_Class_info Structure
104
1
The CONSTANT_Fieldref_info, CONSTANT_Methodref_info, and CONSTANT_InterfaceMethodref_info Structures
105
1
The CONSTANT_String_info Structure
106
1
The CONSTANT_Integer_info and CONSTANT_Float_info Structures
107
1
The CONSTANT_Long_info and CONSTANT_Double_info Structures
108
2
The CONSTANT_NameAndType_info Structure
110
1
The CONSTANT_Utf8_info Structure
110
2
Fields
112
2
Methods
114
3
Attributes
117
16
Defining and Naming New Attributes
118
1
The ConstantValue Attribute
119
1
The Code Attribute
120
3
The Exceptions Attribute
123
2
The InnerClasses Attribute
125
2
The Synthetic Attribute
127
1
The SourceFile Attribute
128
1
The LineNumberTable Attribute
129
1
The LocalVariableTable Attribute
130
2
The Deprecated Attribute
132
1
Constraints on Java Virtual Machine Code
133
7
Static Constraints
133
4
Structural Constraints
137
3
Verification of class Files
140
12
The Verification Process
141
2
The Bytecode Verifier
143
3
Values of Types long and double
146
1
Instance Initialization Methods and Newly Created Objects
147
1
Exception Handlers
148
1
Exceptions and finally
149
3
Limitations of the Java Virtual Machine
152
3
Loading, Linking, and Initializing
155
16
The Runtime Constant Pool
155
3
Virtual Machine Start-up
158
1
Creation and Loading
158
6
Loading Using the Bootstrap Class Loader
160
1
Loading Using a User-defined Class Loader
160
1
Creating Array Classes
161
1
Loading Constraints
162
1
Deriving a Class from a class File Representation
163
1
Linking
164
6
Verification
164
1
Preparation
165
1
Resolution
165
4
Access Control
169
1
Initialization
170
1
Binding Native Method Implementations
170
1
The Java Virtual Machine Instruction Set
171
192
Assumptions: The Meaning of ``Most''
171
1
Reserved Opcodes
172
1
Virtual Machine Errors
172
1
Format of Instruction Descriptions
172
191
Compiling for the Java Virtual Machine
363
34
Format of Examples
364
1
Use of Constants, Local Variables, and Control Constructs
365
4
Arithmetic
369
1
Accessing the Runtime Constant Pool
370
2
More Control Examples
372
3
Receiving Arguments
375
1
Invoking Methods
376
3
Working with Class Instances
379
2
Arrays
381
3
Compiling Switches
384
2
Operations on the Operand Stack
386
1
Throwing and Handling Exceptions
387
4
Compiling finally
391
3
Synchronization
394
2
Compiling Nested Classes and Interfaces
396
1
Threads and Locks
397
18
Terminology and Framework
397
2
Execution Order and Consistency
399
1
Rules About Variables
400
2
Nonatomic Treatment of double and long Variables
402
1
Rules About Locks
402
1
Rules About the Interaction of Locks and Variables
403
1
Rules for volatile Variables
404
1
Prescient Store Operations
404
1
Discussion
405
1
Example: Possible Swap
406
4
Example: Out-of-Order Writes
410
2
Threads
412
1
Locks and Synchronization
412
1
Wait Sets and Notification
413
2
Opcode Mnemonics by Opcode
415
4
Appendix: Summary of Clarifications and Amendments
419
12
Index
431