Java進階之路——如何玩好JDK

引言

很多同學對於公司的招聘要求中寫的,要有“紮實的Java基礎”,都很迷茫。

這到底啥意思?什麼東西算作Java基礎?學到什麼程度才算紮實?

這些問題的答案,咳咳,答案就是玩好JDK就可以了。

不過JDK這東西包含的東西實在太多,群裡的猿友還是拎不清到底應該學哪個,所以,小編就專門寫一篇文章,來講一講JDK應該怎麼玩。

玩好JDK

在詳細講解JDK之前,小編首先要強調下,本文的內容,都是小編個人的主觀判斷。因此,各位猿友務必結合自己的判斷之後,再決定是否要學習,以及學習到什麼程度,各位看官自行判斷 :)

此外,本文只是告訴你學什麼,學到什麼程度,本文不會包含太多具體的技術細節講解。

JDK其實就是Java SE Development Kit的縮寫,要玩好這東西可不簡單。

JDK主要包含了三部分,第一部分就是 Java運行時環境 ,這其實就是JVM。

此外,第二部分就是 Java的基礎類庫 ,這個類庫的數量還是非常可觀的。

最後,第三部分就是Java的開發工具 ,它們都是輔助你更好的使用Java的利器。

那麼很顯然,要玩好JDK,就是要玩好JDK的這三部分。接下來,咱們就逐個的來說一下,每一個部分要學什麼,學到什麼程度。

怎麼玩?

Java運行環境

這一部分其實就是常說的jre,而它的核心其實就一個東西,就是JVM。

JVM這個東西,它的重要性小編不想再強調了,JVM那本書甚至比《Thinking in java》還重要,這已經足見小編多麼看重JVM了。

當然了,只是小編看重,當然沒什麼卵用,但只要Java稍微高級一點點的職位,這部分基本上都是面試必問內容,這更加說明了JVM的重要性。

所以,對於JVM,沒什麼可說的,就是往死裡學,往死裡研究,能有多深就多深!

Java的基礎類庫

Java的基礎類庫從你剛開始學Java就開始接觸了,但是,直到你結束整個Java生涯,你都不一定能把所有的類都見一遍。

這說明了什麼?是不是說明了Java基礎類庫的龐大?

錯!大錯特錯!這其實真正說明的是,有很多類你完全不必要care它們,因為它們從你接觸Java到放棄,都不一定能接觸到。

所以,搞清楚哪些類重要,哪些類不重要,就非常有必要了。這可以讓你以最短的時間,做最有價值的事。

首先,我們來Java基礎類庫的包都有哪些,為了使得本文更有代表性,我們取JDK6的包列表。

Java進階之路——如何玩好JDK

怎麼樣?是不是被嚇到了?這麼多包,而且還這麼多陌生的包名,有的連見都沒見過,這特麼怎麼玩?

不要著急,小編先帶你把這些包給分下級別,小編將這些包一共分為四個級別。

哪四個級別?

精讀源碼

該級別包含的包如下:

精讀源碼,這是要求最高的級別。但是,要求你精讀源碼並不意味著,這些類就是最重要的。而是因為,小編覺得這些類比較常用,而且比較簡單,看看它們的源碼有助於鍛鍊你看源碼的感覺,也瞭解一下大神們寫代碼的風格。

看這些源碼的目的,更多是為了增加你的閱讀代碼能力。而且,小編這裡必須要強調一下,像Exception和Error這一類的,就不用讀源碼了,親。

其實上面三個包都有一個共同點,那就是這三個包,基本上都是你最常用的了。lang包不用說了,你隨便寫點啥都得用到,io包和util包也是你平時讀寫文件和使用數據結構必不可少的。

看源碼從這些常用的包下手找手感,小編個人覺得再合適不過。

深刻理解

該級別包含的包如下:

深刻理解,這個看似比精讀源碼要求低的級別,其實恰恰是最重要的。這個級別要求的類,全都是一些進階到高級所必須瞭解的。

