推薦JAVA學習路線

一直以來,都想寫一篇介紹JAVA學習路線的博客。爲什麼有這個想法?原因有兩個,其一:筆者從大三開始學習JAVA,至今也3年了。由於身邊缺乏老司機帶路,只能自己一步步探索,深知沒人指路的痛苦。所以看過很多垃圾的書籍(沒辦法,國內書籍市場門檻太低),但功夫不負有心人,一些經典的書籍也都擼過了(關於書籍,下文中會介紹)。其二:由於JAVA進入門檻低,所以存在一些學個SSH框架就覺得JAVA不過如此之流,對此筆者只能呵呵。由於筆者是個JAVA死忠粉,所以寫這篇文章也是希望大家能對JAVA有更深入的認識。話不多說,進入正題!


筆者見過一些人,學習JAVA直接從工程上手,然後看別人的代碼,照葫蘆畫瓢(不得不承認,JAVA很容易照葫蘆畫瓢)。但筆者不推薦這種方式,爲什麼不推薦?因爲這樣你可能寫出類似這樣的四不像代碼List<Map.Entry<String,String>>。哈哈,言歸正傳。

  1. 對於初學JAVA的童鞋,筆者推薦的書籍是李興華的《JAVA開發實戰經典》,筆者知道可能會有做廣告的嫌疑,但對於真心想學JAVA的同學,筆者相信你們看完此書會感謝我的。這本書是推薦給從零開始學JAVA的同學,如果你有C語言的基礎,看起來會非常快。但請不要太快,畢竟有些知識是需要時間來沉澱的。一定要從頭到尾通讀這本書,爲何?因爲基礎很重要。俗話說“根基不牢,地動山搖”。書中關於JAVA圖形界面的部分可以略過,需要的時候在學習。因爲根據經驗來看,圖形編程的部分好像很少用到。
  2. 有了第一步對JAVA基礎知識的積累,相信你一定知道了JAVA語言的三個領域:J2ME,J2SE,J2EE。J2ME是JAVA嵌入式設備編程,JAVA語言早期興起的時候,是在J2ME領域發威的(你可以把現在很火的Android開發認爲是這一領域)。J2SE是JAVA桌面級應用。J2EE是JAVA企業級應用,即JAVA Web應用。也是目前JAVA開發者主要活動的領域。這裏,筆者想聲明,如果你是因爲Android學的JAVA,那麼把第一本書看完就可以去學Android的知識了。如果你是因爲J2EE學的JAVA,那麼筆者推薦你繼續學習第二本書:李興華《JAVA Web開發實戰經典》。這本書主要自己講解MVC框架,以及他的前世今生。MVC是J2EE中大多數框架的設計靈魂,所以一定要好好理解MVC的工作流程以及爲何要這樣設計。深刻的理解MVC的原理,能讓你的Java代碼通俗易懂,結構清晰,高內聚低耦合。這也是很多C語言開發者搞JAVA時候的痛點,一定不要面向過程好麼!
  3. 前兩步學完,理論上來講你可以去開發Java Web應用了。但是還不夠,爲何?因爲一些大牛們發現,web開發總是關於servlet,filter,listener,其中有大量的可重用代碼和大量的配置項。因此有了框架,比如Struts,Spring,SpringMVC,Hibernate,Mybatis。諸如此類。是不是頭大了,不過別擔心。記得筆者在第二步中說過的話,一定要深刻理解MVC。上面的框架中,你當然不需要全部學習,但Spring是一個例外。筆者建議你弄懂Spring的方方面面,這不是一個容易的任務,筆者自己也在持續學習中。這裏,筆者推薦《Spring in Action》。這是一本實戰類的書籍,可以讓你對項目快速上手。等你對Spring用熟了之後,記得去逐漸理解Spring的源碼。再具體的項目中,通常是SSH組合或者SSM組合。
  4. 上面三步搞完,你就可以參與JAVA WEB的開發了。筆者希望你確保自己完成了前三步的學習,再參與到web開發中。否則我只能祝你遇到個好的隊友了。
  5. 基本招式已經搞定,現在,你可以抽一些時間來提高自己的內功了,對於設計模式入門,筆者推薦《Effective JAVA》機械工業出版社;對於JAVA虛擬機,筆者推薦《深入JAVA虛擬機》機械工業出版社,學完此書,你可以理解諸如下面的代碼:
    Integer a=1;
    Integer b=1;
    Integer c=200;
    Integer d=200;
    System.out.println(a==b);//true
    System.out.println(c==d);//false
    再比如爲什麼使用內部靜態類可以實現單例模式等等。然後對於JAVA多線程編程,筆者推薦《JAVA併發編程實戰》機械工業出版社。學完虛擬機和多線程,筆者相信你的內功一定大增。
  6. 最後迴歸基礎和源碼吧。比如那本神書《Java編程思想》。你完全可以不在最後的階段看,但千萬不要把此書作爲入門書籍,大牛除外吧。
  7. 哦對了,關於tomcat,筆者推薦《How Tomcat works》,這是一本絕版書,可以幫助你理解“你的web程序是如何與web容器進行交互的”。
  8. 至於以後,老兄,讓我們攜起手來一起探索吧,很期待我們可以因此擁有一段純潔的革命友誼。

至此,筆者想說的就說完了,如有建議,歡迎討論。

筆者開設了一個知乎live,詳細的介紹的JAVA從入門到精通該如何學,學什麼?

提供給想深入學習和提高JAVA能力的同學,歡迎收聽https://www.zhihu.com/lives/932192204248682496


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章