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