當然了,這裡要強調一點的是,小編說這些類要深刻理解,而沒說要看它們源碼,並不是說這些類的源碼不能看,或者看了沒用。

而是這些類的源碼往往非常複雜,要了解清楚細節花費的時間是非常多的,因此,花費巨量的時間去研究這麼複雜的代碼其實沒必要的。

不過,如果你在使用這些類的過程中,遇到了問題,這個時候如果看它們源碼可以解決的話,那就不要再矜持了,果斷看看源碼解決你的問題吧,這是最適合的看源碼的契機了。

小小的透露一下,小編看過的JDK源碼,基本上全是這麼看過來的。

遇到了問題不要百度和谷歌,看源碼能解決你90%的問題。

此外,看到這四個包的名字,不難看出它們各自代表了什麼。reflect代表了反射,net代表了網絡IO,nio代表了非阻塞io,concurrent代表了併發。

這四個傢伙可以說每一個都夠面試官問上半天的,而且,這四個包的內容,如果你要深刻理解的話,其實還牽扯了很多其它的知識。

舉個例子,反射你要了解清楚的話,你是不是要搞明白JVM的類加載機制?網絡IO要搞清楚的話,你是不是要清楚TCP/IP和HTTP、HTTPS?包括併發包,如果你要搞清楚的話,是不是要了解併發的相關知識?

因此,這四個包要徹底搞清楚,還是需要花費一定時間和精力的。

但是,請相信小編,這絕對是值得的,甚至可以說,這四個包用的夠不夠叼,基本決定了一個Java程序員所處的檔次。

會用即可

該級別包含的包如下:

會用即可,這個級別的要求很顯然了,就是會用就可以了。這些包大部分都是在特定的情況下會用到,但卻不會時刻用到。

就像sql包和transaction包,就是操作數據庫時用到的。而xml、dom和sax這些,都是操作xml時用到的。

其它的包也都是類似的,有使用註解時用的,有遠程方法調用時用的,也有涉及到加密時用到的等等。

這些包在面試時一般不會問到,所以它們的重要性自然要低很多,而且也不太需要刻意的去學,用到了研究一下,會用即可。

此請無視它

該級別包含了所有以上沒有提到的包。

這個級別就更不用解釋了,到現在還沒提到的包,基本上可以忽略,因為你基本上不太可能用到它們,比如swing、awt這些玩意兒。

什麼?你說你經常用它們?

如果真的是這樣的話,那麼小編只能遺憾的告訴你,趕緊跳槽吧,你待在這公司沒啥前途的,0-0。

開發工具篇

這些開發工具主要就是輔助你開發的了,javac應該是最常用的一個了,雖然你幾乎不用手動執行它。

此外,其實還有一些比較實用的工具,可以幫助你排查問題。而且有的面試官,也會問你這類問題,比如問你平時都用什麼工具排查問題。

小編覺得比較實用的幾個工具主要有jmap、jconsole、jstack、jvisualvm,至於這幾個工具有什麼作用,小編這裡就不提了,如果你要了解這些命令的詳細內容,可以去谷歌或者官網上找,還是非常好找的。

當然,如果你有興趣的話,也可以自己去JDK的bin目錄下找找,看有沒有什麼更好玩的工具。

小結

好了,到這裡基本上就把“玩好JDK”這件事說完了。

總的來說,第一級別和第二級別是最重要的。

更簡單的說,可以把第一級別的那些包稱作基礎,第二級別的那些包稱為進階。至於第三級別和第四級別的那些包,就沒什麼可說的了。

當然了,最重要的還是那萬年不變的JVM,請記住了, JVM才是你Java根基的根本,就是再牛逼的類,沒了JVM它也就是一個無用的class文件而已。

如果你想擁有紮實的Java基礎,那就抓緊玩好JDK吧。玩好JDK以後,不要忘了學個一技之長。


分享到:


相關文章: