IT兄弟连 Java语法教程 Java语言的跨平台特性

什么是平台java

Java是能够跨平台的编程语言,那么首先咱们须要知道什么是平台,一般咱们把CPU与操做系统的总体称为平台。编程

CPU你们都知道,是计算机的大脑,它既负责思惟运算,又负责计算机中各类零部件的命令控制。CPU的种类很是多,目前咱们使用的主流的CPU是由Inter和AMD公司生产的各类CPU。这些CPU使用相同或不一样的指令集,指令集就是CPU中用来计算和控制计算机系统的一套指令的集合。指令集又分为精简指令集和复杂指令集,每种CPU都有其特定的指令集。开发应用程序,首先要知道程序在什么CPU上运行,也就是要知道CPU所使用的指令集。oracle

操做系统是充当用户和计算机之间交互的软件,不一样的操做系统支持不一样的CPU,严格意义上来讲是不一样的操做系统支持不一样的CPU指令集。例如早期的Windows和Linux都支持Inter和AMD的复杂指令集,但并不支持PowerPC所使用的精简指令集,而早期的MAC电脑(苹果电脑)使用的都是PowerPC处理器,因此也就没法在MAC下直接安装Windows,而macOS也没法安装在Inter和AMD的平台之上。目前全部主流的操做系统(Windows、Linux、MAC等)都支持Inter与AMD的指令集。编程语言

又由于如今主流的操做系统都支持主流的CPU,因此有时也把操做系统称为平台。其实想要知道Java到底跨了什么平台,只须要在Java的官方网站www.oracle.com上下载Java时提供的平台版本就能够知道Java到底跨了什么平台了。咱们会在本书后面的内容中介绍如何下载Java,以及是什么缘由能够经过上面的方式来判断Java跨平台的。工具

 

Java跨平台原理网站

从上面的讲解中你们了解了什么是平台,如今为你们介绍一下Java的跨平台原理,首先咱们来看一种与C语言从源代码到可执行程序过程的相关的图片(图2.2)。操作系统

bff853bf3d724bed846795cece896af4.png

图2  C语言从源代码到可执行程序的过程3d

 

若是有过C语言开发经验,图2看起来将很是轻松。咱们知道用标准C开发的程序,使用不一样的编译器编译后的可执行文件是能够在对应平台运行的,好比Windows能够使用VC来编译C源代码,编译后的文件就能够在Windows系统下运行;Linux下能够使用GCC编译器,生成的可执行文件就能够在Linux上运行,可是这里有一个问题就是使用VC编译的C程序能够在Linux上运行么?答案确定是否认的,若是想将Windows平台下的程序拿到Linux平台下运行,须要使用Linux平台下的编译器再次编译程序的源代码生成可执行文件才能运行。由于C语言编译后的可执行文件是没法跨平台的,使用特定的编译器编译C程序只能在对应的平台上运行,这里也能够说编译器是与平台相关的,编译后的文件也是与平台相关的。咱们说的语言跨平台是编译后的可执行文件跨平台,而不是源代码程序跨平台(若是说源程序是跨平台的,那么任何一门语言都是跨平台语言)。blog

下面咱们经过图2.3来看Java语言是怎么样解决可执行文件跨平台的。图片

967c47258d004596bbdbbbd54f03f8d9.png

图3  Java语言从源代码到可执行程序的过程

 

经过图3咱们能够发现,在Java源代码和各个平台之间多了一个编译器和一个字节码文件,而后各个平台经过解释器来解释执行这个字节码文件。那么中间这个编译器和字节码文件究竟是什么呢?原来,Java语言为了作到跨平台,经过将Java源代码通过一个编译器,编译成一个与平台无关的字节码文件,而后各个平台中相应的解释器就能够加载、解释并执行这个字节码文件了(各个平台的解释器解释同一个字节码文件会生成不一样的可是运行效果相同的机器指令,Windows和Linux的机器指令就不一样,可是运行同一个Java程序的结果是没有区别),即在一种平台下编写的应用程序无需修改也能够在其它平台上运行了,可是要求该平台必须拥有对应版本的解释器才能够。

一般使用Java语言编写的源代码文件以.java为后缀,使用Java提供的编译工具javac将源代码编译后生成的字节码文件以.class为后缀,使用Java提供的运行工具java便可运行字节码文件。

相关文章
相关标签/搜索