Java如何進階

本來我想把這篇文章的名字命名爲: <怎樣成爲一個優秀的Java程序員>的, 但是自己還不夠優秀, 而本篇所涉及的都是自己學習和工作中的一些經驗, 後來一想, 叫<怎樣進階Java>可能更爲合適吧. 能給初學Java的人一個參考, 也就是我本來的心願. 如果有大牛看到不妥之處, 敬請指正. 我一定會修正的 :).
 
Java目前是最流行的語言之一,  是很多公司和程序員喜愛的一門程序語言. 而且, Java的入門比C++相對來說要簡單一些, 所以有很大一部分程序員都選擇Java作爲自己的開發語言. 我也是其中之一, 就是因爲覺得學C++太難, 當初在學校學了將近一個學期的C++, 啥進步都沒有, 哈哈, 天資太差, 所以才選擇自學Java(當時學校並沒有開設Java的課程), 才走上了程序開發這條路.
 
Java雖然入門要容易, 然而要精通它, 要成爲專家卻很難. 主要原因是Java所涉及的技術面比較寬, 人的精力總是有限的. 有些Java方面的技術是必須要要掌握的, 鑽研得越深入越好, 比如多線程技術.
 
1. 基礎階段
基礎階段, 可能需要經歷1-2年吧. 這個時段, 應該多寫一些基礎的小程序(自己動手寫的越多越好). 計算機是一門實踐性很強的學科, 自己動手的東西, 記憶非常深刻, 效果要勝過讀好多書. 當然, 學Java基礎的時候, 書籍的選擇也非常重要, 好的書籍事半功倍, 能讓你打個非常好的基礎. 而差的書籍, 很容易將你帶入歧途, 多走很多彎路. 書籍不在多, 而在乎讀得精(有些書, 你讀十遍都不爲過). 我記得我學Java的第一本書是<Thinking in Java>的中文版, 網上有很多人都建議不要把這本書作爲第一本的入門教程來看, 太難. 我卻想在此極力推薦它, 這本書確實是本經典之作. 而且書中確實講的也是Java中的一些基礎技術, 沒有什麼太難的東西, 只不過比較厚, 學習週期比較長, 所以很多人中途會選擇放棄. 其實, 這本書是一本難得的入門教程, 對Java一些基礎的東西, 講得很全, 而且也很清晰, 更重要的是, 這本書能讓你養成很多好的編程習慣, 例子也很多. 建議你把大部分的例子自己去實現一遍.  我的親身經歷, 我記得當時認真的看了2遍, 花了大概7個月的時間, 不過真的有很好的效果. 另外一個教程, 就是<Java核心技術>卷一, 卷二的話可以不必要買. 卷一看完, 自己再鑽研一下, 就已經能達到卷二的高度了:). 到那時, 你就會覺得看卷二沒啥意思, 感覺浪費錢了. 還有一個, 就是張孝祥的Java視頻, 看視頻有個好處, 就是比看書的記憶要深刻, 還有很多你可以跟着視頻的演示同步操作. 張孝祥的Java視頻對初學者來說, 確實很有作用. 總結起來: 看這些資料的時候, 一定要多寫例子, 寫的越多越好!
 
