Java 为什么可以跨平台
Java 能够实现跨平台,核心原理一句话概括:一次编译,到处运行,依靠字节码与 JVM 实现平台解耦。
编译阶段
Java 源代码(.java文件)通过javac编译器编译,不会直接生成当前操作系统的原生机器码,而是生成一种与硬件、操作系统无关的中间代码 ——字节码(.class文件)**。同一份源码编译出来的字节码文件是统一的,不受操作系统影响。运行阶段
字节码本身不能直接在 CPU 上执行,需要 Java 虚拟机(JVM)来解释 / 执行。不同操作系统(Windows、Linux、macOS)提供对应版本的 JVM。JVM 是适配当前平台的,它负责把统一的字节码转换成当前系统可识别的机器指令。
> 注意:JVM 本身不是跨平台的,每个平台有专属 JVM;跨平台的是 Java 字节码。
简单来说,源码编译出通用字节码,各个平台安装对应 JVM,负责将字节码翻译成本地指令,因此一份 class 文件可以在多个平台运行。