j***a语言转译,j***a语言转换

kodinid 13 0

大家好,今天小编关注到一个比较意思的话题,就是关于java语言转译的问题,于是小编就整理了3个相关介绍Java语言转译的解答,让我们一起看看吧。

  1. 为什么说用高级语言写的程序,执行效率没有汇编高?这些高级语言不都是要先编译成汇编语言吗?
  2. 验证可调试应用的字节码是什么意思?
  3. 方舟编译器一出是不是Java就可以代替C/C++了?

什么说用高级语言写的程序执行效率没有汇编高?这些高级语言不都是要先编译汇编语言吗?

汇编语言编写的程序,直接翻译为机器代码。而高级语言,如C,c++JAVA等都要转译成与汇编对应的及其码才能执行比如一个简单的“helloworld',用汇编语言编写的程序文件可能只有几百个字节,而用C、DELPHI等编写的程序至少有几万个字节虽然看起来汇编的程序代码比较繁琐,可读性不强,但是他是机器代码计算机能直接识别;而高级语言则不同虽然可读性强,但是计算机无法直接识别

高级语言主要是给人看的,即使实现的目的完全相同,不同的写出来的高级语言都很可能会看起来完全不同,因此编译器在把高级语言编译为机器码过程中,就难免会产生很多的冗余代码,比如在汇编语言中从a点到b点能够一步到达的,在高级语言编译的代码中却有可能满世界乱转把整个字母表都走一遭后才到达b,尽管结果看起来是一样的,但效率就不可同日而语了。当然了,像js之类的脚本语言也是高级语言啊,它们是解析执行的,效率当然更加没有汇编语言高了。

java语言转译,java语言转换-第1张图片-安济编程网
图片来源网络,侵删)

验证应用的字节码是什么意思?

字节码通常指的是已经经过编译,但与特定机器码百无关,需要直译器转译后才能成为机器码的中间代码。字节码通常不像源码一样可以让人阅读,而是编码后的数值常量引用指令等构成的序列。 字节码主要为了实现特定软件运行和度软件环境硬件环境无关。字节码的实现方式是通过编译器和虚拟机版器。编译器将源码编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令。字节码的典型应用为J***a语言。 字节码是一个关于电脑编程语言的小作品权。你可以通过编辑或修订扩充其内容

方舟编译器一出是不是J***a就可以代替C/C++了?

在争哪个语言最好?没意思。到底还是根据业务场景来选最合适的语言

c++ 的优势是运行效率高,缺点是掌握难度大, 编译时间长, 开发的时候效率低,但运行效率高。j***a 是运行效率低,语言容易上手,编译时间少,开发效率高。

java语言转译,java语言转换-第2张图片-安济编程网
(图片来源网络,侵删)

方舟编译器结合了两门语言的特点,即开发的时候用j***a 打包,发布的时候直接完全编译好,既可以利用j***a的开发高效率也可以有c++级别的运行效率。

这样的设计使得不同语言代码在开发者环境中能够统一编译成同一套可直接执行的机器码,从而消除了混合语言互相调用的开销。从这样的设计就能看出,方舟编译器是在集不同技术所长,不存在谁能替代谁的说法。

先回答问题 不是

java语言转译,java语言转换-第3张图片-安济编程网
(图片来源网络,侵删)

首先我们需要看透问题的本质, j***a 本来就是用c写的, 怎么能替代他祖宗呢?

执行效率上讲,c/c++ 的速度 远远快于 j***a .而且 在桌面领域 j***a 的市场份额 少的可怜, j***a 目前只有 在安卓,等只能设备领域 占有一一席之地.还有就是后端服务.

方舟 或许就是对 j***a 的二次封装,(目前还没有 开源不知道,我猜的 ), 国内 应该不可能,做一个 现在就超越 或者接近 j***a 的编译器出来.

当然不能啦,c的地位,无论如何都是无法撼动的,特别是在更加专业的领域,需要性能的领域。

方舟编译器能应用的[_a***_]也比较小,只是在一个特别的领域而已。

