跨平台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编译、连接器网上有现成的代码,一般不是很专业的技术人员没有去研究它。

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

VPS云服务器GT线路,KVM虚vps消息CloudCone美国洛杉矶便宜年付VPS云服务器补货14美元/年

近日CloudCone发布了最新的补货消息,针对此前新年闪购年付便宜VPS云服务器计划方案进行了少量补货,KVM虚拟架构,美国洛杉矶CN2 GT线路,1Gbps带宽,最低3TB流量,仅需14美元/年,有需要国外便宜美国洛杉矶VPS云服务器的朋友可以尝试一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务器...

快云科技,美国VPS 2H5G独享20M 仅售19.8/月  年付仅需148

快云科技已稳步运行进两年了 期间没出现过线路不稳 客户不满意等一系列问题 本司资质齐全 持有IDC ICP ISP等正规手续 有独特的网站设计理念 在前几天刚是参加过魔方系统举行的设计大赛拿获最佳设计奖第一名 本公司主营产品 香港弹性云服务器,美国vps和日本vps,香港物理机,国内高防物理机以及美国日本高防物理机 2020年的国庆推出过一款香港的回馈用户特惠机 已作为传家宝 稳定运行 马上又到了...

提速啦(900元/月),杭州BGP E5-2665/89*2 32核 48G 100G防御

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑提速啦的市场定位提速啦主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。提速啦的售后保证提速啦退款 通过于合作商的友好协商,云服务器提供3天内全额退款,超过3天不退款 物理机部分支持当天全额退款提速啦提现 充...

跨平台为你推荐
融360我在融360APP上申请二十万没通过,今天有人打电话给我说可以通过,这个是真的吗?嵌入式开发嵌入式开发是什么返回电脑返回上一次页面的快捷键是什么文件下载怎么把电脑上的文件下载到U盘里?项目质量管理如何抓好项目质量管理按键精灵教程按键精灵怎么使用空间背景图片如何更换QQ空间背景图片什么是光纤什么是光纤?什么是宽带?两者有什么不同?招行信用卡还款招行信用卡怎么还款快照优化快照跟不上优化节奏优化方法出问题?
香港服务器租用99idc 免费动态域名 国外永久服务器 openv 免费博客空间 丹弗 个人域名 腾讯云分析 网站木马检测工具 美国主机侦探 apache启动失败 删除域名 低价 在线tracert bwg 性能测试工具 vim命令 国内免备案cdn 流媒体服务器软件 国外bt网站 更多