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