Java虛擬機規範(Java SE 8版)英文版

Java虛擬機規範(Java SE 8版)英文版

《Java虛擬機規範(Java SE 8版)英文版》是2016年4月電子工業出版社出版的圖書,作者是Tim Lindholm Gilad Bracha Alex Buckley。

內容簡介

《Java虛擬機規範(Java SE 8版)英文版》由Java虛擬機技術創建人撰寫。《Java虛擬機規範(Java SE 8版)英文版》全面而準確地闡釋了Java虛擬機各方面的細節,圍繞Java虛擬機整體架構、編譯器、class檔案格式、載入、連結與初始化、指令集等核心主題對Java虛擬機進行全面而深入的分析,深刻揭示Java虛擬機的工作原理。《Java虛擬機規範(Java SE 8版)英文版》中完整地講述了由Java SE 8所引入的新特性,例如對包含默認實現代碼的接口方法所做的調用,以及為支持類型註解及方法參數註解而對class檔案格式所做的擴展等,還闡明了class檔案中各屬性的含義及位元組碼驗證的規則。

《Java虛擬機規範(Java SE 8版)英文版》基於Java SE 8,完整且準確地闡述Java虛擬機規範,是深度了解Java虛擬機和Java語言實現細節的極佳選擇。

編輯推薦

通過本書你可以學到:

*闡釋Java虛擬機與Java的關係和發展歷程

*概覽Java虛擬機整體架構,包括class檔案格式、數據類型、原始類型、引用類型、運行時數據區、棧幀、浮點算法、異常等

*詳述如何將以Java語言編寫的程式轉換為Java虛擬機指令集,涉及常量、局部變數、控制結構、算術運算、參數接收、方法調用、數組、運算元棧、異常處理、同步與註解等

*深入分析用來表示編譯後的類和接口的class檔案格式,主要包括ClassFile檔案結構、描述符、常量池、欄位、方法、屬性、格式檢查、代碼約束與class檔案校驗等

*定義Java虛擬機啟動以及類和接口的載入、連結和初始化過程

*闡釋並列舉Java虛擬機指令集

內容提要

《Java虛擬機規範(Java SE 8版)英文版》由Java虛擬機技術創建人撰寫。《Java虛擬機規範(Java SE 8版)英文版》全面而準確地闡釋了Java虛擬機各方面的細節,圍繞Java虛擬機整體架構、編譯器、class檔案格式、載入、連結與初始化、指令集等核心主題對Java虛擬機進行全面而深入的分析,深刻揭示Java虛擬機的工作原理。《Java虛擬機規範(Java SE 8版)英文版》中完整地講述了由Java SE 8所引入的新特性,例如對包含默認實現代碼的接口方法所做的調用,以及為支持類型註解及方法參數註解而對class檔案格式所做的擴展等,還闡明了class檔案中各屬性的含義及位元組碼驗證的規則。

《Java虛擬機規範(Java SE 8版)英文版》基於Java SE 8,完整且準確地闡述Java虛擬機規範,是深度了解Java虛擬機和Java語言實現細節的極佳選擇。

目錄

1 Introduction

1.1 A Bit of History

1.2 The Java Virtual Machine

1.3 Organization of the Specification

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

mnemonic

6.5 Instructions

aaload

aastore

aconst_null

aload

aload_<n>

anewarray

areturn

arraylength

astore

astore_<n>

athrow

baload

bastore

bipush

caload

castore

checkcast

d2f

d2i

d2l

dadd

daload

dastore

dcmp<op>

dconst_<d>

ddiv

dload

dload_<n>

dmul

dneg

drem

dreturn

dstore

dstore_<n>

dsub

dup

dup_x1

dup_x2

dup2

dup2_x1

dup2_x2

f2d

f2i

f2l

fadd

faload

fastore

fcmp<op>

fconst_<f>

fdiv

fload

fload_<n>

fmul

fneg

frem

freturn

fstore

fstore_<n>

fsub

getfield

getstatic

goto

goto_w

i2b

i2c

i2d

i2f

i2l

i2s

iadd

iaload

iand

iastore

iconst_<i>

idiv

if_acmp<cond>

if_icmp<cond>

if<cond>

ifnonnull

ifnull

iinc

iload

iload_<n>

imul

ineg

instanceof

invokedynamic

invokeinterface

invokespecial

invokestatic

invokevirtual

ior

irem

ireturn

ishl

ishr

istore

istore_<n>

isub

iushr

ixor

jsr

jsr_w

l2d

l2f

l2i

ladd

laload

land

lastore

lcmp

lconst_<l>

ldc

ldc_w

ldc2_w

ldiv

lload

lload_<n>

lmul

lneg

lookupswitch

lor

lrem

lreturn

lshl

lshr

lstore

lstore_<n>

lsub

lushr

lxor

monitorenter

monitorexit

multianewarray

new

newarray

nop

pop

pop2

putfield

putstatic

ret

return

saload

sastore

sipush

swap

tableswitch

wide

7 Opcode Mnemonics by Opcode

Index

A Limited License Grant

相關詞條

熱門詞條

聯絡我們