首页 技术 正文
技术 2022年11月20日
0 收藏 545 点赞 4,492 浏览 1238 个字

我们花了几天的时间来阅读《Java虚拟机规范》,了解要实现一个虚拟机应该包括什么内容。通过这么一次阅读,我们大致了解了虚拟机规范的内容。

  • 第1章。对Java虚拟机进行了一些简单的介绍。
  • 第2章。介绍了虚拟机的结构,以及一些异常体系以及字节码指令集。可以说是规范的重点内容。
  • 第3章。介绍了编译器是如何将Java源代码编译成JVM所需要的字节码的,如何去阅读这些字节码指令。
  • 第4章。这一章针对字节码文件的格式做了详细的讲解,让我们了解字节码里的每一个字节的作用。
  • 第5章。这一章对JVM是如何启动、加载以及初始化字节码做了详细的描述。
  • 第6章。这一章节介绍了虚拟机指令集的相关知识,对虚拟机指令集的每个指令做了详细的介绍,可以当成工具书来查询使用。

通过这么一个介绍,我们可以知道第2、3、4、5章节是重点。这些章节中的Java虚拟机结构、字节码文件格式、JVM加载过程是重点,读完之后至少要弄懂这些过程。

读完这份规范,也有许多不懂的地方,例如:

  • 第3章中,将Java代码编译成字节码指令集,几乎每一章节都有对应的Java代码和字节码的对照。这需要我们耐心地一个个指令去查询和理解,这部分我在阅读的时候也是简单略过。这是后期的学习重点。
  • 本文其他部分也有不少关乎数学的严谨描述,这部分我也只是粗略扫过。这也是后期进一步学习需要加强的。

简单地说,通过阅读《Java虚拟机规范》,我从官方渠道验证了之前的一些猜想。例如:

  • JVM 就是一个虚拟机的机器,与正常的PC一样,其有内存也有指令集。
  • 准备阶段,虚拟机不执行任何字节码指令,而知识为类或接口的静态字段分配空间,并用默认值初始化这些字段。
  • boolean类型在JVM中的实现,是通过int类型来实现的。在JVM中,是没有boolean类型这一数据类型的。
  • 等等

很多时候我们会被网络上许多知识点的解释迷惑,不知道哪个说的是正确的。这个时候就需要我们去找到官方的消息渠道。而对于虚拟机来说,《Java虚拟机规范》就是这样一个官方的消息,在规范中所说的就是绝对正确的消息来源。所以说阅读《Java虚拟机规范》才显得尤为重要。

通过这一次阅读,我验证了不少之前留存下来的疑惑,也新增了不少新的疑惑。但我相信这一次阅读将会给我带来很大的积极影响,下次当我遇到虚拟机模棱两可的问题时,我会优先查找规范中的解释,之后再去参考其他的。这可以说是一种更为有效的学习方式。

如果你还没有阅读过,那么你可以跟着这个系列,与我一起阅读。也与我一样,在阅读中写下自己的想法。随着更多人能读完这本规范,我相信也有更多不同的想法蹦出,通过彼此交流,我们定能够理解得更加深刻。

JVM规范系列文章目录

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,000
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,512
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,358
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,141
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,771
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,849