Android系统涉及的组件很多,开发者会根据Android所开发的部分选择不同的编程语言。对于应用程序开发人员来说,Java和Kotlin是更受欢迎的选择;对于从事操作系统和内部底层的开发人员来说,C和C++是更好的选择。最近,谷歌为操作系统开发者增加了第三个选项Rust。谷歌发布博客称,AOSP(AndroidOpenSourceProject)现在支持使用Rust开发Android操作系统。内存安全错误C和C++中的内存安全错误是最难修复的错误来源。谷歌投入了大量精力和资源来检测、修复和缓解这些类型的错误,有效地防止了大量错误进入Android版本。然而,尽管做出了这些努力,内存安全漏洞仍然是导致稳定性问题的主要原因,长期以来约占Android严重安全漏洞的70%。对于这些内存安全问题,谷歌表示,除了优化内存错误检测机制外,最有效的解决方案是使用内存安全语言。Java和Kotlin等托管语言是Android应用程序开发的最佳选择。这些语言以易用性、可移植性和安全性为设计宗旨,是开发Android应用程序的最佳选择。Android操作系统大量使用Java语言,有效地保护了大部分Android平台免受内存错误的影响。但是对于操作系统的底层来说,Kotlin和Java都不是选项。较低级别的操作系统需要系统编程语言,例如C、C++和Rust。这些语言的设计目标是可控性和可预测性。它们以更少的资源和更可预测的性能特征提供对低级系统资源和硬件的访问。对于C和C++,开发人员负责管理内存生命周期。不幸的是,这样做很容易出错,尤其是在复杂的多线程代码库中。Rust使用编译时检查(强制执行对象生命周期/所有权)和运行时检查(确保内存访问有效)的组合来提供内存安全保证。在提供这种安全性的同时,Rust的性能可与C和C++相媲美。大约50%的错误发生在一年内谷歌表示用Rust重写数千万行C和C++Android代码根本不可行,重写旧的Android不会有太大的区别,因为到目前为止旧代码已经被清理掉了大多数错误。由于Android源代码是一个拥有数十亿用户的开源项目,因此受到了很多人的关注。大多数内存错误发生在新的或最近修改的代码中,大约50%的错误发生在不到一年的时间内。Rust将在必要时用于新组件,这将有助于减少Google可能引入的新内存错误。Android内存错误图表。旧代码有很多错误,现在已修复。罕见的遗留内存错误可能会让人感到意外,但谷歌表示,遗留代码并不是最紧迫的改进领域。随着时间的推移,软件错误会被发现并得到修复,因此我们可以预期维护但未进行积极开发的代码中的错误数量会随着时间的推移而减少。不管怎样,为Android平台增加对新开发语言的支持是一项艰巨的任务。谷歌表示:“在过去的18个月里,我们一直在为Android开源项目添加Rust支持,在接下来的几个月里,我们将分享一些早期采用Rust的项目。将Rust扩展到更多操作系统是一个长期的目标。”学期项目。”参考链接:https://arstechnica.com/gadgets/2021/04/google-is-now-writing-low-level-android-code-in-rust/https://security.googleblog.com/2021/04/rust-in-android-platform.htmlhttps://www.oschina.net/news/136467/rust-in-android-platformhttps://www.cnbeta.com/articles/tech/1111455.htm[本文章为《机器之心》专栏原文翻译,微信公众号《机器之心(id:almosthuman2014)》】点此查看作者更多好文
