Java是如何实现跨平台的?原理是什么?
在众多Java语言的书籍上,都有这样一段话:Java是一种简单的,面向对象的,平台无关的,解释的,健壮的,安全的,高性能的,多线程的,动态语言。
就单从平台无关这一点上来说,就已经超越C/C++一大截了。就比如说,我们在Windows下写出来的一段Java程序,换成Linux,macOS系统里面,一样可以正常运行并输出相同结果,但是这一点,换成C/C++却很难做到。Java跨平台的特性,就是由JVM(Java虚拟机)来决定的。
JVM的专业解释如下:
Java 虚拟机(Java Virtual Machine,简称 JVM)是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java 虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JVM 屏蔽了与具体操作系统平台相关的信息,使 Java 程序只需生成在 Java 虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM 在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
上面的解释初学者看不懂也很正常,本来不想把专业解释放上来的,想想还是算了,毕竟还是要让大对JVM有一点详细的认识。如果看不懂专业解释的话,我就用大白话来给大家说:
JVM,也就是Java虚拟机,就是一个平台,包