1. 程式人生 > >Android離Linux越來越遙遠了,Google的Android真的是開源的嗎?

Android離Linux越來越遙遠了,Google的Android真的是開源的嗎?

Python Linux Android 人工智能 Google

Linux簡介(先簡單的介紹一下Linux)

Linux是一類Unix計算機操作系統的統稱。Linux操作系統的內核的名字也是“Linux”。Linux操作系統也是自由軟件和開放源代碼發展中最著名的例子。嚴格來講,Linux這個詞本身只表示Linux內核,但在實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU 工程各種工具和數據庫的操作系統。

1994年3月,Linux1.0發布

代碼量17萬行,當時是按照完全自由免費的協議發布,完全自由免費的協議代表著自由,開放,任何人都可以修改它,加上自己的代碼,但是這樣無疑讓Linux很難以商用而且不利於傳播(這裏很難說,如果不是商業的驅動,完全的自由開放可能就不會有今天的Linux了)。於是隨後正式采用GPL協議。GPL協議是一種很強硬的開源協議,給軟件提供版權保護的同時它給你復制,發布和修改這些軟件的法律許可。

如果你修改這些代碼並申請專利,那麽請看:自由軟件的再發布者以個人名義獲得專利許可證。事實上,將軟件變為私有。為防止這一點,我們必須明確:任何專利必須以允許每個人自由使用為前提,否則就不準許有專利。

顯然,Android是一個商業應用,這樣的協議肯定不符合Google的利益,等一下我會介紹Google是如何對抗這種協議的。

1995年1月,RedHat(小紅帽)誕生

1995年1月,Bob Young創辦了RedHat(小紅帽),以GNU/Linux為核心,集成了400多個源代碼開放的程序模塊,RedHat Linux,稱為Linux“發行版”,在市場上出售。1996年6月,Linux 2.0內核發布,此內核有大約40萬行代碼,並可以支持多個處理器,此時的Linux 已經進入了實用階段,全球大約有350萬人使用。

2003年11月16日,Fedora Core(自第七版直接更名為Fedora)發布

它是一套從Red Hat Linux發展出來的免費Linux系統。Fedora Core 的前身就是Red Hat Linux。Fedora是一個開放的、創新的、前瞻性的操作系統和平臺,基於Linux

1993年8月13日,Debian

它的目標是提供一個穩定容錯的Linux版本。支持Debian的不是某家公司,而是許多在其改進過程中投入了大量時間的開發人員,這種改進吸取了早期Linux的經驗。

2004年10月20日發布首個以Debian為開發藍本版本Ubuntu4.10

Ubuntu的目標在於為一般用戶提供一個最新的、同時又相當穩定的主要由自由軟件構建而成的操作系統。而且在每年的6月份都會發布一個新版本。

2014年初,CentOS宣布加入Red Hat

CentOS 是一個基於Red Hat Linux 提供的可自由使用源代碼的企業級Linux發行版本。每個版本的 CentOS都會獲得十年的支持。新版本的 CentOS 大約每兩年發行一次,而每個版本的 CentOS 會定期(大概每六個月)更新一次,以便支持新的硬件。這樣,建立一個安全、低維護、穩定、高預測性、高重復性的 Linux 環境。

所以在學習的時候我們一般使用Ubuntu,而在企業開發的過程中一般使用CentOS。

只介紹了一些,如果還想要了解Linux的各種版本,順著看,在文章後面就可以看到我在網上看到的幾張圖(總結的很完善,所有也希望給大家分享一下)

Google的Android“真的”是開源的嗎?

我們首先得明白,Android是Google的一種商業性應用,所以說,肯定不能完全遵守前面所說過的GPL開源協議,不然別人就可以做自己的操作系統了,為什麽要用Android呢,不是嗎?

先看看Android和正常的Linux的區別在什麽地方(詳情請看圖)

本質上來說,Android還是一個Linux系統,只是外面套了一層虛擬機(Dalvik/ART),而且只使用了Kernel(Linux內核),但是,很多人都說Linux離Android的距離比離iOS還遠。這是為什麽?

