Java是如何实现跨平台运行的

时间:2020-12-22 06:20:40

       首先说一下什么是平台?所谓的平台,就是CPU和操作系统的结合体。市面上CPU的种类很多,不同公司生产的CPU支持相同或不同的指令集。指令集就是CPU用来计算和控制计算机系统的一套指令的集合。指令集又分为精简指令集(RISC)与复杂指令集(CISC)。

       操作系统是充当用户和计算机之间交互的界面软件,不同的操作系统支持不同的CPU,严格意义上说是不同的操作系统支持不同CPU的指令集。例如  windows和liunx都支持Intel和AMD的复杂指令集(CISC),但并不支持精简指令集(RISC)。
       总之,开发程序,首先要确定该程序在什么CPU上运行,也就是要知道CPU所使用的指令集,其次要确定操作系统。
       那么,它到底是怎么实现的呢?首先,通过与平台无关的编译器将Java源程序编译生成的中间码,该中间码与平台无关。然后通过Java虚拟机(Java Virtual Machine,简称 JVM)将中间码(字节码)文件翻译成特定平台下的机器码然后运行。

       JVM也是一个软件,在不同的平台有不同的版本。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,即运行我们编写的Java程序,从而实现了”一次编译,到处运行“的目的。
       所以,运行Java程序必须有JVM的支持,因为编译的结果不是机器码,必须要经过JVM的再次翻译才能执行。即使你将Java程序打包成可执行文件(例如 .exe),仍然需要JVM的支持。
注意:编译的结果不是生成机器码,而是生成字节码,不同平台下编译生成的字节码是一样的,但是由JVM翻译成的机器码却不一样。