有人說安卓就是 Linux,也有人說安卓是安卓、Linux 是 Linux,二者沒什麼關係,還有人說安卓用的是 Linux 的內核,那麼它們之間究竟是什麼關係呢。要想獲得這個問題的答案,咱們要先弄清楚幾個概念。html
Linux 與 Linux 內核實際上是不同的,關於這個問題,我在以前的一篇文章中講過(《Linux,Unix,GNU 到底有什麼樣的淵源?》)。Linux 的內核是由 Linus Torvalds 在1991年首次編寫。它是操做系統的核心,包括設備驅動、文件系統、進程管理、網絡通訊等。可是操做系統光有內核,用戶是沒有辦法操做的,因此不少廠商和 Linux 社區就在內核之上開發了不少工具,好比咱們經常使用的 GNome桌面,FireFox瀏覽器、GIMP 圖片編輯器等等。Linux 內核和這些應用一塊兒打包後就被稱做 Linux 發行版本。Linux 有不少的發行版本,我在以前的文章中(《這麼多Linux版本,你究竟該怎麼選擇?》),對不一樣的版本作過比較。shell
因此咱們常說的 Linux 有兩個含義:瀏覽器
1) Linux 內核,這個嚴格來講應該叫 GNU/Linux,由於它是 GNU 計劃的一部分網絡
2) Linux 發行版本,好比 Debian、Ubuntu、Mint、RedHat等等架構
那麼安卓和 Linux 內核或者 Linux 發行版本有什麼關係嗎?框架
安卓實際上用到的是 Linux 的內核。由於 Linux 自己是開源的,因此谷歌的工程師們選擇了在 Linux 內核基礎之上作裁剪定製,這樣他們就不須要從頭開始來開發一個全新的系統。BTW,這在大廠當中也是一種比較經常使用的作法,好比 Playstation 的操做系統用的是 FreeBSD的內核,XBox 用的是 Windows NT 的內核。在安卓的手機上,在系統信息中你能夠看到 Linux 內核的版本。編輯器
既然安卓用的是 Linux 的內核,那是否是能夠說它就是 Linux的一個發行版本呢?先看一下安卓和其餘 Linux 發行版本開發架構上有何不一樣。工具
你們都知道 Linux 內核是用 C語言開發的,安卓在 Linux 的內核之上用 C/C++ 開發了Dalvik ,後來改叫 Android Run Time,其實自己就是安卓的 Java 虛擬機。咱們作的安卓應用都要用 Java開發,運行在 ART 上面。Linux 其餘發行版本也能夠用 Java 開發應用,只要運行在 Linux 的 Java 虛擬機上就能夠了。除此以外咱們也能夠在 Linux 內核之上使用其餘框架開發,好比 GTK 框架的 Gnome、QT 框架的 LXQT,這些跟 ART 都是一個層次的東西。因此我以爲安卓和其餘 Linux 發行版本本質上沒有太大區別,只不過安卓對 Linux 的內核作了一些裁減,而且在上面跑了一個 Dalvik / ART,而其餘 Linux 發行版本跑了不少個 「Dalvik / ART」而已。spa
解釋清楚了安卓與 Linux 內核的關係以及與 Linux 其餘發行版本的區別後,咱們再來看下小夥伴們常常問到的兩個問題:操作系統
1) 能夠在安卓上運行 Linux 的桌面應用嗎?
由於安卓有不少標準的 GNU 庫沒有安裝,也沒有安裝圖形 X server,因此答案是不能。不過有一些應用嘗試讓咱們在安卓環境中使用 Shell,安卓終端模擬器還有busybox,感興趣的同窗能夠去了解一下。
2) 能夠在Linux 桌面上運行安卓的應用嗎?
由於其餘 Linux 發行版本也沒有 Dalvik / ART,因此安卓的應用在 Linux 桌面上不能直接運行。不過咱們只須要將 Dalvik / ART 移植到 Linux 桌面環境就能夠了。正是基於這個原理,市場上有不少安卓手機模擬器,不只能夠用在 Linux 桌面,還能夠用在 Windows 以及 Mac 上。
安卓的操做系統核心是在 Linux 內核上作了一些裁減和定製,而且在內核之上運行了一個 Dalvik / ART 虛擬機,全部的應用必須運行在這個虛擬機上,因此安卓的應用都是用 Java 來開發的。在 Linux 的發行版本中,咱們可使用 Java 虛擬機,也可使用其餘框架,好比 GTK, QT等等,它們編譯出來的二進制代碼能夠直接運行在 Linux 內核上,它們和 Dalvik / ART 是一個層次上的東西,因此安卓和 Linux 的發行版本本質上是同樣的。
推薦閱讀:
- The End -