自己動手寫java虛擬機是一本以實戰(zhàn)模式描述JVM原理的書,由資深Java服務(wù)器開發(fā)工程師張秀宏編著,本書對JVM進行了大量研究,在書中深入淺出地分析了class文件的數(shù)據(jù)結(jié)構(gòu)和JVM的基本原理,并使用Go語言用不到1萬行的程序代碼就實現(xiàn)了JVM的基本模型,是Java愛好者了解JVM實現(xiàn)原理的一本好書。實戰(zhàn)才是最有效的掌握知識的手段,快快動手,實現(xiàn)屬于自己的Java虛擬機吧!
內(nèi)容介紹
《自己動手寫java虛擬機》是繼深入理解Java虛擬機之后的又一經(jīng)典著作,它一方面遵循Java虛擬機規(guī)范,一方面又獨辟蹊徑,不僅能讓Java虛擬機的學(xué)習(xí)變得更加簡單和有趣,而且能讓你對Java虛擬機的原理認(rèn)識更深入和更深刻!
全書書摒棄了傳統(tǒng)的以解讀枯燥的Java虛擬機規(guī)范文檔和分析繁瑣的Java虛擬機源代碼的方式來講解Java虛擬機,取而代之的是,以實踐的方式,引導(dǎo)讀者如何從零開始構(gòu)建和實現(xiàn)一個Java虛擬機,整個過程不僅能讓讀者做到對Java虛擬機知其然而且知其所以然,還能屏蔽大量不必要的繁瑣細節(jié),體會到實現(xiàn)過程中的成就感,讓學(xué)習(xí)過程更加輕松、愉悅和高效。更重要的是,這種方式能引導(dǎo)讀者更深入地認(rèn)識和掌握J(rèn)ava虛擬機的工作原理。
本書主要內(nèi)容
全書一共分為11章,各章內(nèi)容安排如下:
第1章:安裝開發(fā)環(huán)境,討論java命令,并編寫一個類似Java的命令行程序。
第2章:討論Java虛擬機如何搜索class文件,實現(xiàn)類路徑。
第3章:討論class文件結(jié)構(gòu),實現(xiàn)class文件解析。
第4章:討論運行時數(shù)據(jù)區(qū),實現(xiàn)線程私有的運行時數(shù)據(jù)區(qū),包括線程、Java虛擬機棧、棧幀、操作數(shù)棧和局部變量表等。
第5章:討論Java虛擬機指令集和解釋器,實現(xiàn)解釋器和150余條指令。
第6章:討論類、對象以及線程共享的運行時數(shù)據(jù)區(qū),實現(xiàn)類加載器、方法區(qū)以及部分引用類指令。
第7章:討論方法調(diào)用和返回,實現(xiàn)方法調(diào)用和返回指令。
第8章:討論數(shù)組和字符串,實現(xiàn)數(shù)組相關(guān)指令和字符串池。
第9章:討論本地方法調(diào)用,實現(xiàn)Object.hashCode()等本地方法。
第10章:討論異常處理機制,實現(xiàn)athrow指令。
第11章:討論System類的初始化過程和System.out.println()的工作原理等,并對全書進行總結(jié)。
自己動手寫java虛擬機章節(jié)目錄
前言
第1章 命令行工具 1
1.1 準(zhǔn)備工作 1
1.2 java命令 4
1.3 編寫命令行工具 5
1.4 測試本章代碼 7
1.5 本章小結(jié) 8
第2章 搜索class文件 9
2.1 類路徑 9
2.2 準(zhǔn)備工作 10
2.3 實現(xiàn)類路徑 11
2.4 測試本章代碼 20
2.5 本章小結(jié) 21
第3章 解析class文件 23
3.1 class文件 24
3.2 解析class文件 25
3.3 解析常量池 35
3.4 解析屬性表 50
3.5 測試本章代碼 61
3.6 本章小結(jié) 63
第4章 運行時數(shù)據(jù)區(qū) 65
4.1 運行時數(shù)據(jù)區(qū)概述 66
4.2 數(shù)據(jù)類型 67
4.3 實現(xiàn)運行時數(shù)據(jù)區(qū) 68
4.4 測試本章代碼 81
4.5 本章小結(jié) 83
第5章 指令集和解釋器 85
5.1 字節(jié)碼和指令集 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 數(shù)學(xué)指令 98
5.7.1 算術(shù)指令 98
5.7.2 位移指令 99
5.7.3 布爾運算指令 101
5.7.4 iinc指令 102
5.8 類型轉(zhuǎn)換指令 102
5.9 比較指令 103
5.10 控制指令 108
5.11 擴展指令 111
5.12 解釋器 114
5.13 測試本章代碼 118
5.14 本章小結(jié) 120
第6章 類和對象 121
6.1 方法區(qū) 122
6.2 運行時常量池 127
6.3 類加載器 133
6.4 對象、實例變量和類變量 136
6.5 類和字段符號引用解析 141
6.6 類和對象相關(guān)指令 144
6.7 測試本章代碼 156
6.8 本章小結(jié) 160
第7章 方法調(diào)用和返回 161
7.1 方法調(diào)用概述 161
7.2 解析方法符號引用 163
7.3 方法調(diào)用和參數(shù)傳遞 166
7.4 返回指令 169
7.5 方法調(diào)用指令 170
7.6 改進解釋器 176
7.7 測試方法調(diào)用 178
7.8 類初始化 181
7.9 本章小結(jié) 185
第8章 數(shù)組和字符串 187
8.1 數(shù)組概述 187
8.2 數(shù)組實現(xiàn) 188
8.3 數(shù)組相關(guān)指令 191
8.4 測試數(shù)組 203
8.5 字符串 204
8.6 測試字符串 207
8.7 本章小結(jié) 210
第9章 本地方法調(diào)用 211
9.1 注冊和查找本地方法 212
9.2 調(diào)用本地方法 213
9.3 反射 215
9.4 字符串拼接和String.intern()方法 225
9.5 Object.hashCode()、equals()和toString() 231
9.6 Object.clone() 233
9.7 自動裝箱和拆箱 235
9.8 本章小結(jié) 238
第10章 異常處理 239
10.1 異常處理概述 239
10.2 異常拋出 240
10.3 異常處理表 241
10.4 實現(xiàn)athrow指令 245
10.5 Java虛擬機棧信息 248
10.6 測試本章代碼 251
10.7 本章小結(jié) 252
第11章 結(jié)束 253
11.1 System類是如何被初始化的 253
11.2 初始化System類 255
11.3 System.out.println()是如何工作的 258
11.4 測試本章代碼 260
11.5 總結(jié) 260
附錄 指令表 263
- 下載地址
發(fā)表評論
0條評論軟件排行榜
熱門推薦
- 有柿電腦版 v11.6.284.23M / 簡體中文
- 南方Plus電腦版 v11.9.026.47M / 簡體中文
- 網(wǎng)易新聞電腦版 v113.197.68M / 簡體中文
- 瀟湘書院電腦版 v2.3.11.888官方版49.65M / 簡體中文
- 數(shù)據(jù)挖掘?qū)д?官方版61.61M / 簡體中文
- 吉利博瑞用戶手冊 pdf高清版57.89M / 簡體中文
- 未公開的Oracle數(shù)據(jù)庫秘密 迪貝斯pdf掃描版34.69M / 簡體中文
- docker入門實戰(zhàn) pdf完整版1.38M / 簡體中文
- Scala程序設(shè)計第二版 pdf高清完整版15.83M / 簡體中文
- C++黑客編程揭秘與防范第2版 冀云pdf掃描版54.58M / 簡體中文