Java學習從入門到精通(3)(轉)

ba發表於2007-08-15
Java學習從入門到精通(3)(轉)[@more@]第七步,J2EE程式設計

以上的學習過程如果是比較順利的話,進行到這一步,難度又陡然提高。因為上面的知識內容都是隻涉及一個方面,而像EJB,JMS,JTA等核心的J2EE規範往往是幾種Java技術的綜合運用的結晶,所以掌握起來難度比較大。

首先一定要學習好JNDI,JNDI是App Server定位伺服器資源(EJB元件,Datasouce,JMS)查詢方法,如果對JNDI不熟悉的話,EJB,JMS這些東西幾乎學不下去。 JNDI其實就是javax.naming.*這個包,運用起來很簡單。難點在於伺服器資原始檔的配置。對於伺服器資原始檔的配置,就需要看看專門的文件規範了,比如web.xml的寫法,ejb-jar.xml的寫法等等。針對每種不同的App Server,還有自己的服務資源配置檔案,也是需要熟悉的。

然後可以學習JTA,主要是要理解JTA對於事務的控制的方法,以及該在什麼場合使用JTA。這裡可以簡單的舉個例子,我們知道一般情況可以對於一個資料庫連線進行事務控制(conn.setAutoCommit(false),....,conn.commit()),做為一個原子操作,但是假設我的業務需求是要把對兩個不同資料庫的操作做為一個原子操作,你能做的到嗎?這時候只能用JTA了。假設操作過程是先往A資料庫插一條記錄,然後刪除B 資料庫另一個記錄,我們自己寫程式碼是控制不了把整個操作做為一個原子操作的。用J他的話,由App Server來完成控制。

在學習EJB之前要學習物件序列化和RMI,RMI是EJB的基礎。接著學習JMS和EJB,對於EJB來說,最關鍵是要理解EJB是如何透過RMI來實現對遠端物件的呼叫的,以及在什麼情況下要用到EJB。

在學習完EJB,JMS這些東西之後,你可能會意識到要急不可待學習兩個領域的知識,一個是UML,另一個是Design Pattern。Java企業軟體的設計非常重視框架(Framework)的設計,一個好的軟體框架是軟體開發成功的必要條件。在這個時候,應該開始把學習的重點放在設計模式和框架的學習上,透過學習和實際的程式設計經驗來掌握EJB的設計模式和J2EE的核心模式。

J2EE規範裡面,除了EJB,JMS,JTA,Servlet/JSP,JDBC之外還有很多很多的企業技術,這裡不一一進行介紹了。

另外還有一個最新領域Web Services。Web Services也完全沒有任何新東西,它像是一種黏合劑,可以把不同的服務統一起來提供一個統一的呼叫介面,作為使用者來說,我只要獲得服務提供者給我的WSDL(對服務的描述),就夠了,我完全不知道伺服器提供者提供的服務究竟是EJB元件,還是.Net元件,還是什麼CORBA元件,還是其他的什麼實現,我也不需要知道。Web Services最偉大的地方就在於透過統一的服務提供方式和呼叫方式,實現了整個Internet服務的共享,是一個非常令人激動的技術領域。Web Services好像目前還沒有什麼很好的書籍,但是可以透過在網路上面查資料的方式來學習。
Java Learning Path(四) 方法篇

Java作為一門程式語言,最好的學習方法就是寫程式碼。當你學習一個類以後,你就可以自己寫個簡單的例子程式來執行一下,看看有什麼結果,然後再多呼叫幾個類的方法,看看執行結果,這樣非常直觀的把類給學會了,而且記憶非常深刻。然後不應該滿足把程式碼調通,你應該想想看如果我不這樣寫,換個方式,再試試行不行。記得哪個高人說過學習程式設計就是個破壞的過程,把書上的例子,自己學習Documentation編寫的例子在執行透過以後,不斷的嘗試著用不同的方法實現,不斷的嘗試破壞程式碼的結構,看看它會有什麼結果。透過這樣的方式,你會很徹底的很精通的掌握Java。

舉個例子,我們都編過Hello World

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}

