Java Virtual Machine Specification Java SE 8-zh
仅供交流学习,请勿用作商业用途
已翻译章节
翻译认领
- The Java® Virtual Machine Specification
- Table of Contents
- Preface to the Java SE 8 Edition
- 1. Introduction
-
1.1. A Bit of Historyylf-170728 -
1.2. The Java Virtual Machineylf-170730 -
1.3. Organization of the Specificationylf-170801 - 1.4. Notation
- 1.5. Feedback
- 2. The Structure of the Java Virtual Machine
- 2.1. The class File Format
- 2.2. Data Types
- 2.3. Primitive Types and Values
- 2.3.1. Integral Types and Values
- 2.3.2. Floating-Point Types, Value Sets, and Values
- 2.3.3. The returnAddress Type and Values
- 2.3.4. The boolean Type
- 2.4. Reference Types and Values
- 2.5. Run-Time Data Areas
- 2.5.1. The pc Register
- 2.5.2. Java Virtual Machine Stacks
- 2.5.3. Heap
- 2.5.4. Method Area
- 2.5.5. Run-Time Constant Pool
- 2.5.6. Native Method Stacks
- 2.6. Frames
- 2.6.1. Local Variables
- 2.6.2. Operand Stacks
- 2.6.3. Dynamic Linking
- 2.6.4. Normal Method Invocation Completion
- 2.6.5. Abrupt Method Invocation Completion
- 2.7. Representation of Objects
- 2.8. Floating-Point Arithmetic
- 2.8.1. Java Virtual Machine Floating-Point Arithmetic and IEEE 754
- 2.8.2. Floating-Point Modes
- 2.8.3. Value Set Conversion
- 2.9. Special Methods
- 2.10. Exceptions
- 2.11. Instruction Set Summary
- 2.11.1. Types and the Java Virtual Machine
- 2.11.2. Load and Store Instructions
- 2.11.3. Arithmetic Instructions
- 2.11.4. Type Conversion Instructions
- 2.11.5. Object Creation and Manipulation
- 2.11.6. Operand Stack Management Instructions
- 2.11.7. Control Transfer Instructions
- 2.11.8. Method Invocation and Return Instructions
- 2.11.9. Throwing Exceptions
- 2.11.10. Synchronization
- 2.12. Class Libraries
- 2.13. Public Design, Private Implementation
- 3. Compiling for the Java Virtual Machine
- 3.1. Format of Examples
- 3.2. Use of Constants, Local Variables, and Control Constructs
- 3.3. Arithmetic
- 3.4. Accessing the Run-Time Constant Pool
- 3.5. More Control Examples
- 3.6. Receiving Arguments
- 3.7. Invoking Methods
- 3.8. Working with Class Instances
- 3.9. Arrays
- 3.10. Compiling Switches
- 3.11. Operations on the Operand Stack
- 3.12. Throwing and Handling Exceptions
- 3.13. Compiling finally
- 3.14. Synchronization
- 3.15. Annotations
- 4. The class File Format
- 4.1. The ClassFile Structure
- 4.2. The Internal Form of Names
- 4.2.1. Binary Class and Interface Names
- 4.2.2. Unqualified Names
- 4.3. Descriptors
- 4.3.1. Grammar Notation
- 4.3.2. Field Descriptors
- 4.3.3. Method Descriptors
- 4.4. The Constant Pool
- 4.4.1. The CONSTANT_Class_info Structure
- 4.4.2. The CONSTANT_Fieldref_info, CONSTANT_Methodref_info, and CONSTANT_InterfaceMethodref_info Structures
- 4.4.3. The CONSTANT_String_info Structure
- 4.4.4. The CONSTANT_Integer_info and CONSTANT_Float_info Structures
- 4.4.5. The CONSTANT_Long_info and CONSTANT_Double_info Structures
- 4.4.6. The CONSTANT_NameAndType_info Structure
- 4.4.7. The CONSTANT_Utf8_info Structure
- 4.4.8. The CONSTANT_MethodHandle_info Structure
- 4.4.9. The CONSTANT_MethodType_info Structure
- 4.4.10. The CONSTANT_InvokeDynamic_info Structure
- 4.5. Fields
- 4.6. Methods
- 4.7. Attributes
- 4.7.1. Defining and Naming New Attributes
- 4.7.2. The ConstantValue Attribute
- 4.7.3. The Code Attribute
- 4.7.4. The StackMapTable Attribute
- 4.7.5. The Exceptions Attribute
- 4.7.6. The InnerClasses Attribute
- 4.7.7. The EnclosingMethod Attribute
- 4.7.8. The Synthetic Attribute
- 4.7.9. The Signature Attribute
- 4.7.9.1. Signatures
- 4.7.10. The SourceFile Attribute
- 4.7.11. The SourceDebugExtension Attribute
- 4.7.12. The LineNumberTable Attribute
- 4.7.13. The LocalVariableTable Attribute
- 4.7.14. The LocalVariableTypeTable Attribute
- 4.7.15. The Deprecated Attribute
- 4.7.16. The RuntimeVisibleAnnotations Attribute
- 4.7.16.1. The element_value structure
- 4.7.17. The RuntimeInvisibleAnnotations Attribute
- 4.7.18. The RuntimeVisibleParameterAnnotations Attribute
- 4.7.19. The RuntimeInvisibleParameterAnnotations Attribute
- 4.7.20. The RuntimeVisibleTypeAnnotations Attribute
- 4.7.20.1. The target_info union
- 4.7.20.2. The type_path structure
- 4.7.21. The RuntimeInvisibleTypeAnnotations Attribute
- 4.7.22. The AnnotationDefault Attribute
- 4.7.23. The BootstrapMethods Attribute
- 4.7.24. The MethodParameters Attribute
- 4.8. Format Checking
- 4.9. Constraints on Java Virtual Machine Code
- 4.9.1. Static Constraints
- 4.9.2. Structural Constraints
- 4.10. Verification of class Files
- 4.10.1. Verification by Type Checking
- 4.10.1.1. Accessors for Java Virtual Machine Artifacts
- 4.10.1.2. Verification Type System
- 4.10.1.3. Instruction Representation
- 4.10.1.4. Stack Map Frame Representation
- 4.10.1.5. Type Checking Abstract and Native Methods
- 4.10.1.6. Type Checking Methods with Code
- 4.10.1.7. Type Checking Load and Store Instructions
- 4.10.1.8. Type Checking for protected Members
- 4.10.1.9. Type Checking Instructions
- 4.10.2. Verification by Type Inference
- 4.10.2.1. The Process of Verification by Type Inference
- 4.10.2.2. The Bytecode Verifier
- 4.10.2.3. Values of Types long and double
- 4.10.2.4. Instance Initialization Methods and Newly Created Objects
- 4.10.2.5. Exceptions and finally
- 4.11. Limitations of the Java Virtual Machine
- 5. Loading, Linking, and Initializing
- 5.1. The Run-Time Constant Pool
- 5.2. Java Virtual Machine Startup
- 5.3. Creation and Loading
- 5.3.1. Loading Using the Bootstrap Class Loader
- 5.3.2. Loading Using a User-defined Class Loader
- 5.3.3. Creating Array Classes
- 5.3.4. Loading Constraints
- 5.3.5. Deriving a Class from a class File Representation
- 5.4. Linking
- 5.4.1. Verification
- 5.4.2. Preparation
- 5.4.3. Resolution
- 5.4.3.1. Class and Interface Resolution
- 5.4.3.2. Field Resolution
- 5.4.3.3. Method Resolution
- 5.4.3.4. Interface Method Resolution
- 5.4.3.5. Method Type and Method Handle Resolution
- 5.4.3.6. Call Site Specifier Resolution
- 5.4.4. Access Control
- 5.4.5. Overriding
- 5.5. Initialization
- 5.6. Binding Native Method Implementations
- 5.7. Java Virtual Machine Exit
- 6. The Java Virtual Machine Instruction Set
- 6.1. Assumptions: The Meaning of "Must"
- 6.2. Reserved Opcodes
- 6.3. Virtual Machine Errors
- 6.4. Format of Instruction Descriptions
- 6.5. Instructions
- 7. Opcode Mnemonics by Opcode