《Java虛擬機規範(Java+SE+7)》是清華大學出版社出版的圖書,作者是Tim Lindholm Frank Yellin。
基本介紹
- 書名:Java虛擬機規範(Java+SE+7)
- 作者: Tim Lindholm Frank Yellin
- ISBN:730202365
- 出版社:清華大學出版社
圖書信息,圖書簡介,內容簡介,內容截圖,目錄,
圖書信息
譯者: 周志明
圖書分類: 軟體
資源格式: PDF
版本: 掃描版
發行時間: 2011年02月
地區: 大陸
語言: 簡體中文
圖書簡介
內容簡介
《Java虛擬機規範 (Java SE 7 中文版)》是一份根據《Java Virtual Machine Specification (Java SE 7)》翻譯的、非官方的、以Open Document形式發布的文檔。
本譯文由ItEye社區三位水友IcyFenix、wupuyuan、langyu合作完成,我們的翻譯工作完全基於技術研究目的,任何人也都可以在以技術研究為目的前提下任意閱讀、傳播、使用這份文檔。但沒有得到原文作者和譯者授權,不得用於商業出版。
《Java虛擬機規範》並非某一款虛擬機實現的說明書,它是一份保證各個公司的Java虛擬機實現具備統一外部接口的契約文檔,書中的概念和細節描述曾經與Sun的早期虛擬機的實現高度吻合,但是隨著技術的發展,高性能虛擬機真正的細節實現方式已經漸漸與虛擬機規範所描述的內容產生了越來越大的差距。
本譯文由ItEye社區三位水友IcyFenix、wupuyuan、langyu合作完成,我們的翻譯工作完全基於技術研究目的,任何人也都可以在以技術研究為目的前提下任意閱讀、傳播、使用這份文檔。但沒有得到原文作者和譯者授權,不得用於商業出版。
《Java虛擬機規範》並非某一款虛擬機實現的說明書,它是一份保證各個公司的Java虛擬機實現具備統一外部接口的契約文檔,書中的概念和細節描述曾經與Sun的早期虛擬機的實現高度吻合,但是隨著技術的發展,高性能虛擬機真正的細節實現方式已經漸漸與虛擬機規範所描述的內容產生了越來越大的差距。
內容截圖
目錄
Java虛擬機規範 (Java SE 7版)1
譯者序2
著作權聲明4
目錄8
前言14
第二版說明15
Java SE 7版說明15
第1章 引言18
1.1 簡史18
1.2 Java虛擬機18
1.3 各章節提要19
1.4 說明20
第2章 Java虛擬機結構21
2.1 Class檔案格式21
2.2 數據類型22
2.3 原始類型與值22
2.3.1 整型類型與整型值23
2.3.2 浮點類型、取值集合及浮點值24
2.3.3 returnAddress類型和值26
2.3.4 boolean類型26
2.4 引用類型與值27
2.5 運行時數據區27
2.5.1 PC暫存器28
2.5.2 Java虛擬機棧28
2.5.3 Java堆29
2.5.4 方法區29
2.5.5 運行時常量池30
2.5.6 本地方法棧30
2.6 棧幀31
2.6.1 局部變數表32
2.6.2 運算元棧33
2.6.3 動態連結34
2.6.4 方法正常調用完成34
2.6.5 方法異常調用完成34
2.7 對象的表示35
2.8 浮點算法35
2.8.1 Java虛擬機和IEEE 754中的浮點算法35
2.8.2 浮點模式36
2.8.3 數值集合轉換37
2.9 初始化方法的特殊命名38
2.10 異常38
2.11 位元組碼指令集簡介40
2.11.1 數據類型與Java虛擬機41
2.11.2 載入和存儲指令44
2.11.3 運算指令45
2.11.4 類型轉換指令46
2.11.5 對象創建與操作47
2.11.6 運算元棧管理指令48
2.11.7 控制轉移指令48
2.11.8 方法調用和返回指令49
2.11.9 拋出異常49
2.11.10 同步49
2.12 類庫50
2.13 公有設計,私有實現51
第3章 為JAVA虛擬機編譯53
3.1 示例的格式說明53
3.2 常量、局部變數的使用和控制結構54
3.3 算術運算58
3.4 訪問運行時常量池59
3.5 更多的控制結構示例61
3.6 接收參數64
3.7 方法調用64
3.8 使用類實例67
3.9 數組69
3.10 編譯switch語句71
3.11 使用運算元棧73
3.12 拋出異常和處理異常74
3.13 編譯finally語句塊78
3.14 同步81
3.15 註解82
第4章 Class檔案格式84
4.1 ClassFile結構85
4.2 各種內部表示名稱89
4.2.1 類和接口的二進制名稱90
4.2.2 非全限定名90
4.3 描述符和簽名91
4.3.1 語法符號91
4.3.2 欄位描述符92
4.3.3 方法描述符93
4.3.4 簽名94
4.4 常量池96
4.4.1 CONSTANT_Class_info結構97
4.4.2 CONSTANT_Fieldref_info, CONSTANT_Methodref_info和CONSTANT_InterfaceMethodref_info結構98
4.4.3 CONSTANT_String_info結構100
4.4.4 CONSTANT_Integer_info和CONSTANT_Float_info結構100
4.4.5 CONSTANT_Long_info和CONSTANT_Double_info結構102
4.4.6 CONSTANT_NameAndType_info結構103
4.4.7 CONSTANT_Utf8_info結構104
4.4.8 CONSTANT_MethodHandle_info結構105
4.4.9 CONSTANT_MethodType_info結構107
4.4.10 CONSTANT_InvokeDynamic_info結構107
4.5 欄位108
4.6 方法110
4.7 屬性113
4.7.1 自定義和命名新的屬性115
4.7.2 ConstantValue屬性116
4.7.3 Code屬性117
4.7.4 StackMapTable屬性120
4.7.5 Exceptions屬性126
4.7.6 InnerClasses屬性127
4.7.7 EnclosingMethod屬性130
4.7.8 Synthetic屬性131
4.7.9 Signature屬性132
4.7.10 SourceFile屬性132
4.7.11 SourceDebugExtension 屬性133
4.7.12 LineNumberTable屬性134
4.7.13 LocalVariableTable屬性135
4.7.14 LocalVariableTypeTable屬性137
4.7.15 Deprecated屬性139
4.7.16 RuntimeVisibleAnnotations屬性139
4.7.16.1 element_value結構141
4.7.17 RuntimeInvisibleAnnotations 屬性143
4.7.18 RuntimeVisibleParameterAnnotations屬性144
4.7.19 RuntimeInvisibleParameterAnnotations屬性146
4.7.20 AnnotationDefault屬性147
4.7.21 BootstrapMethods屬性148
4.8 格式檢查150
4.9 Java虛擬機代碼約束150
4.9.1 靜態約束150
4.9.2 結構化約束154
4.10 Class檔案校驗156
4.10.1 類型檢查驗證157
4.10.2 類型推導驗證158
4.10.2.1 類型推斷的驗證過程158
4.10.2.2 位元組碼驗證器158
4.10.2.3 long和double類型的值161
4.10.2.4 實例初始化方法與創建對象162
4.10.2.5 異常和finally163
4.11 Java虛擬機限制165
第5章 載入、連結與初始化167
5.1 運行時常量池167
5.2 虛擬機啟動170
5.3 創建和載入170
5.3.1 使用引導類載入器來載入類型172
5.3.2 使用用戶自定義類載入器來載入類型172
5.3.3 創建數組類173
5.3.4 載入限制174
5.3.5 從Class檔案中獲取類175
5.4 連結176
5.4.1 驗證176
5.4.2 準備177
5.4.3 解析178
5.4.3.1 類與接口解析179
5.4.3.2 欄位解析179
5.4.3.3 普通方法解析180
5.4.3.4 接口方法解析181
5.4.3.5 方法類型與方法句柄解析182
5.4.3.6 調用點限定符解析185
5.4.3 訪問控制185
5.4.5 方法覆蓋186
5.5 初始化187
5.6 綁定本地方法實現189
5.7 Java虛擬機退出189
第6章 Java虛擬機指令集190
6.1 設定:“必須”的含義190
6.2 保留操作碼190
6.3 虛擬機錯誤191
6.4 指令描述格式191
6.5 指令集描述193
第7章 操作碼助記符379
譯者序2
著作權聲明4
目錄8
前言14
第二版說明15
Java SE 7版說明15
第1章 引言18
1.1 簡史18
1.2 Java虛擬機18
1.3 各章節提要19
1.4 說明20
第2章 Java虛擬機結構21
2.1 Class檔案格式21
2.2 數據類型22
2.3 原始類型與值22
2.3.1 整型類型與整型值23
2.3.2 浮點類型、取值集合及浮點值24
2.3.3 returnAddress類型和值26
2.3.4 boolean類型26
2.4 引用類型與值27
2.5 運行時數據區27
2.5.1 PC暫存器28
2.5.2 Java虛擬機棧28
2.5.3 Java堆29
2.5.4 方法區29
2.5.5 運行時常量池30
2.5.6 本地方法棧30
2.6 棧幀31
2.6.1 局部變數表32
2.6.2 運算元棧33
2.6.3 動態連結34
2.6.4 方法正常調用完成34
2.6.5 方法異常調用完成34
2.7 對象的表示35
2.8 浮點算法35
2.8.1 Java虛擬機和IEEE 754中的浮點算法35
2.8.2 浮點模式36
2.8.3 數值集合轉換37
2.9 初始化方法的特殊命名38
2.10 異常38
2.11 位元組碼指令集簡介40
2.11.1 數據類型與Java虛擬機41
2.11.2 載入和存儲指令44
2.11.3 運算指令45
2.11.4 類型轉換指令46
2.11.5 對象創建與操作47
2.11.6 運算元棧管理指令48
2.11.7 控制轉移指令48
2.11.8 方法調用和返回指令49
2.11.9 拋出異常49
2.11.10 同步49
2.12 類庫50
2.13 公有設計,私有實現51
第3章 為JAVA虛擬機編譯53
3.1 示例的格式說明53
3.2 常量、局部變數的使用和控制結構54
3.3 算術運算58
3.4 訪問運行時常量池59
3.5 更多的控制結構示例61
3.6 接收參數64
3.7 方法調用64
3.8 使用類實例67
3.9 數組69
3.10 編譯switch語句71
3.11 使用運算元棧73
3.12 拋出異常和處理異常74
3.13 編譯finally語句塊78
3.14 同步81
3.15 註解82
第4章 Class檔案格式84
4.1 ClassFile結構85
4.2 各種內部表示名稱89
4.2.1 類和接口的二進制名稱90
4.2.2 非全限定名90
4.3 描述符和簽名91
4.3.1 語法符號91
4.3.2 欄位描述符92
4.3.3 方法描述符93
4.3.4 簽名94
4.4 常量池96
4.4.1 CONSTANT_Class_info結構97
4.4.2 CONSTANT_Fieldref_info, CONSTANT_Methodref_info和CONSTANT_InterfaceMethodref_info結構98
4.4.3 CONSTANT_String_info結構100
4.4.4 CONSTANT_Integer_info和CONSTANT_Float_info結構100
4.4.5 CONSTANT_Long_info和CONSTANT_Double_info結構102
4.4.6 CONSTANT_NameAndType_info結構103
4.4.7 CONSTANT_Utf8_info結構104
4.4.8 CONSTANT_MethodHandle_info結構105
4.4.9 CONSTANT_MethodType_info結構107
4.4.10 CONSTANT_InvokeDynamic_info結構107
4.5 欄位108
4.6 方法110
4.7 屬性113
4.7.1 自定義和命名新的屬性115
4.7.2 ConstantValue屬性116
4.7.3 Code屬性117
4.7.4 StackMapTable屬性120
4.7.5 Exceptions屬性126
4.7.6 InnerClasses屬性127
4.7.7 EnclosingMethod屬性130
4.7.8 Synthetic屬性131
4.7.9 Signature屬性132
4.7.10 SourceFile屬性132
4.7.11 SourceDebugExtension 屬性133
4.7.12 LineNumberTable屬性134
4.7.13 LocalVariableTable屬性135
4.7.14 LocalVariableTypeTable屬性137
4.7.15 Deprecated屬性139
4.7.16 RuntimeVisibleAnnotations屬性139
4.7.16.1 element_value結構141
4.7.17 RuntimeInvisibleAnnotations 屬性143
4.7.18 RuntimeVisibleParameterAnnotations屬性144
4.7.19 RuntimeInvisibleParameterAnnotations屬性146
4.7.20 AnnotationDefault屬性147
4.7.21 BootstrapMethods屬性148
4.8 格式檢查150
4.9 Java虛擬機代碼約束150
4.9.1 靜態約束150
4.9.2 結構化約束154
4.10 Class檔案校驗156
4.10.1 類型檢查驗證157
4.10.2 類型推導驗證158
4.10.2.1 類型推斷的驗證過程158
4.10.2.2 位元組碼驗證器158
4.10.2.3 long和double類型的值161
4.10.2.4 實例初始化方法與創建對象162
4.10.2.5 異常和finally163
4.11 Java虛擬機限制165
第5章 載入、連結與初始化167
5.1 運行時常量池167
5.2 虛擬機啟動170
5.3 創建和載入170
5.3.1 使用引導類載入器來載入類型172
5.3.2 使用用戶自定義類載入器來載入類型172
5.3.3 創建數組類173
5.3.4 載入限制174
5.3.5 從Class檔案中獲取類175
5.4 連結176
5.4.1 驗證176
5.4.2 準備177
5.4.3 解析178
5.4.3.1 類與接口解析179
5.4.3.2 欄位解析179
5.4.3.3 普通方法解析180
5.4.3.4 接口方法解析181
5.4.3.5 方法類型與方法句柄解析182
5.4.3.6 調用點限定符解析185
5.4.3 訪問控制185
5.4.5 方法覆蓋186
5.5 初始化187
5.6 綁定本地方法實現189
5.7 Java虛擬機退出189
第6章 Java虛擬機指令集190
6.1 設定:“必須”的含義190
6.2 保留操作碼190
6.3 虛擬機錯誤191
6.4 指令描述格式191
6.5 指令集描述193
第7章 操作碼助記符379