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

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

限时新网有提供5+个免费域名

有在六月份的时候也有分享过新网域名注册商发布的域名促销活动(这里)。这不在九月份发布秋季域名促销活动,有提供年付16元的.COM域名,同时还有5个+的特殊后缀的域名是免费的。对于新网服务商是曾经非常老牌的域名注册商,早年也是有在他们家注册域名的。我们可以看到,如果有针对新用户的可以领到16元的.COM域名。包括还有首年免费的.XYZ、.SHOP、Space等等后缀的域名。除了.COM域名之外的其他...

Kinponet是谁?Kinponet前身公司叫金宝idc 成立于2013年 开始代理销售美国vps。

在2014年发现原来使用VPS的客户需求慢慢的在改版,VPS已经不能满足客户的需求。我们开始代理机房的独立服务器,主推和HS机房的独立服务器。经过一年多的发展,我们发现代理的服务器配置参差不齐,机房的售后服务也无法完全跟上,导致了很多问题发生,对使用体验带来了很多的不便,很多客户离开了我们。经过我们慎重的考虑和客户的建议。我们在2015开始了重大的改变, 2015年,我们开始计划托管自己...

Digital-vm80美元,1-10Gbps带宽日本/新加坡独立服务器

Digital-vm是一家成立于2019年的国外主机商,商家提供VPS和独立服务器租用业务,其中VPS基于KVM架构,提供1-10Gbps带宽,数据中心可选包括美国洛杉矶、日本、新加坡、挪威、西班牙、丹麦、荷兰、英国等8个地区机房;除了VPS主机外,商家还提供日本、新加坡独立服务器,同样可选1-10Gbps带宽,最低每月仅80美元起。下面列出两款独立服务器配置信息。配置一 $80/月CPU:E3-...

跨平台为你推荐
嵌入式开发嵌入式开发工程师有前途吗?阿里校园招聘阿里巴巴校园招聘结束后还能继续面试实习生吗?项目质量管理简述项目质量管理保证和项目质量控制的内容和两者区别与联系,我正在考试求大神救命eofexceptionjava出现异常Exception in thread "main" java.io.EOFException局域网监控软件求一个破解版局域网监控软件教育城域网教育城域网的教育城域网的用途nvidia官方网站N卡的官网是什么?google地图api如何使用GOOGLE EARTH 的API开发自己的应用程序招行信用卡还款招商信用卡怎么还款呢监控员工公司如何监控员工手机和微信
个人域名备案 t牌 美国主机网 外国服务器 空间打开慢 lamp配置 100x100头像 空间论坛 秒杀预告 网站cdn加速 129邮箱 联通网站 华为k3 cdn网站加速 广东主机托管 买空间网 umax 北京主机托管 hdsky 新网dns 更多