-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

自己動手寫Java虛擬機

( 簡體 字)
作者:張秀宏類別:1. -> 程式設計 -> JAVA -> Java
譯者:
出版社:機械工業出版社自己動手寫Java虛擬機 3dWoo書號: 44255
詢問書籍請說出此書號!

缺書
NT售價: 345

出版日:5/1/2016
頁數:267
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111534136
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

內容簡介:

本書將帶領讀者使用Go語言,從零開始打找造屬于我們自己的Java虛擬機實現。全書共分11章,從代碼和實戰的角度對class文件格式、運行時數據區域、指令集和解釋器、類和對象內部結構、方法調用和返回、異常處理等Java虛擬機核心概念進行了詳細討論。本書循序漸進,每一章都有可以獨立編譯和運行的代碼。通過實踐的方式,相信讀者可以更深刻地領悟Java虛擬機的工作原理。
目錄:

第1章 命令行工具 1

1.1 準備工作 1

1.1.1 安裝JDK 1

1.1.2 安裝Go 2

1.1.3 創建目錄結構 3

1.2 java命令 4

1.3 編寫命令行工具 5

1.4 測試本章代碼 7

1.5 本章小結 8

第2章 搜索class文件 9

2.1 類路徑 9

2.2 準備工作 10

2.3 實現類路徑 11

2.3.1 Entry接口 12

2.3.2 DirEntry 13

2.3.3 ZipEntry 14

2.3.4 CompositeEntry 15

2.3.5 WildcardEntry 17

2.3.6 Classpath 17

2.4 測試本章代碼 20

2.5 本章小結 21

第3章 解析class文件 23

3.1 class文件 24

3.2 解析class文件 25

3.2.1 讀取數據 26

3.2.2 整體結構 27

3.2.3 魔數 30

3.2.4 版本號 31

3.2.5 類訪問標志 32

3.2.6 類和超類索引 32

3.2.7 接口索引表 33

3.2.8 字段和方法表 33

3.3 解析常量池 35

3.3.1 ConstantPool結構體 35

3.3.2 ConstantInfo接口 37

3.3.3 CONSTANT_Integer_info 39

3.3.4 CONSTANT_Float_info 40

3.3.5 CONSTANT_Long_info 40

3.3.6 CONSTANT_Double_info 41

3.3.7 CONSTANT_Utf8_info 42

3.3.8 CONSTANT_String_info 43

3.3.9 CONSTANT_Class_info 45

3.3.10 CONSTANT_NameAnd-Type_info 46

3.3.11 CONSTANT_Fieldref_info、

 CONSTANT_Methodref_info和CONSTANT_Interface-Methodref_info 47

3.3.12 常量池小結 49

3.4 解析屬性表 50

3.4.1 AttributeInfo接口 50

3.4.2 Deprecated和Synthetic屬性 53

3.4.3 SourceFile屬性 54

3.4.4 ConstantValue屬性 55

3.4.5 Code屬性 56

3.4.6 Exceptions屬性 58

3.4.7 LineNumberTable和

 LocalVariableTable屬性 59

3.5 測試本章代碼 61

3.6 本章小結 63

第4章 運行時數據區 65

4.1 運行時數據區概述 66

4.2 數據類型 67

4.3 實現運行時數據區 68

4.3.1 線程 68

4.3.2 Java虛擬機棧 69

4.3.3 幀 71

4.3.4 局部變量表 72

4.3.5 操作數棧 74

4.3.6 局部變量表和操作數棧實例分析 76

4.4 測試本章代碼 81

4.5 本章小結 83

第5章 指令集和解釋器 85

5.1 字節碼和指令集 86

5.2 指令和指令解碼 88

5.2.1 Instruction接口 89

5.2.2 BytecodeReader 91

5.3 常量指令 92

5.3.1 nop指令 92

5.3.2 const系列指令 93

5.3.3 bipush和sipush指令 94

5.4 加載指令 94

5.5 存儲指令 95

5.6 棧指令 96

5.6.1 pop和pop2指令 96

5.6.2 dup指令 97

5.6.3 swap指令 98

5.7 數學指令 98

5.7.1 算術指令 98

5.7.2 位移指令 99

5.7.3 布爾運算指令 101

5.7.4 iinc指令 102

