# Java 的运行原理
[TOC]
## 再谈跨平台性
![](https://img.kancloud.cn/df/0a/df0a7951eb13285a3a58010a754f63f3_885x474.png)
## 运行原理
![](https://img.kancloud.cn/5f/9b/5f9b4af4d4dcab3f0bd5d31a4517352d_2375x1066.png)
>[warning] 在Java中引入了虚拟机(JVM)的概念。
即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。
编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做**字节码(ByteCode)(class文件的内容)**,它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。
**Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。**