作為一名從業(yè)多年的程序員,同時也出版過Java編程書籍,所以我來回答一下這個問題。
Java語言隨著互聯(lián)網(wǎng)的發(fā)展,其自身的生態(tài)體系不斷得到完善,應(yīng)用邊界也不斷得到拓展,目前在Web開發(fā)、大數(shù)據(jù)開發(fā)、移動終端開發(fā)等領(lǐng)域均有廣泛的應(yīng)用,可以說不同的應(yīng)用方向也需要具備不同的知識結(jié)構(gòu),所以說精通Java還是具有一定難度的。
Java語言自身的構(gòu)成分為兩個大的部分,一大部分為Java虛擬機(jī),另一部分為Java語言自身的語法。按照J(rèn)ava語法要求編寫的程序需要通過Java虛擬機(jī)完成加載、校驗、編譯和運(yùn)行,而Java虛擬機(jī)的作用就相當(dāng)于Java的運(yùn)行環(huán)境(容器),它自身需要完成大量的操作,包括代碼安全性、垃圾處理、事件處理、資源管理等內(nèi)容。所以精通Java開發(fā)一方面需要清晰Java語法,另一方面需要了解Java虛擬機(jī)的運(yùn)行機(jī)制。
對于初學(xué)者來說,學(xué)習(xí)Java編程都是從學(xué)習(xí)Java語法開始的,然后學(xué)習(xí)Java的Web開發(fā)、數(shù)據(jù)庫開發(fā)、分布式開發(fā)等內(nèi)容,這個過程通常是大部分學(xué)習(xí)者的學(xué)習(xí)路線,難點(diǎn)在于Java面向?qū)ο蟾拍畹睦斫?,也就是理解各種“抽象”。這部分雖然具備一定的難度,但是大部分學(xué)習(xí)者是能夠?qū)W得會的,區(qū)別往往在學(xué)習(xí)時間上。
對于從事平臺開發(fā)的研發(fā)級程序員來說,還需要系統(tǒng)的學(xué)習(xí)Java虛擬機(jī)的內(nèi)部機(jī)制,通過從深層次了解Java虛擬機(jī)的構(gòu)成從而輔助平臺類產(chǎn)品的研發(fā),重點(diǎn)在于性能的提高。通常情況下需要了解Java虛擬機(jī)的體系結(jié)構(gòu)、核心算法等內(nèi)容,這部分內(nèi)容的難度還是比較大的。當(dāng)然,要想系統(tǒng)了解Java虛擬機(jī)的整體結(jié)構(gòu),通常還需要閱讀大量的源代碼。