java 并發(fā)編程 把Java編程語言精通到底有多難?
把Java編程語言精通到底有多難?作為一名程序員,我已經(jīng)出版了很多Java編程書籍,所以讓我來回答這個(gè)問題。隨著互聯(lián)網(wǎng)的發(fā)展,Java語言自身的生態(tài)系統(tǒng)不斷完善,應(yīng)用邊界不斷擴(kuò)大。目前廣泛應(yīng)用于web
把Java編程語言精通到底有多難?
作為一名程序員,我已經(jīng)出版了很多Java編程書籍,所以讓我來回答這個(gè)問題。
隨著互聯(lián)網(wǎng)的發(fā)展,Java語言自身的生態(tài)系統(tǒng)不斷完善,應(yīng)用邊界不斷擴(kuò)大。目前廣泛應(yīng)用于web開發(fā)、大數(shù)據(jù)開發(fā)、移動(dòng)終端開發(fā)等領(lǐng)域。可以說,不同的應(yīng)用方向也需要有不同的知識(shí)結(jié)構(gòu),因此很難掌握J(rèn)ava。
Java語言本身的組成分為兩部分,一部分是Java虛擬機(jī),另一部分是Java語言本身的語法。根據(jù)Java語法要求編寫的程序需要通過Java虛擬機(jī)進(jìn)行加載、驗(yàn)證、編譯和運(yùn)行,Java虛擬機(jī)的作用相當(dāng)于Java運(yùn)行環(huán)境(container)。它需要完成很多操作,包括代碼安全、垃圾處理、事件處理、資源管理等。因此,精通java開發(fā)一方面需要清晰的java語法,另一方面需要了解java虛擬機(jī)的運(yùn)行機(jī)制。
對(duì)于初學(xué)者來說,學(xué)習(xí)java編程從學(xué)習(xí)java語法開始,然后學(xué)習(xí)java web開發(fā)、數(shù)據(jù)庫(kù)開發(fā)、分布式開發(fā)等。這個(gè)過程通常是大多數(shù)學(xué)習(xí)者的學(xué)習(xí)路線。難點(diǎn)在于對(duì)java面向?qū)ο蟾拍畹睦斫猓磳?duì)各種“抽象”的理解。這一部分雖然有一定的難度,但大多數(shù)學(xué)習(xí)者都是能夠?qū)W習(xí)的,差異往往在于學(xué)習(xí)時(shí)間上。
對(duì)于從事平臺(tái)開發(fā)的研發(fā)級(jí)程序員來說,還需要系統(tǒng)地學(xué)習(xí)Java虛擬機(jī)的內(nèi)部機(jī)制。通過深入了解Java虛擬機(jī)的組成,可以輔助平臺(tái)產(chǎn)品的研發(fā),注重性能的提高。通常,我們需要了解Java虛擬機(jī)的體系結(jié)構(gòu)和核心算法,這是比較困難的。當(dāng)然,如果您想了解Java虛擬機(jī)的整體結(jié)構(gòu),通常需要閱讀大量的源代碼。
面一個(gè)5年java,不知數(shù)據(jù)結(jié)構(gòu),卻大談分布式,這樣的能要嗎?
我猜您向人們?cè)儐柫烁鞣NJDK數(shù)據(jù)結(jié)構(gòu)的基本實(shí)現(xiàn)原則。事實(shí)上,我一直在想。知道基本的實(shí)現(xiàn)原則是可以的,也是值得的,但是如果你不知道呢?人們知道哪些數(shù)據(jù)結(jié)構(gòu)適用于哪些場(chǎng)景,并且能夠熟練地使用它們。那不是。。。夠了嗎?對(duì)貴公司的需求不足嗎?你希望他為你的公司創(chuàng)建一個(gè)新的數(shù)據(jù)結(jié)構(gòu)嗎?就像two peas或JDK一樣,JDK的數(shù)據(jù)結(jié)構(gòu)性能遇到了瓶頸,求職者會(huì)給你提供比工作提供的數(shù)據(jù)結(jié)構(gòu)更好的數(shù)據(jù)結(jié)構(gòu)。
自學(xué)JAVA應(yīng)該怎么規(guī)劃?
這是一個(gè)非常好的問題。作為一名計(jì)算機(jī)專業(yè)的教育工作者,讓我談?wù)勎业目捶ā?/p>
首先,本科生應(yīng)該重視編程語言的學(xué)習(xí)。Java作為一種比較流行的全場(chǎng)景編程語言,在未來的工業(yè)互聯(lián)網(wǎng)時(shí)代仍有很好的應(yīng)用前景,相關(guān)的帖子也很多。
編程語言本身只是一種工具,編程語言的應(yīng)用與場(chǎng)景密切相關(guān),不同的開發(fā)場(chǎng)景也需要積累不同的知識(shí)結(jié)構(gòu),所以在學(xué)習(xí)編程語言的過程中,要選擇一個(gè)主要的方向,然后圍繞主要方向制定學(xué)習(xí)計(jì)劃。
從知識(shí)體系建設(shè)的角度來看,無論Java未來的發(fā)展方向是什么,最好按照web的發(fā)展方向來組織知識(shí)結(jié)構(gòu)。一方面,web開發(fā)的知識(shí)體系相對(duì)成熟,有大量的案例可供借鑒。另一方面,網(wǎng)絡(luò)開發(fā)領(lǐng)域的就業(yè)機(jī)會(huì)更多,未來的就業(yè)機(jī)會(huì)也更多。
掌握了基本的Java Web開發(fā)技術(shù)體系后,我們可以專注于大數(shù)據(jù)方向。大數(shù)據(jù)方向的發(fā)展空間很大,目前大數(shù)據(jù)發(fā)展崗位的人才缺口比較大。從大數(shù)據(jù)的發(fā)展趨勢(shì)來看,未來很長(zhǎng)一段時(shí)間,大數(shù)據(jù)將處于快速發(fā)展時(shí)期。雖然大數(shù)據(jù)的技術(shù)體系已經(jīng)成熟,但大數(shù)據(jù)在行業(yè)中的應(yīng)用才剛剛起步。
要向大數(shù)據(jù)方向發(fā)展,我們需要學(xué)習(xí)更多。除了奠定堅(jiān)實(shí)的編程基礎(chǔ)外,我們還需要關(guān)注操作系統(tǒng)(Linux)和大數(shù)據(jù)平臺(tái)的學(xué)習(xí)。由于大數(shù)據(jù)平臺(tái)的內(nèi)容較多,在學(xué)習(xí)過程中要多做實(shí)驗(yàn),最好結(jié)合具體的行業(yè)場(chǎng)景。