java?

1. Java 語言基礎

談到Java 語言基礎學習的書籍,大家肯定會推薦Bruce Eckel 的《Thinking in Java》。它是一本寫的相當深刻的技術書籍,Java 語言基礎部分基本沒有其它任何一本書可以超越它。該書的作者Bruce Eckel 在網絡上被稱為天才的投機者,作者的《Thinking in C++》在1995 年曾獲SoftwareDevelopment Jolt Award 最佳書籍大獎,《Thinking in Java》被評為1999 年Java World“最愛讀者歡迎圖書”,並且贏得了編輯首選圖書獎。作者從1986 年至今,已經發表了超過150 篇計算機技術文章,出版了6 本書(其中4 本是關於C++的),並且在全世界做了數百次演講。他是《Thinking in Java》、《Thinking in C++》、《C++ Inside & Out》《Using C++》和《Thinking in Patterns》的作者,同時還是《Black Belt C++》文集的編輯。他的書被讀者為“最好的Java 參考書……絕對讓人震驚”;“購買Java 參考書最明智的選擇”;“我見過的最棒的編程指南”。作者的非凡才華,極其跨越語言的能力,使作者被選為Java 發展10 年間與Java 關係最密切的10 個人物之一。

《Thinking in Java》講述了Java 語言的方方面面,很多Java 語言的老手都評價“這是一本將Java 語言講得相當醜陋的書”。該書談 及了java 語言的很多細節,每一個方面都是相當深刻的。通過本書你可以看到“醜陋的”java 語言。

網絡上關於java 語言講解的視頻很多很多,其中不凡有垃圾。《翁愷—JAVA 語言》可能是你學習java 語言基礎的唯一選擇,該講座基本 按照《Thinking in Java》這本書講解,其中不凡有翁老師的很多有意思的笑話。我很幸運學習就是從此視頻開始的。內容包括30 講, 我總共看了3 遍。

不過,對於初學者我不太推薦使用《Thinking in Java》,我比較推薦Prentice Hall PTR 的《Core Java 2》國內稱為《Java 2 核心技 術》,目前是第七版。網絡上大家都可以下載到電子版。Oreilly 的《Java in a nutshell》也是一個不錯的選擇。讀完以上兩本後,你 可以看看翁愷老師的視頻,接著可以研究《Thinking in Java》了。

2. Java 數據結構

市面上關於Java 數據結構的書本身就很少很少。大致有APress 的《Java Collections》, Jones 和Bartlett 的《Data Structures in Java》、《Object-oriented Data Structures Using Java》以及Prentice Hall 出版的《Data Structures and Algorithms in Java》

(Dec 19, 2005)還有一本就是《Data Structures And Algorithms With Object-oriented Design Patterns In Java》。

很幸運我的第一本英文書就是APress 的《Java Collections》(本書在國內可能根本就沒有中文版――只能下載英文版了),很不錯,講得很有條例、很簡單,是一本完完全全Java Collections API 介紹的書籍,其中不凡有擴展API 的例子。這是我推薦你學習java 數據結構的唯一一 本好書。其它的Jones 和Bartlett 的那兩本國內好像有一本中文版,想看你也可以看看。

在學習完API 後,你可以看看java.util 包中對應的類了。不過只有在學習過設計模式後你才有可能完全理解整個Java Collections Framework。Java Collections Framework 使用了很多著名的設計模式如:迭代器(Iterator)模式,工廠方法模式、裝飾器模式、適配 器模式等等。

通過研究java.util 包中數據結構的源代碼,你可以知道臭名昭著的Properties 類的設計了,同時可能基本具備設計簡單的數據結構的能力了。

所謂學習無止境,學習完Sun 提供了Java Collections Framework 後,你可以研究Apche 的另一個Java Collections Framework,很有意思哦。互為補充的兩個Framework。

在大家學習、研究Java Collections 之前,我提示一下Java Collections 主要包括以下三部分:接口(Interface)、實現( Implemention)和算法(Algorithm)。

1. 接口主要有List、Set、Queue 和Map。List 、Se t 和Queue 是Collection 接口的子接口。

