首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

方舟编译器真能让安卓脱胎换骨媲美iOS么,这次华为真没吹牛

在经历美国全力打压和封锁近半年之后,华为反而爆发出了让所有人瞩目的实力。特别是近来,华为接连发布的经过十年布局研发的方舟编译器和鸿蒙操作系统,再次让外界见识到了华为真正的实力。虽然作为未来华为万物互联的基础,鸿蒙操作系统显然更重要,但毕竟鸿蒙系统还需要一段时间进行生态布局,和技术迭代来完善和适配。而方舟编译器作为华为软件生态的重要一环,在当下就显得非常重要了。

而方舟编译器在发布之时,就宣称一旦把安卓系统和应用重新用方舟编译器编译之后,安卓系统的运行速度将大幅提升,甚至将可以媲美iOS。特别是华为还宣布方舟编译器将完全开源。如果方舟编译器真能做到宣传中的效果,毫无疑问,一旦方舟开源,必将有大批的开发者汇聚于此,使用方舟重新编译自己的应用。而方舟编译过的程序,将可以在鸿蒙上完美适配。因此只要方舟编译器表现良好,那就会变成鸿蒙系统生态的吸粉神器。

那么方舟编译器能否做到宣称的彻底改良Android呢。首先我们先来看一下到底有哪些因素,导致Android天生就跑不过iOS。首先一点,其实Android就是用Java编写的一个叠加在底层Linux内核之上的运行在用户空间的大型用户程序。并且Android把底层Linux系统的各种功能都包装成了各种各样的服务,而各种应用程序就可以通过调用Android提供的这些服务调用底层linux的各种功能,从而实现用户的各种需求,如打游戏,看视频等等。

也因此Android天生就继承了java的各种优缺点。优点是Java的兼容性,可以全平台使用。但缺点也因此而来,正是因为Java为了能全平台使用,因此使用了虚拟机概念来屏蔽底层硬件的区别。因为Android也是跑在虚拟机上的。虽然谷歌为了提高性能,在Android迭代时,更换了不同版本的虚拟机,但毕竟虚拟机还在。这就意味着,Android的应用程序在运行时,必须要先经过虚拟机的解释,才能让底层的Linux再执行。这就大大拖累了Android的运行速度。

而且由于底层Linux系统是用C语言编写的,而Android及其应用都是用Java编写的。因此当用户使用应用程序想使用一个功能,那么就必须从Android系统的Java调用这个功能的接口转换成底层Linux系统的C语言调用接口。而这有需要JNI来完成从java接口到C接口的转换,又要拖慢一点时间。而且对于Android来说,如果内存占用过高(如打开的应用太多)时,会执行一个叫做GC的内存回收工具,进行内存碎片回收。但是要命的是,GC在执行时会停止所有的程序运行,直到清理完毕。这也是为何Android手机为什么一直在大幅增加内存容量,就是为了尽量减少GC的运行次数。

而华为的方舟编译器就一举解决了这几个困扰业界多年的难题。通过将java/c/c++代码统一编译,彻底解决了以往安卓必须依赖的JNI和虚拟机。而又通过引用计数法进行内存实时回收,避免了GC的系统卡顿。因此方舟编译器才敢宣称能大幅提升Android及其应用的运行速度。

说来简单,但要知道方舟编译器做到了业界自Java 1995年问世以来,一直依赖虚拟机,几十年未变的框架。也是第一个真正能做到Java/C/C++代码能够直接混合成机器码的编译器。可以说,有了方舟编译器,华为才真正的有可能构建起自己的生态。现在广大程序员,都在期盼着华为尽早开放方舟编译器的源码。正如Linux之父,程序员之神Linus说的:Talk is cheap, Show me the code。

对此你怎么看,欢迎留言讨论。

【如果喜欢本文,请关注小编,跟踪最新科技动态】

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190814A0RFFT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券