Java虚拟机
引言
Java的目标是跨平台,就是所谓的“一处编译、处处运行”,但是显然不同的运行环境需要的二进制代码是不一样的,怎么办呢?那就把源代码编译成针对一台抽象的计算机(虚拟机)的代码(.class文件),虚拟机对上的接口是一致的,让编译结果运行在虚拟机之上,再由这个虚拟机软件将程序转换成本地计算机所需的二进制代码。
JVM是什么
JVM是Java Virtual Machine的简写,它提供了一种基于设备的规范,是一台虚拟机,即虚构的计算机。
JVM屏蔽了具体操作系统平台的信息(显然,就像是我们在电脑上开了个虚拟机一样),当然,JVM执行字节码时实际上还是要解释成具体操作平台的机器指令的。
通过JVM,Java实现了平台无关性,Java语言在不同平台运行时不需要重新编译,只需要在该平台上部署JVM就可以了。因而能实现一次编译多处运行。(就像是你的虚拟机也可以在任何安了VMWare的系统上运行)
JRE、JDK和JVM
JRE
Java Runtime Environment,也就是JVM的运行平台,联系平时用的虚拟机,大概可以理解成JRE=虚拟机平台+虚拟机本体(JVM)。类似于你电脑上的VMWare+适用于VMWare的Ubuntu虚拟机。这样我们也就明白了JVM到底是个什么。
JDK
Java Develop Kit,Java的开发工具包,JDK本体也是Java程序,因此运行依赖于JRE,由于需要保持JDK的独立性与完整性,JDK的安装目录下通常也附有JRE。目前Oracle提供的Windows下的JDK安装工具会同时安装一个正常的JRE和隶属于JDK目录下的JRE。
JVM
JVM提供了屏蔽操作系统平台的一种机制,使得Java语言与操作系统进行了隔离,即实现了Java的跨平台特性,一处编译,多处执行
Java跨平台
因为Java程序是运行在JVM基础之上,所以各个操作系统只要有对应的Java虚拟机(JVM),即可使得符合JVM规范的字节码文件被JVM虚拟机所识别,从而实现支持多语言、跨平台特性
Java虚拟机是一种规范
Java语言从编码到执行