问题

华为公布的方舟编译器到底对安卓软件生态会有多大影响?

回答
华为公布的方舟编译器对安卓软件生态的影响,可以从多个层面进行解读,而且其深远程度取决于后续的发展和行业的接受程度。以下我将尽量详细地阐述:

一、 方舟编译器是什么?它解决了安卓生态的什么痛点?

首先,理解方舟编译器本身至关重要。

什么是编译器? 编译器是将程序员用高级语言(如Java、Kotlin)编写的代码,翻译成计算机能够理解和执行的机器码(或字节码)的程序。
安卓的传统执行模型:ART (Android Runtime)
过去,安卓主要使用Dalvik虚拟机,后来进化为ART虚拟机。
ART采用的是“先编译后运行”的模式,也就是在安装应用时,将Java字节码(.dex文件)预编译成机器码(.oat文件)。
然而,这个预编译过程是AOT (AheadOfTime) 编译的“部分”版本。它在安装时进行,而不是在开发时。
更关键的是,ART在运行时仍然需要大量的JIT (JustInTime) 编译。当应用运行到某个函数时,如果该函数是第一次被执行,JIT编译器会将其从字节码动态编译成机器码,然后缓存起来。后续再次调用时就直接执行缓存的机器码。
方舟编译器的优势:纯AOT (AheadOfTime) 编译
方舟编译器旨在实现完全的AOT编译。这意味着,它在应用发布之前,就将Java字节码一次性地、完整地编译成原生机器码。
解决的痛点:
1. 运行时性能损耗: 传统的JIT编译会在应用运行时消耗CPU资源,尤其是在首次执行某个功能时,会产生额外的延迟。方舟编译器消除了这部分运行时编译开销,使得应用启动更快,运行更流畅。
2. 效率低下: JIT编译的效率相对较低,并且需要处理各种运行时优化和垃圾回收等任务,这也会影响整体性能。方舟编译器可以在开发阶段进行更深度的优化,生成更高效的机器码。
3. 内存占用: JIT编译需要内存来存储和管理编译后的代码以及优化信息。方舟编译器可以减少运行时内存占用。
4. 碎片化和低版本兼容问题: ART的兼容性也存在一些限制,尤其是在不同安卓版本和设备上,性能表现可能不一致。方舟编译器通过生成原生机器码,理论上可以更好地适配底层硬件,提高跨设备兼容性。

二、 方舟编译器对安卓软件生态的直接影响:

1. 应用性能的提升(尤其是老应用和对性能敏感的应用):
启动速度加快: 用户最直观的感受就是应用的启动时间会显著缩短,尤其是在冷启动(第一次打开应用)时。
运行更流畅: 动画效果、UI响应、复杂计算等都会更加流畅,减少卡顿和掉帧的情况。
功耗降低: 由于减少了运行时CPU的消耗,理论上应用的整体功耗也会有所降低,对续航有利。
尤其对性能敏感的应用: 游戏、影音播放器、大型图形处理应用等将从中受益最大。

2. 开发者体验的改变:
编译流程的变化: 开发者需要集成方舟编译器进行编译,这可能意味着构建工具链和开发流程需要进行调整。
潜在的调试和兼容性挑战: 新的编译工具可能会带来新的调试问题,以及在不同设备和系统版本上的兼容性测试工作。
优化的可能性增加: 开发者可以利用方舟编译器提供的更多优化选项,精细调优应用的性能。
语言层面: 方舟编译器最初支持Java,但华为也积极推进了 Kotlin 和 C++ 的支持,旨在覆盖更广泛的安卓开发语言。

3. 生态系统的适配和推广:
华为设备成为首批受益者: 最初,方舟编译器主要用于华为设备上的应用。这使得华为手机在性能和流畅度上具有一定的差异化优势。
第三方应用厂商的适配: 为了让更多应用从方舟编译器中获益,华为需要说服第三方应用厂商进行适配。这需要提供易用的工具、完善的文档和技术支持。
开源社区的推动: 华为将方舟编译器开源(OpenArkCompiler),目的是吸引开发者和厂商共同参与,形成生态。开源社区的活跃度将是方舟编译器能否真正普及的关键。

三、 方舟编译器对安卓软件生态的深远影响和潜在挑战:

1. 打破ART的局限,提升安卓整体性能上限:
如果方舟编译器能够被广泛采用,它将显著提升整个安卓生态的应用性能基准。这意味着未来发布的安卓应用会普遍比现在更流畅、更高效。
这会迫使其他厂商和开发者重视性能优化,从而推动安卓生态整体的技术进步。

