Java虛擬機(jī),這是值得你去進(jìn)階的方向
而隨著時(shí)間的推移,慢慢地大家都逐漸步入到了中級(jí)程序員的等級(jí),同時(shí)也有越來(lái)越多的人感覺到了焦慮,因?yàn)椴粚W(xué)習(xí)就意味著原地踏步,雖然目前自己的技術(shù)水平可能已經(jīng)挺不錯(cuò)了,可還是不敢長(zhǎng)時(shí)間停留,逆水行舟中,不進(jìn)則退。
因此,幾乎每一天都會(huì)不斷地有朋友反反復(fù)復(fù)地問我這同一個(gè)問題:“基礎(chǔ)已經(jīng)學(xué)完了,想進(jìn)一步提升,該如何學(xué)習(xí)?” 我也基本能理解大家的心情。
對(duì)于這個(gè)問題,我真的很想找到一個(gè)標(biāo)準(zhǔn)答案,然后復(fù)制粘貼給每一個(gè)提問的人,但是這個(gè)問題卻永遠(yuǎn)沒有一個(gè)標(biāo)準(zhǔn)答案。因?yàn)榧夹g(shù)的領(lǐng)域?qū)嵲谑翘珡V闊了,世界上沒有任何一個(gè)人能把所有的技術(shù)全部都學(xué)會(huì),想進(jìn)階首先你要認(rèn)準(zhǔn)一個(gè)方向才行,而不是盲目地焦慮該如何進(jìn)一步提升自己。
那么進(jìn)階的方向有哪些呢?這個(gè)就太多了,不同的項(xiàng)目側(cè)重的技術(shù)點(diǎn)也不一樣。比如IM軟件就需要即時(shí)通訊技術(shù)、視頻軟件就需要視頻編解碼技術(shù)、游戲就需要引擎技術(shù)。即使是同一個(gè)項(xiàng)目,每個(gè)人負(fù)責(zé)的工作方向也會(huì)不一樣,有些人負(fù)責(zé)架構(gòu)搭建,有些人負(fù)責(zé)網(wǎng)絡(luò)通信,有些人負(fù)責(zé)UI實(shí)現(xiàn)。因此,這些都是進(jìn)階的方向,學(xué)習(xí)自定義View也叫進(jìn)階,學(xué)習(xí)設(shè)計(jì)模式也叫進(jìn)階。
所以說(shuō)對(duì)于這個(gè)問題我真的無(wú)法給出一個(gè)標(biāo)準(zhǔn)答案,但是今天我準(zhǔn)備給大家推薦的一個(gè)非常好的進(jìn)階方向,就是Java虛擬機(jī),同時(shí)這也是我下一階段的學(xué)習(xí)目標(biāo)。
Java虛擬機(jī)重要嗎?重要。我們平時(shí)關(guān)注的內(nèi)容大多是在語(yǔ)言層面上的,至于底層到底是如何運(yùn)行的則很少有人關(guān)注。然而,不管是從事Java也好、Android也好,工作到一定層次之后遇到的一些問題確實(shí)是需要了解Java虛擬機(jī)才能解決的。
比如說(shuō)內(nèi)存泄漏,這是一個(gè)很常見又很讓人苦惱的問題。之所以這個(gè)問題難查,還是因?yàn)榇蠖鄶?shù)人對(duì)Java虛擬機(jī)底層的內(nèi)存管理機(jī)制并不熟悉。而如果我們深入地了解了Java虛擬機(jī)的垃圾收集器和內(nèi)存分配策略,就可以更加得心應(yīng)手地解決內(nèi)存泄漏的問題。
再比如說(shuō)現(xiàn)在Android領(lǐng)域中比較火的熱修復(fù)、插件化等技術(shù),都大量使用到了Java虛擬機(jī)中的類加載機(jī)制,從事這部分技術(shù)研發(fā)的人,如果對(duì)Java虛擬機(jī)技術(shù)不熟悉的話,那肯定是寸步難行的。
而且還有很重要的一點(diǎn),Java虛擬機(jī)技術(shù)是不用擔(dān)心過時(shí)的,因?yàn)椴还芪磥?lái)Android程序是用Java開發(fā)也好、Kotlin開發(fā)也好,底層的運(yùn)行環(huán)境都是依賴于Java虛擬機(jī)的。當(dāng)然在Android上是叫ART,但本質(zhì)上仍然是Java虛擬機(jī)。