安卓Java虚拟机大小_虚拟机为安卓流畅度背锅,是因为关系数十万程序员饭碗?...
導讀:虛擬機相當于應用程序在不同運行環境中的翻譯。
說起谷歌安卓系統的“虛擬機”,很多人愛拿它和蘋果iOS做比較,結果,安卓的很多短腿兒都讓虛擬機背了鍋,比如安卓手機運存容量是iPhone的兩到三倍,流暢度卻沒有脫胎換骨的變化,有時還被iOS摁在地上摩擦,然后很多人將其歸結為虛擬機拖了后腿兒。
虛擬機表示:為安卓流暢度背這口鍋,也是為了廣大程序員的飯碗著想!
解開這個梗,先要搞懂什么是虛擬機,以及虛擬機有什么用。
簡單說,虛擬機是一種消除計算機硬件差異的機制,它可以提供一種穩定的運行環境,讓相同的應用程序在不同的操作系統和硬件上運行。
說到應用程序的運行環境,需要展開一下。
應用程序的運行環境=操作系統+硬件,其中硬件是起主要作用。原因不復雜,特定指令集的CPU只能解釋其固有的機器語言,不同的CPU能解釋的機器語言(本地代碼)自然不同,英特爾的CPU和ARM的CPU能解釋得機器語言是不同的。這好比不會英文的人聽不懂英語,反之亦然。
怎么才能讓不會英文的人聽懂英語?找英語翻譯可以辦到。
虛擬機就相當于應用程序在不同運行環境中的翻譯。比如著名的虛擬機軟件“Virtual PC for Mac”,它由微軟出品,有了它,蘋果的Macintosh用戶也能在Mac操作系統上運行Windows應用了,把蘋果電腦用出PC的感覺。
不過,到2006年時,微軟停止了對“Virtual PC for Mac”的開發,因為蘋果電腦換“芯”了,從PwoerPC換成英特爾的CPU,和Windows應用程序的運行環境相同,所以現在蘋果電腦不借助虛擬機軟件也能運行Windows及其應用程序。
安卓也有自己的虛擬機,它叫Java虛擬機,簡稱JavaVM(Java Virtual Machine)。
Java虛擬機有多種版本,有用于Windows的虛擬機,有用于Macintosh(現為MacOS)的虛擬機,也有用于移動設備的虛擬機,比如安卓系統的Java虛擬機。
不同的Java虛擬機對應不同的操作系統和CPU,好處是程序員不用關注操作系統和CPU的差異,只要是用Java語言寫成的源代碼,就可以在所有具有Java虛擬機的操作系統上運行。
Java虛擬機的運行過程是,Java編譯器先將應用程序源代碼轉換成字節代碼,再由Java虛擬機將字節代碼轉換成適用于相應CPU的機器語言,由其執行。
如果感到上面這段話比較晦澀難懂,記住這個結論也行:Java虛擬機是個稱職好用的翻譯,可以讓不同的CPU看懂Java語言編寫的應用程序。
虛擬機還有一個好處,就是寫應用程序和操作系統的編程語言可以風馬牛不相及。
iOS和安卓操作系統的源代碼都是用C語言寫成,由于C語言是較早出現的高級編程語言,入門門檻較高,而安卓應用程序是用Java編程,是一種更高級的編程語言(iOS的應用程序編寫語言是swift),入門門檻較低。
Java之父詹姆斯·高斯林 (James Goslin
顯然,Java的低門檻可以吸引大量人員進入應用程序編程行業,方便迅速建立生態。實際上這也是Java得以流行的原因。
不過,虛擬機也不是沒有短板,最大的短腿兒就是,代碼轉來轉去,會拖慢程序運行,特別吃硬件資源。這個胎里帶的毛病,是安卓手機流暢度不及iPhone的原因之一,在絕大部分虛擬機上都能反映出來。
反過來想想,如果沒有虛擬機的話,該怎么辦?只能開發不同版本的應用程序,比如Mac版、iOS版、Linux版、安卓版和Windows版。對應用開發商來說,如此多的版本會增加開發成本和維護成本,結果就是一些小眾的硬件很難建立起豐富的軟件生態。
當然,對數以十萬計的安卓應用開發程序員來說,沒有Java虛擬機的話,就意味自己的Java武功被廢,飯碗被砸了,要么改行,要么學C語言這么武功。這比開發多版本程序還讓人著急。
總結
以上是生活随笔為你收集整理的安卓Java虚拟机大小_虚拟机为安卓流畅度背锅,是因为关系数十万程序员饭碗?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 内存机制
- 下一篇: 资深人士关于PIFA天线的理解与讨论