JAVA平台无关系是如何实现的呢?

JAVA源码首先被编译成字节码(.class文件),然后再由不同平台的JVM进行解析,JAVA语言在不同的平台上运行时不需要重新编译,JAVA虚拟机在执行字节码的时候,把字节码转换成具体平台上的机器指令

为什么JVM不直接将源码解析成机器码去执行呢?

跨平台的特性:其次呢,也减少了运行源代码需要做的一些准备工作,比如每次编译时执行的语法语义检查,通过引入字节码,在不同平台上执行程序时,就不需要进行重复的校验等工作

兼容性:可以将其他基于JVM的语言(比如groovy)编译成字节码