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

首先,OpenJDK等虛擬機實現非常復雜。對于初學者而言,很容易陷入代碼的海洋和不必要的細節之中。其次,OpenJDK等虛擬機大多用C++語言編寫。C++語言非常復雜,理解起來難度很大。最后,單純閱讀代碼比較乏味,缺少樂趣,而脫離代碼又很難透徹討論技術。通過自己動手編寫代碼,很好地避免了上述問題。看著自己實現的Java虛擬機功能逐漸增強,看到可以運行的Java程序越來越復雜,成就感非常強。總之,通過實踐的方式,相信讀者可以更深刻地領悟Java虛擬機的工作原理。
Go是Google公司于2012年推出的系統編程語言。從到硬件的距離來看,Go語言介于C和Java之間。Go的語法和C類似,但更加簡潔,因此很容易學習。Go語言內置了豐富的基本數據類型,并且支持結構體,所以很適合用來實現Java虛擬機。Go支持指針,但并不支持指針運算,因此用Go編寫的代碼要比C代碼更加安全。此外, Go還支持垃圾回收和接口等Java類語言中才有的功能,大大降低了實現Java虛擬機的難度。
以上是本書采用Go語言編寫Java虛擬機的原因,希望讀者在學習本書的過程中,可以喜歡上Go這門還很年輕的語言。
本書主要內容
全書一共分為11章,各章內容安排如下:
第1章:安裝開發環境,討論java命令,并編寫一個類似Java的命令行程序。
第2章:討論Java虛擬機如何搜索class文件,實現類路徑。
第3章:討論class文件結構,實現class文件解析。
第4章:討論運行時數據區,實現線程私有的運行時數據區,包括線程、Java虛擬機棧、棧幀、操作數棧和局部變量表等。
第5章:討論Java虛擬機指令集和解釋器,實現解釋器和150余條指令。
第6章:討論類、對象以及線程共享的運行時數據區,實現類加載器、方法區以及部分引用類指令。
第7章:討論方法調用和返回,實現方法調用和返回指令。
第8章:討論數組和字符串,實現數組相關指令和字符串池。
第9章:討論本地方法調用,實現Object.hashCode()等本地方法。
第10章:討論異常處理機制,實現athrow指令。
第11章:討論System類的初始化過程和System.out.println()的工作原理等,并對全書進行總結。
本書主要面向有一定經驗的Java程序員,但任何對Java虛擬機工作原理感興趣的讀者都可以從本書獲益。如前所述,本書將使用 Go語言實現Java虛擬機。書中會簡要介紹Go語言的部分語法以及與Java語言的區別,但不會深入討論。由于Go語言相對比較簡單,相信任何有C系列語言(如C、C++、C#、Objective-C、Java等)經驗的讀者都可以輕松讀懂書中的源代碼。
本書代碼經過精心調整,每一章(第1章除外)都建立在前一章的基礎上,但每一章又都可以單獨編譯和運行。本書內容主要圍繞代碼對Java虛擬機展開討論。讀者可以從第1章開始,按順序閱讀本書并運行每一章的源代碼,也可以直接跳到感興趣的章節閱讀,必要時再閱讀其他章節。
Java虛擬機非常復雜,要想真正理解它的工作原理,最好的方式就是自己動手寫一個。本書的目的就是帶領讀者按照Java虛擬機規范,從零開始,一步一步用Go語言實現一個功能逐步增強的 Java虛擬機。第1章將編寫一個類似java 的命令行工具,用它來啟動我們自己的虛擬機。在開始編寫代碼之前,需要先準備好開發環境。
- 虛擬機MicConOS開源分享
- vmware虛擬機使用教程資料免費下載 6次下載
- Java虛擬機參數調優 1次下載
- Dalvik虛擬機進程模型分析 10次下載
- 基于虛擬機負載高峰特征的虛擬機放置策略 0次下載
- 深入JAVA虛擬機 1次下載
- Java虛擬機基礎 0次下載
- 基于龍芯2號的Java虛擬機的移植與優化 25次下載
- 基于虛擬機技術的DSC仿真系統設計
- 虛擬機及虛擬化技術
- 使用開源軟件自己動手寫操作系統
- 微軟java虛擬機下載
- Java虛擬機向ARM平臺的移植
- Java虛擬機向ARM平臺的移植
- Java虛擬機介紹 0次下載
- 什么是虛擬機?什么是虛擬化? 3.6k次閱讀
- 什么是虛擬機?虛擬機真的那么好用嗎? 463次閱讀
- 什么是虛擬機?使用C代碼實現一個虛擬機 3.1k次閱讀
- OOM會導致JVM虛擬機退出嗎 1.3k次閱讀
- 詳解Java虛擬機的JVM內存布局 1.1k次閱讀
- 從Java入手如何了解虛擬機(VM) 1.8k次閱讀
- KVM虛擬機管理和基本使用 2.2k次閱讀
- 一文帶你了解虛擬機 5.4k次閱讀
- 虛擬機:Hadoop集群的搭建 3.8k次閱讀
- 虛擬機:Ubuntu的基本配置 3.6k次閱讀
- 虛擬機:QEMU虛擬機和主機無線網絡通訊設置 6.5k次閱讀
- 由淺入深的了解Java虛擬機 2.8k次閱讀
- 虛擬機和容器,你應該怎么選? 5k次閱讀
- Java內存區域分配、Java虛擬機棧、對象的訪問方式和GC 2.6k次閱讀
- 深入理解Java虛擬機-判斷對象存活狀態 1.7k次閱讀
下載排行
本周
- 1冷柜-電氣控制系統講解
- 13.68 MB | 4次下載 | 10 積分
- 2安川A1000變頻器中文版說明書
- 20.16 MB | 3次下載 | 3 積分
- 3直流電路的組成和基本定律
- 1.67 MB | 2次下載 | 免費
- 4丹佛斯2800系列變頻器說明書
- 8.00 MB | 1次下載 | 5 積分
- 5PC8011同步開關型降壓3.5A單節鋰電池充電管理電路技術手冊
- 0.74 MB | 1次下載 | 免費
- 6ES7243E+ES8311音頻錄制與播放電路資料
- 0.06 MB | 1次下載 | 5 積分
- 7SDM02 激光測距模塊產品手冊
- 0.43 MB | 1次下載 | 免費
- 8SDFM 激光測距模塊模組手冊
- 0.54 MB | 1次下載 | 免費
本月
- 1CH341編程器軟件NeoProgrammer_2.2.0.10
- 20.47 MB | 170次下載 | 1 積分
- 22025智能家居傳感器市場分析及創新應用
- 3.11 MB | 43次下載 | 免費
- 3RV1126B系列開發板產品資料
- 4.19 MB | 18次下載 | 免費
- 4CH341編程軟件下載
- 2.50 MB | 16次下載 | 5 積分
- 5全志系列-米爾基于T153核心板開發板 四核異構、3路千兆網,賦能多元化工業場景
- 3.05 MB | 12次下載 | 免費
- 6【開源】60余套STM32單片機、嵌入式Linux、物聯網、人工智能項目案例及入門學習資源包
- 10.55 MB | 8次下載 | 免費
- 7冷柜-電氣控制系統講解
- 13.68 MB | 4次下載 | 10 積分
- 8特斯拉MODEL S車載充電機主電路回路原理圖
- 0.81 MB | 4次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233094次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191448次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183356次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81604次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73824次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發燒友App





創作
發文章
發帖
提問
發資料
發視頻
上傳資料賺積分
評論