java的跨平台

Java是如何实现跨平台的:

首先要明白平台是什么:

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

  操作系统是充当用户和计算机之间交互的界面软件,不同的操作系统支持不同的CPU,严格意义上说是不同的操作系统支持不同CPU的指令集。例如  windows和liunx都支持Intel和AMD的复杂指令集(CISC),但并不支持精简指令集(RISC)。
  总之,开发程序,首先要确定该程序在什么CPU上运行,也就是要知道CPU所使用的指令集,其次要确定操作系统。
 

其次明白源代码字节码机器码的区别:
  源代码(.java)经编译器编译执行后生成字节码(.class),然后再由Java虚拟机解释执行字节码,生成不同机器可以识别的机器码。由于Java虚拟机是跨平台的,所以实现了Java代码在不同平台上的运行。

 

在来看看什么是java虚拟机:

  Java虚拟机(Java Virtual Machine,简称 JVM)本质上是一个软件,该软件被放在某个操作系统上,例如Unix、Linux、Windows等,从而为相应操作系统上java程序的运行提供一个独立的标准环境。java虚拟机之所以称为“虚拟”机,就是让我们把这个软件当作一个虚拟的机器。我们编写的java程序运行在这个虚拟的机器上,隔离具体的操作系统和硬件平台,从而实现了java程序的跨平台特性:在一个操作系统上开发的程序可以在任何操作系统上运行。例如,在Windows平台下编写的程序可以直接在Linux上运行。这就是SUN所宣扬的“一次编写,多次运行”

 

  那如何实现开发语言跨平台呢?实现思想主要是将开发语言编译成一种中间语言,然后利用和平台相关的解释器进行解释执行。下图是Java实现跨平台的机制。


 

       首先,通过与平台无关的编译器将Java源程序编译生成的中间码,该中间码与平台无关。然后通过Java虚拟机(Java Virtual Machine,简称 JVM)将中间码(字节码)文件翻译成特定平台下的机器码然后运行。

 

  JVM是一个”桥梁“,是一个”中间件“,是实现跨平台的关键,Java代码首先被编译成字节码文件,再由JVM将字节码文件翻译成机器语言,从而达到运行Java程序的目的。

注意:编译的结果不是生成机器码,而是生成字节码,字节码不能直接运行,必须通过JVM翻译成机器码才能运行。不同平台下编译生成的字节码是一样的,但是由JVM翻译成的机器码却不一样。

  所以,运行Java程序必须有JVM的支持,因为编译的结果不是机器码,必须要经过JVM的再次翻译才能执行。即使你将Java程序打包成可执行文件(例如 .exe),仍然需要JVM的支持。

注意:跨平台的是Java程序,不是JVM。JVM是用C/C++开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的JVM。

posted on 2017-11-02 22:49    阅读(314)  评论(0)    收藏  举报

导航