以下所有的理解均是自己的理解,很可能不太准确,只是为了给自己学习虚拟机做个概念化的总结。
首先看下维基百科对JVM的解释:
Java虚拟机(英语:Java Virtual Machine,缩写为JVM),一种能够运行Java bytecode的虚拟机,以堆栈结构机器来进行实做。最早由太阳微系统所研发并实现第一个实现版本,是Java平台的一部分,能够运行以Java语言写作的软件程序。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。通过对中央处理器(CPU)所执行的软件实作,实现能执行编译过的Java程序码(Applet与应用程序)。
JVM 试运行在操作系统中,即JVM在操作系统的层面是个进程,进程又包含了若干线程。
操作系统是地球(承载生物的场所),JVM为地球上的单个生物人(进程),而人内部的部件有嘴巴,胃,排泄系统等部件组成可是?(线程)。
在JVM运行java程序时,我们需要JVM中的以下几个子系统,类加载器子系统, 执行引擎子系统和垃圾收集子系统(类似上文提到的嘴巴,胃,排泄系统)。
当我们JVM运行某一个编程语言时,类似人类嘴巴吃了某种食物class文件(类加载器子系统),食物被吃下去肯定要放在胃里消化吧(执行引擎子系统),等到消化完了需要排泄出体外(垃圾收集子系统)。
总之,JVM也是个程序,主要是由C编写而成,具体JVM可能实现的方法不同,但他们都遵循了Oracle(收购了SUN)公司提出的JVM规范。为编程语言能在不同的平台(操作系统)执行提供了转化的功能,把具体编程语言变成能在不同平台上运行而已!