yunOS和安卓到底是不是一種系統?
阿里云OS和android的真實關系
論壇里針對阿里云OS是否是Android二次開發有很多爭論。大部分機友不是IT從業人員,對于技術上的一些細節不了解。我做過Android開發,也圖便宜買了w700。綜合阿里云和其他媒體的信息,結合我做Android開發的經驗,我對阿里云OS的技術架構有了一個清晰的判斷。那么我就給大家做一個解釋,到底阿里云OS和android是什么關系?
網上有個帖子談到阿里云OS兼容Android應用是虛擬機技術,在阿里云OS里有一個Android虛擬機在運行,apk應用就是跑在這個虛擬機上。這是錯誤的。
這里我給大家先普及一下虛擬機的概念。在論壇里很多機友不清楚虛擬機是什么。
“虛擬機”這個概念在實際應用中有兩種語境。第一種是“虛擬主機”的概念,第二種是“運行環境”的概念。這兩種概念是不同的。
1. “虛擬機”在作“虛擬主機”講的時候,指的是操作系統內安裝另一個操作系統。你如在Windows里,你可以裝一個VMWare,然后在VMWare里安裝一個Ubuntu Linux。這就是虛擬主機。Windows是一個操作系統,是裝在硬件上的。VMWare是個軟件,它模擬了一個和硬件相似的環境,讓另一個操作系統可以安裝運行在這個環境上。我們看Windows和Ubuntu Linux的關系,它們都是操作系統,是一個級別的。這種關系就像媽媽肚子里懷的寶寶,寶寶生活在媽媽的肚子里,媽媽和寶寶都是人,是一種寄生關系。
2. “虛擬機”在做“運行環境”講的時候,指的是操作系統被安裝一個支持其他軟件包運行的軟件。最明顯的例子就是“Java虛擬機”。所謂“Java虛擬機”是一個安裝在操作系統上的軟件,用于支持用Javahttps://www.52fb.cn語言編寫的軟件包的運行。它負責給java程序分配資源,幫助java程序做一些底層的工作,讓java程序在它搭建的環境里運行。這時Java虛擬機也是操作系統上的一個軟件,其他java如阿健要依賴它才能運行。它是一個底層的支持環境。微軟有個仿照java架構的開發環境,即.NET Framework。這里就沒有使用“Virtual Machine(虛擬機)”這個術語,而是用了“Framework(框架)”。這兩個詞實際的意義是一樣的,都是Runtime Environment(RE,運行時環境),但是可能Framework更容易理解。它就是一個框架,其他程序可以在這個框架的支持下運行?,F在除了技術界,Java官方對公眾也盡量使用JRE(Java Runtime Environment),而不是JVM(Java Virtual Machine)的概念了。
~ 1 / 2 ~
我們知道Android的架構是第二種“虛擬機”。Android最底層是Linux操作系統,在這個操作系統上安裝了一個叫Davilk的Java虛擬機。用Java編寫的各種Android應用在Davilk的支持下運行。Java語言最早是有Sun公司開發,現在Sun公司被Oracle公司收購。Java程序的虛擬性需要Java虛擬機的支持。Sun公司開發了自己的Java虛擬機,有知識產權。但是由于Java是開放的,其他公司也可以開發Java虛擬機,兼容java語言。開源界有一個OpenJDK的項目,就是開發一個完全開源開放Java虛擬機。而Davilk由Google開發,這個虛擬機也兼容Java語言(如今Oracle和Google還在為Android是否侵犯了Oracle的java專利而打著官司)。Google制定了Android應用的標準(APK應用格式),這個標準是開放的。
那么只要另一個公司開發一個新的兼容Android應用的標準Java虛擬機,替換掉Google的Davilk,那么這個系統也是沒有問題的。而綜合各種信息來看,阿里云很可能是用自己開發的Java虛擬機替換了Google 的Java虛擬機。所以,這個系統不是在Google Android基礎上的二次開發,而是一個新的兼容Android系統。
結論2: 阿里云OS是一個兼容Android系統,或者說是“類Android”、“山寨Android”系統。
這種兼容系統不是沒有先例的。Linux就是一個著名的兼容Unix操作系統。當年Unix操作系統由于版權關系是不開源的,而且賣的很貴。一個叫Linus的芬蘭小伙子開發了一個叫Linux的操作系統,這個操作系統能夠運行為Unix編寫的程序(即兼容Unix),同時又沒有使用Unix有版權的任何一行代碼(完全自己開發,繞過版權問題)。Linus把Linux開源化,使得Linux得以迅速普及。
有此看來,阿里云OS是一個兼容Android系統,因為Android的核心--Google的Davilk虛擬機被替換成了阿里云自己的虛擬機,同時這個虛擬機能夠運行為Davilk編寫的程序。這應該是為什么阿里云宣傳里不說是“Android二次開發”的原因。說的在直白一點,阿里云其實是山寨了一個Android系統。這也解釋了為什么我們刷上Android 2.2能夠流暢運行。
其實只要兼容了Android應用,就能有大量已有的Android應用可以為自己所用。在IT界,開源軟件和開放標準已經成為主流。通過已有的開源軟件再加上自己的開發,可以很容易開發出新的軟件。遵循開放標準是降低軟件開發成本,迅速融入用戶的最好的途徑。加上阿里云自己開發的云應用框架,阿里云宣稱自主操作系統也無可厚非。
經過以上的分析,阿里云OS不是在自己開發的操作系統上運行了一個Android操作系統的虛擬機來兼容Android應用,而是將Google的java虛擬機替換成了自己開發的java虛擬機。因此阿里云OS不是基于Android系統的二次開發,而是基于Android開放標準的深度定制。這種深度定制有沒有法律風險還不得而知,只是從Oracle和Google的專利官司來看,如果阿里云不能繞過專利的雷池,法律風險是很大的。