谷歌为Android操作系统开发者增加了新的选择 Rust

简介: 谷歌为Android操作系统开发者增加了新的选择 Rust

bVcQ54X.png

Android作为一个完整的操作系统解决方案,涉及到很多移动的部件。总的来说,这些部分先是应用生态系统,然后才是操作系统本身。

作为一个开发者,你选择的编程语言,根据你正在开发的Android的哪一部分而有所不同。对于应用开发者来说,Java和Kotlin是当下流行的选择。对于从事操作系统及其内部底层部分的开发者来说,C和C++是迄今为止一直热门选择。

今天,谷歌为Android操作系统开发者增加了第三个选择——Rust,现在Android开源项目支持Rust编程语言来开发操作系统本身。


bVcQ54Z.png


C和C++的局限性


Android操作系统的底层部分需要C和C++等系统级编程语言构架。这些语言为开发者提供了控制和可预测性,这些在访问低级系统资源和硬件时非常重要。

但却带来了一个缺点,C和C++不能提供内存安全保证,使得容易出现错误和安全漏洞。而且开发者有责任在使用这些语言时管理内存寿命,但在复杂和多线程的代码库中,这种想法做起来比说起来难太多。

现在,C和C++共同构成了Android平台上数以千万计的代码行,这些内存安全漏洞成为最难解决的代码错误来源,占Android高危安全漏洞的70%左右。想要从修复Bug的角度处理问题已经变得不现实,更好的办法还是从一开始就预防这些Bug。

缺乏内存安全性保证迫使开发人员在严格受限和无特权的沙箱中运行Android进程,但沙盒在资源上的成本很高,不仅消耗额外的开销,还引入延迟。沙盒也不能完全消除代码的漏洞,而且由于Bug密度高,沙盒的功效会降低,进一步让攻击者连锁多个漏洞。

另一个限制不是C和C++独有的,但适用于所有的内存安全问题,那就是错误状态必须在工具化的代码中实际触发,才能被检测到。所以即使你的代码有很好的测试,实际的Bug也可能一直没有被发现。但当你发现Bug时,让它们得到修复又是一个漫长且昂贵的过程,而且不一定能得到修复。因此,Bug检测变得不可靠,鉴于这些局限性,Bug预防才是更好的方法。

这就是改用Rust这样的内存安全语言的原因。


Rust的好处


Rust通过使用编译时检查和运行时检查相结合的方式提供内存安全保证,以强制执行对象的寿命/所有权,并确保内存访问是有效的。在实现这种安全性的同时,还能提供与C和C++相当的性能。Rust还减少了对沙盒的需求,让开发人员有更多的开销空间来引入更安全、更轻量的新功能。

虽然Rust确实有它的好处,但一夜之间将整个Android操作系统换成Rust也是不现实的,而且也根本不需要这样做,因为大多数Android的内存错误都发生在新的或最近修改的代码中,甚至有大约50%的代码是一年内写的。因为谷歌认为,其内存安全语言的工作最好集中在新的开发上,而不是重写成熟的C和C++代码。

Rust一个重要优势是它专注于防止出现Bug,而不是严重依赖于检测Bug,从最开始就提高代码的正确性。它还有几个关键特性,如内存安全、数据并发、更有表现力的类型系统、默认的不可变引用和变量、更安全的整数处理、标准库中更好的错误处理等。


切换到Rust对Android意味着什么?


谷歌表示,在过去的18个月里,它一直在为Android开源项目添加Rust支持。但在Android平台上添加一门新语言是一项巨大的工程。除了需要维护一些工具链和依赖关系外,必须更新测试基础设施和工具,并且需要培训开发人员。

谷歌有一些早期采用者项目,他们将在未来几个月内分享。但即便如此,人们还是明确表示,将Rust支持扩展到更多的操作系统是一个多年的项目。

从目前情况来看,谷歌已经在一些地方使用了Rust。Android新的蓝牙协议栈重写代码 "Gabeldorsche "就是用Rust编写的。Gabeldorsche的工作大约在Android 11的时候就开始了,但目前仍未投入使用。Android的Keystore 2.0模块是用Rust编写的,Android的IPC驱动binder的用户空间部分也是如此。虽然与Android无关,但Fuchsia的新netstack也是用Rust编写的。

对于应用开发者来说,这个切换对你作为应用开发者如何编写应用或框架API来工作没有任何改变。这个切换只影响操作系统的编写方式。据Android开发者关系团队的一位成员透露,谷歌目前也不打算发布Rust NDK。应用开发支持的语言将继续是Kotlin、Java、C和C++。

