首先,Java是平台独立的,Java编译器在编译的时候会生成字节码,然后由Java虚拟机(Java Virtual Machine)来负责把字节码转换为机器语言。JVM是Java运行时环境的一部分,它是提供驱动Java代码或者应用程序的引擎。
那么什么是Java虚拟机呢?
JVM是用软件模拟出来的虚拟计算机,用于执行Java程序编译出来的字节码,它有一套非常严格的技术规范,是Java跨平台的基础。Java虚拟机有自己完整的虚拟硬件构架,比如处理器,堆栈,寄存器等等,还具有相应的指令系统。它隐藏了实际操作系统和平台相关的信息,从而做到了字节码可以在不同平台上不需要修改地运行。
JVM可以有不同的实现,实现者可以选择自己不同的算法,但是都要遵循Java虚拟机规范。其中甲骨文(oracle)公司提供的JVM是最有名也是使用最多的。