java學習流程(轉載)

 
近論壇上看到好幾個朋友都在問,如何學習 Java的問題,我已經學習了J2SE,怎麼樣才能轉向J2EE?”, “我看完了Thinking in Java, 可以學習J2EE了麼?”.於是就有了寫這篇文章的想法,希望能幫助初學者少走一些彎路。也算是對自己幾年來學習Java的一個總結吧.

  
在開始之前有必要再討論一下J2ME, J2SE, J2EE這些概念。J2SE, The Micro Edition 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級別上的劃分,實際上SunJ2EE的定義是:開發基於組件的多層的企業級應用的規範。也就是爲各種不同的技術定義一個Java的規範,使這些不同的技術結合起來,在Java平臺上構建強壯的企業級應用。從這一點來看,J2EE這個概念應該是涵蓋J2ME, J2SE的。比如一個典型的J2EE應用,網上商店, 它支持web 方式下訂單,也支持手機下訂單。顯然必須用到J2SE,J2ME. 所以也就不存在所謂的從J2SE轉向J2EE的問題了,只是後者包含的範圍更廣而已。


來看看Sun給出的J2EE 相關技術主要分爲幾大塊。
1. Web Service
技術
-  Java API for XML Processing (JAXP) 
-  Java API for XML Registries (JAXR) 
-  Java API for XML-based RPC (JAX-RPC) 
-    SOAP with Attachments API for Java (SAAJ)

