很多網友問我學習 Java 有沒有什麼捷徑,我說“無他,唯手熟爾”。但是我卻很願意將自己學習的一些經驗寫出來,以便後來者少走彎路,協助別人是最大的快樂嘛!
要想學好 Java ,首先要知道 Java 的大致分類。我們知道,自從 Sun 推出 Java 以來,就力圖使之無所不包,所以 Java 發展到現在,按應用來分主要分為三大塊: J2SE , J2ME 和 J2EE ,這也就是 Sun ONE(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 學起。如果你學過 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 了。
好了,對 Java 和 J2EE 有了一些基本概念之後,你就應該編一些程式了,千萬不要紙上談兵哦。最好找一些有執行個體且帶光碟片的書來看,這樣看到好的程式就可以直接 Ctrl+C 再 Ctrl+V ,也不用勞您老大架再親自把它再輸一遍吧,再說直接複製還不用怕出錯,何樂而不為呢!還有就是要經常上一些好的 Java 編程文章,有好的文章要 Cut 下來,有問題儘管問,只要問題不是太傻,一般高手都會回答你的。下面介紹幾個好的 Java 方面的編程網站:
? CSDN 論壇 http://www.csdn.net/ ;中國最有名的技術論壇,《程式員》雜誌就是他們出版的,你可以在上面提出問題,馬上就有人回答你,如果你覺得好,你可以給那人加分;
? Java 研究組織 http://www.javaresearch.org/ ;上面有很多原創文章,高手還是挺多的;
? Java 開發人員 http://www.chinajavaworld.com/ ;那裡 Java 資料比較全;
? java.com.cn http://www.java.com.cn/ ;看這網域名稱就知道有多牛,註冊使用者快接近一萬了,同時線上人數也在一千左右,人氣很旺的;
? IBM 的開發人員網路 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM ;永遠的藍色巨人;
那麼我書也看了,程式也做了,別人問我的問題我都能解決了,是不是就成為高手了呢?當然沒那麼簡單,這隻是萬裡長征走完了第一步。不信?那你出去接一個項目,你知道怎麼下手嗎,你知道怎麼設計嗎,你知道怎麼組織人員進行開發嗎?你現在腦子裡除了一些散亂的代碼之外,可能再沒有別的東西了吧!你現在最缺的是實際的工作經驗,而不是書本上那些憑空想出來的程式。所以你快去找一份 Java 的編程工作來做吧(如果是在校學生可以去做兼職啊),在實踐中提高自己,那才是最快的。不過你得祈禱在公司裡碰到一個高手,而且他還願意不厭其煩地教你,這樣好象有點難哦!
還有一個辦法就是讀開放源碼的程式了。我們知道開放源碼大都出自高手,他們設計合理,考慮周到,再加上有廣大的程式員參與,代碼的價值自然是字字珠嘰,鏗鏘有力(對不起,偶最近《金裝四大才子》看多了)。學 Java 必讀的兩個開來源程式就是 Jive 和 Pet Store. 。 Jive 是國外一個非常著名的 BBS 程式,完全開放源碼。論壇的設計採用了很多先進的技術,如 Cache 、使用者認證、 Filter 、 XML 等,而且論壇完全屏蔽了對資料庫的訪問,可以很輕易的在不同資料庫中移植。論壇還有方便的安裝和管理程式,這是我們平時編程時容易忽略的一部份(中國程式員一般只注重編程的技術含量,卻完全不考慮使用者的感受,這就是我們與國外軟體的差距所在)。 Jive 的資料在很多網站上都有,大家可以找來研究一下。相信你讀完代碼後,會有脫胎換骨的感覺。遺憾的是 Jive 從 2.5 以後就不再無條件的開放原始碼,同時有 licence 限制。不過幸好還有中國一流的 Java 程式員關注它,外國人不開源了,中國人就不能開源嗎?這裡向大家推薦一個漢化的 Jive 版本? J 道。 Jive(J 道版 ) 是由中國 Java 界大名鼎鼎的 banq 在 Jive 2.1 版本基礎上改編而成, 全中文,增加了一些實用功能,如貼圖,帳戶圖片和使用者資料查詢等,而且有一個Team Dev在不斷升級。你可以訪問 banq 的網站 http://www.jdon.com/ ;去下載,或到同濟技術論壇的伺服器上 ftp://nro.shtdu.edu.cn 去下,安裝上有什麼問題,可以到論壇上去提問。 Pet Store. (寵物店)是 SUN 公司為了示範其 J2EE 編程規範而推出的開放源碼的程式,應該很具有權威性,想學 J2EE 和 EJB 的朋友不要錯過了。
你一定會高興地說,哈哈,原來成為 Java 高手就這麼簡單啊 ! 記得 Tomjava 也曾碰到過一個專案經理,號稱 Java 很簡單,只要三個月就可以學會。其實說這種話的人就如當年小日本號稱“三個月拿下中國”一樣大言不慚。不是 Tomjava 潑你冷水,你現在只是學到了 Java 的骨架,卻還沒有學到 Java 的精髓。接下來你得研究設計模式了。設計模式是進階程式員真正掌握物件導向核心思想的必修課。設計模式並不是一種具體 " 技術 " ,它講述的是思想,它不僅僅展示了介面或抽象類別在實際案例中的靈活應用和智慧,讓你能夠真正掌握介面或抽象類別的應用,從而在原來的 Java 語言基礎上躍進一步,更重要的是,設計模式反覆向你強調一個宗旨:要讓你的程式儘可能的可重用。關於設計模式的資料,還是向大家推薦 banq 的網站 http://www.jdon.com/ ;,他把 GOF 的 23 種模式以通俗易懂的方式詮釋出來,純 Java 描述,真是經典中的經典。有時間再研究一下 MVC 結構(把 Model-View-Control 分離開的設計思想)吧,現在很流行的 Structs 就是它的一種實現方式,不過 Structs 用起來實在是很繁,我們只要學習其精髓即可,我們完全可以設計自己的 MVC 結構。然後你再研究一下軟體 Refactoring( 重整 ) 和極限 XP 編程,相信你又會上一個台階。
做完這些,你不如整理一下你的 Java 代碼,把那些經典的程式和常見的應用整理出來,再精心打造一番,提高其重用性和可擴充性。你再找幾個志同道合的朋友成立一個工作室吧,你可以去承接一些項目做了,一開始可能有些困難,可是你有技術積累,又考慮周全,接下項目來可以迅速作完,相信大家以後都會來找你的,所以 Money 就嘩啦啦的來了…。
當然你也可以參加一些開源項目,一方面可以提高自己,另一方面也是為中國軟體事業做貢獻嘛!開發人員在互連網上用 CVS 合作開發,用 QQ , MSN , E-mail 討論聯絡,天南海北的程式員分散在各地卻同時開發同一個軟體,是不是很有意思呢?
下面介紹兩個好的開源專案網站:
湖北省軟體公用開發平台 http://gro.clinux.org/
共創聯盟 http://cosoft.org.cn/ ;
哇,好高興哦,我終於成為高手了!非也,非也。古人云:“識時務者為俊傑”。你知道電腦界現在的發展形勢嗎?你知道微軟的 .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 技術聯盟 http://www.uddi-china.org/ ;
CSDN 的柴曉路專欄 http://www.csdn.net/develop/author/ColumnAuthor/fennivel/ ;(註:柴曉路也是互連網上一個有名的人物,他發表過很多關於 Web 服務的文章,還出了一書,應該稱的上是中國 Web 服務技術的先行者)
IBM 的開發人員網路的 XML&Web Service 專欄: http://www-900.ibm.com/developerWorks/cn/xml/index.sht ;