2. 實現主要是實現這些接口的具體類。如實現List 接口的ArrayList、LinkedList、Stack 和Vector;實現Set 接口的HashSet、TreeSet 和LinkedHashSet;實現Queue 接口的PriorityQueue、SynchronousQueue 等等;實現Map 接口的HashMap、TreeMap、Hashtable、Properties、WeakHashMap 等等。

3. 算法主要是由Arrays 類和Collections 類提供的,它是整個Java Collection Framework 算法的核心。支持各種類型的排序,查找等常用操作。

Java Collections 中包含兩個版本的數據結構,主要是原先的支持同步的數據結構和後來不支持同步的數據結構。

Java Collection Framework 在使用Comparator 和Comparable 接口支持排序。同時提供新舊兩個版本的迭代器Iterator 和Enumeraton,以及它們如何轉換等等。

在java.util 包中的Obserable 接口和Observer 類是考察者模式的核心。

……

3. Java IO

市面上關於IO 的書籍也僅僅只有Oreilly 出版社的兩本,都是Elliotte Rusty Harold 的著作。兩本書的風格基本一致,推薦閱讀是第一版的《Jvava I/O》,講得比較淺顯,內容相對比較集中,實例也很多。第二版今年5 月國外出版,很有幸我在網絡上下載了第二版,講得極其詳細――726 頁的大塊頭(我化了兩個星期),這次將NIO 和IO 和在一起,還包括J2ME 部分的,不過串口、並口通信部分好像

類庫支持不夠,自己不能實際操作。

與第一版的《Jvava I/O》一起的Oreilly 還有一本《Jvava NIO》,也是很不錯的哦。

大家在依次閱讀完《Jvava I/O》以及《Jvava NIO》後,可以研究java.io 包中的源代碼了。在大家研究源代碼前我給點提示:

Java 的io 包主要包括:

1. 兩種流:字節流(byte Stream)和字符流(character stream),這兩種流不存在所謂的誰代替誰、誰比誰高級之說,它們互為補充,

只是側重點不同而已。

2. 兩種對稱:1.字節流、字符流的對稱;2.輸入、論文發表、輸出的對稱。

3. 一個橋樑:將字節流轉變為字符流的InputStreamReader 和OutputStreamWriter。

其中必須注意:

1. PipedInputStream 和PipedOutputStrem 是兩個比較有趣的類。

2. 支持Buffered 的流是我們經常使用的類。

3. 裝飾器(Decorator)模式在java 最著名的應用就是用於io 的設計。仔細研究各個Filter 流與具體流的關係,多看設計模式的書籍。

相信你會有所所獲。

4. 學習好io 包,是研究net 包,rmi 包……的基礎哦!

4 . Java 數據庫

數據庫的書籍太多太多了,也是太爛太爛了!這方面的書我基本都研究過,推薦的你就看看Apress 的《JDBC Recipes A Problem Solution Approach 》很不錯,國外2005 年底才出版,(國內好像沒有中文版,不過出了中文版也不一定值得看――國內經常將國外的書翻譯得一

塌糊塗、不堪入目)不過我們真的很幸運,網絡上有電子版的。值得一看。推薦我看的第一本比較滿意的――Wiley 出版的《Java Database Bible》,講得很不錯!Sun 公司自己的關於JDBC API 介紹的那一本《JDBC API TutorialandRefernece》也不錯。我第二本JDBC 的就是研究的這套API。

不過目前這些書都是一些相對比較浮淺的API 應用的書籍。有機會我會給大家帶來介紹JDBC API 以及JDBC 實現內部細節的書!我儘快努力,同時希望得到大家的支持!

順便給學習JDBC 的朋友一點提示:

JDBC 的學習和使用主要是這套API,其使用過程也是極其簡單,下面是使用JDBC 的一般流程:

1. 加載某個數據庫的驅動(Driver 類),通常使用Class.forName(“驅動的類名“);

2. 連接數據庫――

Connection con = DriverManager.getConnection(url,username,password) ;

3. 得到會話――Statement stmt = con.createStatement();

4. 執行操作――Result rs = stmt.executeQuery(“SQL 查詢語句”);

5. 處理結果――

while(rs.next()){

String col1 = rs.getString(1);

……

}

簡單吧!整個JDBC 中可以變化的一般是:

1. 可以由Connection 對象創建Statement、PreparedStatement 和CallableStatement 創建三種類型的Statement。