2. 中級階段
中級階段, 是一個更漫長的時期, 能否突破此階段, 跟個人的努力和天資有着很大的關係. 你不得不承認, 同樣一門新技術, 有些人一個月領悟到的東西, 比你一年的都多. 這就是天資, 程序員是一個需要天才的工作. 我想, 很多人聽說李一男吧, 此君就是這樣的人物, 三個月的時間就能解決好大一幫人幾年解決不了的問題, 給華爲某部門帶來了很多的收益. 哦, 這是題外話了, 與此篇的主題無關, 只是本人偶爾的感慨而已:).  這個階段, 就需要研究很多專題性的東西了, 比如: IO的實現原理, 多線程和Java的線程模型, 網絡編程, swing, RMI, reflect, EJB, JDBC等等很多很多的專題技術, 鑽研得越深越好. 爲了更好的提高, 研究的更深入, 你需要經常到網絡上搜索資料, 這個時候往往一本書起不來很大的作用. 選一個JDK版本吧, 目前建議選用1.6, 多多研究它, 尤其是源代碼(儘量! 就是儘自己最大的努力, 雖然研究透是不可能滴). 比如說: util, collection, io, nio, concurrent等等包. 可能有人會反對我說, 不是有API文檔嗎, 爲什麼還要研究這麼多的源代碼? 錯了, 有API文檔, 你僅僅只是知道怎麼用而已, 而認真仔細的研讀這些大牛的源碼, 你就會深入更高的一個階層, 自己的編碼, 設計都會有很大的提高. 如果有能力和精力, 我建議你把JDK的每一行代碼都熟悉一遍, 絕對只有好處, 沒有壞處! 而且你會有些意外的收穫, 比如, 當你仔細地讀完concurrent包的時候(不多, 好像總共是86個類吧), 你就會對Doug Lea佩服得五體投地. 這個時候最忌碰到難題就去尋找幫助, 去網上找答案! 先把自己的腦袋想破吧, 或者等你的老闆拿着砍刀衝過來要把你殺了, 再去尋求幫助吧. 對於專題的學習, 英文原版的閱讀是非常必要的, 看的越多越好, 多上上IBM的developer, SUN的網站吧, 當然Javaeye也很不錯:), 有很多大牛, 呵呵.
這個時候, 你應該建立自己的代碼庫了, 你應該自己去研究很多有意思的東西了. 從一個200多M的文件中尋找一個字段, 最壞情況(在文件的末尾咯)也只需要1秒左右的時間, 你知道嗎?  這個階段, 有很多很多類似的有趣的東西可以供你去研究, 你需要更多地關注性能, 規範性, 多解決一些疑難問題. 需要學會所有的調試技術, 運用各種性能工具, 還有JDK附帶的很多工具, 這些你都要熟練得跟屠夫操刀一樣. 也可以看看<Effective Java>, 這本書總結的也不錯, 對寫高效穩定的Java程序有些幫助. 也可以看看模式方面的東西, 但是我建議模式不要濫用, 非得要用的時候才用, 模式往往會把問題搞複雜:). 總結起來: 這個階段是一個由點延伸到面的過程, 經過不斷的學習, 演變成全面的深入! Java技術中你沒什麼盲點了, 還能解決很多性能問題和疑難問題, 你就成了一個合格的程序員了! :)  [要想成爲優秀程序員, 還得對數據庫和操作系統很精通.]
 
3. 高級階段
高級階段, 我就不敢妄言了. 呵呵, 我感覺自己也是處於中級階段吧. 也是根據自己的一些經驗, 談談自己的理解吧:
這個階段, 需要研究各種框架, Spring, struts, Junit, Hibernate, iBatis, Jboss, Tomcat, snmp4j等等, 我覺得這個時候, 只要是用Java實現的經典框架, 你都可以去研究. 建議開始的時候, 研究Junit和Struts吧, 小一點, 裏面都採用了很多的模式, 呵呵, 可以熟悉一下, 儘量想想人家爲什麼這麼做. 我建議主要的精力可以花在spring和jboss上, 尤其是jboss,  經典中的經典, 設計, 性能, 多線程, 資源管理等等, 你從中可以學到的東西簡直是太多了. 而且它還有一本寫得很好的參考書, 叫<Jboss管理與開發核心技術>, 英文方面的資料也是非常的多. 在工作中如果有機會參與架構的設計, 業務問題的討論, 一定想方設法殺進去! 這對自己的設計能力, 以及對設計如何運用在業務上有很大的幫助. 畢竟, 程序都是爲了更好地實現用戶的業務的. 這個時候, 需要更多看看軟件工程和UML方面的資料, 或者自己主持一個項目玩玩, 不一定非得出去拉項目賺錢(能賺錢當然更好), 不管成功或失敗, 都是很寶貴的經驗, 都能提高很多! 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章