不少網友問我學習Java有沒有什麼捷徑,我說「無他,惟手熟爾」。可是我卻很願意將本身學習的一些經驗寫出來,以便後來者少走彎路,幫助別人是最大的快樂嘛! java
要想學好Java,首先要知道Java的大體分類。咱們知道,自從Sun推出Java以來,就力圖使之無所不包,因此Java發展到如今,按應用來分主要分爲三大塊:J2SE,J2ME和J2EE,這也就是SunONE(Open Net Environment)體系。J2SE就是Java2的標準版,主要用於桌面應用軟件的編程;J2ME主要應用於嵌入是系統開發,如手機和PDA的編程;J2EE是Java2的企業版,主要用於分佈式的網絡程序的開發,如電子商務網站和ERP系統。J2SE開發桌面應用軟件比起VC,VB,DEPHI這些傳統開發語言來講,優點好象並不明顯。J2ME對於初學者來講,好象又有點深奧,並且通常開發者很難有開發環境。因此如今應用最普遍又最好學的就是J2EE了。J2EE又包括許多組件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要學習起來可不是一兩天的事。 程序員
那麼又該如何學習J2EE呢?固然Java語法得先看一看的,I/O包,Util包,Lang包你都熟悉了嗎?而後再從JSP學起(JSP(Java Server Pages)是由Sun Microsystems公司倡導、許多公司參與一塊兒創建的一種動態網頁技術標準)。若是你學過HTML,那麼事情要好辦的多,若是沒有,那你快去補一補HTML基礎吧。其實JSP中的Java語法也很少,它更象一個腳本語言,有點象ASP。而後你就該學一學Servlet了。Servlet就是服務器端小程序,他負責生成發送給客戶端的HTML文件。JSP在執行時,也是先轉換成Servlet再運行的。雖然說JSP理論上能夠徹底取代Servlet,這也是SUN推出JSP的本意,但是Servlet用來控制流程跳轉仍是挺方便的,也令程序更清晰。接下來你應該學習一下Javabean了,可能你早就看無論JSP在HTML中嵌Java代碼的混亂方式了,這種方式跟ASP又有什麼區別呢?還好,SUN提供了Javabean能夠把你的JSP中的Java代碼封裝起來,便於調用也便於重用。接着就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,但是它和Javabean仍是有區別的。它是一個體繫結構,你能夠搭建更安全、更穩定的企業應用。它的大量代碼已由中間件(也就是咱們常聽到的Weblogic,Websphere這些J2EE服務器)完成了,因此咱們要作的程序代碼量不多,大部分工做都在設計和配置中間件上。至於JDBC,就不用我多說了,你若是用java編過存取數據庫的程序,就應該很熟悉。還有,若是你要用Java編髮送電子郵件的程序,你就得看看Javamail了。 web
好了,對Java和J2EE有了一些基本概念以後,你就應該編一些程序了,千萬不要紙上談兵哦。最好找一些有實例且帶光盤的書來看,這樣看到好的程序就能夠直接Ctrl+C再Ctrl+V,也不用勞您老大架再親自把它再輸一遍吧,再說直接複製還不用怕出錯,何樂而不爲呢!還有就是要常常上一些好的Java編程文章,有好的文章要Cut下來,有問題儘管問,只要問題不是太傻,通常高手都會回答你的。下面介紹幾個好的Java方面的編程網站: 面試
希賽論壇中國最有名的技術論壇,《程序員》雜誌就是他們出版的,你能夠在上面提出問題,立刻就有人回答你,若是你以爲好,你能夠給那人加分; 數據庫
Java研究組上面有不少原創文章,高手仍是挺多的; 編程
java.com.cn 看這域名就知道有多牛,註冊用戶快接近一萬了,同時在線人數也在一千左右,人氣很旺的; 小程序
IBM的開發者網IBM永遠的藍色巨人; 設計模式
那麼我書也看了,程序也作了,別人問個人問題我都能解決了,是否是就成爲高手了呢?固然沒那麼簡單,這只是萬里長征走完了第一步。不信?那你出去接一個項目,你知道怎麼下手嗎,你知道怎麼設計嗎,你知道怎麼組織人員進行開發嗎?你如今腦子裏除了一些散亂的代碼以外,可能再沒有別的東西了吧!你如今最缺的是實際的工做經驗,而不是書本上那些憑空想出來的程序。因此你快去找一份Java的編程工做來作吧(若是是在校學生能夠去作兼職啊),在實踐中提升本身,那纔是最快的。不過你得祈禱在公司裏碰到一個高手,並且他還願意不厭其煩地教你,這樣好象有點難哦! 安全
還有一個辦法就是讀開放源碼的程序了。咱們知道開放源碼大都出自高手,他們設計合理,考慮周到,再加上有廣大的程序員參與,代碼的價值天然是字字珠嘰,鏗鏘有力(對不起,最近《金裝四大才子》看多了)。學Java必讀的兩個開源程序就是Jive和Pet Store.。Jive是國外一個很是著名的BBS程序,徹底開放源碼。論壇的設計採用了不少先進的技術,如Cache、用戶認證、Filter、XML等,並且論壇徹底屏蔽了對數據庫的訪問,能夠很輕易的在不一樣數據庫中移植。論壇還有方便的安裝和管理程序,這是咱們平時編程時容易忽略的一部份(中國程序員通常只注重編程的技術含量,卻徹底不考慮用戶的感覺,這就是咱們與國外軟件的差距所在)。Jive的資料在不少網站上都有,你們能夠找來研究一下。相信你讀完代碼後,會有脫胎換骨的感受。遺憾的是Jive從2.5之後就再也不無條件的開放源代碼,同時有licence限制。不過幸虧還有中國一流的Java程序員關注它,外國人不開源了,中國人就不能開源嗎?這裏向你們推薦一個漢化的Jive版本—J道。Jive(J道版)是由中國Java界大名鼎鼎的banq在Jive2.1版本基礎上改編而成, 全中文,增長了一些實用功能,如貼圖,用戶頭像和用戶資料查詢等,並且有一個開發團隊在不斷升級。你能夠訪問banq的網去下載,或到同濟技術論壇的服務器上ftp://nr去下,安裝上有什麼問題,能夠到論壇上去提問。Pet Store.(寵物店)是SUN公司爲了演示其J2EE編程規範而推出的開放源碼的程序,應該很具備權威性,想學J2EE和EJB的朋友不要錯過了。 服務器
你必定會高興地說,哈哈,原來成爲Java高手就這麼簡單啊!記得我也曾碰到過一個項目經理,號稱Java很簡單,只要三個月就能夠學會。其實說這種話的人就如當年小日本號稱「三個月拿下中國」同樣大言不慚。不是我潑你冷水,你如今只是學到了Java的骨架,卻尚未學到Java的精髓。接下來你得研究設計模式了。設計模式是高級程序員真正掌握面向對象核心思想的必修課。設計模式並非一種具體"技術",它講述的是思想,它不只僅展現了接口或抽象類在實際案例中的靈活應用和智慧,讓你可以真正掌握接口或抽象類的應用,從而在原來的Java語言基礎上躍進一步,更重要的是,設計模式反覆向你強調一個宗旨:要讓你的程序儘量的可重用。關於設計模式的資料,仍是向你們推薦banq的網,他把GOF的23種模式以通俗易懂的方式詮釋出來,純Java描述,真是經典中的經典。有時間再研究一下MVC結構(把Model-View-Control分離開的設計思想)吧,如今很流行的Structs就是它的一種實現方式,不過Structs用起來實在是很繁,咱們只要學習其精髓便可,咱們徹底能夠設計本身的MVC結構。而後你再研究一下軟件Refactoring(重整)和極限XP編程,相信你又會上一個臺階。
作完這些,你不如整理一下你的Java代碼,把那些經典的程序和常見的應用整理出來,再精心打造一番,提升其重用性和可擴展性。你再找幾個志同道合的朋友成立一個工做室吧,你能夠去承接一些項目作了,一開始可能有些困難,但是你有技術積累,又考慮周全,接下項目來能夠迅速做完,相信你們之後都會來找你的,因此Money就嘩啦啦的來了。。。。。。
固然你也能夠參加一些開源項目,一方面能夠提升本身,另外一方面也是爲中國軟件事業作貢獻嘛!開發者在互聯網上用CVS合做開發,用QQ,MSN,E-mail討論聯繫,天南海北的程序員分散在各地卻同時開發同一個軟件,是否是頗有意思呢?
下面介紹兩個好的開源項目網站:
湖北省軟件公共開發平
共創聯
哇,好高興哦,我終於成爲高手了!非也,非也。古人云:「識時務者爲俊傑」。你知道計算機界如今的發展形勢嗎?你知道微軟的.NET藍圖和SUN ONE計劃之間的明爭暗鬥嗎 你知道計算機技術將向何處發展嗎 其實從各大計算機廠商最近的動做,均可以看出來「Web服務將是下一代互聯網應用的制高點」,而微軟的.NET藍圖和SUN ONE計劃的鬥爭焦點,也就是Web服務。Web服務就是一個嶄新的分佈式計算模型,它是一系列標準的綜合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不一樣語言編寫的軟件可以輕易的集成起來,使網絡資源和Web站點變成一種服務而不是混亂的垃圾場。不遠的未來,咱們就能夠在家裏點擊一下鼠標,就能夠完成出門旅遊的所有準備工做,包括定飛機票,定旅遊線路,定好房間等。請注意,這全部的一切都是Web站點間自動完成的,不再用象如今同樣,表面上是電子商務,實際上不少環節都是人工操做。也許你會以爲這是天方夜談,不過就近的說,你也頗有可能承接一個項目,要集成兩個企業的ERP系統。頗有可能上游企業的系統是用Dephi編的,而下游企業的系統是用Java編的。你說你是Java高手,你們都看者你怎麼作呢。因此啊,你還得學習新技術,如Web服務,並且你Dephi也要懂一點吧(Dephi6如今已經提供Web服務的控件了)。 你編的Java系統,可能要和.NET集成,因此你.NET要懂一點吧?到最後,你可能發現你已經成爲Java高手了,但不少時間卻在搞別的技術。太極張三丰裏說,最厲害的招式就是沒有招式,可能就是這個道理吧!
由於剛剛興起,因此網上Web服務的資料不是不少,我仍是給你們推薦幾個網站吧:
中國UDDI技術聯
希賽的柴曉路專(注:柴曉路也是互聯網上一個有名的人物,他發表過不少關於Web服務的文章,還出了一書,應該稱的上是中國Web服務技術的先行者)
IBM的開發者網絡的XML&Web Service專欄:
希賽IBM但是Web服務的力推者
嗚…你費勁千心萬苦,總算成爲Java高手了,怎叫人不禁喜極而泣呢!是啊,真不容易,真不簡單,真叫人感動啊!那麼打個電話告訴我吧,什麼?個人電話號碼是多少?昏到,你打電話問不就知道了嗎,真是的……
如上是在網上考下來的,但我的認爲SCJP證書也好,程序員等級證書也好,不要太看重它;關鍵是你手中有沒有技術,能不能拿出活來。我面試時候都是以證書爲參考,主要衡量你的手段仍是提問技術性問題以及一些編程方面的基礎問題。建議不要把證書看的過重。
看完這篇文章,總結了一下學習java的要經歷的幾個階段:
第一個階段:學習J2EE的各類組件。
第二個階段:讀開放源碼的程序。
第三個階段:研究設計模式。
最近論壇上看到好幾個朋友都在問,如何學習 Java的問題,「我已經學習了J2SE,怎麼樣才能轉向J2EE 」,「我看完了Thinking in Java, 能夠學習J2EE了麼 」。因而就有了寫這篇文章的想法,但願能幫助初學者少走一些彎路。也算是對本身幾年來學習Java的一個總結吧。
在開始以前有必要再討論一下J2ME,J2SE,J2EE這些概念。J2ME,The MicroEdition of the Java 2 Platform。主要用於嵌入式Java,如手機,PDA等等。J2SE,Java 2 Platform,Standard Edition,咱們一般所說的JDK(Java Development Kit)包含在此,是J2EE的基礎。J2EE,Java 2 Platform,Enterprise Edition,就是所謂的企業級Java。這些只是從API級別上的劃分,實際上Sun給J2EE的定義是:開發基於組件的多層的企業級應用的規範。也就是爲各類不一樣的技術定義一個Java的規範,使這些不一樣的技術結合起來,在Java平臺上構建強壯的企業級應用。從這一點來看,J2EE這個概念應該是 涵蓋J2ME,J2SE的。好比一個典型的J2EE應用,網上商店,它支持web方式下訂單,也支持手機下訂單。顯然必須用到J2SE,J2ME。因此也就不存在所謂的從J2SE轉向J2EE的問題了,只是後者包含的範圍更廣而已。
來看看Sun給出的J2EE 相關技術主要分爲幾大塊。
1. Web Service技術
JavaAPI for XML Processing (JAXP)
JavaAPI for XML Registries (JAXR)
JavaAPI for XML-based RPC (JAX-RPC)
SOAP withAttachments API for Java (SAAJ)
2. 組件模型技術(ComponentModel Technologies)
Java Servlet
JavaServerPages
JavaServerFaces
EnterpriseJavaBeans
Java MessageService
J2EEConnector Architecture
3. 管理技術(ManagementTechnologies)
J2EEDeployment Specification
J2EEManagement Specification
J2EE ClientProvisioning
JavaAuthorization Contract for Containers
4. 其餘相關技術(OtherJ2EE Technologies)
JDBC
Java DataObjects (JDO)
CORBA (JavaIDL and Java RMI-IIOP)
JavaMail
Transactions
如此之多的技術不免使初學者無所適從,望而卻步。即便是一位經驗豐富的J2EE開發者,又有幾我的敢說J2EE相關的技術我都熟練掌握了。不過做爲一名普 通J2EE應用程序的開發者來講,咱們只須要重點學習其中的一部分技術就能夠了,對於其餘部分只要作到心中有數,哪天須要用到了知道跑哪裏去找到資料就好了。以我我的的觀點,下面這些技術是通常J2EE應用開發人員所必須熟練掌握的。Java Server Page,Java Servlet,Enterprise JavaBean,JDBC,Transactions。還有JAXP等XML相關技術,Java Message Service,Java Mail,JDO等等是最好應該掌握的。其餘Management Technologies,Connector Architecture等等主要是給容器提供商中間件提供商參考的,應用開發者不須要怎麼關心,等用到了再去學習也不遲。
語言學習篇
首先是J2SE基礎。學習一門新技術,無外乎閱讀和實踐了。而一本好的參考書對於初學者來講顯得格外重要。如今市面上的 Java書籍能夠說是鋪天蓋地,質量也是參差不齊,令初學者無所適從。因此仍是先推薦幾本書籍吧。目前對於Java基礎知識,你們通常都比較推薦兩本 書,$amp;amp;$gt;和$amp;amp;$gt;。第一本書沒必要多說了,BruceEckel的大做,Jolt獲獎書籍。內容比較全面,基本涵蓋了java語言的方方面面。這本書提供了至關豐富的例子,很是有利於對學習內容的瞭解。另外 書中第一部分對於OO基本書籍的介紹,我以爲對於剛接觸OO的人來講幫助會很大。並且此書是OpenSource的,能夠從做者網上下載[url][/url]而對於習慣於讀中文版的學習者來講,侯捷翻譯 的中文版是不錯的選擇。要說這本說的缺點可能就是對於初學者來講厚了一點,這也是一些人並不推薦此書做爲初學者學習用書的緣由吧。後面一本$amp;amp;$gt;,目前已是第七版了,單從它出版的次數來看也能夠看出此書受歡迎的程度,這本書特色也是講述比較全面系統,基 本上一路啃下來的話Java語言基礎應該算過關了。缺點也是太厚了,有點像參考手冊,前面部分花了很多篇幅講Swing和Applet,可能對初學者不是 頗有用。還有一些像$amp;amp;$gt;也是比較不錯的基礎書籍。
學習了基本的語言基礎,別忘了最重要也是最有用的資料仍是JDK文檔。從你學習java的第一天開始JDK文檔應該是常備手頭了。若是你碰到問題首先想到 的是到論壇上去提問而不是查閱Jdk文檔,那先別繼續往下學習了,學會查JDK文檔先。不誇張的說在咱們的初學者論壇中60%的問題是光查一下JDK文檔 就能解決問題的。最新JDK Documentation下載地址[url][/url](目前最新版是 J2SE5 [url][/url])不能光說不練,同一下載頁面把JDK給下載回來。安裝完後有 一點我想提一下,安裝路徑下有一個src.zip(有些jdk版本是src.jar),好東西啊---JDK源代碼,總是有人在論壇上問哪裏有JDK源代 碼下載,你說東西就放在你家裏還處處找。有了這個有些問題就須要在論壇上跟人家爭來爭去了,翻開源代碼瞧一下什麼疑問都沒有了。幾個最重要的命令行工具是
javac: 編譯源文件到class文件
java: 運行class
jar: 打包工具。
javadoc: 生成java doc的工具。
對於初學java的人來講,我不推薦使用IDE而直接用文本編輯器而後用命令行編譯運行。這樣有利於理解CLASSPATH,PATH這些最基本概念。 CLASSPATH是初學者比較容易感受迷惑的地方。如今的IDE太聰明瞭,給個名字就給你自動生成java source code,自動編譯。可能你運行完了你的第一個Hello World程序,還不知道java和javac是用來作什麼的。至於實際的項目開發,一款合適的IDE仍是十分重要的,咱們稍後再對java開發工具作一 些介紹。
J2EE基礎和Java語言進階
學習完語言基礎,就能夠比較天然地轉入J2EE實際技術的學習了。J2EE實在是比較龐雜,而EJB,Servlet,這些核心技術是做爲每個J2EE 開發人員所須要掌握的。關於servlet,我比較推薦$amp;amp;$gt;和$amp;amp;$gt;,第一本是Sun推薦的Servlet教材。第二本是當年Amazon最暢銷Java書籍,五星級書籍。這本書機械工業出版社 有中文版叫$amp;amp;$gt;,感受翻譯得還能夠,第二版好像尚未看到有中文版。兩本書都全面系統地介紹了JSP和Sevlet知識,從web服務 器配置,JSP,Servlet基本編程,標記庫(Tag Lib),過濾器,事件框架都有很好地描述。提供地例子也比較實用。對於EJB學習,比較著名有兩本書,$amp;amp;$gt;和$amp;amp;$gt;,兩位做者Richard Monson,Ed Roman都是屬於業界重量級人物。而Richard Monson自己就是EJB規範專家組成員。對我來講,兩本書難分優劣,第二本書有個好處就是能夠免費下載[url][/url]。
仍是那句話,不能光說不練,不過J2EE的練習作起來有一點麻煩,應用服務器是不可少的,最好還得準備個輕量級的數據庫。下面簡單介紹一下這些工具。
web服務器(ServletContainer)方面有。
Tomcat: [url][/url]
Jetty: [url][/url]
應用服務器經常使用的有,
Jboss: [url][/url]
Weblogic: [url] CNT=index.htm&FP=/content/products/server[/url]
WebSphere: [url];S_CMP=DLMAIN[/url]。
Tomcat,Jetty,Jboss都是Open Source。Weblogic和WebSphere是J2EE服務器中的老大級人物,價格也不菲。不過對於開發者有免費的試用版下載。
若是單單只是學習Servlet,推薦使用Tomcat,它是Sun官方指定的Servlet,JSP規範的參考實現。對初學者最重要的是它使用比較簡單,自帶文檔比較齊全,使用者衆多,有什麼問題容易在論壇上面獲得幫助。若是學習EJB的話,推薦使用Jboss,不只僅是由於它是Open Source的,主要是配置比較簡單,使用方便。好比說對於鏈接數據庫,對於經常使用的MySQL,Oracle,MS SQL等等都提供了Sample Config文件,直接拿過來作些小改動扔到Deploy目錄下就能夠用DataSource了,部署J2EE應用也簡單,把整個.ear或者.war扔到deploy下就能夠了。惟一不方便的地方是從Jboss3.0開始,它的文檔開始收費了。可是對於一些基本的配置,在網上仍是很是容易找到的,畢竟它 太流行了。至於Weblogic,也比較容易使用,不過比起Jboss來個頭大了不少,經過強大的管理界面使得一些經常使用的配置工做變得十分簡單。和Jboss比起來它的文檔就太多了,簡直是有點羅裏八嗦,好比要部署一個.ear文件,通常咱們也就是直接扔到domain下的applications 目錄下就會自動deploy了,可是要看它的文檔但是長篇大論,容易嚇着初學者,覺得這又是什麼高深的學問。至於WebSphere,我的不推薦初學者使 用,相比前倆個Server比較難使,並且狂吃內存。不過在企業級市場這個傢伙表現不俗,畢竟是出生於IBM這樣的豪門。
數據庫方面,目前常見的主要有PostgreSQL,MySQL,Oracle,MS SQL,DB2等等。前面兩個是開源數據庫,後面幾個基本上壟斷着大部分的數據庫市場。對於初學者用來作作EJB,JDBC的練習,我推薦MySQL,理由仍是很簡單,開源軟件不要錢,個頭小使用方面,用戶衆多文檔齊全。下載地址[url][/url]/。PostgreSQL也能夠考慮,不過國內使用者遠不如MySQL多,因此要在論壇上問起問題來就少方便一些了,下載地址。至於後面那些比較重量級的數據庫,爲了作作練習而言就不用考慮了,咱也花不起這個錢啊。
學習完J2EE的這些具體技術,這個時候進行基本的J2EE開發應該是不成問題了。此時應該考慮提升本身的代碼質量了。這裏我強烈推薦Martin Fowler的$amp;amp;$gt;,這本書不是一本很是實際的書,做者徹底是手把手地教你如何提升代碼質量,從具體地代碼中告訴你什麼是代碼的Bad Smell,如何去掉這些Bad Smell。很多書評是這麼說的,這本書對於初級,中級的讀者幫助是立杆見影的。至少就我接觸到的幾個學習編程不久的程序員,編碼質量在短時間內都有很大提升。固然重構(Refactoring)這一律念並不僅針對Java語言的,它對全部OO語言都是適用的。重構的概念是如此深刻人心,以致於今天幾乎全部 流行的IDE工具都有對重構的支持。這裏我還想再推薦一本$amp;amp;$gt;。從C++過來的程序員都知道$amp;amp;$gt;在C++領域的地位,至今還流傳着這樣的趣話,C++程序員分爲兩種,一種是讀過$amp;amp;$gt;的,另外一種是沒有讀過C++的。雖然這本$amp;amp;$gt;在Java領域的影響也許沒有那麼大,但對於Java程序員絕對有至關的指導價值。做者是Sun公司的JoshuaBloch,javaCollection framework的設計者。做者站在JDK設計者的角度向你介紹他的BestPractice,應該這樣作而不該該那樣作,對於JDK中某些API設計的缺陷他也絕不袒護的指出。Java語言之父James Gosling爲此書寫的前言是這麼說的「I sure wish I had hadthis book ten years ago。 Some might think that I don\'t need any Java books, but I need this one」。這本書會讓你以爲原來你對Java仍是有不少東西不瞭解的。舉個例子來講,對象的equals方法,咱們認爲它很簡單,也許你天天都在爲你新寫 的Class重載這個方法,可是你在重載的時候注意過「自反」,「對稱」,「傳遞」這些必需要考慮的因素,你是否同時還當心謹慎的重載了hashcode 這個方法?若是沒有,建議你要讀一下這本書。讀完這本書,你會以爲離Java的距離更近了。上面兩本書都出過中文版,後面一本$amp;amp;$gt;還有兩個版本的中文版,第一次翻譯的比較差一點,後來機械工業出版社又委託潘愛民先生從新翻譯了一遍。同一本書在同一個出版社連續被翻譯了兩次也說明國內出版界對這本書仍是比較重視的。
這個階段,在看書的同時,能夠結合着學習一些優秀的開源項目的源代碼。這些開源項目的代碼風格,註釋都是值得借鑑的。實在太懶也別忘了手頭上還有個Jdk 的源代碼。其實也不用刻意去找源代碼,在實際的J2EE項目開發中,基本上都會用到一些優秀的開源項目。Framework可能會用到 Spring,Struts,Log機制基本上都會JarkartaCommons Log或者Log4j,單元測試會大多會用Junit,結合項目閱讀一下其中的一些源代碼,既能夠提升本身又對項目會有所幫助,說不定所以而獲得PM的賞 識呢。一箭雙鵰,何樂而不爲呢。呵呵,有點扯遠了。過了初學者階段,該學會如何找到適合本身的Java書籍了。歷經數十載,今天的Java技術已經變的如 此之龐雜,我相信即便窮淨一我的畢生之精力也不可能把Java全部的相關技術都學通,況且新技術還在層出不窮地推出,3年以前誰會知道Struts會成爲 Web框架事實上的工業標準。2年以前誰會知道Hibernate會在今天獨領風騷。既然已經不能期望一次性把java技術的方方面面都學個通,在實際中 也只能是須要什麼技術再學習什麼技術了。而可否選擇一本好的參考書籍帶來的就是事半功倍和事倍工半的效果。因此我以爲花點時間放在選擇書籍上面仍是很值得的,不然你在後面只會花更多的時間。下面我談談本身選擇書籍的一些經驗,不必定正確。首先看做者,像上面提到的那些書的做者,都是業界鼎鼎大名的,選擇他們的書通常錯不了。你們看的書多了,本身胸中天然也會有一個list,哪些做者是信得過的。二看出版社,計算機書籍方 面,Oreilly,Addison-Wesley都是公認比較好的出版社。對於目前比較流行的Java技術,Oreilly的$amp;amp;$gt;系列是不錯的選擇。另外我還會去看看Amazon網站([url][/url])的書評,一 般小於3星級的書我都不會考慮。還有一個好去處theserverside,[url][/url]的書評,這裏的 書評比較有趣,每每都有很激烈的爭論,裏面常常會看到一些名人在發言。我要向全部Java學習者推薦,若是個人收藏夾裏面只能存放兩個網站,我會選擇 java.sun和theserverside。在這裏你能夠了解最新的Java動態,能夠學習第一手的Java資料,能夠看到Java高手們(裏面不乏業界大腕)激烈辯論。
到此階段,Java Developer的基本功底應該算是打好了吧,日後就是不斷學習嘍。結束這一段以前,最後再介紹一本書Oreilly的$amp;amp;$gt;,由於我以爲多線程編程屬於Java基本功,每個想學好Java的人都應該好好掌握。
提升篇
在這個階段應該從軟件架構,Framework層次上來學習了。做爲面向對象的聖經$amp;amp;$gt;, 這本書是不得不推薦的。不用再多說了,這本在面向對象領域地位徹底是屬於教父級別的。無論你學習的是什麼OO語言,無論你如今是用.Net仍是J2EE開發,這本書都是你進階之路上的必讀之書。而$amp;amp;$gt;則專門針對於J2EE來討論設計模式,書中Sun Java Center的資深設計師描述了J2EE關鍵技術的模式。最佳實踐,設計策略和通過驗證的解決方案。對於每個但願成爲J2EE 架構師或者設計師,這本書值得一讀。學習設計模式的時候,建議是結合實際的源代碼來看,好比看看Junit源代碼,你能夠看到不少設計模式優雅的實現,做者之一Erich Gamma自己就是$amp;amp;$gt;的做者。至於J2EE的設計模式,Sun還開闢了專門的空間[url][/url]/blueprints/patterns/,裏面有對經常使用模式的討論又提供了詳細的源代碼樣例。正如Grady Booch所說,模式對於廣泛問題提供了通用的解決方案,利用模式就等於擁有一個強大的專家隊伍。若是你尚未學習,如今就開始吧。此外對於面向對象方法論,極限編程的思想也應該有所瞭解[url][/url]。對於J2EE項目的具體實施,Rod Johnson的$amp;amp;$gt;也頗有價值,該書以做者豐富的實戰經驗向咱們展現如何用盡量簡單的解決方案構建J2EE 應用,書中做者第一次提出這樣的觀點,不少時候,J2EE應用徹底沒有必要用到EJB,對於言必稱EJB的廣大J2EE開發者來講,怎麼說也有點驚世咳俗 的味道。固然,做爲Servlet和JDO兩個專家組的成員,這可不是做者信口胡騶的。今天風靡Java世界的Spring框架最初即是源於此書,而 IOC,AOP等概念更是被時下的java開發者掛在嘴邊。最後,做爲對Java的深刻學習,Java技術的各個Specification也有必要一 讀。暫時就寫到這裏吧。
看完上面這篇文章,稍微總結一下學習java的各個階段:
第一個階段:基礎語言學習階段,推薦閱讀《Thinking in Java》
第二個階段:等對java的基本類庫有所瞭解後,再開始轉戰J2EE的學習,這個階段上面也推薦了好多書。
第三個階段:開始閱讀開放源代碼,提升代碼質量。
第四個階段:想要學好java,那麼就要時刻注意java最近的發展近況,由於這門語言發展太快了,《我要向全部Java學習者推薦,若是個人收藏夾裏面只能存放兩個網站,我會選擇java.sun和theserverside。在這裏你能夠了解最新的Java動態,能夠學習第一手的Java資料,能夠看到Java高手們(裏面不乏業界大腕)激烈辯論。》這一段內容,我特別有感觸,這讓英語很差的我頗有壓力啊。