如何自己動(dòng)手寫Java虛擬機(jī)《自己動(dòng)手寫Java虛擬機(jī)》電子教材免費(fèi)下載
資料介紹
Java語言于1995年首次公開發(fā)布,很快便取得了巨大的成功,成為使用最為廣泛的編程語言之一。到現(xiàn)在,Java已經(jīng)經(jīng)歷了20多個(gè)年頭。在這期間,無論是Java語言本身還是Java虛擬機(jī)技術(shù),都取得了長足的進(jìn)步?,F(xiàn)如今,Java依然長期占據(jù)TIOBE 網(wǎng)站的編程語言排行榜首。最近更是被TIOBE選為2015年度編程語言,風(fēng)采可謂不減當(dāng)年。
眾所周知,Java早已不僅僅是一個(gè)單純的語言,而是一個(gè)開放的平臺?;钴S在這個(gè)平臺之上的編程語言除了Java之外,還有 Groovy 、Scala 、Clojure 、Jython 和JRuby等。Java虛擬機(jī)則是支持這個(gè)平臺的基石。
市面上教授Java語言的書籍種類繁多,相比之下,介紹Java虛擬機(jī)的書籍卻是鳳毛麟角。這足以說明Java作為一門高級語言是多么成功(讓程序員遠(yuǎn)離底層),但并不代表Java虛擬機(jī)技術(shù)不重要。恰恰相反,當(dāng)Java語言掌握到一定程度時(shí),Java虛擬機(jī)原理自然就會成為必須越過的一道鴻溝。
近幾年,國內(nèi)涌現(xiàn)出了一些討論Java虛擬機(jī)技術(shù)的優(yōu)秀書籍,這些書籍主要以分析OpenJDK或Oracle JDK為主。本書另辟蹊徑,帶領(lǐng)讀者自己動(dòng)手從零開始用Go語言編寫Java虛擬機(jī)。這樣做好處頗多,彌補(bǔ)了OpenJDK等虛擬機(jī)的不足。

