编译:
Java 源代码会先被 javac 编译为平台无关的字节码(.class)文件,这一步发生在程序运行之前

解释:
JVM 启动后由解释器逐条解释执行字节码
JVM 的解释器(Interpreter):

读一条字节码指令,现场翻译成机器码,立刻执行;不保存翻译结果。
字节码是中间码,不是当前操作系统 CPU 认识的机器码,JVM 一边读 .class 字节码,一边实时翻译再跑,这就是 Java 解释特性的体现。

编译型语言:在程序执行之前,整个源代码会被编译成目标平台的机器码,生产可执行文件,执行时直接运行编译后的代码,速度快,但是跨平台性较差(就比如 C++的 exe 在 macos 上面无法运行)

解释型语言:程序执行时,逐行解释源代码,不生成独立的可执行文件,但是执行满,跨平台好