2. 
組件模型技術(Component Model Technologies
-  Java Servlet 
-  JavaServer Pages 
-  JavaServer Faces 
-  Enterprise JavaBeans 
-  Java Message Service 
-    J2EE Connector Architecture

3 .
管理技術(Management Technologies)
-  J2EE Deployment Specification 
-  J2EE Management Specification 
-  J2EE Client Provisioning 
-    Java Authorization Contract for Containers

4.
其他相關技術(Other J2EE Technologies)
-  JDBC 
-  Java Data Objects (JDO) 
-  CORBA (Java IDL and Java RMI-IIOP) 
-  JavaMail 
-  Transactions
   
如此之多的技術難免使初學者無所適從,望而卻步。即使是一位經驗豐富的J2EE 開發者,又有幾個人敢說J2EE相關的技術我都熟練掌握了。不過作爲一名普通J2EE應用程序的開發者來說,我們只需要重點學習其中的一部分技術就可以了,對於其他部分只要做到心中有數,哪天需要用到了知道跑哪裏去找到資料就行了。以我個人的觀點,下面這些技術是一般J2EE應用開發人員所必須熟練掌握的。Java Server Page, Java Servlet, Enterprise JavaBean, JDBC, Transactions.  還有JAXPXML相關技術,Java Message Service, Java Mail, JDO等等是最好應該掌握的。其他Management TechnologiesConnector Architecture等等主要是給容器提供商中間件提供商參考的,應用開發者不需要怎麼關心,等用到了再去學習也不遲.

語言學習篇

  
首先是J2SE基礎.學習一門新技術,無外乎閱讀和實踐了而一本好的參考書對於初學者來說顯得格外重要現在市面上的 Java書籍可以說是鋪天蓋地質量也是良莠不齊令初學者無所適從所以還是先推薦幾本書籍吧目前對於 Java基礎知識,大家一般都比較推薦兩本書, <<Thinking In Java>>  << Core Java(TM) 2, Volume I?Fundamentals >>.  第一本書不必多說了, Bruce Eckel 的大作, Jolt獲獎書籍內容比較全面基本涵蓋了java語言的方方面面這本書提供了相當豐富的例子非常有利於對學習內容的瞭解另外書中第一部分對於OO基本書籍的介紹我覺得對於剛接觸OO的人來說幫助會很大而且此書是Open Source可以從作者網上下載http://www.mindview.net/Books/TIJ/而對於習慣於讀中文版的學習者來說侯捷翻譯的中文版是不錯的選擇.  要說這本說的缺點可能就是對於初學者來說厚了一點這也是一些人並不推薦此書作爲初學者學習用書的原因吧後面一本<<Core Java(TM) 2, Volume I?Fundamentals>>, 目前已經是第七版了單從它出版的次數來看也可以看出此書受歡迎的程度這本書特點也是講述比較全面系統基本上一路啃下來的話Java語言基礎應該算過關了缺點也是太厚了有點像參考手冊前面部分花了不少篇幅講  SwingApplet,可能對初學者不是很有用.  還有一些像<< Java in a nutshell>>也是比較不錯的基礎書籍.
學習了基本的語言基礎,別忘了最重要也是最有用的資料還是JDK文檔從你學習java的第一天開始JDK文檔應該是常備手頭了如果你碰到問題首先想到的是到論壇上去提問而不是查閱Jdk文檔那先別繼續往下學習了,學會查JDK文檔先不誇張的說在我們的初學者論壇中60%的問題是光查一下JDK文檔就能解決問題的最新JDK Documentation下載地址http://java.sun.com/j2se/1.4.2/download.html(目前最新版是J2SE5 http://java.sun.com/j2se/1.5.0/download.jsp)不能光說不練同一下載頁面把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,  我比較推薦<<Core Servlet and JSP 2Edition>><<More Servlets and Java Server Pages>>, 第一本是Sun推薦的Servlet教材第二本是當年Amazon最暢銷Java書籍五星級書籍這本書機械工業出版社有中文版叫<<Servlet JSP權威指南>>,感覺翻譯得還可以第二版好像還沒有看到有中文版兩本書都全面系統地介紹了JSPSevlet知識web服務器配置, JSP, Servlet基本編程標記庫(Tag Lib), 過濾器事件框架都有很好地描述提供地例子也比較實用對於EJB學習比較著名有兩本書, << Enterprise JavaBeans, 3nd Edition>> << Mastering Enterprise Java Beans Third Edition>>, 兩位作者Richard Monson, Ed Roman都是屬於業界重量級人物.Richard Monson本身就是EJB規範專家組成員.對我來說兩本書難分優劣第二本書有個好處就是可以免費下載http://www.theserverside.com/books/wiley/masteringEJB/index.tss.
還是那句話,不能光說不練不過J2EE 的練習做起來有一點麻煩應用服務器是不可少的最好還得準備個輕量級的數據庫下面簡單介紹一下這些工具
web
服務器(Servlet Container)方面有
.
Tomcat.   
http://jakarta.apache.org/tomcat/
Jetty:      http://jetty.mortbay.org/jetty/
應用服務器常用的有,
Jboss:        
http://www.jboss.org/products/index
Weblogic:   http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/server
WebSphere: http://www-128.ibm.com/developerworks/downloads/ws/was/?S_TACT=105AGX28&S_CMP=DLMAIN.
Tomcat, Jetty, Jboss
都是Open Source. Weblogic  WebSphereJ2EE服務器中的老大級人物價格也不菲不過對於開發者有免費的試用版下載.
如果單單只是學習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, 理由還是很簡單開源軟件不要錢個頭小使用方面用戶衆多文檔齊全下載地址http://www.mysql.com/products/mysql/.  PostgreSQL也可以考慮不過國內使用者遠不如MySQL所以要在論壇上問起問題來就少方便一些了下載地址http://www.pervasive-postgres.com/downloads/至於後面那些比較重量級的數據庫爲了做做練習而言就不用考慮了咱也花不起這個錢啊
.

學習完J2EE 的這些具體技術這個時候進行基本的 J2EE 開發應該是不成問題了此時應該考慮提高自己的代碼質量了這裏我強烈推薦Martin Fowler<<Refactoring: Improving the Design of Existing Code >>, 這本書不是一本非常實際的書作者完全是手把手地教你如何提高代碼質量從具體地代碼中告訴你什麼是代碼的Bad Smell, 如何去掉這些Bad Smell. 不少書評是這麼說的這本書對於初級,中級的讀者幫助是立杆見影的.至少 就我接觸到的幾個學習編程不久的程序員編碼質量在短期內都有很大提高當然重構(Refactoring)這一概念並不只針對Java語言的它對所有OO語言都是適用的重構的概念是如此深入人心,以至於今天幾乎所有流行的 IDE工具都有對重構的支持這裏我還想再推薦一本<<Effective Java>> . C++ 過來的程序員都知道<<Effective C++>>C++領域的地位至今還流傳着這樣的趣話, C++程序員分爲兩種一種是讀過<<Effective C++>>另一種是沒有讀過C++雖然這本<<Effective Java>>Java領域的影響也許沒有那麼大但對於Java程序員絕對有相當的指導價值作者是Sun公司的Joshua Bloch,  java Collection framework 的設計者作者站在JDK設計者的角度向你介紹他的Best Practice, 應該這樣做而不應該那樣做對於JDK中某些API設計的缺陷他也毫不袒護的指出. Java語言之父James Gosling爲此書寫的前言是這麼說的” I sure wish I had had this 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的距離更近了上面兩本書都出過中文版後面一本<<Effective Java>>還有兩個版本的中文版第一次翻譯的比較差一點後來機械工業出版社 又委託潘愛民先生重新翻譯了一遍.同一本書在同一個出版社連續被翻譯了兩次也說明國內出版界對這本書還是比較重視的
.  
這個階段在看書的同時可以結合着學習一些優秀的開源項目的源代碼這些開源項目的代碼風格註釋都是值得借鑑的實在太懶也別忘了手頭上還有個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<<XXXX  in  Action>>系列是不錯的選擇另外我還會去看看Amazon網站(http://www.amazon.com/)的書評一般小於3星級的書我都不會考慮還有一個好去處theserverside,http://www.theserverside.com/的書評這裏的書評比較有趣,往往都有很激烈的爭論裏面經常會看到一些名人在發言.我要向所有Java 學習者推薦如果我的收藏夾裏面只能存放兩個網站,我會選擇java.sun theserverside. 在這裏你可以瞭解最新的Java動態可以學習第一手的Java資料可以看到Java高手們(裏面不乏業界大腕)激烈辯論

到此階段, Java Developer的基本功底應該算是打好了吧,往後就是不斷學習嘍結束這一段之前,最後再介紹一本書Oreilly <<Java Threads, Second Edition >>, 因爲我覺得多線程編程屬於 Java基本功每一個想學好Java的人都應該好好掌握




提高篇

在這個階段應該從軟件架構, Framework層次上來學習了作爲面向對象的聖經<<Design Patterns>>, 這本書是不得不推薦的不用再多說了這本在面向對象領域地位完全是屬於教父級別的.  不管你學習的是什麼OO語言不管你現在是用.Net還是J2EE開發這本書都是你進階之路上的必讀之書<<Core J2EE Patterns>>則專門針對於J2EE來討論設計模式書中Sun Java Center的資深設計師描述了J2EE關鍵技術的模式最佳實踐,設計策略和經過驗證的解決方案對於每一個希望成爲J2EE 架構師或者設計師這本書值得一讀學習設計模式的時候,建議是結合實際的源代碼來看比如看看Junit源代碼你可以看到很多設計模式優雅的實現作者之一Erich Gamma本身 就是<<Design Patterns>>的作者至於J2EE的設計模式, Sun還開闢了專門的空間http://java.sun.com/blueprints/patterns/,  裏面有對常用模式的討論又提供了詳細的源代碼樣例正如Grady Booch所說模式對於普遍問題提供了通用的解決方案利用模式就等於擁有一個強大的專家隊伍.  如果你還沒有學習現在就開始吧此外對於面向對象方法論極限編程的思想也應該有所瞭解http://www.extremeprogramming.org/ . 對於J2EE項目的具體實施, Rod Johnson<<Expert One-on-One J2EE Design and Development (Programmer to Programmer)>>也很有價值該書以作者豐富的實戰經驗向我們展示如何用儘可能簡單的解決方案構建J2EE 應用書中作者第一次提出這樣的觀點很多時候, J2EE應用完全沒有必要用到EJB, 對於言必稱EJB的廣大J2EE開發者來說怎麼說也有點驚世咳俗的味道當然作爲ServletJDO兩個專家組的成員這可不是作者信口胡騶的今天風靡Java世界的Spring 框架最初便是源於此書IOC, AOP等概念更是被時下的java開發者掛在嘴邊最後作爲對Java的深入學習, Java技術的各個Specification也有必要一讀暫時就寫到這裏吧
 
發佈了23 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章