时间:2021-05-20
什么是平台无关性
平台无关性就是一种语言在计算机上的运行不受平台的约束,一次编译,到处执行。
也就是说,用Java创建的可以执行二进制程序,能够不加改变的运行于多个平台,Java减少了开发和部署的多个平台的成本和时间。
平台无关性的实现
其中扮演者重要的角色有Java语言规范、Class文件、Java虚拟机(JVN)等。
在计算机世界中,计算机只认识0和1.所以,真正被执行的其实是由0和1组成的二进制文件。
日常开发使用的C、C++、Java、python 都属于是高级语言,而非二进制语言,所以,想让计算机认识我们写出来的Java代码,那就需要
把他翻译成由0和1组成的二进制文件。这个过程就叫编译。负责这一个过程的处理的工具叫做编译器。
想把Java文件,编译成二进制文件文件,需要经过两步编译,前端编译和后端编译。
前端编译主要是指与源语言有关但与目标机无关的部分。Java中,我们知道的 javac 的编译就是前端编译。除了这种以外,我们使用的很多IDE如eclipse,idea等,都是内置了前端编译器,
主要功能就是.java文件转换为.class文件。
后端编译主要是将中间代码再翻译成机器语言。Java中,这一步骤就是后端编译(jvm来执行)。
Java虚拟机
之所以跨平台是由jvm来完成的,jvm会根据不用的操作系统和硬件设备,提供不同jvm。对于不同的操作系统jvm对应的质指令是不同的class文件。
比如同样执行a+b,A操作系统对应的二进制指令可能是10001000,而B操作系统对应的指令可能是11101110。那么,想要做到跨平台,最重要的就是可以根据对应的硬件和操作系统生成对应的二进制指令。
有了Java虚拟机,想要执行a+b操作,A操作系统上面的虚拟机就会把指令翻译成10001000,B操作系统上面的虚拟机就会把指令翻译成11101110。
所以,Java之所以可以做到跨平台,是因为Java虚拟机充当了桥梁。他扮演了运行时Java程序与其下的硬件和操作系统之间的缓冲角色。
class字节码
各种不同的平台的虚拟机都使用统一的程序存储格式——字节码(ByteCode)是构成平台无关性的另一个基石。Java虚拟机只与由字节码组成的Class文件进行交互。 我们说Java语言可以Write Once ,Run Anywhere。这里的Write其实指的就是生成Class文件的过程。 因为Java Class文件可以在任何平台创建,也可以被任何平台的Java虚拟机装载并执行,所以才有了Java的平台无关性。class 是16进制的文件流,最终会被jvm转成二进制的机械码。
Java语言规范
已经有了统一的Class文件,以及可以在不同平台上将Class文件翻译成对应的二进制文件的Java虚拟机,Java就可以彻底实现跨平台了吗? 其实并不是的,Java语言在跨平台方面也是做了一些努力的,这些努力被定义在Java语言规范中。 比如,Java中基本数据类型的值域和行为都是由其自己定义的。而C/C++中,基本数据类型是由它的占位宽度决定的,占位宽度则是由所在平台决定的。所以,在不同的平台中,对于同一个C++程序的编译结果会出现不同的行为。 举一个简单的例子,对于int类型,在Java中,int占4个字节,这是固定的。 但是在C++中却不是固定的了。在16位计算机上,int类型的长度可能为两字节;在32位计算机上,可能为4字节;当64位计算机流行起来后,int类型的长度可能会达到8字节。根据规范格式,才能够被jvm编译以及解释运行。
总结
对于Java的平台无关性的支持是分布在整个Java体系结构中的。
其中扮演着重要角色的有Java语言规范、Class文件、Java虚拟机等。
Java语言规范
通过规定Java语言中基本数据类型的取值范围和行为
Class文件
所有Java文件要编译成统一的Class文件
Java虚拟机
通过Java虚拟机将Class文件转成对应平台的二进制文件等 Java的平台无关性是建立在Java虚拟机的平台有关性基础之上的,是因为Java虚拟机屏蔽了底层操作系统和硬件的差异。
以上这篇Java 实现跨平台的操作方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java是完全面向对象的语言。Java通过虚拟机的运行机制,实现“跨平台”的理念。我在这里想要呈现一个适合初学者的教程,希望对大家有用。"HelloWorld!
前言很多复杂的UI界面,在Android中需要配合大量xml代码和java代码实现,而使用HTML5可以非常轻松的实现出来,而且具有很好的跨平台特性,让我们不必
导读构造器是编程的强大组件。使用它们来释放Java的全部潜力。在开源、跨平台编程领域,Java无疑(?)是无可争议的重量级语言。尽管有许多伟大的跨平台框架,但很
文件接口。之前在操作本地文件通常使用Flash、Silverlight或者第三方插件,但是使用插件往往对实现跨平台、跨浏览器、跨设备等情况的统一表现造成阻碍,形
我们知道,我们写的java代码保存的格式是.java,java文件被编译后会转换为字节码,字节码可以在任何平台通过java虚拟机来运行,这也是java能够跨平台