J***a的设计,本身就是为了一次开发,到处都能运行,因此他少不了虚拟机,少不了虚拟机,性能上自然会有些问题,无论怎么优化编译,最终还不是得拖泥带水的,所以他怎么能替代c呢?

当然了c的生态没有j***a的丰富,所以确实c的应用领域现在也是越来越小,但不等于它就要消失,因为还有很多领域是适合c的。

J***a的跨平台型是方舟目前没有的。因为它只针对自家平台。就和iOS一样。只能说是个生态环境。替代c++是不可能的。再说了J***a底层就是c++,还能喧宾夺主吗?

不用方舟,j***a也能代替c/c++

9102年了,j***a早就在开发速度和效率上秒杀了一众c/c++等底层语言,老项目是没法改了,新项目你看现在有多少c/c++的,TIOBE排行榜上第一位的可是j***a

  4月25日,北京

    “它就是能让安卓上的应用,跑得跟苹果iOS上一样快。”面对台下的记者,华为消费者BG软件部总裁王成录这么描述方舟编译器的作用。    此时,距离这个吊起了安卓应用开发者们兴趣的编译器在发布会上被公开,正好过去了两周。    什么是方舟编译器?    在4月11日的华为P30中国发布会上,华为消费者业务CEO余承东正式发布了华为方舟编译器,并表示这个编译器能改善安卓应用编译效率,从原先的边解释边执行转变为全程机器码高效运行程序。    编译器,就是将“一种计算机语言(通常为高级语言)”翻译为“另一种计算机语言(通常为低级语言)”的程序。高级计算机语言便于开发者们编写、阅读交流以及维护,如Pascal、C、C++、J***a等,而低级机器语言是计算机能直接解读、运行的机器代码(Machine code)。    华为的方舟编译器,就是将安卓应用开发者们所使用的J***A、C/C++们转换成机器代码。据王成录透露,华为从2009年就开始考虑做编译器,“因为咱们海思做了芯片以后,需要有自己的编译器才能真正发挥芯片的能力,从2013年开始,有华为自己的自研编译器了,叫HCC。”    根据时间表显示,在2012年,华为成立了编译器与编程语言实验室,在2014年,技术大牛Fred Chow加入华为负责编译器的主架构,经过十年的摸索,华为终于推出了方舟编译器。    根据华为官方公布的数据显示,与此前的安卓应用开发相比,方舟编译器能够提升24%的系统操作流畅度,提升44%的系统响应能力,还能提升60%的第三方应用(微博极速版)操作流畅度。    它是怎么做到的?    一、 消除了跨语言调用开销    王成录向记者们详细阐述了方舟编译器能提升流畅度、响应能力的工作原理。    首先,方舟编译器是多语言联合优化编译器,“消除了跨语言调用开销,这是影响Android性能开销比较大的核心原因之一。”    据王成录介绍,目前Android应用市场里95%的app都是多种开发语言:“逻辑部分,都是J***a代码,但是为了增强它的能力,可能所有的APP的开发者,都会用C写个库供J***a来调用。”    J***a是一门面向对象编程语言,具有简单性、面向对象、分布式等特点,虽然运行效率不及C++,但开发效率高、跨平台性更强的优势,让J***A成为了安卓开发的首选,而通过JNI调用本地C/C++库也是目前开发者们都在做的。    但,J***a和C语言之间使用接口调用,必然会形成额外的性能开销;王成录表示,华为方舟编译器将不同语言代码在开发环境中编译成一套可执行文件,这样执行效率更高。    二、消除了影响性能的虚拟机机制并实时回收内存    王成录认为华为方舟编译器的第二大特点是消除了影响性能的虚拟机机制。    在安卓系统发展过程中,虚拟机不可被忽视:Android系统是以Linux内核构建的,为了降低应用的开发难度,并将其适配到不同硬件配置的设备上,Google在Linux内核之上构建了一个虚拟机,Android应用使用j***a开发,运行在虚拟机之上。    在安卓4.4之前,Dalvik就是安卓系统上使用的虚拟机,基于寄存器。从Android 2.2开始,Dalvik开始使用JIT(Just In Time)技术来进行代码转译,将频繁调用的代码转换为二进制码,不用每次解释,而在此前Dalvik虚拟机将所有的J***a语句逐句解释执行,效率很低。。    但Dalvik越来越不能满足需求,从Android 5.0开始,虚拟机从Dalvik换成了ART。    ART(Android RunTime)虚拟机,***用AOT(Ahead Of Time)技术,会在应用程序安装时就预编译字节码到机器语言,不再在执行时解释,从而优化了应用运行的速度。    所以,到目前为止,安卓系统的任何机器只要装上应用装上就会分配好虚拟机,占用额外的系统***,消费者从应用市场下载APP以后,真正解释成机器指令和执行文件是在手机上的虚拟机里做的,因此对系统***要求高。    王成录表示,ART的执行效率虽然提高了,但是对于那些J***a动态特性的部分,仍然做不到直接编译,还是要解释执行。    这源于J***a不是Python那样的动态语言,但开发者经常会用到它一个非常突出的动态相关机制:反射机制。J***a反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类、在运行时构造任意一个类的对象、在运行时判断任意一个类所具有的成员变量方法、在运行时调用任意一个对象的方法、生成动态代理。    王成录表示,J***a动态特性使得开发者“不需要把所有的程序都写好,只要能够运行时实现调用就可以了。”但这部分往往只能在运行时进行处理。而方舟编译器最大的突破就在于此:把动态的部分全部静态编译掉。    这确实很难。    王成录认为,这就像一个优秀的翻译官,一定要对汉语言文学理解的非常到位,然后再对英语理解非常到位;所以,核心是一定要对J***a语言动态特性非常深入的了解和理解,“J***a有非常多的库和业务逻辑,这些业务逻辑它生成各种各样的应用和代码和业务逻辑,这些业务逻辑就需要团队不断地去理解它,这个理解有点类似于做代码测试遍历一样,我让这个代码全跑到,才知道可不可以,它需要非常多的时间去积累,我对于库的理解,当然需要技术,我理解这个库本身的具体含义,有点像AI里面,我要收集东西,训练一个模型如果这个东西没有的话,我训练出来的模型不好,我这个机器没法执行,这个道理特别像。”    然后还需要对这些安卓现有的应用可能会用到哪些库、这些库之间需要怎么用,需要大量的分析运行状态,才能够将这些动态特性完成提前的编译。“实际上华为对于Android整个系统各种应用的运行,做了非常仔细去确认,相当于一个应用从底层起来,一直跑完以后,到底经过哪些过程,这些过程可能会带来什么问题?去哪些库取东西,这些东西积累越多,放到动态库里面,把它编译完了。有了这2个积累,才能做成这件事情。”    对于效果,有开发者向网易科技表示,“做成了静态编译,速度肯定会更快。”    方舟编译器还能提供更高效的内存回收机制。    王成录表示,Android的原生内存回收,在全局回收时需要暂停应用,等待回收完成,这是产生随机卡顿的重要原因,“而在方舟编译器里,会在编译时为程序配备及时回收的内存处理机制,在程序执行过程当中实时处理。”    三、 可以灵活实现不同应用的性能优化    王成录表示,方舟编译器的第三个亮点是可以灵活实现不同应用的性能优化。    他表示,现有的安卓编译大部分代码在虚拟机环境运行,而虚拟机的创建由于来自于同一套“模板”,难以作深度的优化:不同应用的优化诉求不一样;相比之下,方舟编译器不一样,每个应用编译优化方案自己来定,分别形成不同应用优化后的机器码,“相当于说,我们给每一个有追求的应用开发者,都有了一个把自己的应用做的更好的机会,不再受限于Android虚拟机的限制。”    王成录称,方舟编译器最理想的目标就是“上层业务代码不需要改,大家只需要通过华为的方舟编译器做重新编译就足够了。”    他希望,Android阵营所有合作伙伴大家一起努力,从各自场景、各自平台不断去打磨它

到此,以上就是小编对于j***a语言转译的问题就介绍到这了,希望介绍关于j***a语言转译的3点解答对大家有用。

标签: 方舟 编译器 语言