我们都知道JVM并不能直接运行Java源文件,而是程序猿通过JDK提供的javac
命令将Java源文件编译成.class
二进制文件,
然后供JVM加载并使用,也就是说class文件其实是程序猿和JVM之间交互的媒介,相当于介于用户和Linux内核之间的shell。
一个class文件完整地描述了Java源文件的各种信息,Oracle JVM规范中的4.1 The ClassFile Structure 详细定义了一个标准class文件的结构
Read More>>我们都知道JVM并不能直接运行Java源文件,而是程序猿通过JDK提供的javac
命令将Java源文件编译成.class
二进制文件,
然后供JVM加载并使用,也就是说class文件其实是程序猿和JVM之间交互的媒介,相当于介于用户和Linux内核之间的shell。
一个class文件完整地描述了Java源文件的各种信息,Oracle JVM规范中的4.1 The ClassFile Structure 详细定义了一个标准class文件的结构
Read More>>前面文章已经介绍了如何在Mac上编译OpenJDK10源码,拥有了自己的JDK版本,
为了深入了解Java实例的创建、初始化和执行流程以及内部实现原理,DEBUG是必不可少的必杀技。
所以,本篇文章继续介绍在Mac上搭建OpenJDK10源码调试环境,黑喂狗。
Read More>>博主在11年到12年的时候曾连续研究过十个月的JVM,读过的相关书籍包括:
深入Java虚拟机 这本书可以说是介绍JVM内部原理的鼻祖了,于2003年出版现已绝版,不过可以再某宝买到影印版。虽然当时JDK最高仅为1.4但JVM内部的构造已大体形成,所以博主强烈推荐此书。p.s 我肯定不会告诉你这书博主看了3遍:D
深入理解Java虚拟机 国内周某人写的,鉴于博主对于国人写的书向来不怎么感兴趣还是不提了。
之前的研究基本上都是虚拟机规范和JVM参数调优层面的内容,但是总觉得有些意犹未尽所以决定深入研究一下Hotspot实现, 由大部分C/C++和少量汇编代码构成,但清晰的结构和优雅的编码使其并不难读,不得不赞叹一句SUN的大师们的智慧。 今天就从编译OpenJDK开始我们的《JVM源码探秘》系列文章之旅。
Read More>>