电子书:《自己动手写Java虚拟机》

[复制链接]
查看249 | 回复1 | 2020-1-2 07:51:02 | 显示全部楼层 |阅读模式

《自己动手写Java虚拟机》_1

《自己动手写Java虚拟机》_1

《自己动手写Java虚拟机》_2

《自己动手写Java虚拟机》_2

《自己动手写Java虚拟机》_3

《自己动手写Java虚拟机》_3


内容简介:

Java虚礼
Write Your Own Java Virtual Machine
图书在版编目(CIP)数据
自己动手写Java拟机/张秀宏著.一北京:机械工业出版社,2016.4
(Java核心技术系列
1.自…Ⅱ.张…Ⅱ,JAVA语言一程序设计N.TP312
中guo版本图书馆CIP数据核字(2016)第066610
自己动手写Java虚拟机
出版发行:机械工业出版社北東市西区百万庄大22号軍日:10087
责任编料:李艺
责任校对:股虹
印:三河市宏图印务有限公司
版次:2016年5月第1版第1次印利
开本:186mmx240mm1/16
印张:17,5
定价:69.00元
如有缺页、倒页,脱页,由本社发行部换
没热线
95259读者信箱:hit(ahzbook.com
版权所有·侵权必究
本书法律面间:北京大成律师事务所韩光/邻晓东
前言
为什么编写本书
Java语言于1995年首次公开发布,很快便取得了巨大的成功,成为使用最为广泛的
编程语言之一。到现在,Java已经经历了20多个年头。在这期间,无论是Java语言本身
还是Java虚拟机技术,都取得了长足的进步。现如今,Java依然长期占据TOBE网站
的编程语言排行榜首。最近更是被TOBE选为2015年度编程语言,风采可谓不减当年。
众所周知,Java早已不仅仅是一个单纯的语言、而是一个开放的平台。活跃在这
个平台之上的编程语言除了Java之外,还有 Groovy、 Scala、 Clojure、 Jython和
Jruby等。Java虚拟机则是支持这个平台的基石
市面上教授Java语言的书籍种类繁多,相比之下,介绍Java虚拟机的书籍却是风毛
麟角。这足以说明Java作为一门高级语言是多么成功(让程序员远离底层),但并不代表
Java虚拟机技术不重要。恰恰相反,当Java语言掌握到一定程度时,Java虚拟机原理自
然就会成为必须越过的一道鸿沟
近几年,guo内酒现出了一些讨论Java虚拟机技术的优秀书籍,这些书籍主要以分析
OPENJDK或 Oracle JDK为主。本书另辟蹊径,带领读者自己动手从零开始用Go语言绵写
这样做好处多,弥补了 OPENJDK等虚拟机的不足
首先, OPENJDK等虚拟机实现非常复杂。对于初学者而言,很容易陷入代码的海洋
Ghttp://www.tiobe.com/e
B Java曾被 TIOBE选为2005年度编程语言
Shttp://www.groovy-lang.org
ohttp://www.scala-lang.org/
Chttp://clojure.org
③hp/ wwwiython.org
Ghttp://jruby.ong
和不必要的细节之中。其次, Open JDK等虚拟机大多用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. hashcodeo等本地方法
第10章:讨论异常处理机制,实现 athrow指令
第11章:讨论 System类的初始化过程和 System. out println0的工作原理等,并对全
书进行总结
本书面向读者
本书主要面向有一定经验的Java程序员,但任何对Java虚拟机工作原理感兴趣的读
者都可以从本书获益。如前所述,本书将使用Go语言实现Java虚拟机。书中会简要介绍
Go语言的部分语法以及与va语言的区别,但不会深入讨论。由于Go语言相对比较简
单,相信任何有C系列语言(如C、C++、C#、 Objective-C、Java等)经验的读者都可以
轻松读懂书中的源代
如何阅读本书
本书代码经过精心调整,每一章(第1章除外)都建立在前一章的基础上,但每一章
又都可以单独编译和运行。本书内容主要围绕代码对Java虚拟机展开讨论。读者可以从第
1章开始,按顺序阅读本书并运行每一章的源代码,也可以直接跳到感兴趣的章节阅读
必要时再阅读其他章节。
参考资料
本书主要参考了下面这些资料
口《Java虚拟机规范》第8版
口《Java语言规范》第8版
口《深人Java虚拟机》(原书第2版)
其中(Jaa慮拟机规范》主要参考了第8版,但同时也参考了第7版和更老的版本
Java语言规范》则主要参考了第8版。读者可以从htp:/docs. oracle. com/javase/specs
index. html获取各个版本的(Java虚拟机规范》和《Java语言规范》。
笔者早在十年前还在上学时就读过由 Bill Venners著,曹晓钢等翻译的《深入Jva虚
拟机(原书第2版)》。但是由于当时水平有限,理解得并不是很深入。时隔十年,重读此
书还是颇有收获。较之《Java虚拟机规范》的严谨和刻板,该书更加通俗易懂。原书
者已经将部分章节放于网上,网址是htp:/www.artima.com/insidejvm/ed2,读者可以免
费阅读
以上是Java方面的资料。Go语言方面主要参考了Go官网上的各种资料,包括《如
e原书名为( Inside the Java Virtual Machine, Second Edition)


回复

使用道具 举报

泡沫之夏 | 2020-1-2 07:51:06 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则