java是如何实现跨平台性的?它的原理是什么?

Java的运行过程分为编写、编译运行三个大的过程。

首先在Java的运行环境(JRE)中输入你编写的Java代码,最后形成后缀名为.java的源文件。

第二步是通过Java的编译器,对源文件进行错误排查后,形成后缀名为.class的字节码文件。字节码文件是一种与任何具体的"机器环境"和“操作系统环境"无关的中间代码,同时也是一个二进制文件。Java的字节码文件必须运行在JVM上。(Java的编译器:javac.exe,它读取Java语言编写的类和接口的定义,将.java的源文件编译成.class的字节码文件,编译器是JDK中的内容,不是JVM中的内容)

JVM只执行.class文件也就是字节码文件。

第三步是通过Java解释器,将字节码文件翻译成不同操作系统相对应的机器码。不同平台下编译生成的字节码是一样的,但是由JVM翻译的机器码却不一样。java解释器是Java虚拟机(JVM)的一部分。因此Java语言是一种在编译基础上进行解释运行的语言。

Java程序不能直接运行在现有的操作系统平台上,只能运行在JVM上。这样利用 JVM 就可以把 Java 字节码文件和具体的硬件平台以及操作系统环境分隔开来,只要在不同的计算机上安装了针对特定平台的 JVM,Java 程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境,也不用考虑字节码文件是在何种平台上生成的。故而实现跨平台最根本的东西是虚拟机(JVM)。

Java虚拟机(JVM)是一个虚构出来的计算机,他是在实际计算机的基础上通过仿真模拟计算机的各项功能来实现的。java 虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。

JVM实现跨平台的原理是:JVM 屏蔽了与具体操作系统平台相关的信息,屏蔽了不同操作系统底层平台的差异。使 Java 程序只需生成在 JVM上运行的字节码,就可以在多种平台上不加修改地运行。

我们编写的Java程序没有做任何改变,仅仅是通过JVM,就能在不同平台上运行,真正实现了“一次编译,到处运行Java程序“的目的。JVM 把这种不同软、硬件平台的具体差别隐藏起来,从而实现了真正的二进制代码级的跨平台移植。

JAVA字节码通过虚拟机翻译(解释)给不同的平台,这个过程就叫做跨平台

你可能感兴趣的:(java)