為啥沒有純Linux的手機系統呢?不用虛擬機,硬件利用率百分百?

10 個回答
EmacserVimer
2019-07-26

純Linux而不需要虛擬機的手機系統當然有,火狐的FirefoxOS、Ubuntu Touch、三星Tizen操作系統、以及曾經大名鼎鼎的Megoo都是沒有虛擬機的。

Android使用虛擬機是因為採用了Java作為核心開發語言,Java足夠成熟、生態健全、開發者眾多,這是Android早期發展迅速的主要原因,當然Android的高速發展也給了Java第二春。Oracle公司現在又在作死,各種用Java的問題刁難Google,Google推出Flutter框架、扶持Kotlin,以及打造Fuchsia操作系統,就是為了能夠找到取代Java甚至直接取代Android的解決方案。

值得提一下的是儘管Megoo系統隨著諾基亞的失敗而消失了,不過Megoo系統的很多理念到現在還被iOS和Android系統借鑑,現在智能機的主要手勢操作基本上全是借鑑Megoo操作系統的設計理念。

純Linux而不需要虛擬機的手機系統當然有,火狐的FirefoxOS、Ubuntu Touch、三星Tizen操作系統、以及曾經大名鼎鼎的Megoo都是沒有虛擬機的。

Android使用虛擬機是因為採用了Java作為核心開發語言,Java足夠成熟、生態健全、開發者眾多,這是Android早期發展迅速的主要原因,當然Android的高速發展也給了Java第二春。Oracle公司現在又在作死,各種用Java的問題刁難Google,Google推出Flutter框架、扶持Kotlin,以及打造Fuchsia操作系統,就是為了能夠找到取代Java甚至直接取代Android的解決方案。

值得提一下的是儘管Megoo系統隨著諾基亞的失敗而消失了,不過Megoo系統的很多理念到現在還被iOS和Android系統借鑑,現在智能機的主要手勢操作基本上全是借鑑Megoo操作系統的設計理念。

Android為什麼要用虛擬機

Android誕生之初並不是師出名門,後來被Google收購也算是傍上了大款,Android使用虛擬機的主要原因還是因為Java,因為Java有足夠好的凱源生態,更重要的是Java有成熟的開發者生態,最最重要的當然還是Java是第一大編程語言、背後有最多的開發者。

Android誕生之初,跟Java普遍使用JVM家在字節碼文件(

.class

),Android的虛擬機是Dalvik虛擬機,每次運行程序,Dalvik負責加載dex/odex文件然後解析成機器碼讓Android系統調用。

2010年5月20日,Google正式向外界發佈了版本代號為Froyo凍酸奶的Android2.2版本,這是Android第一個成熟版本,Google在這個版本的虛擬中加入了即時編譯、也就是我們通常所說的Just-In-Time Compiler(JIT)編譯器,Dalvik使用JIT進行編譯,JIT可以對經常使用的dex/odex進行編譯和優化,將其翻譯成精簡的Native Code執行,引入JIT之後Dalvik性能提升了3到6倍。

純Linux而不需要虛擬機的手機系統當然有,火狐的FirefoxOS、Ubuntu Touch、三星Tizen操作系統、以及曾經大名鼎鼎的Megoo都是沒有虛擬機的。

Android使用虛擬機是因為採用了Java作為核心開發語言,Java足夠成熟、生態健全、開發者眾多,這是Android早期發展迅速的主要原因,當然Android的高速發展也給了Java第二春。Oracle公司現在又在作死,各種用Java的問題刁難Google,Google推出Flutter框架、扶持Kotlin,以及打造Fuchsia操作系統,就是為了能夠找到取代Java甚至直接取代Android的解決方案。

值得提一下的是儘管Megoo系統隨著諾基亞的失敗而消失了,不過Megoo系統的很多理念到現在還被iOS和Android系統借鑑,現在智能機的主要手勢操作基本上全是借鑑Megoo操作系統的設計理念。

Android為什麼要用虛擬機

Android誕生之初並不是師出名門,後來被Google收購也算是傍上了大款,Android使用虛擬機的主要原因還是因為Java,因為Java有足夠好的凱源生態,更重要的是Java有成熟的開發者生態,最最重要的當然還是Java是第一大編程語言、背後有最多的開發者。