2. 可以創建多種類型的ResultSet:支持單向移動和個自由移動;可更新的和不可更新的;支持不同等級的交易的…..

3. 數據輸入的批處理(學術期刊)。

4. 結果集中特殊類型(Blob、Clob、Arrary 和Ref、Struct)列的操作。

5. 這些特殊類型的錄入數據庫。

6. javax.sql 包中特殊結果集(CachedRowSet、JdbcRowSet、WebRowSet)的操作。

7. 其它的就是一個DataSource 了,也很簡單!一個J2EE 中的被管理對象

簡單吧!相信大家很快就會征服JDBC。

5. Java 網絡編程

網絡編程――一個神祕的、充滿挑戰的方向。不過在談Java 網絡編程之前首先感謝Sun 公司的開發人員,因為它們天才的設想,充滿智

慧的架構,使廣大java 程序員學習java 網絡編程變得異常簡單。

Java 網絡編程方面的書,我推薦O'Reilly 的《Java Network Programming》,目前已經第三版了,以前的版本市面上肯定有!網絡上早

有第三版的電子版,國外2004 年出版,706 頁哦!講得很全,比較深入,太深入的可能由於Sun 有些東西沒有完全公開,所以也就不好

講了,有興趣的可以下載看看!第二本還是O'Reilly 1998 年出版的《Java distributed computing 》,基礎部分寫得比較詳細,後面

的實例還是值得研究的。

在大家閱讀這些書之前,給大家一點提示:

java 網絡編程其實相對比較簡單,入門也很快很快。java 網絡編程主要包括兩個部分:1.Socket;2.URL 部分。不過第二部分也完全建

立在第一部分的基礎上。

1. Socket 包括客戶端的Socket 和服務器端的ServerSocket。還有就是DatagramSocket 和DatagramPacket,它對應於UDP 通信協議。“出版社徵稿”總之,Socket 部分是建立其它高級協議的基礎。

2. URL 類是一個網絡資源定位器,通常和具體的網絡協議如HTTP,FTP,Telnet……相關。通過該類可以連接網絡上的資源,通過其openStream 可以以io 包中的流(InputStream)的形式讀取網絡資源;通過其OpenConnection 方法,可以打開一個連接,在此連接上可以不僅可以完成讀的操作,還可以完成寫的操作。

Java 的網絡編程大體包括以上兩部分。網絡編程和IO 以及多線程部分非常密切,在學習此部分前大家一定對這兩部分了解比較透徹。

學習了以上部分你可以研究java.net 包中的與此相關的源代碼了!研究所有的源代碼還為時尚早。在整個net 包中包含:

ContentHandlerFactory、URLStreamHandlerFactory、URLStreamHandler、URLClassLoader 等輔助類,它們構成了java.net 網絡編程

的框架,通過研究其源代碼,你不僅可以快速理解java.net 包,還可以為以後擴展該包打下基礎,甚至可以將此思維方式運用到自己的項目中。

到此為止你對java.net 包應該才瞭解60%,還有一部分你可以使用JDecompiler 之類的反編譯軟件打開你JDK 安裝目錄下\jdkxxx\jre\lib 目錄中的rt.jar,用WinRAR 之類的軟件打開它的sun.net 包,反編譯所有的文件,它是URL 類工作的細節。當研究完該sun.net包,你就會對整個網絡編程很熟悉很熟悉了。

一切看起來我們已經對網絡編程很精通了。其實不然,剛剛開始而已,要想深入,請繼續吧!網絡上很多優秀的網絡編程庫甚至軟件可

以為我們“添加功力”。如Apache 的HttpCore 和HTTPConnection 是兩個和HTTP 協議相關庫;JGroups 是研究分佈式通信、群組通信的必讀庫;

的其它實現細節,在其允許將其源代碼以文字的形式加以研究,以及允許將其沒有公開的實現寫入書中時,我很希望能出一本java 網絡編程的書籍,以飧廣大讀者!!)

6. Servlet 和JSP

Servlet、JSP 的書也是滿地都是!值得推薦的也僅僅兩三本。實推Addison Wiley 的《Servlets and JavaServer pages :The J2EETechnology Web Tier》,又是一本很厚的哦!國外2003 年出版、784 頁,講得比較全,例子也很多,特別是第八章Filter,舉了幾個不錯的例子。其它所有我看到的關於Servlet 和JSP 的書都沒有如此深入的!(可能有我沒有看到而已)。O’reilly 的《Java Servlet Programming》和《Java Server Pages》相對比較好懂一些,可以讀讀!

