IT兄弟连 Java语法教程 Java语言的跨平台特性
什么是平台
Java是可以跨平台的编程语言,那么首先我们需要知道什么是平台,通常我们把CPU与操作系统的整体称为平台。
CPU大家都知道,是计算机的大脑,它既负责思维运算,又负责计算机中各种零部件的命令控制。CPU的种类非常多,目前我们使用的主流的CPU是由Inter和AMD公司生产的各种CPU。这些CPU使用相同或不同的指令集,指令集就是CPU中用来计算和控制计算机系统的一套指令的集合。指令集又分为精简指令集和复杂指令集,每种CPU都有其特定的指令集。开发应用程序,首先要知道程序在什么CPU上运行,也就是要知道CPU所使用的指令集。
操作系统是充当用户和计算机之间交互的软件,不同的操作系统支持不同的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)。
图2 C语言从源代码到可执行程序的过程
如果有过C语言开发经验,图2看起来将非常轻松。我们知道用标准C开发的程序,使用不同的编译器编译后的可执行文件是可以在对应平台运行的,比如Windows可以使用VC来编译C源代码,编译后的文件就可以在Windows系统下运行;Linux下可以使用GCC编译器,生成的可执行文件就可以在Linux上运行,但是这里有一个问题就是使用VC编译的C程序可以在Linux上运行么?答案肯定是否定的,如果想将Windows平台下的程序拿到Linux平台下运行,需要使用Linux平台下的编译器再次编译程序的源代码生成可执行文件才能运行。因为C语言编译后的可执行文件是无法跨平台的,使用特定的编译器编译C程序只能在对应的平台上运行,这里也可以说编译器是与平台相关的,编译后的文件也是与平台相关的。我们说的语言跨平台是编译后的可执行文件跨平台,而不是源代码程序跨平台(如果说源程序是跨平台的,那么任何一门语言都是跨平台语言)。
下面我们通过图2.3来看Java语言是怎么样解决可执行文件跨平台的。
图3 Java语言从源代码到可执行程序的过程
通过图3我们可以发现,在Java源代码和各个平台之间多了一个编译器和一个字节码文件,然后各个平台通过解释器来解释执行这个字节码文件。那么中间这个编译器和字节码文件到底是什么呢?原来,Java语言为了做到跨平台,通过将Java源代码经过一个编译器,编译成一个与平台无关的字节码文件,然后各个平台中相应的解释器就可以加载、解释并执行这个字节码文件了(各个平台的解释器解释同一个字节码文件会生成不同的但是运行效果相同的机器指令,Windows和Linux的机器指令就不同,但是运行同一个Java程序的结果是没有区别),即在一种平台下编写的应用程序无需修改也可以在其它平台上运行了,但是要求该平台必须拥有对应版本的解释器才可以。
通常使用Java语言编写的源代码文件以.java为后缀,使用Java提供的编译工具javac将源代码编译后生成的字节码文件以.class为后缀,使用Java提供的运行工具java即可运行字节码文件。
IT兄弟连 Java语法教程 Java语言的跨平台特性的更多相关文章
- IT兄弟连 Java语法教程 Java语言的其他特性
Java语言中除了非常重要的跨平台特性外,还有如下几个关键特性: ● 语法简单易学 Java语言的语法简单明了,容易掌握,而且是纯面向对象(OOP)的语言,Java语言的简单性主要体现在以下几个方面 ...
- IT兄弟连 Java语法教程 Java语言入门 典面试题
1.请说明JVM.JRE和JDK是什么?它们有什么关系? JVM是Java虚拟机,Java Virtual Machine的缩写,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实 ...
- IT兄弟连 Java语法教程 Java的发展历程
只有少数几种编程语言对程序设计带来过根本性的影响.其中,Java的影响由于迅速和广泛而格外突出.可以毫不夸张的说,1995年Sun公司发布的Java1.0给计算机程序设计领域带来了一场变革.这场变革迅 ...
- IT兄弟连 Java语法教程 Java平台的版本划分
自从Sun公司推出Java以来,就力图使之无所不能.Java发展至今,按应用范围划分为3个版本,即Java SE.Java EE和Java ME,也就是SunOne(Open Net Environm ...
- IT兄弟连 Java语法教程 Java开发环境 JVM、JRE、JDK
要想开发Java程序,就需要知道什么是JVM.JRE以及JDK.JVM是运行Java程序的核心,JRE是支持Java程序运行的环境,而JDK是Java开发的核心,下面我们分别具体介绍它们以及它们之间的 ...
- IT兄弟连 Java语法教程 Java语言背景
驱使计算机语言革新的因素有两个:程序设计技术的改进和计算环境的改变.Java也不例外.在大量继承C和C++的基础之上,Java还增加了反应当前程序设计技术状态的功能与精华.针对在线环境的蓬勃发展(In ...
- IT兄弟连 Java语法教程 Java语法基础 经典面试题
1.Java语言中有几种基本类型?分别是什么?请详细说明每种类型的范围以及所占的空间大小? Java语言中有8中基本类型,分别是代表整形的byte.short.int和long,代表浮点型的float ...
- IT兄弟连 Java语法教程 Java开发环境 配置Java环境变量
在安装完JDK后,我们需要配置系统的环境变量,否则在控制台中使用JDK为我们提供的工具时将出现如图12所示的错误信息. 图12 未配置环境变量时执行java命令提示的错误信息 当出现这样的提示信息时 ...
- IT兄弟连 Java语法教程 Java开发环境 安装JDK
因为我们要开发Java程序,所以必须在我们的计算机中安装Sun(Oracle)公司提供给我们的JDK.目前最新版本的JDK是JDK 10,但是我们以学习JDK 8为主,所以我们要安装的版本是JDK 8 ...
随机推荐
- STemWin显示汉字 — SD卡外挂XBF字库
转载注明出处 方法来自安福莱教程 1: 使用emWin自带小工具生成字库 (1)启动软件 选择4位抗锯齿 (2)根据需求选择字体类型和字体大小 (3)另存为XBF格式 2: 创建XBF字体 #inc ...
- 数据解析,懒加载,代理ip
在前面的requests流程中,还缺少了一步重要的流程,就是在持久化存储之前需要进行制定的数据解析.因为在大多数情况下,我们都会使用聚焦爬虫,也就是爬取页面中的指定部分数据值,而不是整个页面的数据. ...
- dojo 官方翻译 dojo/string 版本1.10
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/string.html#dojo-string require(["dojo/st ...
- git删除远程分支【转】
本文转载自:https://my.oschina.net/tsingxu/blog/84601 如果不再需要某个远程分支了,比如搞定了某个特性并把它合并进了远程的 master 分支(或任何其他存放 ...
- js修改div标签中的内容
<div id='divId'>初始文字</div> <script> $(document).ready(function(e){ $('#divId').htm ...
- Linux三种网络-vmware三种网络模式
Host-Only 桥接 NAT VMware虚拟机三种联网方法及原理 一.Brigde——桥接:默认使用VMnet0 1.原理: Bridge 桥"就是一个主机,这个机器拥有两块网卡,分别 ...
- HDU 1005 Number Sequence:矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005 题意: 数列{f(n)}: f(1) = 1, f(2) = 1, f(n) = ( A*f(n ...
- tensorflow knn 预测房价 注意有 Min-Max Scaling
示例数据: 0.00632 18.00 2.310 0 0.5380 6.5750 65.20 4.0900 1 296.0 15.30 396.90 4.98 24.00 0.02731 0.00 ...
- linux启动全过程
参考: http://www.staroceans.org/e-book/linux-bootstrap-1.html 1. MBR里的内容属于grub grub-2.02\grub-core\boo ...
- Linux_学习_01_常用命令大全
一.文件目录 1.列出目录 ls -a #显示隐藏文件 -l #显示文件和目录的详细资料 -h -lrt tree #显示文件和目录由根目录开始的树形结构 lstree #显示文件和目录由根目录开始的 ...