定义
Java Vritual Machine -java程序的运行环境(java二进制字节码的运行环境)
是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。类似于一台小电脑运行在windows或者linux这些操作系统环境下。它直接和操作系统进行交互,与硬件不直接交互,可以帮我们完成和硬件进行交互的工作。
优点
- 一次编写,到处运行
JVM屏蔽了字节码和底层操作之间的联系。
- 自动内存管理,垃圾回收功能
当时的竞争对手主要是c/c++,然而这两种语言没有垃圾回收功能,需要手动回收,繁琐且容易出错。
(补充)
- 数组下标越界检查
如果没有该功能,当数组越界时,可能会覆盖其他关联的存储空间,后果很严重。
- 多态(面向对象的基石)
JVM,JRE,JDK
有两个概念和JVM息息相关并且很容易搞混,那就是JRE和JDK。
其中JRE(JavaRuntimeEnvironment,Java运行环境),指的是Java平台。所有的Java 程序都要在JRE下才能运行。普通用户运行已开发好的java程序,只要安装JRE即可。
而JDK(JavaDevelopmentKit)是程序开发者用来来编译、调试java程序用的开发工具包。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。
JVM是JRE的一部分。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。