2. 挑战谷歌在安卓原生工具链上的主导地位:
谷歌作为安卓的开发者,一直拥有对安卓运行时和编译工具链的主导权。方舟编译器的出现,以及其开源模式,为第三方提供了一个可以与谷歌原生方案竞争或互补的选项。
如果方舟编译器证明了其优越性,并且获得了广泛支持,它可能在一定程度上改变安卓生态的开发工具链格局。

3. 可能导致生态的分化或融合:
分化: 如果方舟编译器只在华为设备上普及,或者适配工作进展缓慢,可能会在安卓生态中造成一定程度的“分化”。非华为设备上的应用可能继续沿用传统的ART方案,而华为设备上的应用则可以享受方舟编译器的优势。
融合: 最理想的情况是,方舟编译器被谷歌采纳或成为安卓开发的一种主流选项,与其他编译技术并行存在,最终融合到整个安卓生态中,实现更广泛的性能提升。

4. 对开发者和厂商的技术投入和生态合作的要求:
方舟编译器的推广依赖于大量的第三方应用厂商的适配工作。这需要厂商投入资源进行技术改造和测试。
华为需要积极与应用厂商、开发者社区合作,建立一个健康的生态反馈和迭代机制。

5. 与其他高性能方案的竞争:
目前,已经有一些针对安卓性能优化的技术和方案,例如新的虚拟机优化、底层的图形库优化等。方舟编译器需要证明其相对这些方案的优势。
谷歌自身也在不断优化ART和引入新的开发技术(如Jetpack Compose,旨在简化UI开发和提升性能),方舟编译器需要在这些方面持续保持竞争力。

6. 对原生开发的影响:
虽然方舟编译器主要面向Java/Kotlin代码,但其背后体现的AOT编译思路,以及华为后续对C++等语言的支持,也可能会影响原生开发者的思考方式和工具选择。

总结一下:

方舟编译器是华为在解决安卓运行时性能瓶颈方面的一次重要尝试。它通过纯AOT编译,理论上能够带来显著的应用性能提升,包括更快的启动速度、更流畅的运行和更低的功耗。

对安卓软件生态的影响是多方面的:

积极的方面: 提升整体应用性能,推动技术进步,可能改变开发工具链格局。
挑战和不确定性: 需要大量第三方适配,面临与谷歌原生方案的竞争,存在生态分化或融合的可能性。

最终,方舟编译器能否真正对安卓软件生态产生颠覆性的影响,取决于以下几个关键因素:

1. 开源社区的活跃度和采纳程度: 越多的开发者和厂商参与,越能形成强大的生态。
2. 华为持续的投入和技术迭代: 编译器技术需要不断更新以适应新的语言特性和硬件。
3. 与其他生态参与者的合作与竞争: 包括谷歌自身对安卓运行时的改进。
4. 用户对性能提升的感知和需求: 用户对流畅度和效率的需求是推动技术采纳的最终动力。

如果一切顺利,方舟编译器有望成为安卓生态一次重要的性能革新,并对移动开发领域产生深远的影响。但目前来看,其影响程度仍有待观察,需要时间的检验和生态的共同努力。

网友意见

user avatar

不懂这块,微博博主北京寒冬有篇微博讲这个编译器的背景,

我不大相信各位评论中比这1000多人的团队更牛

user avatar

看完这些答案让人无语的很,叽叽歪歪一大堆。

你们比方舟编译器的首席科学家周志德还了解方舟编译器?

写出长篇大论的各位不会不知道Fred Chow吧。

user avatar

看到问题下许多答案有误导,忍不住出来解释一下。

Android 平台的绝大多数应用是使用 Java 语言写的,CPU 只能理解汇编指令,无法直接识别 Java 语言的虚拟机指令;为了让 CPU 能运行 Java 语言编写的程序,一般有两种办法:

  1. 「计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决」 引入一个中间层,这个中间层负责 Java代码的执行,然后这个中间层本身编译为 CPU 能理解的汇编指令,也就是 CPU -> 中间层 -> Java 代码。如果这个中间层采用 Java 语言直接作为输入,理解一句 Java 语句就把Java语言翻译一下让CPU 执行一段,我们一般称这种模式为「解释执行」。毋庸置疑这种方式效率是相当低效的。
  2. 直接把 Java 语言翻译成 CPU 能理解的机器语言。这里又有两种方式:
    1. 在程序运行之前直接把 Java 代码编译为机器语言。这种模式我们称之为 AOT (Ahead of time)编译。
    2. 在程序运行起来之后,实时地把 Java 语言编译为机器语言然后执行。这种模式称之为 JIT(Just in time) 编译。