在大家學習Servlet 和Jsp 之前我還是要提醒一下:

本質上說Servlet 就是一個實現Servlet 接口的、部署於服務器端的服務器端的程序罷了!它可以象寫其它任何java 應用程序一樣編寫,它可以操作數據庫、可以操作本地文件、可以連接本地EJB……編寫Servlet 程序的一般流程為:

1. 繼承一個HttpServlet 類;

2. 覆蓋其doGet、doPost 方法;

3. 在覆蓋方法的內部操作方法參數HttpServletRequest 和HttpServletResponse。

4. 讀取請求利用HttpServletRequest。利用HttpServletRequest 你可以操作Http 協議的協議頭、可以得到請求的操作方法、可以得到請求的路徑、可以得到請求的字符串、以及和請求客戶相關的信息,更主要的你可以得到Cookie 和HttpSession 這兩個對象。

5. 利用Cookie 你可以操作“甜心”對象或者將其寫入HttpServletResponse 中。

6. 向客戶輸出信息可以使用HttpServletResponse。使用HttpServletResponse 可以寫入各種類型的協議頭、可以增加Cookie、可以重定向其它URL、國家級期刊、可以向客戶發送Http 協議的狀態碼。

7. 利用HttpSession 在會話內完成你想實現的任何功能。

同時Servlet 還提供了一些事件和事件監聽器(簡單的觀察者模式而已)。還有就是過濾器(Filter)和包裝器(ServletRequestWrapper、ServletResponseWrapper)――簡單的流的使用和裝飾器模式的使用。

學習Sevlet、JSP 必然要部署到服務器中,記住通常文件部署的步驟和參數的設置以及在程序中如何使用就可以了。

完全理解Servlet 後,學習jsp 相對比較容易了!Jsp 完全建立在Servlet 的基礎上,它是為了迎合那些喜歡在Html 文檔中嵌入腳本(如:PHP 之類的網頁編程語言)的程序員的需要罷了!學起來也相當的容易!

一切看起來似乎那麼的風平浪靜,簡單好學!簡單的表象背後有其複雜的機理。要想對Servlet 和Jsp 徹底研究,你得研究Tomcat 等開源軟件的具體實現。它無非就是一個服務器,在客戶利用網頁通過HTTP 協議向服務器發送請求後,服務器將此HTTP 請求轉化為相應的HttpServletRequest 對象,調用你編寫的Servlet 罷了,在你的Servlet 中你肯定操作了此HttpServletRequest 了吧,同時操作了HttpServletResponse 了吧,服務器就將此HttpServletResponse 按照HTTP 協議的要求利用HTTP 協議發送給你的瀏覽器了!在服務器端的Jsp 網頁在被客戶請求後,Tomcat 會利用編譯軟件,使用javax.servlet.jsp 包中的模板,編譯此jsp 文件,編譯後就是一個Servlet!以後的操作和Servlet 完全一樣哦! (省級期刊)

在Servlet 和Jsp 的基礎上出現了,所謂的高級技術:JSTL,Struts……無非就是一些標籤和MVC 模式的使用。

繼續前進吧!勝利就在前方!!

7. 多線程

一個看起來很神祕,卻很容易上手、很難精通的方向!

我推薦兩本我感覺很好的書籍。首先是我第一本能上手看的這方面的書, Sams 1998 年出版的《Java Thread Programming》, 寫得暴好,

很容易讀懂,我有空還時常看當時的筆記!要知道怎麼好你自己看吧!第二本OReilly 三次出版的《Java Threads》,最新是2004 版,

國內好像有中文版,推薦你還是看英文版的吧!書中談到了與多線程相關的N 個方向,如IO、Swing、Collection 等等。

給大家一點提示吧!java 類庫中與多線程相關的類不是很多,主要有:Thread、ThreadGroup 以及ThreadLocal 和InheritableThreadLocal

四個類和一個Runnable 接口;關鍵字synchronize、volatile ;以及Object 對象的wait、notify、notifyAll 方法!

