# 跨平台特性 1. java语言和其他编程语言在本质上没什么区别; 2. java的跨平台特性与Java虚拟机的存在密不可分; 3. Java程序从源代码到运行的三个阶段:编码——编译——运行——调试; 4. Java在编译阶段则体现了跨平台的特点 `并不是说Java语言可以跨平台,而是在不同的平台都有可以让Java语言运行的环境` > 编译过程大概是这样的: > 1、首先是javac将Java源代码转化成.CLASS文件字节码,这是第一次编译(.class文件就是可以到处运行的文件); > 2、然后Java字节码会被转化为目标机器代码,这是由JVM来执行的,即Java的第二次编译。 ***** # 解析和编译运行方式并存 1. 解析:.class文件经过JVM内嵌的解析器解析执行 2. 编译:存在JIT编译器(Just In Time Compile 即时编译器)把经常运行的代码作为"热点代码"编译与本地平台相关的机器码,并进行各种层次的优化 3. AOT编译器: Java 9提供的直接将所有代码编译成机器码执行 > 在编译时,Java源代码经过Javac编译成.class文件 > 在运行时,经JVM解析或编译运行(JVM 会通过类加载器(Class-Loader)加载.class文件,解释或者编译执行)