Android誕生之初,跟Java普遍使用JVM家在字節碼文件(

.class

),Android的虛擬機是Dalvik虛擬機,每次運行程序,Dalvik負責加載dex/odex文件然後解析成機器碼讓Android系統調用。

2010年5月20日,Google正式向外界發佈了版本代號為Froyo凍酸奶的Android2.2版本,這是Android第一個成熟版本,Google在這個版本的虛擬中加入了即時編譯、也就是我們通常所說的Just-In-Time Compiler(JIT)編譯器,Dalvik使用JIT進行編譯,JIT可以對經常使用的dex/odex進行編譯和優化,將其翻譯成精簡的Native Code執行,引入JIT之後Dalvik性能提升了3到6倍。

2013年10月31日,Google正式對外發布代號為Kitkat的Android4.4,Google為了改善Android糟糕的用戶體驗,開發了全新的虛擬機運行環境,也就是Android Runtime(ART),在這個版本中Google還有了新的編譯策略Ahead of time(AOT),不過這時候ART和Dalvik共存,直到2014年10月16日代號為Lollipop棒棒糖的Android5.0版本,ART徹底取代Dalvik,AOT成為了唯一的編譯模式,AOT相對於JIT的優點是,JIT是運行時動態編譯,每次運行程序的時候都要編譯,AOT則是靜態編譯,應用在安裝的時候就已經完成了編譯,程序運行的時候不用重新編譯,這才是真正的本地應用概念。

ART還對垃圾回收機制進行了改革,ART只有一次垃圾回收暫停、而Dalvik有兩次,ART在垃圾回收保持暫停的時候並行處理,ART還優化了垃圾回收的效率,讓系統能夠及時垃圾回收、及時減少後臺內存使用和碎片化問題。

不過在Android7.0之後JIT又重新迴歸了,AOT/JIT混合編譯模式又重新迴歸了,混合編譯當然有優點,不過還是很難解決Android存在的各種問題,畢竟Android的問題一大部分是Java自身的問題,除此之外Android生態本身也比較混亂,這也是Android體驗差的重要原因之一。

純Linux而不需要虛擬機的手機系統當然有,火狐的FirefoxOS、Ubuntu Touch、三星Tizen操作系統、以及曾經大名鼎鼎的Megoo都是沒有虛擬機的。

Android使用虛擬機是因為採用了Java作為核心開發語言,Java足夠成熟、生態健全、開發者眾多,這是Android早期發展迅速的主要原因,當然Android的高速發展也給了Java第二春。Oracle公司現在又在作死,各種用Java的問題刁難Google,Google推出Flutter框架、扶持Kotlin,以及打造Fuchsia操作系統,就是為了能夠找到取代Java甚至直接取代Android的解決方案。

值得提一下的是儘管Megoo系統隨著諾基亞的失敗而消失了,不過Megoo系統的很多理念到現在還被iOS和Android系統借鑑,現在智能機的主要手勢操作基本上全是借鑑Megoo操作系統的設計理念。

Android為什麼要用虛擬機

Android誕生之初並不是師出名門,後來被Google收購也算是傍上了大款,Android使用虛擬機的主要原因還是因為Java,因為Java有足夠好的凱源生態,更重要的是Java有成熟的開發者生態,最最重要的當然還是Java是第一大編程語言、背後有最多的開發者。

Android誕生之初,跟Java普遍使用JVM家在字節碼文件(

.class

),Android的虛擬機是Dalvik虛擬機,每次運行程序,Dalvik負責加載dex/odex文件然後解析成機器碼讓Android系統調用。

2010年5月20日,Google正式向外界發佈了版本代號為Froyo凍酸奶的Android2.2版本,這是Android第一個成熟版本,Google在這個版本的虛擬中加入了即時編譯、也就是我們通常所說的Just-In-Time Compiler(JIT)編譯器,Dalvik使用JIT進行編譯,JIT可以對經常使用的dex/odex進行編譯和優化,將其翻譯成精簡的Native Code執行,引入JIT之後Dalvik性能提升了3到6倍。