1 Thread 是多線程的核心類,提供了一系列創建和操作多線程的方法。

2 ThreadGroup 是一個管理Thread 的工具類。

3 ThreadLocal 和InheritableThreadLocal 為Thread 提供了一個類似保險箱功能的存儲線程對象的類!

4 Runnable 不用說了吧! “發期刊”

5 synchronize 是同步方法和同步塊的核心哦!多個線程調用此方法時,只有一個線程可以使用此方法,其它方法阻塞,從而保證被操作

對象內部狀態完整性。某個線程調用帶有synchronize 的方法或塊時會得到該對象的對象鎖,完成塊中的操作後釋放此對象鎖,從而其它對象可以繼續操作。

6 wait、notify、notifyAll 提供了有效的等待/通知機制。Java 語言中每一個對象都有一個休息室,任何線程在其操作的對象的狀態不

滿足的情況下,在該對象的休息室中休息,釋放對象鎖;當其它線程操作該對象後,喚醒休息室中的線程,它們再檢查條件,當條件滿足後,執行相應的操作。大師Doug Lea 的作品,原先是一個開源的一致性編程的庫,後來被Sun 公司併入java 類庫。作者的網站上也有另外一個版本的

該類庫!值得研究的好東西! Hibernation、www.faqikan.com OpenJMS 等開源軟件都使用了此包!

8. 設計模式

談到設計模式很多人多會推薦GOF 的那本,該書在Amzon 上是五星級的推薦書籍。不過對於學習java 沒多久的、特別是java 初學者,

我很不推薦這本書。主要是該書的例子基本都是C++的,很多細節沒有講述得足夠清楚。

我給大家推薦的第一本是閻宏博士的《Java 與模式》,它是第一本中國人自己寫的關於設計模式的書籍,寫的比較有趣,融合了很多中華民族的文化和觀念,例子、類圖都比較多,且相對簡單!非常不錯的入門書籍――又是大塊頭哦!

其次我推薦Wiley 出版社出版的《Pattern In Java》一套三本,我才看了第一本,好像第二本不怎麼樣,第三本還不錯!

第三本是中文翻譯版的關於多線程模式的(很難得的中文翻譯版)中國鐵道出版社2003 年出版的《Java 多線程設計模式》,將多線程模式講得非常淺顯,配有大量的圖例,每章都有習題,最後有答案!我研究多線程模式就是由它開始的!

第四本,今年出版的Head First 系列的《Head First Design Pattern》,秉承Head First 系列圖書的優點,大量的類圖、豐富的實例、

有趣的註解,值得購買!

其次在J2EE 方向你可以研究閱讀Addison Wesley 2002 年出版的《Patterns of Enterprise Application Architecture》,眾多大腕的作品,講企業消息集成的!Sun 提供的《J2EE PATTERNS SL500》也很好!晚了推薦那一本Amzon 4 星半的《Holub on patterns》, 大師的作品,提供了,很值得研究的例子,不過對上面四本不是很熟悉的讀者,最好不要讀它!可能會讓你比較累!

我正在學習設計模式經過一段曲折的歷史,看到大約20這來回,我看到Yan博士香港Java和模式4倍,還排除了第一次我不明白!記得當時老師告訴我們研究“四人幫”書,作為選修課,我和主人的計算機科學系,醫生,40 - 50人的最後一節課,不超過三個人理解,我也看不出有任何必要(弱基金會——主要是我不知道新。非常幸運的是,3研究生聽到大RaoReNan Java OOP語言老師的講座,我瞭解後三種設計模式,結合書模式等其他模型有很強的興趣和渴望征服它!工作後我買了第一個是Java和模式,第一次花了兩個月學習大的1000頁,第三次約15天后,你可以記下一大本書!從現在開始。選擇正確的書,努力學習。相信很快就會開始

Java語言學習8個簡單的部分,這只是我們的學習Java語言的開始!這些都是學到了Java程序員在最好的情況下,後面的路很長!我們可以繼續研究數據庫實現的源代碼,Servlet服務器源代碼,RMI、EJB、JNDI,面向方面的編程,重構,ANT工具,Eclipse工具,春天和JBoss,喬納斯,Apache Geronimo J2EE服務器!研究了這些你可能成為一個偉大的J2EE體系結構!你可以繼續學習分析器,

相關問題答案