如何學習java

如何學習java

經常看到很多人捧著一本10天精通java,java開發寶典之類的圖書學習java,當他們學會了用eclipse、idea等IDE工具寫出“Hello World”之後,就感覺自己掌握、甚至精通了java;又或者找來一本類似於jsp動態網站編程之類的圖書,學會使用jsp腳本編寫一些頁面之後,就自我感覺掌握了java開發!世界上最可怕的事情就是自己菜卻不知道自己菜!

還有一些朋友、求職者聽說J2EE、Spring或Spring boot很有“錢途”,於是立即跑到書店或者圖書館找來一本精通j2EE之類的圖書,希望這樣一本圖書就可以打通自己的“任督二脈”,一躍成為J2EE開發高手!

也有些小盆友非常喜歡J2EE項目實戰、項目大全之類的圖書,他們想法很單純:我按照書上介紹,按圖索驥、依葫蘆畫瓢,應該很快就可學會J2EE,很快就能成為一個受人人羨慕的J2EE程序員了!

......

凡此種種,不一而足,他們中的大多數最後的結果都是失敗,因為這種學習沒有積累、沒有根基,學習過程中困難重重,每天都被一些相同、類似的問題所困擾,起初熱情十足,經常上論壇,貼吧、QQ群詢問,按別人的說法解決問題之後很高興,既不知道為什麼錯?也不知道為什麼對?只是盲目地抄襲別人的說法。最後的結果有兩種:

1、久而久之,熱情喪失,最後放棄學習。

2、大部分常見問題都問遍了,最後也可以從事一些重複性的開發工作,但一遇到新問題,又將束手無策。

第一種我就不想多說了,每個人都有自己的選擇,他們應該去幹他們更擅長的事情,畢竟不管你做什麼都能給國家做貢獻!對於這第二種情況我可以說在普通程序員中佔了極大的比例,筆者多次聽到、看到(在網絡上)有些程序員抱怨:我做了2年多java程序員了,工資還是5000多點。偶爾筆者也會與他們聊聊工作相關內容,他們會告訴筆者:我也用Spring了啊,我也用Spring boot了

啊......他們感到非常不平衡,為什麼我的工資這麼低?其實筆者很想告訴他們:你們太浮躁了!你們確實是用了Spring、Mybatis又或是Spring boot,但你們想過為什麼要用這些技術嗎?用這些技術有什麼好處嗎?如果不用這些技術行不行?

很多時候,我們的程序員把java當成一種腳本,而不是一門面向對象的語言。他們習慣了在JSP腳本中使用Java,但從不去想JSP如何運行,Web服務器裡的網絡通信、多線程機制,為何一個JSP頁面能同時向多個請求者提供服務?更不會想如何開發Web服務器;他們像代碼機器一樣編寫Spring Bean代碼,但卻從來不去理解Spring容器的作用,更不會想如何開發Spring容器。

有時候,很多同學在編寫五子棋,聊天程序遇到困難的時候,會向他們的大學學長,朋友求救,這些程序員告訴他們:不用寫了,網上直接有下載!聽到這種回答,我只想對這位學長說:你過來,我保證不會打死你。。。,網上還有Windows下載呢!網上下載和自己編寫是兩碼事。偶爾,筆者會懷戀以前黑色屏幕、綠瑩瑩字符時代,那時候程序員很單純:當他們想偷懶時,習慣思維是寫一個小工具;現在的程序員很聰明:當他們想偷懶時,習慣是從網上下一個小工具。但是,誰更幸福呢?

當很多同學把他們完成的小作業放在互聯網之後,然後就有很多人稱他們為“高手”!這個稱呼讓他們萬分慚愧;慚愧至於,他們也感到萬分欣喜,非常有成就感,這就是編程的快樂。編程的過程,與尋寶的過程完全一樣:歷經千辛萬苦,終於找到心中的夢想,這是何等的快樂!

如果真的打算將編程當成職業,那就不應該如此浮躁,而是應該紮紮實實先學好java語言,然後按java本身的學習規律,踏踏實實一步一個腳印地學習,把基本功練紮實了才可獲得更大的成功。

實際情況是,有多少程序員真正掌握了java 的面向對象?真正掌握了java的多線程、網絡通信、反射內容?有多少java程序員真正理解了類初始化時內存運行過程?又有多少程序員理解java對象從創建到消失的全部細節?有幾個程序員真正獨立地編寫過五子棋、坦克大戰、聊天程序這種小遊戲?又有幾個java程序員敢說:我可以開發Spring?我可以開發Tomcat?很多人又會說:這些都是很多人一起開發出來的!實際情況是:很多開源框架的核心最初完全是由一個人開發的。現在這些優秀程序員已經出來了!你,是否深入研究過它們,是否深入掌握了它們?

如果要真正掌握java,包括後期的javaEE相關技術(例如Spring、Hibernate、Mybatis、Spring boot等),一定要記住筆者的話:絕不要從IDE(如Eclipse和Idea)工具開始學習!IDE工具的功能很強大,初學者學起來也很容易上手,但也非常危險:因為IDE工具已經為我們做了很多事情,而軟件開發者應該瞭解軟件開發的全部步驟。

點擊更多學習更多java知識


分享到:


相關文章: