要知道java虚拟机是什么,从虚拟机定义开始:虚拟机是模拟某种计算机体系结构,用来执行某种特定指令集的软件。
虚拟机分成系统虚拟机(VM ware 、Virtual box)和进程虚拟机(adobe flash player 、JVM等等),如果进一步细分,再加上高级语言的筛选,就有jvm、.net ClR 。
怎样才算是JVM ?
要成为jvm,要通过java tck(technology compatibility kit)的兼容测试的java语言虚拟机才能成为jvm。
Java被称为平台无关的编程语言是由于JRE 中JVM 的功能,关于为什么能一次编译,到处运行(首先的要求是计算机装有JVM),首先,编译分成两步:1、由java源代码生成字节码文件;2、JVM解析字节码,通过类加载等一系列步骤,把字节码文件“翻译”成本地可以执行的代码。因为JVM只认字节码文件,与java程序无关,在编译时,把java源码编译成字节码文件,然后在(当前平台的)JVM中生成本地代码[为什么是当前平台呢?因为不同操作系统某些指令有不同的表现方式]。在这里需要注意的是,由于在JRE中生成的字节码文件,所以为了更好的确保“一次编译,到处运行”,最好使用同样版本的JRE ,否则可能会出现不兼容的现象(比如说在jdk1.5中生成的字节码,并且使用了泛型等新特性,但是在其他机器上使用jdk1.4来执行该字节码文件)。
参考资料:
Java 虚拟机和 Java 内存区域概述