安卓不是早就有编译器了吗?那华为的方舟编译器跟这个有什么区别吗?

夕阳残月376


传统的java程序从编译到运行的过程: java程序在电脑端编译成字节码,虽然是字节码,但是这个字节码是不能够直接在机器上运行的,然后字节码通过下载工具下载到智能设备上,智能设备上的JVM虚拟机解释得到机器可以识别的二进制码并运行二进制码。

方舟编译器编译程序到运行程序的过程: 方舟编译器根据华为官方的解释:java程序可以直接编译成机器可以识别的二进制码。可以理解成他把JVM虚拟机从智能设备端移动到电脑端,java程序的编译和解释过程放到了电脑端来完成,而运行过程放到了智能设备端,智能设备不需要JVM虚拟机就可以直接运行二进制码了。

总之,传统的java编译器的编译过程是java程序编译成字节码,此字节码不能直接在机器上运行,而华为的方舟编译器通过编译程序后的二进制码可以直接在机器上运行。(字节码和二进制码都是二进制的,根据是否可以直接在机器上运行,用字节码和二进制码来表示两者间的区别。)


NMLINUX


方舟编译器最大的特点在于越过了虚拟机,这也是它跟现有安卓系统的区别点所在。

编译方式不同

我们常用的Android系统,是边解析边执行的。程序运行中会首先启动虚拟机,然后读入应用代码逐条解释执行,会占用较多的处理资源,影响程序执行的效率。即便AOT或JIT这类提前编译技术一样做不到摆脱虚拟机的执行。

Google也多次调整编译代码的模式,但是相比iOS依然有性能差距

而方舟编译器不同,它是一种静态的编译方式。可将语言里的动态特性直接翻译成机器码,手机安装应用程序后可全速运行程序,彻底干掉了虚拟机,极大提升了系统运行效率。

编译过程和执行效率的差异。

安卓系统运行程序都需要先解析后执行,也就是说它的编译工作是发生在用户运行程序这一阶段。

而方舟编译器强在哪里?它干脆将编译过程部署在开发环境中来,也就是说,方舟编译的应用在开发阶段就已完成。只要是经过编译器编译的应用,在应用市场上架以后,用户下载的APK就是已经编译好。这肯定是能带来系统性能的显著提升。

目前的Android采用的是解释执行+JIT+AOT的模式,但并没有摆脱一个前提,即应用在被打包成APK的时候,采用的还是Java代码。因而Android系统用久之后还会卡顿和备受吐槽,而有目共睹的就是各种安卓手机目前也在靠不断堆砌硬件来获得更良好的系统流畅度。

据了解微博极速版实现了静态化编译后,流畅度提升高达60%。未来方舟编译器是否能成功,还要看后续完整生态的搭建。希望开发者积极参与进来,最终给消费者带来更为极致的体验。


IT小众


我个人感觉安卓是手机,电视的,不是整个物联网,安卓是分开的;方舟编译器是把整个物联网编译器,方舟是可以整合的!

还有安卓是美帝的,方舟是华为的是阿中哥的!!!

我一定选择华为的方舟!!!

因为我尊敬我爱




一字马回乡


你好,我是魔镜科技,很荣幸回答你这个问题

华为的方舟编译器,就是将安卓应用开发者们所使用的JAVA、C/C++们转换成机器代码。编译器就是将一种高级语言转译成一种低级语言的程序,起到关键的“承上启下”作用。

通俗点讲就是方舟编译器直接编译成了cpu听得懂的指令,传统的编译器还需要一个翻译


魔镜科技


简单来说java是解释型语言,解释一条运行一条。方舟编译器的方案是直接打包成鸿蒙系统能够直接执行的二进制文件,这样就少了解释这个步骤,速度就上去了。


分享到:


相關文章: