作為一個相當(dāng)完善的移動操作系統(tǒng),Android 系統(tǒng)涉及到很多組件。如果寬泛的來講可以分成兩大部分,應(yīng)用生態(tài)和操作系統(tǒng)本身。而對于開發(fā)者來說,所選擇的編程語言會根據(jù)正在開發(fā)的 Android 部分有所不同。

對于應(yīng)用開發(fā)者來說,Java 和 Kotlin 是比較流行的選擇;而對于從事操作系統(tǒng)以及內(nèi)部底層的開發(fā)者來說,C 和 C++ 是比較熱門的選擇。而今天谷歌為操作系統(tǒng)開發(fā)者增加了第 3 個選擇– Rust,因為 Android Open Source Project 現(xiàn)在支持 Rust 編程語言來開發(fā)操作系統(tǒng)了。
C 和 C++ 的限制
Android 系統(tǒng)的底層需要 C 和 C++ 等系統(tǒng)編程語言。這些語言為開發(fā)者提供了控制和可預(yù)測性,這在訪問低級系統(tǒng)資源和硬件時非常重要。不幸的是,C 和 C++ 并不能提供內(nèi)存安全保證,使得它們?nèi)菀壮霈F(xiàn)錯誤和安全漏洞。開發(fā)者有責(zé)任在這些語言上管理內(nèi)存壽命,但在復(fù)雜和多線程的代碼庫中,這說起來容易做起來難。

C 和 C++ 共同構(gòu)成了 Android 平臺上數(shù)以千萬計的代碼行。這些內(nèi)存安全漏洞成為最難解決的代碼錯誤來源,占 Android 高嚴(yán)重度安全漏洞的 70% 左右。單純的修復(fù)這些 bug 變得不足以處理問題,更好的方法是在一開始就預(yù)防這些 bug。
由于缺乏內(nèi)存安全保障,迫使開發(fā)者在嚴(yán)格約束的無權(quán)限沙盒內(nèi)運(yùn)行Android進(jìn)程。但沙盒在資源上的成本很高,會消耗額外的開銷,并引入延遲。沙盒也不能完全消除代碼的漏洞,而且由于 bug 密度高,沙盒的功效會降低,進(jìn)一步讓攻擊者連鎖多個漏洞。

另一個限制,雖然不是 C 和 C++ 獨(dú)有的,但適用于所有的內(nèi)存安全問題,那就是錯誤狀態(tài)必須在工具化的代碼中實際觸發(fā),才能被檢測到。所以即使你的代碼有很好的測試,實際的 bug 也可能一直沒有被發(fā)現(xiàn)。而當(dāng)發(fā)現(xiàn)bug時,讓它們得到修復(fù)又是另一項任務(wù),涉及到一個漫長而昂貴的過程,不一定能得到正確的修復(fù)。因此,bug 檢測變得不可靠,鑒于這些局限性,bug 預(yù)防是更好的方法。

Rust 及其優(yōu)勢
Rust 通過使用編譯時檢查和運(yùn)行時檢查相結(jié)合的方式提供內(nèi)存安全保證,以強(qiáng)制執(zhí)行對象的壽命/所有權(quán),并確保內(nèi)存訪問是有效的。在實現(xiàn)這種安全性的同時,還能提供與C和C++相當(dāng)?shù)男阅?。Rust 還減少了對沙盒的需求,讓開發(fā)人員有更多的開銷空間來引入更安全、更輕量的新功能。

雖然 Rust 確實有它的好處,但一夜之間將整個Android操作系統(tǒng)換成Rust是不可行的。而且可能根本不需要這樣做,因為大多數(shù) Android 的內(nèi)存錯誤都發(fā)生在新的或最近修改的代碼中,大約有50%的代碼是不到一年的。谷歌認(rèn)為,其內(nèi)存安全語言的工作最好集中在新的開發(fā)上,而不是重寫成熟的C和C++代碼。
切換到 Rust 對于Android 意味著什么
Rust還專注于防止bug,而不是嚴(yán)重依賴檢測bug,從而提高代碼的正確性。它有幾個關(guān)鍵特性,比如內(nèi)存安全、數(shù)據(jù)并發(fā)、更有表現(xiàn)力的類型系統(tǒng)、默認(rèn)的不可變引用和變量、更安全的整數(shù)處理、標(biāo)準(zhǔn)庫中更好的錯誤處理等等。
Google表示,在過去的18個月里,它一直在為Android開源項目添加Rust支持。但在Android平臺上添加一門新語言是一項巨大的工程。一些工具鏈和依賴關(guān)系需要維護(hù),測試基礎(chǔ)設(shè)施和工具必須更新,開發(fā)人員需要接受培訓(xùn)。
特別提醒:本網(wǎng)內(nèi)容轉(zhuǎn)載自其他媒體,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實,對本文以及其中全部或者部分內(nèi)容、文字的真實性、完整性、及時性本站不作任何保證或承諾,并請自行核實相關(guān)內(nèi)容。本站不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。如若本網(wǎng)有任何內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系我們,本站將會在24小時內(nèi)處理完畢。
相關(guān)推薦
- 華納云香港高防服務(wù)器150G防御4.6折促銷,低至6888元/月,CN2大帶寬直連清洗,終身循環(huán)折扣
- RakSmart服務(wù)器成本優(yōu)化策略
- 自媒體推廣實時監(jiān)控從服務(wù)器帶寬到用戶行為解決方法
- 傳統(tǒng)網(wǎng)站如何借力短視頻?從SEO到“內(nèi)容種草”的轉(zhuǎn)型策略
- 個人站長消亡論?從“消失”到“重生”的三大破局路徑
- raksmart法蘭克福云服務(wù)器延遲高嗎?
- 自媒體人搭建直播服務(wù)器使用raksmart優(yōu)化技巧
- 華納云高防服務(wù)器3.6折起低至1188元/月,企業(yè)級真實防御20G`T級,自營機(jī)房一手服務(wù)器資源