安卓為什么用java虛擬機(jī) 學(xué)習(xí)java虛擬機(jī)有什么用?
學(xué)習(xí)java虛擬機(jī)有什么用?學(xué)習(xí)java虛擬機(jī)的主要目的是了解運(yùn)行時(shí)環(huán)境的原理,以便以后對(duì)程序或虛擬機(jī)本身進(jìn)行優(yōu)化。在早期階段,在我們的軟件開發(fā)完成后,虛擬機(jī)本身的默認(rèn)配置就足夠了,沒有太多的用戶。然
學(xué)習(xí)java虛擬機(jī)有什么用?
學(xué)習(xí)java虛擬機(jī)的主要目的是了解運(yùn)行時(shí)環(huán)境的原理,以便以后對(duì)程序或虛擬機(jī)本身進(jìn)行優(yōu)化。
在早期階段,在我們的軟件開發(fā)完成后,虛擬機(jī)本身的默認(rèn)配置就足夠了,沒有太多的用戶。然而,當(dāng)我們的軟件變得越來越復(fù)雜,用戶數(shù)量不斷增加時(shí),我們會(huì)發(fā)現(xiàn)虛擬機(jī)本身會(huì)成為一個(gè)性能瓶頸。然后我們需要優(yōu)化虛擬機(jī)。如何優(yōu)化?當(dāng)然,我們需要了解虛擬機(jī)是如何運(yùn)行的,內(nèi)存是如何管理的,類是如何加載的,等等。然后通過JDK自己的工具或其他工具對(duì)我們的軟件程序進(jìn)行分析,找出瓶頸,并進(jìn)行有針對(duì)性的優(yōu)化。
java虛擬機(jī)是用什么語言編寫的?它的原理誰能通俗的講出來嗎?
Java虛擬機(jī)的功能是執(zhí)行Java字節(jié)碼,其編碼實(shí)現(xiàn)是一個(gè)死循環(huán)。每個(gè)循環(huán)都是獲取字節(jié)碼并執(zhí)行字節(jié)碼的過程,因此與其他程序沒有本質(zhì)區(qū)別。主流的JavaVM大多是用C語言實(shí)現(xiàn)的,然后用匯編語言輔助實(shí)現(xiàn),用Java實(shí)現(xiàn)JavaVM的情況有一些,但不多。
下面是使用C語言在智能設(shè)備中實(shí)現(xiàn)虛擬機(jī)的一個(gè)片段。
此代碼是短加法字節(jié)碼的實(shí)現(xiàn)。
這段代碼只是獲取字節(jié)碼并執(zhí)行它。你認(rèn)為JavaVM就是這樣嗎。
為了優(yōu)化虛擬機(jī)的效率,很多人選擇用匯編的方式重寫執(zhí)行頻率高的代碼。
小結(jié)是C語言實(shí)現(xiàn)的許多,將與匯編結(jié)合起來作為輔助工具。有其他語言,但不是主流。
學(xué)了java能做什么實(shí)際的東西?
學(xué)java可以做很多實(shí)用的事情,主要看你的興趣所在。如果你喜歡手機(jī)開發(fā),你可以做一個(gè)手機(jī)操作系統(tǒng),因?yàn)锳ndroid是用Java開發(fā)的。如果你想涉足金融行業(yè),你可以為銀行或投資機(jī)構(gòu)建立他們的交易系統(tǒng),因?yàn)楦呤?、華旗集團(tuán)等使用的交易系統(tǒng)都是用Java開發(fā)的。如果你喜歡游戲,可以參考桌面版的minecraft開發(fā)一套游戲;也可以再造一個(gè)阿里巴巴。我聽說它們主要是Java棧。
所以,不要糾結(jié)于這個(gè)問題,只要努力學(xué)習(xí)。會(huì)有個(gè)地方給你的!