目录
相关文章
|
2月前
|
安全 Android开发 iOS开发
Android vs iOS:哪个操作系统更适合你的智能设备?
在今天的移动设备市场上,Android和iOS是两个主要的操作系统选择。本文将分析它们的优缺点,帮助读者选择最适合自己需求的操作系统。 【7月更文挑战第6天】
48 2
|
2月前
|
弹性计算 运维 自然语言处理
开发者评测|操作系统智能助手OS Copilot
OS Copilot 是阿里云针对Linux操作系统推出的一款智能助手,它利用大模型技术提供自然语言问答、辅助命令执行和系统运维调优等功能,旨在提高Alibaba Cloud Linux的使用效率。OS Copilot在新人上手时并不简单,文档指引不够清晰,存在一些步骤无法顺利执行的问题,比如环境配置和命令执行。此外,产品目前仅支持Alibaba Cloud Linux,限制了其应用范围。虽然OS Copilot在一些基本功能上表现尚可,如解答问题和编写简单脚本,但在处理复杂任务或自动化运维时显得不足。总体而言,OS Copilot对新手和阿里云环境有一定的帮助,但功能和使用体验仍有改进空间。
|
8天前
|
安全 搜索推荐 Android开发
安卓与iOS:一场持续的移动操作系统之战
【8月更文挑战第23天】在智能手机的世界里,安卓和iOS就像是两个重量级拳击手,一直在争夺移动操作系统市场的霸主地位。本文将深入探讨这两个系统的特点、优势和劣势,以及它们如何影响我们的生活和工作。
|
20天前
|
安全 搜索推荐 Android开发
安卓与iOS的较量:选择适合你的移动操作系统
在移动设备的世界中,安卓和iOS是两大巨头,它们各自拥有独特的优势和特点。本文将深入探讨这两个操作系统的核心差异,包括它们的设计理念、用户界面、应用生态、安全性、以及更新机制。无论你是科技爱好者还是普通用户,了解这些差异将帮助你做出更明智的选择,找到最适合你个人需求的操作系统。让我们一起探索这场持续已久的较量,看看哪个系统能更好地满足你的移动生活需求。
27 1
|
23天前
|
Android开发 iOS开发 UED
安卓与iOS:操作系统的巅峰对决
在智能手机市场,安卓和iOS两大操作系统如同两座巍峨的山峰,各自占据着市场的半壁江山。本文将深入探讨这两大系统的特点、优势以及它们在市场上的竞争态势,帮助读者更好地理解这两大操作系统的差异与联系。
28 2
|
4天前
|
存储 安全 Linux
探索操作系统的内核——从用户到开发者的视角
【8月更文挑战第27天】操作系统作为计算世界的桥梁,它如何连接硬件与软件、用户与机器?本文将深入浅出地探讨操作系统的核心概念,包括进程管理、内存分配以及文件系统。我们将通过比喻和实例,使复杂的技术内容变得易于理解,同时提供代码示例,帮助读者从理论到实践,全面掌握操作系统的工作原理。
|
11天前
|
搜索推荐 Android开发 iOS开发
安卓与iOS的较量:操作系统的未来之路
在数字时代,智能手机已成为我们生活中不可或缺的一部分。而在众多智能手机中,安卓和iOS无疑是最受欢迎的两大操作系统。它们各自拥有独特的优势和特点,吸引了大量的用户。本文将从技术角度出发,探讨安卓与iOS之间的差异,以及它们在未来可能的发展趋势。
|
2月前
|
弹性计算 自然语言处理 Linux
开发者评测|OS Copilot:智能助手带来的高效开发体验
OS Copilot是阿里云的智能操作系统助手,支持自然语言问答、命令执行和系统运维。用户可通过在线实验或本地安装体验,尤其适合Alibaba Cloud Linux 3环境。在线体验免费,但可能产生少量费用。安装过程简单,通过Yum安装组件并配置环境变量即可使用。OS Copilot的对话模式允许用户通过"co"命令进行问答,如解释编程概念或执行系统任务。其自然语言处理能力强,适合开发者进行系统管理和问题解决。产品上手容易,文档清晰,但更多案例和教程会更利于新手。用户评价中,OS Copilot获得高分,有助于提高工作效率,期望未来能支持更多操作系统和提供更全面的功能。
4243 9
|
19天前
|
物联网 vr&ar Android开发
未来移动操作系统的发展趋势:Android与iOS的融合与创新
【8月更文挑战第12天】在数字时代的浪潮中,移动操作系统作为智能设备的核心,其发展态势备受关注。本文将探讨Android与iOS这两大主流操作系统的未来走向,包括它们在技术、设计理念及市场策略上的融合与创新。我们将分析两大系统如何通过互补优势,引领移动互联网进入一个更加统一和高效的新时代。
|
2月前
|
弹性计算 运维 自然语言处理
操作系统智能助手OS Copilot开发者评测
本文主要介绍了线上体验 OS Copilot 的详细步骤,包括安装、测试、使用不同场景及删除资源的方法。还对 OS Copilot 进行了产品体验评测,指出新人上手较简单但文档有改进空间,对工作帮助程度高,我非常愿意推荐。同时反馈了产品功能,包括体验的功能与兴趣点、与其他产品对比的优缺点、功能扩展期望及与其他产品联动组合。最后总结其有优势也有提升空间,期待优化。
129 2
下一篇
云函数