首先,OpenJDK等虛擬機(jī)實(shí)現(xiàn)非常復(fù)雜。對于初學(xué)者而言,很容易陷入代碼的海洋和不必要的細(xì)節(jié)之中。其次,OpenJDK等虛擬機(jī)大多用C++語言編寫。C++語言非常復(fù)雜,理解起來難度很大。最后,單純閱讀代碼比較乏味,缺少樂趣,而脫離代碼又很難透徹討論技術(shù)。通過自己動(dòng)手編寫代碼,很好地避免了上述問題??粗约簩?shí)現(xiàn)的Java虛擬機(jī)功能逐漸增強(qiáng),看到可以運(yùn)行的Java程序越來越復(fù)雜,成就感非常強(qiáng)??傊?,通過實(shí)踐的方式,相信讀者可以更深刻地領(lǐng)悟Java虛擬機(jī)的工作原理。
Go是Google公司于2012年推出的系統(tǒng)編程語言。從到硬件的距離來看,Go語言介于C和Java之間。Go的語法和C類似,但更加簡潔,因此很容易學(xué)習(xí)。Go語言內(nèi)置了豐富的基本數(shù)據(jù)類型,并且支持結(jié)構(gòu)體,所以很適合用來實(shí)現(xiàn)Java虛擬機(jī)。Go支持指針,但并不支持指針運(yùn)算,因此用Go編寫的代碼要比C代碼更加安全。此外, Go還支持垃圾回收和接口等Java類語言中才有的功能,大大降低了實(shí)現(xiàn)Java虛擬機(jī)的難度。
以上是本書采用Go語言編寫Java虛擬機(jī)的原因,希望讀者在學(xué)習(xí)本書的過程中,可以喜歡上Go這門還很年輕的語言。
本書主要內(nèi)容
全書一共分為11章,各章內(nèi)容安排如下:
第1章:安裝開發(fā)環(huán)境,討論java命令,并編寫一個(gè)類似Java的命令行程序。
第2章:討論Java虛擬機(jī)如何搜索class文件,實(shí)現(xiàn)類路徑。
第3章:討論class文件結(jié)構(gòu),實(shí)現(xiàn)class文件解析。
第4章:討論運(yùn)行時(shí)數(shù)據(jù)區(qū),實(shí)現(xiàn)線程私有的運(yùn)行時(shí)數(shù)據(jù)區(qū),包括線程、Java虛擬機(jī)棧、棧幀、操作數(shù)棧和局部變量表等。
第5章:討論Java虛擬機(jī)指令集和解釋器,實(shí)現(xiàn)解釋器和150余條指令。
第6章:討論類、對象以及線程共享的運(yùn)行時(shí)數(shù)據(jù)區(qū),實(shí)現(xiàn)類加載器、方法區(qū)以及部分引用類指令。
第7章:討論方法調(diào)用和返回,實(shí)現(xiàn)方法調(diào)用和返回指令。
第8章:討論數(shù)組和字符串,實(shí)現(xiàn)數(shù)組相關(guān)指令和字符串池。
第9章:討論本地方法調(diào)用,實(shí)現(xiàn)Object.hashCode()等本地方法。
第10章:討論異常處理機(jī)制,實(shí)現(xiàn)athrow指令。
第11章:討論System類的初始化過程和System.out.println()的工作原理等,并對全書進(jìn)行總結(jié)。
本書主要面向有一定經(jīng)驗(yàn)的Java程序員,但任何對Java虛擬機(jī)工作原理感興趣的讀者都可以從本書獲益。如前所述,本書將使用 Go語言實(shí)現(xiàn)Java虛擬機(jī)。書中會簡要介紹Go語言的部分語法以及與Java語言的區(qū)別,但不會深入討論。由于Go語言相對比較簡單,相信任何有C系列語言(如C、C++、C#、Objective-C、Java等)經(jīng)驗(yàn)的讀者都可以輕松讀懂書中的源代碼。
本書代碼經(jīng)過精心調(diào)整,每一章(第1章除外)都建立在前一章的基礎(chǔ)上,但每一章又都可以單獨(dú)編譯和運(yùn)行。本書內(nèi)容主要圍繞代碼對Java虛擬機(jī)展開討論。讀者可以從第1章開始,按順序閱讀本書并運(yùn)行每一章的源代碼,也可以直接跳到感興趣的章節(jié)閱讀,必要時(shí)再閱讀其他章節(jié)。
Java虛擬機(jī)非常復(fù)雜,要想真正理解它的工作原理,最好的方式就是自己動(dòng)手寫一個(gè)。本書的目的就是帶領(lǐng)讀者按照J(rèn)ava虛擬機(jī)規(guī)范,從零開始,一步一步用Go語言實(shí)現(xiàn)一個(gè)功能逐步增強(qiáng)的 Java虛擬機(jī)。第1章將編寫一個(gè)類似java 的命令行工具,用它來啟動(dòng)我們自己的虛擬機(jī)。在開始編寫代碼之前,需要先準(zhǔn)備好開發(fā)環(huán)境。
- 虛擬機(jī)MicConOS開源分享
- vmware虛擬機(jī)使用教程資料免費(fèi)下載 6次下載
- Java虛擬機(jī)參數(shù)調(diào)優(yōu) 1次下載
- Dalvik虛擬機(jī)進(jìn)程模型分析 10次下載
- 基于虛擬機(jī)負(fù)載高峰特征的虛擬機(jī)放置策略 0次下載
- 深入JAVA虛擬機(jī) 1次下載
- Java虛擬機(jī)基礎(chǔ) 0次下載
- 基于龍芯2號的Java虛擬機(jī)的移植與優(yōu)化 25次下載
- 基于虛擬機(jī)技術(shù)的DSC仿真系統(tǒng)設(shè)計(jì)
- 虛擬機(jī)及虛擬化技術(shù)
- 使用開源軟件自己動(dòng)手寫操作系統(tǒng)
- 微軟java虛擬機(jī)下載
- Java虛擬機(jī)向ARM平臺的移植
- Java虛擬機(jī)向ARM平臺的移植
- Java虛擬機(jī)介紹 0次下載
- 什么是虛擬機(jī)?什么是虛擬化? 3.6k次閱讀
- 什么是虛擬機(jī)?虛擬機(jī)真的那么好用嗎? 463次閱讀
- 什么是虛擬機(jī)?使用C代碼實(shí)現(xiàn)一個(gè)虛擬機(jī) 3.1k次閱讀
- OOM會導(dǎo)致JVM虛擬機(jī)退出嗎 1.3k次閱讀
- 詳解Java虛擬機(jī)的JVM內(nèi)存布局 1.1k次閱讀
- 從Java入手如何了解虛擬機(jī)(VM) 1.8k次閱讀
- KVM虛擬機(jī)管理和基本使用 2.2k次閱讀
- 一文帶你了解虛擬機(jī) 5.4k次閱讀
- 虛擬機(jī):Hadoop集群的搭建 3.8k次閱讀
- 虛擬機(jī):Ubuntu的基本配置 3.6k次閱讀
- 虛擬機(jī):QEMU虛擬機(jī)和主機(jī)無線網(wǎng)絡(luò)通訊設(shè)置 6.5k次閱讀
- 由淺入深的了解Java虛擬機(jī) 2.8k次閱讀
- 虛擬機(jī)和容器,你應(yīng)該怎么選? 5k次閱讀
- Java內(nèi)存區(qū)域分配、Java虛擬機(jī)棧、對象的訪問方式和GC 2.6k次閱讀
- 深入理解Java虛擬機(jī)-判斷對象存活狀態(tài) 1.7k次閱讀
下載排行
本周
- 1MDD品牌三極管BC807數(shù)據(jù)手冊
- 3.00 MB | 次下載 | 免費(fèi)
- 2MDD品牌三極管BC817數(shù)據(jù)手冊
- 2.51 MB | 次下載 | 免費(fèi)
- 3MDD品牌三極管D882數(shù)據(jù)手冊
- 3.49 MB | 次下載 | 免費(fèi)
- 4MDD品牌三極管MMBT2222A數(shù)據(jù)手冊
- 3.26 MB | 次下載 | 免費(fèi)
- 5MDD品牌三極管MMBTA56數(shù)據(jù)手冊
- 3.09 MB | 次下載 | 免費(fèi)
- 6MDD品牌三極管MMBTA92數(shù)據(jù)手冊
- 2.32 MB | 次下載 | 免費(fèi)
- 7STM32G474 HRTIME PWM 丟波問題分析與解決
- 1.00 MB | 次下載 | 3 積分
- 8新能源電動(dòng)汽車高壓線束的銅鋁連接解決方案
- 2.71 MB | 次下載 | 2 積分
本月
- 1愛華AIWA HS-J202維修手冊
- 3.34 MB | 37次下載 | 免費(fèi)
- 2NB-IoT芯片廠商的資料說明
- 0.31 MB | 22次下載 | 1 積分
- 3PC5502負(fù)載均流控制電路數(shù)據(jù)手冊
- 1.63 MB | 22次下載 | 免費(fèi)
- 4H110主板CPU PWM芯片ISL95858HRZ-T核心供電電路圖資料
- 0.63 MB | 6次下載 | 1 積分
- 5UWB653Pro USB口測距通信定位模塊規(guī)格書
- 838.47 KB | 5次下載 | 免費(fèi)
- 6技嘉H110主板IT8628E_BX IO電路圖資料
- 2.61 MB | 4次下載 | 1 積分
- 7蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
- 0.04 MB | 4次下載 | 1 積分
- 8蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
- 0.08 MB | 2次下載 | 1 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191439次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183353次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81602次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73822次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論