5.8 類型轉換指令 102

5.9 比較指令 103

5.9.1 lcmp指令 103

5.9.2 fcmp和dcmp指令 104

5.9.3 if指令 105

5.9.4 if_icmp指令 106

5.9.5 if_acmp指令 107

5.10 控制指令 108

5.10.1 goto指令 108

5.10.2 tableswitch指令 108

5.10.3 lookupswitch指令 110

5.11 擴展指令 111

5.11.1 wide指令 111

5.11.2 ifnull和ifnonnull指令 113

5.11.3 goto_w指令 113

5.12 解釋器 114

5.13 測試本章代碼 118

5.14 本章小結 120

第6章 類和對象 121

6.1 方法區 122

6.1.1 類信息 122

6.1.2 字段信息 124

6.1.3 方法信息 125

6.1.4 其他信息 127

6.2 運行時常量池 127

6.2.1 類符號引用 129

6.2.2 字段符號引用 130

6.2.3 方法符號引用 132

6.2.4 接口方法符號引用 132

6.3 類加載器 133

6.3.1 readClass() 134

6.3.2 defineClass() 135

6.3.3 link() 136

6.4 對象、實例變量和類變量 136

6.5 類和字段符號引用解析 141

6.5.1 類符號引用解析 141

6.5.2 字段符號引用解析 142

6.6 類和對象相關指令 144

6.6.1 new指令 144

6.6.2 putstatic和getstatic指令 146

6.6.3 putfield和getfield指令 148

6.6.4 instanceof和checkcast指令 150

6.6.5 ldc指令 154

6.7 測試本章代碼 156

6.8 本章小結 160

第7章 方法調用和返回 161

7.1 方法調用概述 161

7.2 解析方法符號引用 163

7.2.1 非接口方法符號引用 163

7.2.2 接口方法符號引用 165

7.3 方法調用和參數傳遞 166

7.4 返回指令 169

7.5 方法調用指令 170

7.5.1 invokestatic指令 170

7.5.2 invokespecial指令 170

7.5.3 invokevirtual指令 172

7.5.4 invokeinterface指令 174

7.6 改進解釋器 176

7.7 測試方法調用 178

7.8 類初始化 181

7.9 本章小結 185

第8章 數組和字符串 187

8.1 數組概述 187

8.2 數組實現 188

8.2.1 數組對象 188

8.2.2 數組類 190

8.2.3 加載數組類 191

8.3 數組相關指令 191

8.3.1 newarray指令 192

8.3.2 anewarray指令 194

8.3.3 arraylength指令 195

8.3.4 aload指令 196

8.3.5 astore指令 197

8.3.6 multianewarray指令 198

8.3.7 完善instanceof和checkcast指令 201

8.4 測試數組 203

8.5 字符串 204

8.5.1 字符串池 205

8.5.2 完善ldc指令 206

8.5.3 完善類加載器 207

8.6 測試字符串 207

8.7 本章小結 210

第9章 本地方法調用 211

9.1 注冊和查找本地方法 212

9.2 調用本地方法 213

9.3 反射 215

9.3.1 類和對象之間的關系 215

9.3.2 修改類加載器 217

9.3.3 基本類型的類 219

9.3.4 修改ldc指令 220

9.3.5 通過反射獲取類名 221

9.3.6 測試本節代碼 224

9.4 字符串拼接和String.intern()方法 225

9.4.1 Java類庫 225

9.4.2 System.arraycopy()方法 227

9.4.3 Float. floatToRawIntBits()和Double.doubleToRawLongBits()方法 229

9.4.4 String.intern()方法 229

9.4.5 測試本節代碼 230

9.5 Object.hashCode()、equals()和toString() 231

9.6 Object.clone() 233

9.7 自動裝箱和拆箱 235

9.8 本章小結 238

第10章 異常處理 239

10.1 異常處理概述 239

10.2 異常拋出 240

10.3 異常處理表 241

10.4 實現athrow指令 245

10.5 Java虛擬機棧信息 248

10.6 測試本章代碼 251

10.7 本章小結 252

第11章 結束 253

11.1 System類是如何被初始化的 253

11.2 初始化System類 255

11.3 System.out.println()是如何工作的 258

11.4 測試本章代碼 260

11.5 總結 260

附錄 指令表 263
序: