Java學習路徑三步走

來源:互聯網
上載者:User
java學習路徑三篇

java學習路徑(一)工具篇

一、 jdk (java development kit)

  jdk是整個java的核心,包括了java運行環境(java runtime envirnment),一堆java工具和java基礎的類庫(rt.jar)。不論什麼java應用伺服器實質都是內建了某個版本的jdk。因此掌握jdk是學好java的第一步。最主流的jdk是sun公司發布的jdk,除了sun之外,還有很多公司和組織都開發了自己的jdk,例如ibm公司開發的jdk,bea公司的jrocket,還有gnu組織開發的jdk等等。其中ibm的jdk包含的jvm(java virtual machine)運行效率要比sun jdk包含的jvm高出許多。而專門運行在x86平台的jrocket在服務端運行效率也要比sun jdk好很多。但不管怎麼說,我們還是需要先把sun jdk掌握好。

  1、 jdk的下載和安裝

  jdk又叫做j2se(java2 sdk standard edition),可以從sun的java網站上下載到,http://java.sun.com/j2se/downloads.html ,jdk當前最新的版本是j2sdk1.4.2,建議下載該版本的jdk,下載頁面在這裡:http://java.sun.com/j2se/1.4.2/download.html。

  下載好的jdk是一個可執行安裝程式,預設安裝完畢後會在c:/program files/java/目錄下安裝一套jre(供瀏覽器來使用),在c:/j2sdk1.4.2下安裝一套jdk(也包括一套jre)。然後我們需要在環境變數path的最前面增加java的路徑c:/j2sdk1.4.2/bin。這樣jdk就安裝好了。

  2、 jdk的命令工具

  jdk的最重要命令列工具:

  java: 啟動jvm執行class

  javac: java編譯器

  jar: java打包工具

  javadoc: java文檔產生器

  這些命令列必須要非常非常熟悉,對於每個參數都要很精通才行。對於這些命令的學習,jdk documentation上有詳細的文檔。

  二、 jdk documentation

  documentation在jdk的下載頁面也有下載串連,建議同時下載documentation。documentation是最最重要的編程手冊,涵蓋了整個java所有方面的內容的描述。可以這樣說,學習java編程,大部分時間都是花在看這個documentation上面的。我是隨身攜帶的,寫java代碼的時候,隨時查看,須臾不離手。

  三、 應用伺服器(app server)

  app server是運行java企業組件的平台,構成了應用軟體的主要運行環境。當前主流的app server是bea公司的weblogic server和ibm公司的websphere以及免費的jboss,選擇其中一個進行學習就可以了,個人推薦weblogic,因為它的體繫結構更加乾淨,開發和部署更加方便,是java企業軟體開發人員首選的開發平台。下面簡要介紹幾種常用的app server:

  1、 tomcat

  tomcat嚴格意義上並不是一個真正的app server,它只是一個可以支援運行serlvet/jsp的web容器,不過tomcat也擴充了一些app server的功能,如jndi,資料庫連接池,使用者交易處理等等。tomcat被非常廣泛的應用在中小規模的java web應用中,因此本文做一點下載、安裝和配置tomcat的介紹:

  tomcat是apache組織下jakarta項目下的一個子項目,它的主網站是:http://jakarta.apache.org/tomcat/ ,tomcat最新版本是tomcat5.0.16,軟體下載的串連是:http://www.apache.org/dist/jakarta/tomcat-5/v5.0.16/ 。

  下載tomcat既可以直接下載zip包,也可以下載exe安裝包(個人建議zip更乾淨些),不管哪種情況,下載完畢安裝好以後(zip直接解壓縮就可以了)。需要設定兩個環境變數:

  java_home=c:/j2sdk1.4.2

  catalina_home=d:/tomcat4 (你的tomcat安裝目錄)

  這樣就安裝好了,啟動tomcat運行catalina_home/bin/startup.bat,關閉tomcat運行shutdown.bat指令碼。tomcat啟動以後,預設使用8080連接埠,因此可以用瀏覽器訪問http://localhost:8080來測試tomcat是否正常啟動。

  tomcat提供了兩個web介面的管理工具,url分別是:

  http://localhost:8080/admin/index.jsp

  http://localhost:8080/manager/html

  在啟用這兩個管理工具之前,先需要手工配置一下管理使用者和口令。用一個文本工具開啟catalina_home/conf/tomcat-users.xml這個檔案,加入如下幾行:

  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="robbin" password="12345678" roles="admin,manager,tomcat"/>

  這樣使用者“robbin”就具備了超級管理員權限。重新啟動tomcat以後,你就可以使用該使用者來登陸如上的兩個管理工具,通過web方式進行tomcat的配置和管理了。

  2、 bea weblogic

  weblogic可以到bea的網站上免費註冊之後下載到weblogic8.1企業版,license可以免費使用1年時間,其實這已經完全足夠了。weblogic的下載串連:http://commerce.bea.com/index.jsp,weblogic的線上文檔:http://edocs.bea.com/ 。

  3、 ibm webshpere

  websphere同樣可以下載到免費的試用版本,到ibm的developerworks網站可以看到websphere試用產品的下載和相關的websphere的資料,developerworks中文網站的串連是:http://www-900.ibm.com/developerworks/cn/wsdd/ ,websphere的下載串連:http://www7b.software.ibm.com/wsdd/downloads/wassupport.html 。

  4、 jboss

  jboss是免費開源的app server,可以免費的從jboss網站下載:http://www.jboss.org/index.html,然而jboss的文檔是不免費,需要花錢購買,所以為我們學習jboss設定了一定的障礙。在jdon上有幾篇不錯的jboss配置文檔,可以用來參考:http://www.jdon.com/idea.html

  四、 java應用的運行環境

  java的應用可以簡單分為以下幾個方面:

  1、 java的案頭應用

  案頭應用一般僅僅需要jre的支援就足夠了。

  2、 java web應用

  java的web應用至少需要安裝jdk和一個web容器(例如tomcat),以及一個多使用者資料庫,web應用至少分為三層:

  browser層:瀏覽器顯示使用者頁面

  web層:運行servlet/jsp

  db層:後端資料庫,向java程式提供資料訪問服務

  3、 java企業級應用

  企業級應用比較複雜,可以擴充到n層,最簡單情況會分為4層:

  browser層:瀏覽器顯示使用者頁面

  client層:java用戶端圖形程式(或者嵌入式裝置的程式)直接和web層或者ejb層互動

  web層:運行servlet/jsp

  ejb層:運行ejb,完成商務邏輯運算

  db層:後端資料庫,向java程式提供資料訪問服務

  4、 java嵌入式應用

  java嵌入式應用是一個方興未艾的領域,從事嵌入式開發,需要從sun下載j2me開發包,j2me包含了嵌入式裝置專用虛擬機器kvm,和普通的jdk中包含的jvm有所不同。另外還需要到特定的嵌入式廠商那裡下載模擬器。

java學習路徑(二)書籍篇

學習一門新的知識,不可能指望只看一本,或者兩本書就能夠完全掌握。需要有一個循序漸進的閱讀過程。我推薦oreilly出版的java系列書籍。

  在這裡我只想補充一點看法,很多人學習java是從《thinking in java》這本書入手的,但是我認為這本書是不適合初學者的。我認為正確的使用這本書的方法應該是作為輔助的讀物。《thinking in java》並不是在完整的介紹java的整個體系,而是一種跳躍式的寫作方法,是一種類似tips的方法來對java很多知識點進行了深入的分析和解釋。

  對於初學者來說,最好是找一本java入門的書籍,但是比較完整的循序的介紹java的文法,物件導向的特性,核心類庫等等,在看這本書的同時,可以同步來看《thinking in java》,來加深對java的理解和原理的運用,同時又可以完整的瞭解java的整個體系。

  對於java的入門書籍,蔡學鏞推薦的是oreilly的《exploring java, 2nd edition》 或者《java in a nutshell,2nd edition(針對c++背景)》,我並沒有看過這兩本書。其實我覺得電子工業出版社的《java 2編程詳解》或者《java 2從入門到精通》就很不錯。

  在所有的java書籍當中,其實最最有用的,並不是o&acute;reilly的 java serials,真正最最有用處是jdk的documentation!幾乎你想獲得的所有的知識在documentation裡面全部都有,其中最主要的部分當然是java基礎類庫的api文檔,是按照package來組織的,對於每一個class都有詳細的解釋,它的繼承關係,是否實現了某個介面,通常用在哪些場合,還可以查到它所有的public的屬性和方法,每個屬性的解釋,意義,每個方法的用途,調用的參數,參數的意義,傳回值的類型,以及方法可能拋出的異常等等。可以這樣來說,所有關於java編程方面的書籍其實都不過是在用比較通俗易懂的語言,和良好的組織方式來介紹documentation裡面的某個package裡麵包含的一些類的用法而已。所以萬變不離其宗,如果你有足夠的能力來直接通過documentation來學習java的類庫,那麼基本上就不需要看其他的書籍了。除此之外,documentation也是編程必備的手冊,我的案頭上有三個documentation的捷徑,分別是j2sdk1.4.1的documentation,servlet2.3的documentation和j2sdkee1.3.1的documentation。有了這個三個documentation,什麼其他的書籍都不需要了。

  對於java web 編程來說,最核心的是要熟悉和掌握http協議,這個就和java無關了,在熟悉http協議之後,就需要熟悉java的實現http協議的類庫,也就是servlet api,所以最重要的東西就是servlet api。當然對於初學者而言,直接通過servlet api來學習web編程有很大的難度,我推薦o&acute;reilly的《java server pages 》這本書來學習web 編程。

 ejb的書籍當中,《enterprise java beans?, 2nd edition》是一本很不錯的書, ejb的學習門檻是比較高,入門很難,但是這本書完全降低了學習的難度,特別重要的一點是,ejb的學習需要結合一種app server的具體實現,所以在學習ejb的同時,必須同步的學習某種app server,而這本書相關的出了三本書,分別是weblogic6.1,websphere4.0和jboss3.0上面部署書中例子的實做。真是既有理論,又有實踐。在學習ejb的同時,可以邊看邊做,ejb的學習會變得很輕鬆。

  但是這本書也有一個問題,就是版本比較舊,主要講ejb1.1規範和部分ejb2.0的規範。而ed roman寫的《mastering ejb 2.0》這本書完全是根據ejb2.0規範寫的,深入淺出,覆蓋了ejb編程的各個方面,並且還有很多編程經驗tips,也是學習ejb非常推薦的書籍之一。

  如果是結合weblogic來學習j2ee的話,《j2ee應用與bea weblogic server》絕對是首選讀物,雖然是講述的weblogic6.0,仍然值得購買,這本書是bea官方推薦的教材,作者也是bea公司的工程師。現在中文版已經隨處可見了。這本書結合weblogic介紹了j2ee各個方面的技術在weblogic平台上的開發和部署,實踐指導意義非常強。

  在掌握了java平台基礎知識和j2ee方面的知識以後,更進一步的是學習如何運用oo的方法進行軟體的設計,那麼就一定要學習“設計模式”。sun公司出版了一本《j2ee核心模式》,是每個開發java企業平台軟體的架構師必備的書籍。這本書全面的介紹了j2ee體系架構的各種設計模式,是設計師的必讀書籍。

java學習路徑(三)過程篇

每個人的學習方法是不同的,一個人的方法不見得適合另一個人,我只能是談自己的學習方法。因為我學習java是完全自學的,從來沒有問過別人,所以學習的過程基本上完全是自己摸索出來的。我也不知道這種方法是否是比較好的方法,只能給大家提供一點參考了。

  學習java的第一步是安裝好jdk,寫一個hello world, 其實jdk的學習沒有那麼簡單,關於jdk有兩個問題是很容易一直困擾java程式員的地方:一個是classpath的問題,其實從原理上來說,是要搞清楚jre的classloader是如何載入class的;另一個問題是package和import問題,如何來尋找類的路徑問題。把這兩個問題摸索清楚了,就掃除了學習java和使用jdk的最大障礙。推薦看一下王森的《java深度曆險》,對這兩個問題進行了深入的探討。
  第二步是學習java的文法。java的文法是類c++的,基本上主流的程式設計語言不是類c,就是類c++的,沒有什麼新東西,所以文法的學習,大概就是半天的時間足夠了。唯一需要注意的是有幾個不容易搞清楚的關鍵字的用法,public,protected,private,static,什麼時候用,為什麼要用,怎麼用,這可能需要有人來指點一下,我當初是完全自己琢磨出來的,花了很久的時間。不過後來我看到《thinking in java》這本書上面是講了這些概念的。

  第三步是學習java的物件導向的程式設計語言的特性的地方。比如繼承,構造器,抽象類別,介面,方法的多態,重載,覆蓋,java的異常處理機制。對於一個沒有物件導向語言背景的人來說,我覺得這個過程需要花很長很長時間,因為學習java之前沒有c++的經驗,只有c的經驗,我是大概花了一個月左右吧,才徹底把這些概念都搞清楚,把書上面的例子反覆的揣摩,修改,嘗試,把那幾章內容反覆的看過來,看過去,看了不下5遍,才徹底領悟了。不過我想如果有c++經驗的話,應該一兩天時間足夠了。那麼在這個過程中,可以多看看《thinking in java》這本書,對物件導向的講解非常透徹。可惜的是我學習的時候,並沒有看到這本書,所以自己花了大量的時間,通過自己的嘗試和揣摩來學會的。

  第四步就是開始熟悉java的類庫。java的基礎類庫其實就是jdk安裝目錄下面jre/lib/rt.jar這個包。學習基礎類庫就是學習rt.jar。基礎類庫裡面的類非常非常多。據說有3000多個,我沒有統計過。但是真正對於我們來說最核心的只有4個,分別是

  java.lang.*;

  java.io.*;

  java.util.*;

  java.sql.*;

  這四個包的學習,每個包的學習都可以寫成一本厚厚的教材,而o&acute;reilly也確實是這樣做的。我覺得如果時間比較緊,是不可能通過讀四本書來學習。我覺得比較好的學習方法是這樣的:

  首先要通讀整個package的架構,瞭解整個package的class,interface,exception的構成,最好是能夠找到介紹整個包架構的文章。這些專門介紹包的書籍的前幾章應該就是這些總體的架構內容介紹。

  對包整體架構的把握並不是要熟悉每個類的用法,記住它有哪些屬性,方法。想記也記不住的。而是要知道包有哪些方面的類構成的,這些類的用途是什麼,最核心的幾個類分別是完成什麼功能的。我在給人培訓的時候一般是一次課講一個包,所以不可能詳細的介紹每個類的用法,但是我反覆強調,我給你們講這些包的不是要告訴你們類的方法是怎麼調用的,也不要求你們記住類的方法調用,而是要你們瞭解,java給我們提供了哪些類,每個類是用在什麼場合,當我遇到問題的時候,我知道哪個類,或者哪幾個類的組合可以解決我的問題,that&acute;all!,當我們具體寫程式的時候,只要你知道該用哪個類來完成你的工作就足夠了。編碼的時候,具體的方法調用,是邊寫代碼,邊查documentation,所有的東西都在documentation裡面,不要求你一定記住,實際你也記不住3000多個類的總共將近10萬個方法調用。所以對每個包的總體架構的把握就變得極為重要。

  第五步,通過上面的學習,如果學的比較紮實的話,就打好了java的基礎了,剩下要做的工作是掃清documentation裡面除了上面4個包之外的其他一些比較有用處的類。相信進展到這一步,java的自學能力已經被培養出來了,可以到了直接學習documentation的水平了。除了要做gui編程之外,jdk裡面其他會有用處的包是這些:

  java.text.*;

  java.net.*;

  javax.naming.*;

  這些包裡面真正用的比較多的類其實很少,只有幾個,所以不需要花很多時間。

  第六步,java web 編程

  web編程的核心是http協議,http協議和java無關,如果不熟悉http協議的話,雖然也可以學好servlet/jsp編程,但是達不到舉一反三,一通百通的境界。所以http協議的學習是必備的。如果熟悉了http協議的話,又有了java編程的良好的基礎,學習servlet/jsp簡直易如反掌,我學習servlet/jsp就用了不到一周的時間,然後就開始用jsp來做項目了。

  在servlet/jsp的學習中,重頭仍然是servlet documentation。servlet api最常用的類很少,花比較少的時間就可以掌握了。把這些類都看一遍,多寫幾個例子試試。servlet/jsp編程本質就是在反覆調用這些類來通過http協議在web server和brower之間交談。另外對jsp,還需要熟悉幾個常用jsp的標記,具體的寫法記不住的話,臨時查就是了。

  此外java web編程學習的重點要放在web application的設計模式上,如何進行商務邏輯的分析,並且進行合理的設計,按照mvc設計模式的要求,運用servlet和jsp分別完成不同的邏輯層,掌握如何在servlet和jsp之間進行流程的控制和資料的共用,以及web application應該如何配置和部署。

  第七步,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資料庫另一個記錄,我們自己寫代碼是控制不了把整個*作做為一個原子*作的。用jta的話,由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好像目前還沒有什麼很好的書籍,但是可以通過在網路上面查資料的方式來學習。 
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.