谷歌为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++。

目录
相关文章
|
5天前
|
IDE Android开发 iOS开发
Android VS iOS:哪个操作系统更适合开发者?**
**在移动应用开发领域,Android和iOS是两大主流操作系统,它们各自拥有独特的特点和优势。本文探讨了Android和iOS操作系统在开发者视角下的差异与优劣,分析了它们在开发环境、用户群体、市场前景等方面的比较,帮助开发者选择最适合他们需求的平台。
14 2
|
13天前
|
安全 Java Android开发
Android 与 iOS:探索两大操作系统的差异与优势
本文将深入探讨安卓和iOS这两大主流移动操作系统的差异与优势。我们将分别从用户界面、应用生态系统、开发者支持以及性能与安全方面进行比较,帮助读者更好地了解并选择适合自己的操作系统。
16 0
|
1月前
|
Java Android开发 开发者
Android10 修改开发者选项中动画缩放默认值
Android10 修改开发者选项中动画缩放默认值
29 0
|
14天前
|
搜索推荐 Android开发 iOS开发
深入解析安卓与iOS操作系统的异同
安卓和iOS是目前两大主流移动操作系统,它们分别代表了开放性和封闭性的设计理念。本文将从系统架构、用户界面、应用生态等方面深入探讨安卓和iOS之间的异同,帮助读者更好地理解这两个操作系统的特点和优势。
24 3
|
5天前
|
vr&ar Android开发 数据安全/隐私保护
探索移动操作系统的演进:从Android到iOS的技术革新
在移动操作系统的演进过程中,Android和iOS这两大平台凭借其独特的技术优势和丰富的生态系统,成为了全球智能手机市场的主导者。本文深入探讨了它们的发展历程及各自的技术特点。
10 0
|
11天前
|
安全 Android开发 iOS开发
Android vs iOS:移动操作系统的技术比较与未来发展
本文深入探讨了Android和iOS这两大主流移动操作系统的技术特点和差异,从架构设计、安全性、开发环境、用户体验等多个方面进行详细分析。通过对比两者在市场份额、生态系统建设以及未来发展方向上的表现,本文将为读者提供一个全面的视角,以便更好地理解这两种操作系统的当前地位和未来潜力。
|
13天前
|
搜索推荐 安全 Android开发
安卓与iOS操作系统的对比分析
在移动设备市场上,安卓和iOS操作系统一直是主要竞争对手。本文将从用户界面、应用生态系统、定制化程度和安全性等方面对安卓和iOS进行对比分析,并探讨两者在不同场景下的适用性。
|
19天前
|
安全 Android开发 iOS开发
安卓与iOS操作系统的比较分析
【6月更文挑战第5天】本文将深入探讨安卓和iOS两大主流操作系统的特点、优势和劣势。通过对比分析,我们将揭示这两个系统在性能、安全性、用户体验等方面的差异,帮助用户更好地了解这两个系统,从而做出更明智的选择。
|
27天前
|
安全 Android开发 iOS开发
探索安卓与iOS手机操作系统的发展趋势与差异
在移动互联网时代,安卓和iOS手机操作系统一直处于激烈的竞争之中。本文将从技术角度出发,探讨两大操作系统的发展趋势、特点以及差异,并分析其对用户体验和开发者生态的影响,旨在为读者提供对移动操作系统发展方向的深入了解。
|
29天前
|
存储 缓存 算法
深入理解操作系统内存管理:分页系统的优势与挑战构建高效Android应用:探究Kotlin协程的优势与实践
【5月更文挑战第27天】 在现代计算机系统中,内存管理是操作系统的核心功能之一。分页系统作为一种内存管理技术,通过将物理内存划分为固定大小的单元——页面,为每个运行的程序提供独立的虚拟地址空间。这种机制不仅提高了内存的使用效率,还为多任务环境提供了必要的隔离性。然而,分页系统的实现也带来了一系列的挑战,包括页面置换算法的选择、内存抖动问题以及TLB(Translation Lookaside Buffer)的管理等。本文旨在探讨分页系统的原理、优势及其面临的挑战,并通过分析现有解决方案,提出可能的改进措施。