正文
JVM
虚拟机是通过软件模拟的具有完整硬件系统功能的运行在一个完全隔离环境中的完整计算机系统。
虚拟机包括JVM和VMWARE等。
前者是基于操作系统分出一块运行.class文件的区域,由操作系统给其分配内存和线程,其模拟Java字节码的指令集,解释执行.class文件译成cpu可执行的操作指令。
后者使用软件模拟物理cpu的指令集,其上模拟操作系统。
Java
1、JDK(Java开发工具)
2、JRE (Java运行环境)
3、JVM(.class运行的虚拟机)
JDK 包括 JRE,和Java 编译调试分析的工具,lib库。
JRE 包括 JVM,lib库。
JVM 运行.class文件。
Java文件通过javac命令编译成.class文件,通过java命令运行main线程,启动程序。
通过javap命令反编译.class文件。
启动流程
如图:
JVM 启动后是一个进程。
主要基本结构
-
类加载系统
-
运行时数据区(内存结构)
-
执行引擎
如图
上图后续会一一介绍。
拓展
JVM 是什么?
比如 计算机硬件为L0,对应可以直接使用的语言为机器语言为V0
操作系统可为L1,对应的汇编语言记为V1
那么JVM 就可以认为是L2,对应的.class语言记为V2
可是指令最终还是得由机器硬件执行,那么不同L之间的的语言V就需要相互转化,此时就需要通过L中的解释器或者编译器来联系。
但机器语言是不同的,所以JVM不跨平台,.class文件根据不同的JVM 生成不同的机器语言。