背景介绍完了回到 Android 平台上面,Android 平台分为几个阶段:

  1. 在 Android 5.0 正式采用 ART 之前,Android 采用的是 解释执行 + 辣鸡 JIT 的方式执行 Java代码。在这个阶段是货真价实的「边解释边执行」的模式,代码效率相当低下,再加上那时候同样辣鸡的 GC (垃圾回收),Android 用起来真是惨不忍睹。
  2. Android 5.0 ~ Android 6.0 。Google 推出了 ART (Android Runtime)来解决之前的 Java 代码执行效率问题。这个阶段采用的是完全 AOT 模式;Android 应用在安装的时候,系统会把所有Java代码提前编译为机器码。这种模式有两个缺点不能忍:
    1. 安装速度巨慢。即使是现在吊炸天的 855 采用 AOT 模式编译一下安装包比较大的应用(如支付宝)可能就要一分钟。那个时候的 CPU 可不如现在,安装一个应用都让你等得头皮发麻。更要命的时候,系统 OTA 开机会对所有的应用执行 AOT 操作,这时候你的开机速度可能要半个小时。。。
    2. 占用磁盘空间,Java 代码编译为机器码之后体积会急剧膨胀。
  3. Android 7.0 ~ 现在。Google做了很大的改进,基于这样一个事实:我们使用一个应用的时候,基本每个人只使用它一小部分功能,为什么要把所有代码全编译呢?只编译你经常用的那部分代码不就 OK 了,这样安装的时候啥也不干速度飞快,等你用的时候系统就能知道哪部分代码经常被执行,把这部分代码编译为机器码,运行起来速度也快。于是 Google 又引入了 JIT,这时候的执行模式是 AOT + JIT + 解释执行。
    1. 应用安装的时候不执行 AOT 编译,安装速度飞快。初次使用应用的时候没有机器码,因此只能解释执行。
    2. 应用运行起来之后,系统收集经常被运行的代码的信息,做两件事:1)在必要的时候在运行时直接把 Java 代码编译为机器码 (JIT),然后使用机器码执行提高运行效率。2)把这个「经常被运行的代码信息保存起来」
    3. 设备空闲的时候,系统拿出应用运行时候保存的「热点代码信息」直接把这些代码编译为机器码 (AOT)

关于 Android 7.0 系统的演进可以参阅这里:s3.amazonaws.com/connec

Android 8.0上改进了解释器,解释模式执行效率大幅提升;Android 9.0上提供了预先放置热点代码的方式,应用在安装的时候就能知道常用代码会被提前编译。可以看到,当前 Android 平台的执行模式在空间占用+安装速度+运行速度上已经达到了一个很好的平衡。

回到华为的这个方舟编译器上面,

  1. 现在的 Android 是边解释边执行的吗?可以说是,也可以说不是。上面我已经提到了,现在的 Android 是 解释执行 + 还算可以的JIT + AOT 的模式。并且,你也可以手动把应用的代码全部提前编译达到完全 AOT 的效果(很多答案里面提到的 AOT 就是说的这种);不过这属于开倒车,Google 肯定不会这么做。这样做效果有多大呢?这个我有发言权。之前在支付宝做性能优化的时候,我干过这么一回事:让应用在后台运行的时候请求系统直接采用 everything 模式编译支付宝,本地测试启动速度有爆炸性提升(30%~50%);但是灰度测试的时候效果不明显,为什么呢?其一是后台全编译运行成功率低,其二是系统的 JIT + 后台 AOT 不是吃素的;考虑到耗电/占空间的问题压根没上线。所以如果华为只是简单地用这种方式去避免所谓的「边解释边执行」那就相当滴 low,但是按照 GPU Turbo这种黑科技来看,我觉得不太可能是这个。
  2. 除了 Android 系统的这种 AOT 之外,难道没有别的办法了吗?我不负责任地猜测一下,方舟编译器是不是在Android 应用打包成APK的时候,直接把 Java 代码编译为了机器码?注意这个跟Android系统的那个 AOT 是不样的,系统是在应用安装或者系统空闲的时候做编译;这种方式你下载到的安装包就是编译好的了,不需要系统动手。