很多初學者不是很理解為什麼main方法一定要這樣來定義public static void main(String[] args),能不能不這樣寫?包括我剛學習Java的時候也有這樣的疑問。想知道答案嗎?很簡單,你把main改個名字執行一下,看看報什麼錯誤,然後根據出錯資訊進行分析;把main的public取掉,在試試看,報什麼錯誤;static去掉還能不能執行;不知道main方法是否一定要傳一個 String[]陣列的,把String[]改掉,改成int[],或者String試試看;不知道是否必須寫args引數名稱的,也可以把args改成別的名字,看看執行結果如何。

我當初學習Java的時候就是這樣做的,把Hello World程式反覆改了七八次,不斷執行,分析執行結果,最後就徹底明白為什麼了main方法是這樣定義的了。

此外,我對於staic,public,private,Exception,try{ }catch {}finally{}等等等等一開始都不是很懂,都是把參考書上面的例子執行成功,然後就開始破壞它,不斷的根據自己心裡面的疑問來重新改寫程式,看看能不能執行,執行出來是個什麼樣子,是否可以得到預期的結果。這樣雖然比較費時間,不過一個例子程式這樣反覆破壞幾次之後。我就對這個相關的知識徹底學通了。有時候甚至故意寫一些錯誤的程式碼來執行,看看能否得到預期的執行錯誤。這樣對於程式設計的掌握是及其深刻的。

其中特別值得一提的是JDK有一個非常棒的除錯功能,-verbose

java ?Cverbose

javac ?Cverbose 以及其它很多JDK工具都有這個選項

-verbose 可以顯示在命令執行的過程中,JVM都依次載入哪裡Class,透過這些寶貴的除錯資訊,可以幫助我們分析出JVM在執行的過程中都幹了些什麼。

另外,自己在學習過程中,寫的很多的這種破壞例程,應該有意識的分門別類的儲存下來,在工作中積累的典型例程也應該定期整理,日積月累,自己就有了一個程式碼庫了。遇到類似的問題,到程式碼庫裡面 Copy & Paste ,Search & Replace,就好了,極大提高了開發速度。最理想的情況是把一些通用的例程自己再抽象一層,形成一個通用的類庫,封裝好。那麼可複用性就更強了。

所以我覺得其實不是特別需要例程的,自己寫的破壞例程就是最好的例子,如果你實在對自己寫的程式碼不放心的話,我強烈推薦你看看JDK基礎類庫的 Java原始碼。在JDK安裝目錄下面會有一個src.zip,解開來就可以完整的看到整個JDK基礎類庫,也就是rt.jar的Java原始碼,你可以參考一下Sun是怎麼寫Java程式的,規範是什麼樣子的。我自己在學習Java的類庫的時候,當有些地方理解的不是很清楚的時候,或者想更加清晰的理解運作的細節的時候,往往會開啟相應的類的原始碼,透過看原始碼,所有的問題都會一掃而空。

Java Learning Path(五)資源篇

1、 (英文)

Sun的Java網站,是一個應該經常去看的地方。不用多說。

2、http://www-900.ibm.com/developerWorks/cn/

IBM的developerWorks網站,英語好的直接去英文主站點看。這裡不但是一個極好的物件導向的分析設計網站,也是Web Services,Java,Linux極好的網站。強烈推薦!!!

3、 (英文)

關於Java很多新技術的討論和新聞。想多瞭解Java的方方面面的應用,這裡比較好。

4、http://dev2dev.bea.com.cn/index.jsp

BEA的開發者園地,BEA作為最重要的App Server廠商,有很多獨到的技術,在Weblogic上做開發的朋友不容錯過。

5、

灰狐動力網站,一個專業的中介軟體網站,雖然不是專業的Java網站,但是在J2EE企業應用技術方面有深厚的造詣。

6、 (英文)

The Server Side?是一個著名的專門面向Java Server端應用的網站。

7、

Java研究組織,有很多優秀的Java方面的文章和教程,特別是在JDO方面的文章比較豐富。

8、

JSP技術網站,有相當多的Java方面的文章和資源。

9、

Jdon論壇,是一個個人性質的中文J2EE專業技術論壇,在眾多的Java的中文論壇中,Jdon一個是技術含量非常高,帖子質量非常好的論壇。

10、

Sourge Forge?是一個開放原始碼軟體的大本營,其中也有非常非常豐富的Java的開放原始碼的著名的軟體。

11、
很多關於JAVA教學的文章,值得一看。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958231/,如需轉載,請註明出處,否則將追究法律責任。

相關文章