Java如何实现平台无关性?
首先说无论是哪种语言,都需要经过操作系统和CPU来完成程序的运行。平台无关性指的是程序不会因为操作系统和处理器的不同而不能运行或者发生运行错误。而不同的CPU和OS组成的平台的机器指令是不同的。
C\C++等语言,需要先使用编译器将文件编译为可执行文件(源文件–>汇编语言代码–>目标文件(目标机器指令)),然后执行。由于编译过程中不同的CPU和OS组成的平台生成的可执行文件不同,所以同一份可执行文件在其他平台上运行可能会出错,不具备平台无关性。
Java之所以拥有平台无关性,是因为Java是一种半编译、半解释的语言。Java编译、运行的过程是:先由Java编译器将java源文件编译成平台无关的字节码文件(.class),然后由JRE(Java Runtime Environment)解释执行。Java编译器具有平台无关性,并且JRE封装了平台的差异性(不同的平台提供不同的JRE),所以同一份Java class文件,在各个平台都可以运行,所以说Java拥有平台无关性。
注:JRE由Java虚拟机、类库和一些核心文件组成;
JVM支持的其他语言
Scala,Kotlin,Ceylon,Xtend,Groovy,Clojure,Fantom等