跨平台c语言为什么能跨平台或是如何跨平台的?

跨平台  时间:2021-09-03  阅读:()

什么叫做“跨平台”?

意思就是说,java写的程序,可以在多种操作系统上运行(Windows,Linux)。

相比之下,C#不具备跨平台的优势(一般来说),C#写的程序,只能在Windows下运行。

高级语言中C,C++等都是具有跨平台特性的。

java的跨平台到底是什么意思

跨平台的意思就是,java程序编译为字节码文件.class文件之后,拷到哪个平台的机器上面都能够无差别的运行,不管你是苹果,还是windows,是32位还是64位,这依赖于java虚拟机,java虚拟机是用各个平台的语言编写的,它能把java字节码文件翻译为相应平台的语言。







javascript跨平台是什么意思

javascript语言是HTML里运行的脚本语言,在任何浏览器里都可以运行(除非是把javascript脚本功能关了),这样就可以在手机、平板电脑、个人电脑上都可以运行。

如何实现跨平台

所有能够实现完全跨平台都是别人把跨平台的事情做好了,你只需要处理相同的事情。

JAVA中JVM不同平台安装的代码是不同的,跨平台的事情JVM已经处理好,你是在JVM做事情,等等。

什么是JVM?Java跨平台的原理是什么?

java virtual machine Java跨平台的原理 Java的跨平台是通过Java虚拟机(JVM)来实现的。

Java源文件的编译过程 Java应用程序的开发周期包括编译、下载、解释和执行几个部分。

Java编译程序将Java源程序翻译为JVM可执行代码—字节码。

这一编译过程同C/C++的编译有些不同。

当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。

因此,在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。

Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创建内存布局,然后再通过查表来确定一个方法所在的地址。

这样就有效的保证了Java的可移植性和安全性。

Java解释器的执行过程 运行JVM字节码的工作是由解释器来完成的。

解释执行过程分三步进行:代码的装入、代码的校验和代码的执行。

装入代码的工作由“类装载器”(class loader)完成。

类装载器负责装入运行一个程序需要的所有代码,这也包括程序代码中的类所继承的类和被其调用的类。

当类装载器装入一个类时,该类被放在自己的名字空间中。

除了通过符号引用自己名字空间以外的类,类之间没有其他办法可以影响其它类。

在本台计算机上的所有类都在同一地址空间内,而所有从外部引进的类,都有一个自己独立的名字空间。

这使得本地类通过共享相同的名字空间获得较高的运行效率,同时又保证它们与从外部引进的类不会相互影响。

当装入了运行程序需要的所有类后,解释器便可确定整个可执行程序的内存布局。

解释器为符号引用同特定的地址空间建立对应关系及查询表。

通过在这一阶段确定代码的内存布局,Java很好地解决了由超类改变而使子类崩溃的问题,同时也防止了代码对地址的非法访问。

随后,被装入的代码由字节码校验器进行检查。

校验器可发现操作数栈溢出,非法数据类型转换等多种错误。

通过校验后,代码便开始执行了。

Java字节码的两种执行方式 1、即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。

2、解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程 序的所有操作。

  通常采用的是第二种方法。

由于JVM规格描述具有足够的灵活性,这使得将字节码翻译为机器代码的工作具有较高的效率。

对于那些对运行速度要求较高的应用程序,解释器可将Java字节码即时编译为机器码,从而很好地保证了Java代码的可移植性和高性能。

JVM规格描述 JVM的设计目标是提供一个基于抽象规格描述的计算机模型,为解释程序开发人员提供很好的灵活性,同时也确保Java代码可在符合该规范的任何系统上运行。

JVM对其实现的某些方面给出了具体的定义,特别是对Java可执行代码,即字节码(Bytecode)的格式给出了明确的规格。

这一规格包括操作码和操作数的语法和数值、标识符的数值表示方式、以及Java类文件中的Java对象、常量缓冲池在JVM的存储映象。

这些定义为JVM解释器开发人员提供了所需的信息和开发环境。

Java的设计者希望给开发人员以随心所欲使用Java的自由。

JVM是为Java字节码定义的一种独立于具体平台的规格描述,是Java平台独立性的基础。

Java程序执行与C/C++程序执行的对比分析 如果把Java源程序想象成我们的C++源程序,Java源程序编译后生成的字节码就相当于C++源程序编译后的80x86的机器码(二进制程序文件),JVM虚拟机相当于80x86计算机系统,Java解释器相当于80x86CPU。

在80x86CPU上运行的是机器码,在Java解释器上运行的是Java字节码。

