资料介绍
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次下载
- 什么是虚拟机?什么是虚拟化? 214次阅读
- 什么是虚拟机?虚拟机真的那么好用吗? 463次阅读
- 什么是虚拟机?使用C代码实现一个虚拟机 1156次阅读
- OOM会导致JVM虚拟机退出吗 648次阅读
- 详解Java虚拟机的JVM内存布局 434次阅读
- 从Java入手如何了解虚拟机(VM) 812次阅读
- KVM虚拟机管理和基本使用 1089次阅读
- 一文带你了解虚拟机 2643次阅读
- 虚拟机:Hadoop集群的配置 2689次阅读
- 虚拟机:Ubuntu的基本配置 2990次阅读
- 虚拟机:QEMU虚拟机和主机无线网络通讯设置 5280次阅读
- 由浅入深的了解Java虚拟机 2214次阅读
- 虚拟机和容器,你应该怎么选? 4465次阅读
- Java内存区域分配、Java虚拟机栈、对象的访问方式和GC 2234次阅读
- 深入理解Java虚拟机-判断对象存活状态 1202次阅读
下载排行
本周
- 1TPS54202H降压转换器评估模块用户指南
- 1.02MB | 7次下载 | 免费
- 2华瑞昇CR215芯片数字万用表原理图
- 0.21 MB | 1次下载 | 3 积分
- 3SMD LED选型目录 灯珠手册
- 5.36 MB | 1次下载 | 免费
- 4Tiva C系列DK-TM4C129X入门指南
- 1.69MB | 1次下载 | 免费
- 5电涌保护器(SPD)的选择、安装以及装配
- 4.57 MB | 1次下载 | 免费
- 6时源芯微EMC前车灯案例
- 458.59 KB | 1次下载 | 免费
- 7bq25890、bq25892双级联充电器EVM(PWR692)用户指南
- 2.02MB | 1次下载 | 免费
- 8TPS54426降压转换器评估模块用户指南
- 847.7KB | 次下载 | 免费
本月
- 1ADI高性能电源管理解决方案
- 2.43 MB | 156次下载 | 免费
- 22024PMIC市场洞察
- 2.23 MB | 63次下载 | 免费
- 3开关电源设计原理手册
- 1.83 MB | 30次下载 | 免费
- 4智能门锁原理图
- 0.39 MB | 28次下载 | 免费
- 5OAH0428最新规格书(中文)
- 2.52 MB | 15次下载 | 7 积分
- 6ST7789V2单芯片控制器/驱动器英文手册
- 3.07 MB | 9次下载 | 1 积分
- 7LTH7充电电路和锂电池升压5V输出电路原理图
- 0.04 MB | 7次下载 | 免费
- 8TPS54202H降压转换器评估模块用户指南
- 1.02MB | 7次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183334次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多