虚拟机设计与实现是计算机科学中最古老、最成熟,也是应用最广泛的课题之一。许多通用性和领域性程序设计语言都使用某种与体系结构无关的中间语言格式作为编译目标,该中间语言在虚拟机上运行,因此虚拟机设计和实现就成为了支撑这类语言构建软件系统的关键与基础,而深入理解和掌握虚拟机设计和实现的基本原理和技术,也成为程序员必备的重要知识和技能。
但是,虚拟机的设计与实现所涉及的知识体系广而繁杂,和计算机科学的许多学科分支,如算法设计分析、程序设计语言、编译器、体系结构等,都有密切联系,并且,现代虚拟机已经发展得非常复杂,其中包含很多编程技巧和各种优化方法。虚拟机设计和实现的这些特点给初学者带来了很多困难:一方面,以小型的教学虚拟机入手研究,难以看到虚拟机设计与实现的全貌;另一方面,研究和学习工业级的虚拟机实现,又容易陷入繁复的实现细节。
- 本书由国内编译器和虚拟机方面的资深研究者执笔,详细介绍了Java虚拟机设计与实现的各个方面,并给出了相关算法的实现。全书围绕虚拟机架构,讨论了虚拟机中的所有重要组件,包括类加载器、执行引擎、本地方法接口、异常处理、堆和垃圾收集、多线程及调试。
- 本书不仅关注对技术本身的介绍,还重点强调了这些技术所涉及的知识对读者进一步掌握工具和提高软件设计水平的重要作用,并给出了丰富的示例和最佳实践。
- 本书适合Java程序员、对编译器和虚拟机底层技术感兴趣的工程人员,以及高等院校计算机相关专业的学生阅读。
本书内容
本书分为八个章节
如果你想学好JAVA这门技术,也想在IT行业拿高薪,可以进来看看 ,群里有:Java工程化、高性能及分布式、高性能、深入浅出。高架构。JVM性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点。
如果你想拿高薪的,想学习的,想就业前景好的,想跟别人竞争能取得优势的,想进阿里面试但担心面试不过的,你都可以来,BAT面试题:1000+BAT面试题资料汇总
第1章介绍Java虚拟机的整体架构。本章还讨论了一个简单的源语言——J语言,其中包括对J语言语法、栈式计算机、J字节码等方面的讲解,阐述了该源语言的程序从编译、加载到解释执行的整个过程,让读者对高级语言编译、字节码虚拟指令集、解释执行等虚拟机里的重要概念有一个全局的了解,也为后续章节中对Java虚拟机的深入讨论奠定基础。
第⒉章讨论了虚拟机类加载器的实现,主要内容有类的二进制定义、虚拟机方法区的设计,以及类加载的过程,包括类装载算法、类的验证、类的准备、类的解析、类的初始化和这些阶段的执行顺序。最后,本章还讨论了自定义类加载器的实现技术,并给出了自定义类加载器的两个典型应用:动态代理和热替换。
第3章讨论了执行引擎的设计与实现。主要内容包括:Java运行栈的组织与数据结构设计、Java方法调用规范与参数传递、Java字节码执行引擎等。本章还简要讨论了本地方法执行引擎和可重入函数,以及一种常用的执行引擎实现加速技术——汇编模板。
第4章讨论了本地方法接口的实现技术。本章首先介绍了Java提供的标准本地方法接口(Java Native Interface,JNI),用于支持Java 代码和本地代码的相互调用,然后讨论了二进制文件的加载、方法的静态注册和动态注册、本地方法的拦截,以及本地方法回调Java方法的技术。
第5章讨论了异常处理的实现方法和技术。本章首先给出了异常处理的两种最常用的实现技术——异常栈和异常表,讨论了这两种实现方式的优缺点,然后重点讨论了Java中使用的基于异常表的异常处理实现技术,包括异常表数据结构、栈回滚、本地方法异常等,最后讨论了异常处理中的一些其他重要问题,包括隐式异常、异常处理与多线程,以及异常的运行效率。
第六章讨论了堆和垃圾回收。Java不支持动态内存得手工回收,而必须使用自动机制。本章讨论了Java堆数据结构,堆分配接口,对象得储存布局,并重点前讲解了基于Cheney算法的复制收集算法,另外,也介绍了和Java程序密切相关的根节点标记算法、终结和垃圾收集的触发机制。本章还讨论了对Java程序进行垃圾收集的一些关键问题,包括本地方法和垃圾收集、多线程与垃圾收集、无中断垃圾收集和类型标记等。
第7章讨论了多线程的实现技术。本章的主要内容有三个方面:第一,Java多线程的语义模型,包括线程库中的主要线程方法、线程状态及线程中断;第二,管程的实现,包括管程数据结构、管程操作的接口与实现、管程与对象等;第三,多线程的实现,包括线程数据结构、创建线程对象、线程操作接口的支持等。本章还讨论了多线程与虚拟机其他子系统之间的交互。
第8章讨论了Java调试技术及其实现。本章内容包括Java调试器的整体架构、虚拟机端调试代理的设计与实现,以及Java调试在可调试性和安全性方面的问题。
如果你想学好JAVA这门技术,也想在IT行业拿高薪,可以进来看看 ,群里有:Java工程化、高性能及分布式、高性能、深入浅出。高架构。JVM性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点。
如果你想拿高薪的,想学习的,想就业前景好的,想跟别人竞争能取得优势的,想进阿里面试但担心面试不过的,你都可以来,BAT面试题:1000+BAT面试题资料汇总
看完三件事❤️
如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
-
点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
-
关注公众号 『 java烂猪皮 』,不定期分享原创知识。
-
同时可以期待后续文章ing🚀