• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            天空之城
            new,think,program,happy to live
            posts - 39,comments - 39,trackbacks - 0


            如何學習Java

            Tag:學習Java
            ?
            一、前言

            ??? 在開始之前有必要再討論一下J2ME,J2SE,J2EE這些概念。J2ME,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級別上的劃分,實際上Sun給J2EE的定義是:開發基于組件的多層的企業級應用的規范。也就是為各種不同的技術定義一個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。還有JAXP等XML相關技術,Java Message Service,Java Mail,JDO等等是最好應該掌握的。其他Management Technologies,Connector Architecture等等主要是給容器提供商中間件提供商參考的,應用開發者不需要怎么關心,等用到了再去學習也不遲。

            ?

            二、語言學習篇

            ?? 首先是J2SE基礎。學習一門新技術,無外乎閱讀和實踐了。而一本好的參考書對于初學者來說顯得格外重要。現在市面上的 Java書籍可以說是鋪天蓋地,質量也是良莠不齊,令初學者無所適從。所以還是先推薦幾本書籍吧。目前對于Java基礎知識,大家一般都比較推薦兩本書<>和<< Core Java? 2, Volume I: Fundamentals >>。第一本書不必多說了,Bruce Eckel的大作,Jolt獲獎書籍。內容比較全面,基本涵蓋了java語言的方方面面。這本書提供了相當豐富的例子,非常有利于對學習內容的了解。另外書中第一部分對于OO基本書籍的介紹,我覺得對于剛接觸OO的人來說幫助會很大。而且此書是Open Source的,可以從作者網上下載http://www.mindview.net/Books/TIJ/而對于習慣于讀中文版的學習者來說,侯捷翻譯的中文版是不錯的選擇。要說這本說的缺點可能就是對于初學者來說厚了一點,這也是一些人并不推薦此書作為初學者學習用書的原因吧。后面一本<< Core Java? 2, Volume I: Fundamentals >>。目前已經是第七版了,單從它出版的次數來看也可以看出此書受歡迎的程度,這本書特點也是講述比較全面系統,基本上一路啃下來的話Java語言基礎應該算過關了。缺點也是太厚了,有點像參考手冊,前面部分花了不少篇幅講Swing和Applet,可能對初學者不是很有用。還有一些像<< 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,我比較推薦<>和<>,第一本是Sun推薦的Servlet教材。第二本是當年Amazon最暢銷Java書籍,五星級書籍。這本書機械工業出版社有中文版叫<<與JSP權威指南>>,感覺翻譯得還可以,第二版好像還沒有看到有中文版。兩本書都全面系統地介紹了JSP和Sevlet知識,從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和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,理由還是很簡單,開源軟件不要錢,個頭小使用方面,用戶眾多文檔齊全。下載地址http://www.mysql.com/products/mysql/。PostgreSQL也可以考慮,不過國內使用者遠不如MySQL多,所以要在論壇上問起問題來就少方便一些了,下載地址http://www.pervasive-postgres.com/downloads/。至于后面那些比較重量級的數據庫,為了做做練習而言就不用考慮了, 咱也花不起這個錢啊。

            ?? 學習完J2EE的這些具體技術,這個時候進行基本的J2EE開發應該是不成問題了。此時應該考慮提高自己的代碼質量了。這里我強烈推薦Martin Fowler的<>,這本書不是一本非常實際的書,作者完全是手把手地教你如何提高代碼質量,從具體地代碼中告訴你什么是代碼的Bad Smell,如何去掉這些Bad Smell。不少書評是這么說的,這本書對于初級,中級的讀者幫助是立桿見影的。至少就我接觸到的幾個學習編程不久的程序員,編碼質量在短期內都有很大提高。當然重構(Refactoring)這一概念并不只針對Java語言的,它對所有OO語言都是適用的。重構的概念是如此深入人心,以至于今天幾乎所有流行的IDE工具都有對重構的支持。這里我還想再推薦一本<>。從C++過來的程序員都知道<>在C++領域的地位,至今還流傳著這樣的趣話,C++程序員分為兩種,一種是讀過<>的,另一種是沒有讀過C++的。雖然這本<>在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的距離更近了。上面兩本書都出過中文版,后面一本<>還有兩個版本的中文版,第一次翻譯的比較差一點,后來機械工業出版社又委托潘愛民先生重新翻譯了一遍。同一本書在同一個出版社連續被翻譯了兩次也說明國內出版界對這本書還是比較重視的。

            ?? 這個階段,在看書的同時,可以結合著學習一些優秀的開源項目的源代碼。這些開源項目的代碼風格,注釋都是值得借鑒的。實在太懶也別忘了手頭上還有個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的<>系列是不錯的選擇。另外我還會去看看Amazon網站(http://www.amazon.com/)的書評,一般小于3星級的書我都不會考慮。還有一個好去處http://www.theserverside.com/的書評,這里的書評比較有趣,往往都有很激烈的爭論,里面經常會看到一些名人在發言。我要向所有Java學習者推薦,如果我的收藏夾里面只能存放兩個網站,我會選擇java.sun和theserverside。在這里你可以了解最新的Java動態,可以學習第一手的Java資料,可以看到Java高手們(里面不乏業界大腕)激烈辯論。

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

            ?

            四、提高篇

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

            五、結語

            ?? 相信大家看了這篇文章后會有較大的提高,如果你想了解更多的關于Java方面的知識,你可以瀏覽“Java學習筆記”(http://sylan215.bokee.com/)網站,對于學習Java,這是一個相當不錯的選擇。

            ?

            ?

            posted on 2006-06-11 13:58 太極虎~宏 閱讀(311) 評論(0)  編輯 收藏 引用 所屬分類: java
            91精品国产91热久久久久福利| 日本久久久久久中文字幕| 2021国产精品久久精品| 韩国免费A级毛片久久| 久久成人小视频| 久久Av无码精品人妻系列| 久久性精品| 99久久精品国产一区二区三区| 99久久99久久精品国产片果冻| 欧美午夜A∨大片久久| 91精品国产综合久久香蕉| 亚洲精品国产综合久久一线| 精品综合久久久久久88小说| 精品无码久久久久久午夜| 久久艹国产| 久久国产精品成人免费 | 国产成年无码久久久久毛片| 国产三级精品久久| 国内精品久久久久久麻豆| 伊人久久精品无码二区麻豆| 久久久久久久精品成人热色戒| 精品久久久久久无码不卡| 亚洲国产精品一区二区久久| 亚洲精品乱码久久久久66| 欧美大香线蕉线伊人久久| 精品国产91久久久久久久| 亚洲精品高清国产一线久久| 久久午夜无码鲁丝片午夜精品| 久久精品九九亚洲精品天堂| 99久久国语露脸精品国产| 国产精品成人99久久久久 | 大香伊人久久精品一区二区| 99久久国产免费福利| 久久精品国产亚洲AV无码偷窥| 久久久久久精品免费看SSS| 一本久久精品一区二区| 久久人人青草97香蕉| 国产精品一区二区久久不卡| 久久久噜噜噜久久中文福利| 久久久久亚洲AV片无码下载蜜桃| 久久久久亚洲精品日久生情|