Java虛擬機規範(Java SE7版) Java虚拟机规范(Java SE 7版)

Tim Lindholm, Frank Yellin, Gilad Bracha, Alex Buckley

買這商品的人也買了...

商品描述

<內容介紹>

《Java虛擬機規範(Java SE7版)》由林德霍爾姆著,是Java領域最重要和最權威的著作之一,由Oracle官方發布,基於Java SE 7,對最新的Java虛擬機規範進行了完整且詳細的講解,是深度瞭解Java虛擬機實現細節的必讀之作。由國內幾位資深的Java技術專家聯袂翻譯。
    《Java虛擬機規範(Java SE7版)》全書共7章,第1章從宏觀的角度介紹了Java虛擬機與Java的關係與發展歷程。第2章概覽了Java虛擬機整體架構,包括class文件格式、數據類型、原始類型、引用類型、運行時數據區、棧幀、浮點演算法、異常等,這對理解本書後面的內容有重要幫助。第3章詳述如何將Java語言編寫的程序轉換為Java虛擬機指令集,涉及常量、局部變量、控制結構、算術運算、參數接收、方法調用、數組、操作數棧異常處理、同步與註解等。第4章深入分析了用來表示編譯後的類和接口的class文件格式,主要包括ClassFile結構、描述符與簽名、常量池、字段、方法、屬性、代碼約束與class文件校驗等。第5章定義了Java虛擬機啟動以及類和接口的加載、鏈接和初始化過程。第6章闡釋並列舉了Java虛擬機指令集。第7章提供了一張以操作碼值為索引的Java虛擬機操作碼助記符表。

<章節目錄>

譯者序
前言
第2版前言
第1版前言
第1章  引言1
1.1  簡史1
1.2  Java虛擬機2
1.3  各章節摘要2
1.4  說明3
第2章  Java虛擬機結構4
2.1  class文件格式4
2.2  數據類型5
2.3  原始類型與值5
2.3.1  整數類型與整型值6
2.3.2  浮點類型、取值集合及浮點值6
2.3.3  returnAddress類型和值8
2.3.4  boolean類型8
2.4  引用類型與值9
2.5  運行時數據區9
2.5.1  pc寄存器9
2.5.2  Java虛擬機棧9
2.5.3  Java堆10
2.5.4  方法區11
2.5.5  運行時常量池11
2.5.6  本地方法棧11
2.6  棧幀12
2.6.1  局部變量表13
2.6.2  操作數棧13
2.6.3  動態鏈接14
2.6.4  方法正常調用完成14
2.6.5  方法異常調用完成15
2.7  對象的表示15
2.8  浮點演算法15
2.8.1  Java虛擬機和IEEE 754中的浮點演算法15
2.8.2  浮點模式16
2.8.3  數值集合轉換16
2.9  特殊方法17
2.10  異常18
2.11  字節碼指令集簡介20
2.11.1  數據類型與Java虛擬機21
2.11.2  加載和存儲指令23
2.11.3  算術指令23
2.11.4  類型轉換指令24
2.11.5  對象創建與操作26
2.11.6  操作數棧管理指令26
2.11.7  控制轉移指令27
2.11.8  方法調用和返回指令27
2.11.9  拋出異常28
2.11.10  同步28
2.12  類庫28

2.13  公有設計,私有實現29
第3章  Java虛擬機編譯器30
3.1  示例的格式說明30
3.2  常量、局部變量和控制結構的使用31
3.3  算術運算35
3.4  訪問運行時常量池35
3.5  更多控制結構示例36
3.6  接收參數39
3.7  方法調用39
3.8  使用類實例42
3.9  數組43
3.10  編譯switch語句45
3.11  使用操作數棧46
3.12  拋出異常和處理異常47
3.13  編譯finally語句塊50
3.14  同步53
3.15  註解54
第4章  class文件格式55
4.1  ClassFile結構56
4.2  各種內部表示名稱60
4.2.1  類和接口的二進制名稱60
4.2.2  非全限定名60
4.3  描述符和簽名61
4.3.1  語法符號61
4.3.2  字段描述符61
4.3.3  方法描述符63
4.3.4  簽名63
4.4  常量池66
4.4.1  CONSTANT_Class_info結構67
4.4.2  CONSTANT_Fieldref_info、CONSTANT_Methodref_info和CONSTANT_Interface Methodref_info結構67
4.4.3  CONSTANT_String_info結構69
4.4.4  CONSTANT_Integer_info和CONSTANT_Float_info結構69
4.4.5  CONSTANT_Long_info和CONSTANT_Double_info結構70
4.4.6  CONSTANT_NameAndType_info結構71
4.4.7  CONSTANT_Utf8_info結構72
4.4.8  CONSTANT_MethodHandle_info結構74
4.4.9  CONSTANT_MethodType_info結構74
4.4.10  CONSTANT_InvokeDynamic_info結構75
4.5  字段75
4.6  方法77
4.7  屬性80
4.7.1  自定義和命名新的屬性81
4.7.2  ConstantValue屬性81
4.7.3  Code屬性82
4.7.4  StackMapTable屬性85
4.7.5  Exceptions屬性91
4.7.6  InnerClasses屬性92
4.7.7  EnclosingMethod屬性94
4.7.8  Synthetic屬性94
4.7.9  Signature屬性95

4.7.10  SourceFile屬性96
4.7.11  SourceDebugExtension屬性96
4.7.12  LineNumberTable屬性97
4.7.13  LocalVariableTable屬性98
4.7.14  LocalVariableTypeTable屬性99
4.7.15  Deprecated屬性101
4.7.16  RuntimeVisibleAnnotations屬性101
4.7.17  RuntimeInvisible Annotations屬性105
4.7.18  RuntimeVisibleParameter Annotations屬性106
4.7.19  RuntimeInvisibleParameter Annotations屬性107
4.7.20  AnnotationDefault屬性108
4.7.21  BootstrapMethods屬性108
4.8  格式檢查110
4.9  Java虛擬機代碼約束110
4.9.1  靜態約束110
4.9.2  結構化約束113
4.10  class文件校驗115
4.10.1  類型檢查驗證116
4.10.2  類型推導驗證178
4.11  Java虛擬機限制184
第5章  加載、鏈接與初始化186
5.1  運行時常量池186
5.2  虛擬機啟動188
5.3  創建和加載188
5.3.1  使用引導類加載器來加載類型190
5.3.2  使用用戶自定義類加載器來加載類型190
5.3.3  創建數組類191
5.3.4  加載限制191
5.3.5  從class文件表示得到類192
5.4  鏈接193
5.4.1  驗證194
5.4.2  準備194
5.4.3  解析195
5.4.4  訪問控制201
5.4.5  方法覆蓋201
5.5  初始化202
5.6  綁定本地方法實現203
5.7  Java虛擬機退出203
第6章  Java虛擬機指令集204
6.1  設定:「必須」的含義204
6.2  保留操作碼204
6.3  虛擬機錯誤205
6.4  指令描述格式205
6.5  指令集描述207
第7章  操作碼助記符293
附錄A  Limited License Grant300