JVM
- 系统虚拟机
 - 软件虚拟机
 

JVM是一种规范
JDK14:https://docs.oracle.com/javase/specs/jvms/se14/jvms14.pdf
常见JVM实现
- Hotspot
 - Jrockit
 - J9
 
越过操作系统的虚拟机:
- LiquidVM
 - azul zing
 
其他:
- Apache Harmony
 - Android Dalvik
 - Microsoft JVM
 
未来的趋势
- GraalVM:将这些语言的源代码(例如JavaScript)或源代码编译后的中间格式(例如LLVM字节码)通过解释器转换为能被Graal VM接受的中间表示
 - Graal编译器:新一代即时编译器
 - Native化:提前编译
 - 功能越来越多:监控 调试
 - 语法特性持续增强
 
JDK JRE JVM

JVM 体系结构

- 类加载器
 - 内存区
 - 执行引擎
 
基于栈的架构:
- 平台无关 不同的平台寄存器各不相同
 - 基于栈的寄存器指令更加紧凑
 
执行引擎的架构:

执行引擎的执行过程:

方法调用:
执行方法调用指令时 会创建一个新栈帧 这个栈帧会存储传递过来的参数
编译JDK
- 安装依赖库
 
apt install libfreetype6-dev
apt install libcups2-dev
apt install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
apt install libasound2-dev
apt install libffi-dev
apt install autoconf
- 准备一个目标JDK-1的bootstrap jdk
 
sudo apt-get install openjdk-11-jdk
- 编译前配置与检查
 
bash configure --enable-debug --with-jvm-variants=server
- 开始编译
 
make images