因為Google對它進行了定制改造,和我們自己去定制Linux到鑲入式設備上差不多,只不過Google對它做的改動更大而已,而且作為一個商業行為,這裏面耍了不少技巧。
技術分享圖片技術分享圖片

躲避GPL協議,商業行為的第一步

一個完美的商業行為,Google肯定不願意去開源的。Linux kernel 的版權是 GPL,而一個硬件廠商,希望自己的硬件運行在Linux kernel上,那麽必須有相應的驅動程序,但是如果公布了相應的驅動程序的代碼,就等於硬件規格也公開得差不多了。

Google肯定不希望這樣,而且這只是第一步,於是在外部有了一個虛擬機,Google采用了一些手法來繞過這問題。他們把驅動程序移到 "userspace",也就是在Linux kernel上開了一個小門,把本來是和Linux kernel一起跑的驅動變成了在Linux kernel上面跑的東西,成功避開了GPL協議。

現在看來也就是對於硬件廠商有些好處,所以給Google也帶來了好處,但是為什麽要說是否是真的開源?我繼續來分析。

”開源“變”閉源“的Android
剛開始的時候,Android確實算是開源的,但現在你說閉源估計也沒人反對了。

很多人這樣說Android,"Google自己的網站,與微軟的網站一樣封閉。它開源出來的東西,都是根據GPL許可證不得不開源的。"

鎖定OEM制造商

通過使用APP的升級來閉源,Google在移動端的控制力主要源於app群—— Gmail、Maps、Google Now、Hangouts、YouTube和Play Store,這些都是Android的殺手級應用,很多手機廠商都希望運行在自己的設備上。於是需要獲得Google的授權,授權也沒有什麽,就是需要加入Open Handset Alliance(OHA)而獲得Google授權,加入意味著什麽,意味著其設備就不能運行其他版本的Android系統了。

亞馬遜作為一個異端Android版本,當它尋找其下一個生產商時,它不得不自覺地繞過Acer、Asus、Dell、Foxconn、Fujitsu、HTC、Huawei、Kyocera、Lenovo、LG、Motorola、NEC、Samsung、Sharp、Sony、Toshiba和 ZTE這一長串名單。目前,亞馬遜將其Kindle設備的訂單一股腦地承包給了Quanta Computer,一個筆記本電腦生產商。這或許是亞馬遜的無奈選擇吧。

鎖定開發者,便捷的API

單純是幾個應用肯定是不足以讓那些硬件廠商賣身的,那麽Google又做了什麽呢?

Play Service為Google對抗衍生版本Android的一大利器,Google大力加強第三方應用對於自身的依賴性,Google提供了多個為開發者定制的API,使用這些API讓開發者的軟件兼容性越來越好,而不使用的則日子越來越艱難。戰略其實是把“Android App Ecosystem”變成了“Google Play Ecosystem”,Google對於Android也是又愛又恨,因為Google希望大家依賴的是Google而不是Android,但是卻無奈Android還是太強勢,並且中間發生過不少Google和Android之間的趣事。

而且隨著Google越來越強,開發者和用戶想要脫離Google就越來越困難,Android的開源,是一種可望不可及的開源。

對於Google一點看法

其實也不能一昧的批判Google的這種做法,我還是很喜歡Google的,畢竟這是一種商業行為,但是以開源的名義來閉源,享受這社區的福利,卻沒有做出貢獻,有人批判,並且將Android的代碼從Linux社區中剔除,但也有人肯定了它的積極性,認為它對傳播Linux作出了貢獻。

這也是小編自己有一些了解,然後搜集資料整理出來的一點東西,如果大家有什麽疑問或者看法,都可以提出來,一起討論、交流。

另外,小編有自己的學習交流群(主要是Python)大家如果想要來學習的話,可以加下:719+139+688,不管你是小白還是大牛,小編都歡迎,而且小編會在群裏面不定期分享幹貨,包括小編自己整理的一份2018年最新學習資料和零基礎入門教程,歡迎初學和進階中的小夥伴

Linux的版本

技術分享圖片技術分享圖片技術分享圖片技術分享圖片技術分享圖片技術分享圖片技術分享圖片技術分享圖片


Android離Linux越來越遙遠了,Google的Android真的是開源的嗎?