Java解释器相当于运行Java字节码的“CPU”,但该“CPU”不是通过硬件实现的,而是用软件实现的。

Java解释器实际上就是特定的平台下的一个应用程序。

只要实现了特定平台下的解释器程序,Java字节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本。

当前,并不是在所有的平台下都有相应Java解释器程序,这也是Java并不能在所有的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行。

c语言为什么能跨平台或是如何跨平台的?

c语言能跨平台是因为各个平台有相应的c编译器,只要源代码相同,编译器编译出来的二进制文件就会实现相同的功能,但是这些二进制文件本身是不一样的 exe就是2进制的,但不完全是原来程序的代码,还包括了windows系统的一些代码 科普一下,C最早是出现在Unix下的,Windows那都是后话了,C出现的时候Windows还没开发出来呢。

C有个比较特别的称呼,叫中级语言,因为它有高级语言的特性又能跟底层硬件很好的交互所以才有这么个说法。

DOS时代在C里面嵌上一段汇编直接从并口读个数上来那是很流行的,现在没见谁在VC里面这么干吧。

Windows也不让啊。

想访问硬件怎么也得通过驱动。

说远了,C在多种平台下可以实现代码级的共享,跨平台就需要重新编译了。

但是,我也见过有的软件是可以在多种平台上运行了,可能有什么特别的技术,可以先识别一下操作系统,再运行相应的代码。

这个应该是在编译的时候有特殊的技巧。

C编译、连接器网上有现成的代码,一般不是很专业的技术人员没有去研究它。

我一直把玩编译原理的视为天人,有能力把编译原理那本书看完的就很不容易了,再要能领会其中精要那就成才了,能把龙书虎书鲸书都搞明白的那就是一流专家了。

云如故枣庄高防(49元)大内存2H2G49元8H8G109元

云如故是一家成立于2018年的国内企业IDC服务商,由山东云如故网络科技有限公司运营,IDC ICP ISP CDN VPN IRCS等证件齐全!合法运营销售,主要从事自营高防独立服务器、物理机、VPS、云服务器,虚拟主机等产品销售,适合高防稳定等需求的用户,可用于建站、游戏、商城、steam、APP、小程序、软件、资料存储等等各种个人及企业级用途。机房可封UDP 海外 支持策略定制 双层硬件(傲...

Vultr再次发布充值多少送多少活动

昨天我们很多小伙伴们应该都有看到,包括有隔壁的一些博主们都有发布Vultr商家新的新用户注册福利活动。以前是有赠送100美元有效期30天的,这次改成有效期14天。早年才开始的时候有效期是60天的,这个是商家行为,主要还是吸引到我们后续的充值使用,毕竟他们的体验金赠送,在同类商家中算是比较大方的。昨天活动内容:重新调整Vultr新注册用户赠送100美元奖励金有效期14天今天早上群里的朋友告诉我,两年...

RackNerd:美国便宜VPS,洛杉矶DC-02/纽约/芝加哥机房,4TB月流量套餐16.55美元/年

racknerd怎么样?racknerd美国便宜vps又开启促销模式了,机房优秀,有洛杉矶DC-02、纽约、芝加哥机房可选,最低配置4TB月流量套餐16.55美元/年,此外商家之前推出的最便宜的9.49美元/年套餐也补货上架,同时RackNerd美国AMD VPS套餐最低才14.18美元/年,是全网最便宜的AMD VPS套餐!RackNerd主要经营美国圣何塞、洛杉矶、达拉斯、芝加哥、亚特兰大、新...

跨平台为你推荐
a8处理器苹果A7,A8,A9处理器有什么区别?anychartjfreechar制作柱状图的时候。由于柱子之间的差距太大。有些柱子才个位有上千导致了Y轴数据太密集。求burndownburn down是否及物?能用被动语态吗?黑屏操作电脑一操作就黑屏 不操作就没有事。该怎么恢复淘宝推广网站谁有好的淘宝推广网站介绍下哦!或推广技巧!里程碑2里程碑2怎么样上网能干什么上网可以干什么?amv格式电影谁有AMV的格式电影amv格式电影谁有AMV格式的电影或视屏?阿里年会直播公司会议在线直播需要什么?
香港虚拟空间 泛域名绑定 百度云100as mediafire下载 京东商城双十一活动 777te ca4249 怎样建立邮箱 qq对话框 中国电信宽带测速网 酷番云 t云 web服务器是什么 云服务器比较 lamp架构 脚本大全 server2008 cloudflare 报警主机 六维空间登陆首页 更多