1. 程式人生 > >《Thinking In Java》 VS 《Effective Java》 VS 《深入理解Java虛擬機器》

《Thinking In Java》 VS 《Effective Java》 VS 《深入理解Java虛擬機器》

今天剛考完試,在5天以前的前4個月時間裡,我很慶幸自己選了一個看書的學習途徑。從上個學期的暑假到現學期的11周裡面,讀了《Thinking In Java》、《深入理解Java虛擬機器》和《Effective Java》,感悟頗多。首先先說明一下,我以前是看視訊學習的,就做過兩三個學校的網站,都已經上線在使用。沒做過什麼特別高大上的東西,所以我是處在新手的角度去讀書的,我也知道自己的理解很淺,不過,既然讀過,想談談讀後感。還有一點,該部落格的標題只不過是吸引讀者,部落格只是談談上面提及書籍的特點,不存在對比的含義。

《Thinking In Java》是當之無愧的聖經!

我是在暑假讀的,接近2個月,是英文原版第4版,也是為了12月份的6級考試。TIJ的知識點很全,它已經告訴讀者Java語言的語法,包括物件的理解、運算子、控制語句、初始化和清除、訪問許可權、多型、介面、內部類、物件容器、錯誤異常、字串、型別訊息、泛型、陣列、容器的深層、I/O流、、列舉、註解、併發、使用者介面的內容。從內容上看,它有點像是API的簡版,同時對知識點的闡述不會太深,但是比API又要深入。從可讀性上看,它又比API通俗易懂,TIJ通過例子、比較把要說明的知識點串聯在一起。舉個例子,好比泛型章節,先與C++比較,引出Java的泛型,然後介紹簡單語法,再然後介紹泛型的用法,像泛型介面、泛型方法、內部類的泛型等等,接著介紹萬用字元和型別引數等,最後介紹Java泛型的特點,型別擦除(從虛擬機器的層面)和靈活的用法,像型別安全、最小化、轉換等。是有一個層次關係的。在併發章節,除了介紹基本的語法外,還有一些API的類,CountDownLatch、CyclicBarrier、DelayQueue...,還討論了併發的特性例如鎖機制等。在容器章節,不僅介紹了各個容器的用法,還進行比較,最後對每個容器進行效能測試。所以TIJ是介紹了基本語法,再在基本的語法上去延伸,去思考。而且,它幾乎每個知識點都有例子說明,例子也是比較完整的,我全是用vim敲的。不過,我認為TIJ最突出的一點是作者的文筆好!文字生動形象,語言詼諧易懂,即使是英文版的,讀過去,雖然有不懂的單詞,但是大體的意思還是可以理解的,可以說是一路暢通無阻,這點我是在讀了《Effective Java》後才體會到的。綜合起來,說TIJ是聖經不為過。


《Effective Java》是一把砍柴的利刃!

柴又粗又脆,就像Java程式碼一樣,EJ好比利刃,一劍削斷木柴。在講它之前,我想黑一下作者的文筆,小學還沒畢業吧,語句繞來繞去,難以理解,往往一句話要反覆看好幾遍。一開始看的是英文版第2版,後面看不下去,跟一朋友借了一本中文版的兩本對照看,還是有點繞,看來翻譯的也不怎麼樣。不過,吐槽歸吐槽,它內容還真不錯,與TIJ的基點不同,Ef的前提是你已經對Java的基本語法多多少少認識了,然後告訴你更加靈活的寫法,讓你的程式更優雅、高效、健壯、維護性好等。它通過一個個獨立的小點來展示。倒真有點像API,寫程式碼經驗的API。TIJ告訴你怎麼用,Ef告訴你怎樣更高效去用。像接合抽象類與介面的抽象骨架類、工廠方法、寫文件等等會令你感覺自己以前寫的程式碼就是一堆垃圾。EJ重在理解,所以它的例子都比較精簡,不會太累贅。有種工具書的感覺。


《深入理解Java虛擬機器》帶你走進桃花源!

Java虛擬機器就好像是另外一個世界。該書有點偏向理論,它不是從程式碼程式的角度上去分析,而是從虛擬機器的角度。當我敲完一個程式,編譯執行出結果,這期間Java虛擬機器對我寫的程式做了什麼事?Java虛擬機器是如何管理我寫的程式的?《深入理解Java虛擬機器》對Java的記憶體機制、垃圾收集器、虛擬機器工具、類檔案、類載入機制、虛擬機器位元組碼執行引擎、程式編譯、程式碼優化、併發等方面都進行深入的討論。我看的是周志明寫的版本,中文的。其實我的感覺讀了它之後,對我寫程式碼沒有什麼提高,但是跟朋友吹起來那可是神器!他們一聽我講虛擬機器像什麼記憶體劃分、堆、棧、新生代、eden區,CMS垃圾收集器,類載入過程、語法糖、逃逸分析...都覺得我很歷害,其實沒什麼的,文科知識,背背而已。


以前有個大神說,你要幹兩年以上,才知道Java是幹什麼用的。現在看來,此言不虛!除了大一學C之外,剩下的恩寵都給了Java,慢慢理解,也越學越多,越學才感覺自己越渺小!

我!

是!!

拉!!!  

圾!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!