2013年10月31日,Google正式對外發布代號為Kitkat的Android4.4,Google為了改善Android糟糕的用戶體驗,開發了全新的虛擬機運行環境,也就是Android Runtime(ART),在這個版本中Google還有了新的編譯策略Ahead of time(AOT),不過這時候ART和Dalvik共存,直到2014年10月16日代號為Lollipop棒棒糖的Android5.0版本,ART徹底取代Dalvik,AOT成為了唯一的編譯模式,AOT相對於JIT的優點是,JIT是運行時動態編譯,每次運行程序的時候都要編譯,AOT則是靜態編譯,應用在安裝的時候就已經完成了編譯,程序運行的時候不用重新編譯,這才是真正的本地應用概念。

ART還對垃圾回收機制進行了改革,ART只有一次垃圾回收暫停、而Dalvik有兩次,ART在垃圾回收保持暫停的時候並行處理,ART還優化了垃圾回收的效率,讓系統能夠及時垃圾回收、及時減少後臺內存使用和碎片化問題。

不過在Android7.0之後JIT又重新迴歸了,AOT/JIT混合編譯模式又重新迴歸了,混合編譯當然有優點,不過還是很難解決Android存在的各種問題,畢竟Android的問題一大部分是Java自身的問題,除此之外Android生態本身也比較混亂,這也是Android體驗差的重要原因之一。

拉那烈
2019-07-23

純Linux的手機操作系統,沒有中間虛擬機不是沒有,還挺多的,比如Ubuntu Touch,火狐操作系統,三星Tizen操作系統,還有號稱首款真正的Linux智能手機Librem 5。

這些系統發展的並不好,導致很少進入大眾的視線,讓你覺得好像所有的操作系統都是Android的虛擬機架構。

有些人說為這些沒發展起來的手機是因為界面醜,其實不然,Android早期的版本1.0. 2.0也醜的要命,就是它的引入的Java虛擬機,引來了無數Java開發者加入,快速的構建起了Android的開發生態。逐漸發展成今天你們看到的樣子。

你們都還看過那些純Linux的手機操作系統呢?晒出來。


純Linux的手機操作系統,沒有中間虛擬機不是沒有,還挺多的,比如Ubuntu Touch,火狐操作系統,三星Tizen操作系統,還有號稱首款真正的Linux智能手機Librem 5。

這些系統發展的並不好,導致很少進入大眾的視線,讓你覺得好像所有的操作系統都是Android的虛擬機架構。

有些人說為這些沒發展起來的手機是因為界面醜,其實不然,Android早期的版本1.0. 2.0也醜的要命,就是它的引入的Java虛擬機,引來了無數Java開發者加入,快速的構建起了Android的開發生態。逐漸發展成今天你們看到的樣子。

你們都還看過那些純Linux的手機操作系統呢?晒出來。



純Linux的手機操作系統,沒有中間虛擬機不是沒有,還挺多的,比如Ubuntu Touch,火狐操作系統,三星Tizen操作系統,還有號稱首款真正的Linux智能手機Librem 5。

這些系統發展的並不好,導致很少進入大眾的視線,讓你覺得好像所有的操作系統都是Android的虛擬機架構。

有些人說為這些沒發展起來的手機是因為界面醜,其實不然,Android早期的版本1.0. 2.0也醜的要命,就是它的引入的Java虛擬機,引來了無數Java開發者加入,快速的構建起了Android的開發生態。逐漸發展成今天你們看到的樣子。

你們都還看過那些純Linux的手機操作系統呢?晒出來。




純Linux的手機操作系統,沒有中間虛擬機不是沒有,還挺多的,比如Ubuntu Touch,火狐操作系統,三星Tizen操作系統,還有號稱首款真正的Linux智能手機Librem 5。

這些系統發展的並不好,導致很少進入大眾的視線,讓你覺得好像所有的操作系統都是Android的虛擬機架構。

有些人說為這些沒發展起來的手機是因為界面醜,其實不然,Android早期的版本1.0. 2.0也醜的要命,就是它的引入的Java虛擬機,引來了無數Java開發者加入,快速的構建起了Android的開發生態。逐漸發展成今天你們看到的樣子。

你們都還看過那些純Linux的手機操作系統呢?晒出來。




天行健31293242
2019-07-24

我理解的樓主意思是,android中間有個java虛擬機,而linux沒有,那麼有沒有手機可以採用linux,讓操作系統或者app直接與硬件之間進行操作,以求效率更高?

樓主理解錯了,linux也有虛擬機的。看圖:

當然從圖中可以看出,兩者都有虛擬機。

當然,從linux架構圖可以看到有個“程序 n”以及“程序2”是直接通過機器碼操作內核的,那麼問題來了,既然可以通過程序直接操作內核,為什麼android要把這一塊裁掉,不直接讓程序操作內核呢?主要有以下幾個方面:

1.程序兼容性,眾所周知java是個跨平臺語言,不依賴cpu指令集,這樣就能保證兼容性。android在歷史的演變過程中,運行在多種平臺上,例如:arm,mips,x86,x64,arm-64等等,這個傳統來自於linux,曾經linux運行的平臺更多,例如:x86,x64,mips,arm,ibm-power,hp,motorala等等。

2.方便移植,作為後來者,android出現的時代,已經有了智能手機或者設備和對應的操作系統,例如:palm os,windows mobile,motorala linux,還有索尼愛立信和nokia主導的symbian os等等,android如果要生存下來必須要讓開發者很方便的將他們為其他系統開發的軟件移植到android上,而java虛擬機是最好的選擇。

3.無奈之選,開發一個新的系統,絕不是吹幾句牛,埋頭苦幹就能行的,那麼只能站在巨人的肩膀之上,但是當時沒有人願意公開自己的系統,windows mobile作為微軟的產品,雖然可以兼容多種不同品牌手機,但是不開源,palm和黑莓以及蘋果是軟硬件全是自家,更不可能開源,motorala雖然採用linux但是軟件封裝卻是自成一派,在這樣情況下,android只能採用開源的linux,所以形成了這樣的架構。


我理解的樓主意思是,android中間有個java虛擬機,而linux沒有,那麼有沒有手機可以採用linux,讓操作系統或者app直接與硬件之間進行操作,以求效率更高?

樓主理解錯了,linux也有虛擬機的。看圖:

當然從圖中可以看出,兩者都有虛擬機。

當然,從linux架構圖可以看到有個“程序 n”以及“程序2”是直接通過機器碼操作內核的,那麼問題來了,既然可以通過程序直接操作內核,為什麼android要把這一塊裁掉,不直接讓程序操作內核呢?主要有以下幾個方面:

1.程序兼容性,眾所周知java是個跨平臺語言,不依賴cpu指令集,這樣就能保證兼容性。android在歷史的演變過程中,運行在多種平臺上,例如:arm,mips,x86,x64,arm-64等等,這個傳統來自於linux,曾經linux運行的平臺更多,例如:x86,x64,mips,arm,ibm-power,hp,motorala等等。

2.方便移植,作為後來者,android出現的時代,已經有了智能手機或者設備和對應的操作系統,例如:palm os,windows mobile,motorala linux,還有索尼愛立信和nokia主導的symbian os等等,android如果要生存下來必須要讓開發者很方便的將他們為其他系統開發的軟件移植到android上,而java虛擬機是最好的選擇。

3.無奈之選,開發一個新的系統,絕不是吹幾句牛,埋頭苦幹就能行的,那麼只能站在巨人的肩膀之上,但是當時沒有人願意公開自己的系統,windows mobile作為微軟的產品,雖然可以兼容多種不同品牌手機,但是不開源,palm和黑莓以及蘋果是軟硬件全是自家,更不可能開源,motorala雖然採用linux但是軟件封裝卻是自成一派,在這樣情況下,android只能採用開源的linux,所以形成了這樣的架構。



我理解的樓主意思是,android中間有個java虛擬機,而linux沒有,那麼有沒有手機可以採用linux,讓操作系統或者app直接與硬件之間進行操作,以求效率更高?

樓主理解錯了,linux也有虛擬機的。看圖:

當然從圖中可以看出,兩者都有虛擬機。

當然,從linux架構圖可以看到有個“程序 n”以及“程序2”是直接通過機器碼操作內核的,那麼問題來了,既然可以通過程序直接操作內核,為什麼android要把這一塊裁掉,不直接讓程序操作內核呢?主要有以下幾個方面:

1.程序兼容性,眾所周知java是個跨平臺語言,不依賴cpu指令集,這樣就能保證兼容性。android在歷史的演變過程中,運行在多種平臺上,例如:arm,mips,x86,x64,arm-64等等,這個傳統來自於linux,曾經linux運行的平臺更多,例如:x86,x64,mips,arm,ibm-power,hp,motorala等等。

2.方便移植,作為後來者,android出現的時代,已經有了智能手機或者設備和對應的操作系統,例如:palm os,windows mobile,motorala linux,還有索尼愛立信和nokia主導的symbian os等等,android如果要生存下來必須要讓開發者很方便的將他們為其他系統開發的軟件移植到android上,而java虛擬機是最好的選擇。

3.無奈之選,開發一個新的系統,絕不是吹幾句牛,埋頭苦幹就能行的,那麼只能站在巨人的肩膀之上,但是當時沒有人願意公開自己的系統,windows mobile作為微軟的產品,雖然可以兼容多種不同品牌手機,但是不開源,palm和黑莓以及蘋果是軟硬件全是自家,更不可能開源,motorala雖然採用linux但是軟件封裝卻是自成一派,在這樣情況下,android只能採用開源的linux,所以形成了這樣的架構。



陈盒子精
2019-07-23

Linux只是內核,一個系統基礎而已。所有安卓也是純Linux ,只不過去掉了一些無關緊要的東西。

可以使用busybox還原使用性,chroot也可以讓安卓機運行Linux桌面級系統。重在Linux發展歷程上出現arm這個分支,而且大規模的運用使得ARM版的GNU/Linux擁有交為豐富的程序可以使用。辦公娛樂上網乃至作圖修圖視頻剪輯 文檔處理與編輯等等。


Linux只是內核,一個系統基礎而已。所有安卓也是純Linux ,只不過去掉了一些無關緊要的東西。

可以使用busybox還原使用性,chroot也可以讓安卓機運行Linux桌面級系統。重在Linux發展歷程上出現arm這個分支,而且大規模的運用使得ARM版的GNU/Linux擁有交為豐富的程序可以使用。辦公娛樂上網乃至作圖修圖視頻剪輯 文檔處理與編輯等等。



Linux只是內核,一個系統基礎而已。所有安卓也是純Linux ,只不過去掉了一些無關緊要的東西。

可以使用busybox還原使用性,chroot也可以讓安卓機運行Linux桌面級系統。重在Linux發展歷程上出現arm這個分支,而且大規模的運用使得ARM版的GNU/Linux擁有交為豐富的程序可以使用。辦公娛樂上網乃至作圖修圖視頻剪輯 文檔處理與編輯等等。



vcasm48
2019-07-24

android用的是linux內核,ios用的是類unix內核,理解提問者的疑問應該是是否有用戶可以直接操作內核的手機,答案是不可能,現在商品化的手機必須考慮應用開發和使用環境,所以為了不同手機硬件兼容性考慮,需要封裝底層的接口調用並標準化,而且基於安全考慮必須將每個應用權限控制在很小的範圍,目前的做法都是用類腳本的語言做中間件,手機應用基本上都是基於腳本的開發,效率上比直接操作硬件的c語言會差一些

飘162829324
2019-07-23

操作系統是一層一層搭起來的,Linux打樁,Java虛擬機做地基,Android是樓層框架,各種UI是裝修,這才有了你看到的漂亮的樓房。

不知樓主要的純Linux是不是命令行界面的Linux內核。

按照這個要求,裝了第三方應用,沒有編譯進內核的系統都不能算是純的Linux。樓主連打電話撥號都要自己寫代碼才能實現了。

博新者
2019-07-23

首先Linux的受眾群體更多是開發人員或者企業,系統的門檻較高

其次Linux的界面目前並不適合大眾審美,Linux的軟件生態也比如java好。

枯藤遗叶
2019-07-23

目測你根本不知道什麼是Linux!

山204131956
2019-07-23

主要是為了通過java虛擬機適配五花八門的手機品牌和硬件。

iPhone的iOS就是以unix系的Darwin作為內核,也沒使用虛擬機。

sqmm
2019-07-23

以前moto 出過幾款,開發效率太低,開發者寡,很快就淡出了。

相關推薦

推薦中...