如果是第一种,辣鸡华为。如果是第二种,吊炸天!!!当然还有别的可能,不管咋样,静待开源 :)

类似的话题

  • 回答
    华为公布的方舟编译器对安卓软件生态的影响,可以从多个层面进行解读,而且其深远程度取决于后续的发展和行业的接受程度。以下我将尽量详细地阐述:一、 方舟编译器是什么?它解决了安卓生态的什么痛点?首先,理解方舟编译器本身至关重要。 什么是编译器? 编译器是将程序员用高级语言(如Java、Kotlin).............
  • 回答
    华为方舟编译器原理的公布,无疑是近几年来国内技术领域一件振奋人心的大事。对于这件事,我们应该从多个维度,细致地去审视和理解。这不仅仅是一个技术问题的披露,更是中国科技自主化进程中一个具有里程碑意义的节点。核心价值:从“能用”到“好用”的飞跃,打破生态壁垒方舟编译器最直接、也是最核心的价值,在于它大幅.............
  • 回答
    “华为狼性”和“PUA”(职场欺凌)虽然都可能带来高强度的工作压力和负面情绪,但它们在核心动机、手段、目的和受众上存在着本质的区别。理解这些区别对于分辨健康的职业竞争与有害的职场环境至关重要。以下将从多个维度详细阐述华为的狼性精神与PUA的不同: 华为的“狼性”精神“狼性”是华为早期在市场竞争激烈、.............
  • 回答
    这个问题挺实在的,不少朋友在职场里都有体会。要说华为、阿里这些大公司为啥偏爱让员工“卷”起来,而不是直接加人或者精准招聘,这背后其实是好几个层面的考量,挺复杂的。我给你掰开了揉碎了说,争取说到点子上。首先,咱得承认,“加班文化”在中国很多互联网大厂是一种普遍现象,但它绝不是一个简单的好与坏的判断题。.............
  • 回答
    华为员工在波兰被捕事件,中国外交部发言人耿爽的回应确实包含了不少值得我们深入解读的信息。这不仅仅是一起简单的个案,更牵扯到中波两国关系、国际法、华为公司的处境以及中国在国际舞台上的立场等等多个层面。下面我将尝试详细地梳理一下其中的关键点,并尽量用自然的语言来呈现。首先,最直接也是最核心的信息是中方明.............
  • 回答
    华为公布的2021年上半年经营业绩,确实是一份非常值得深入解读的报告。从数字上看,这份成绩单可以说是喜忧参半,折射出华为在面临复杂外部环境下的坚韧与挑战。整体营收稳中有降,但盈利能力显著提升。华为公布的数据显示,2021年上半年,公司实现销售收入1357亿元人民币,同比下降4.5%。乍一看,营收下滑.............
  • 回答
    4 月 15 日华为公布的自动驾驶公开道路体验视频,在我看来,绝对是自动驾驶领域一个值得深入探讨的节点。这不仅仅是一个技术展示,更是一种信号,释放出华为在智能汽车领域,尤其是自动驾驶方面,野心勃勃且步调坚实。视频呈现出的亮点与解读:首先,视频最直观的感受就是流畅性与场景适应性。我们看到的是一款在复杂.............
  • 回答
    华为海思总裁何庭波的一番话,尤其是“备胎转正”的表述,无疑是近期科技界最引人瞩目的焦点之一。这背后承载着华为多年的隐忍与布局,更是对“科技自立”这一宏大目标的深刻诠释。“备胎转正”:不是临时抱佛脚,而是战略深耕的成果首先,理解“备胎转正”这个说法至关重要。这并非意味着华为在被美国制裁之后才仓促启动的.............
  • 回答
    华为公布升级 HarmonyOS 的用户已超 4000 万,这个数字着实不小,而且增长势头相当迅猛。从我的角度来看,这是一个非常积极的信号,表明鸿蒙生态建设正在进入一个加速期。华为 HarmonyOS 取得如此成绩,我个人认为有几个关键原因: 底层技术优势和软硬一体化协同: 华为一直强调鸿蒙的核.............
  • 回答
    解读 IDC 2021 中国折叠屏手机市场份额:华为的领跑地位与行业变局IDC 最新发布的 2021 年中国折叠屏手机市场份额排行榜,无疑为这个新兴的细分市场注入了新的关注。华为以高达 49.3% 的市场份额稳居第一,这一成绩不仅巩固了其在折叠屏领域的领导者地位,也为我们深入理解当前中国折叠屏市场的.............
  • 回答
    网上传出华为等科技巨头试图阻止英伟达收购 ARM 的消息,这在业界引起了广泛关注,也让人不禁思考,一旦这桩收购案尘埃落定,对华为这样高度依赖 ARM 架构的公司将产生怎样的连锁反应。要理解这件事的深远影响,我们得先扒一扒 ARM 的“根基”和它在现代科技产业中的“江湖地位”。ARM 并非直接生产芯片.............
  • 回答
    关于国内几大科技巨头的下班时间,以及哪家“加班更夸张”,这确实是很多在互联网行业奋斗的年轻人津津乐道又有些无奈的话题。要说得详细,又得剔除AI痕迹,那我们不妨从大家普遍的感受和流传的“江湖传说”来聊聊。腾讯、阿里巴巴、网易、华为,各自的“下班时间”印象首先要明确一点,对于这些体量巨大、业务多元的巨头.............
  • 回答
    华为的公关能力,可以说是相当强悍,甚至可以说是国内企业中的翘楚,而且这种强悍不是靠蛮力,而是经过多年市场搏杀和战略布局打磨出来的。要说有多强,得从几个层面来聊聊,而且尽量不让大家觉得是套路话。1. 危机时刻的“定海神针”这绝对是华为公关最让人印象深刻的地方。想想这些年,从“孟晚舟事件”到各种被“封杀.............
  • 回答
    关于余华的《活着》是否“抢了”另一位作家在饭局上公布的构思,这是一个在文学圈中流传甚广的说法,但并没有确凿的证据能够证明这一点。这是一个充满争议和猜测的传说,更像是一个故事,而不是一个被证实的事件。要详细讲述这个问题,我们需要从几个方面来剖析:1. 传说的来源和核心内容:这个传说的主要说法是:在某次.............
  • 回答
    华为不公开屏幕供应商的行为,可以从多个角度来解读,这其中既有商业策略的考量,也与行业生态和技术发展息息相关。下面我将详细阐述: 1. 商业机密与竞争优势的保护这是最直接也是最主要的原因。 供应链的稳定性与独特性: 在高端智能手机市场,屏幕是至关重要的核心部件,直接影响用户体验(如显示效果、刷新率.............
  • 回答
    OPPO公关吐槽华为公关,澄清OPPO不使用鸿蒙的背后博弈OPPO公关团队近期对华为公关部门的“吐槽”,以及由此引发的关于OPPO为何不采用鸿蒙系统的讨论,是一个值得深入剖析的事件。这不仅仅是两家中国科技巨头之间的言语交锋,更是背后复杂的商业策略、市场竞争和技术选择的体现。要详细地看待这一事件,我们.............
  • 回答
    华为是一家中国的跨国科技公司,成立于1987年,总部位于中国深圳。它在全球通信行业中扮演着举足轻重的角色,也是目前全球最大的电信设备制造商。要详细了解华为,我们可以从几个关键方面入手:1. 起源与发展历程: 初创时期 (19871990年代中期): 华为最初由任正非创立,当时是一家小型企业,主要.............
  • 回答
    “华为是个好公司,你们毕业后会选择华为吗?”这个问题,在临近毕业的我们身上,就像一个挥之不去的回声,时常在我们脑海中盘旋。毕业季的到来,让每个人都开始认真审视自己的未来,而华为,这个名字,几乎是绕不开的一个选项。说华为是“伟大的公司”,这绝非空穴来风。从一个在深圳坂田的简陋厂房起步,到如今成为全球领.............
  • 回答
    华为,这个名字在国内几乎无人不知,在国际上也响当当。说它“伟大”,其实是个挺复杂的问题,因为它牵扯到很多方面,有让人钦佩的成就,也有被争议的方面。咱们不妨一件件来捋一捋,看看这个公司到底是如何走到今天的,以及它身上的“伟大”和“不伟大”究竟体现在哪里。首先,聊聊华为的“伟大”之处,这通常是大家最直观.............
  • 回答
    华为麒麟芯片的指令集,实际上是基于ARM架构的。ARM(Advanced RISC Machines)公司,总部位于英国,是一家全球领先的半导体知识产权(IP)提供商。华为麒麟CPU所使用的指令集,就是ARM公司授权的ARMv8A架构指令集。这里需要解释一下什么是“指令集”以及华为与ARM之间的关系.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有