?? 0106.htm
字號:
(10) 第10章:Java IO系統<br>
理論上,我們可將任何程序分割為三部分:輸入、處理和輸出。這意味著IO(輸入/輸出)是所有程序最為關鍵的部分。在這一章中,大家將學習Java為此提供的各種類,如何用它們讀寫文件、內存塊以及控制臺等?!袄稀盜O和Java
1.1的“新”IO將得到著重強調。除此之外,本節還要探討如何獲取一個對象、對其進行“流式”加工(使其能置入磁盤或通過網絡傳送)以及重新構建它等等。這些操作在Java的1.1版中都可以自動完成。另外,我們也要討論Java
1.1的壓縮庫,它將用在Java的歸檔文件格式中(JAR)。<br>
<br>
(11) 第11章:運行期類型鑒定<br>
若只有指向基礎類的一個句柄,Java的運行期類型標鑒定(RTTI)使我們能獲知一個對象的準確類型是什么。一般情況下,我們需要有意忽略一個對象的準確類型,讓Java的動態綁定機制(多形性)為那一類型實現正確的行為。但在某些場合下,對于只有一個基礎句柄的對象,我們仍然特別有必要了解它的準確類型是什么。擁有這個資料后,通??梢愿行У貓绦幸淮翁厥馇闆r下的操作。本章將解釋RTTI的用途、如何使用以及在適當的時候如何放棄它。此外,Java
1.1的“反射”特性也會在這里得到介紹。<br>
<br>
(12) 第12章:傳遞和返回對象<br>
由于我們在Java中同對象溝通的唯一途徑是“句柄”,所以將對象傳遞到一個函數里以及從那個函數返回一個對象的概念就顯得非常有趣了。本章將解釋在函數中進出時,什么才是為了管理對象需要了解的。同時也會講述String(字串)類的概念,它用一種不同的方式解決了同樣的問題。<br>
<br>
(13) 第13章:創建窗口和程序片<br>
Java配套提供了“抽象Windows工具包”(AWT)。這實際是一系列類的集合,能以一種可移植的形式解決視窗操縱問題。這些窗口化程序既可以程序片的形式出現,亦可作為獨立的應用程序使用。本章將向大家介紹AWT以及網上程序片的創建過程。我們也會探討AWT的優缺點以及Java
1.1在GUI方面的一些改進。同時,重要的“Java Beans”技術也會在這里得到強調。Java
Beans是創建“快速應用開發”(RAD)程序構造工具的重要基礎。我們最后介紹的是Java
1.2的“Swing”庫——它使Java的UI組件得到了顯著的改善。<br>
<br>
(14) 第14章:多線程<br>
Java提供了一套內建的機制,可提供對多個并發子任務的支持,我們稱其為“線程”。這線程均在單一的程序內運行。除非機器安裝了多個處理器,否則這就是多個子任務的唯一運行方式。盡管還有別的許多重要用途,但在打算創建一個反應靈敏的用戶界面時,多線程的運用顯得尤為重要。舉個例子來說,在采用了多線程技術后,盡管當時還有別的任務在執行,但用戶仍然可以毫無阻礙地按下一個按鈕,或者鍵入一些文字。本章將對Java的多線程處理機制進行探討,并介紹相關的語法。<br>
<br>
(15) 第15章 網絡編程<br>
開始編寫網絡應用時,就會發現所有Java特性和庫仿佛早已串聯到了一起。本章將探討如何通過因特網通信,以及Java用以輔助此類編程的一些類。此外,這里也展示了如何創建一個Java程序片,令其同一個“通用網關接口”(CGI)程序通信;揭示了如何用C++編寫CGI程序;也講述了與Java
1.1的“Java數據庫連接”(JDBC)和“遠程方法調用”(RMI)有關的問題。<br>
<br>
(16) 第16章 設計范式<br>
本章將討論非常重要、但同時也是非傳統的“范式”程序設計概念。大家會學習設計進展過程的一個例子。首先是最初的方案,然后經歷各種程序邏輯,將方案不斷改革為更恰當的設計。通過整個過程的學習,大家可體會到使設計思想逐漸變得清晰起來的一種途徑。<br>
<br>
(17) 第17章 項目<br>
本章包括了一系列項目,它們要么以本書前面講述的內容為基礎,要么對以前各章進行了一番擴展。這些項目顯然是書中最復雜的,它們有效演示了新技術和類庫的應用。<br>
有些主題似乎不太適合放到本書的核心位置,但我發現有必要在教學時討論它們,這些主題都放入了本書的附錄。<br>
<br>
(18) 附錄A:使用非Java代碼<br>
對一個完全能夠移植的Java程序,它肯定存在一些嚴重的缺陷:速度太慢,而且不能訪問與具體平臺有關的服務。若事先知道程序要在什么平臺上使用,就可考慮將一些操作變成“固有方法”,從而顯著加快執行速度。這些“固有方法”實際是一些特殊的函數,以另一種程序設計語言寫成(目前僅支持C/C++)。Java還可通過另一些途徑提供對非Java代碼的支持,其中包括CORBA。本附錄將詳細介紹這些特性,以便大家能創建一些簡單的例子,同非Java代碼打交道。<br>
<br>
(19) 附錄B:對比C++和Java<br>
對一個C++程序員,他應該已經掌握了面向對象程序設計的基本概念,而且Java語法對他來說無疑是非常眼熟的。這一點是明顯的,因為Java本身就是從C++衍生而來。但是,C++和Java之間的確存在一些顯著的差異。這些差異意味著Java在C++基礎上作出的重大改進。一旦理解了這些差異,就能理解為什么說Java是一種杰出的語言。這一附錄便是為這個目的設立的,它講述了使Java與C++明顯有別的一些重要特性。<br>
<br>
(20) 附錄C:Java編程規則<br>
本附錄提供了大量建議,幫助大家進行低級程序設計和代碼編寫。<br>
<br>
(21) 附錄D:性能<br>
通過這個附錄的學習,大家可發現自己Java程序中存在的瓶頸,并可有效地改善執行速度。<br>
<br>
(22) 附錄E:關于垃圾收集的一些話<br>
這個附錄講述了用于實現垃圾收集的操作和方法。<br>
<br>
(23) 附錄F:推薦讀物<br>
列出我感覺特別有用的一系列Java參考書。<br>
<br>
6. 練習<br>
為鞏固對新知識的掌握,我發現簡單的練習特別有用。所以讀者在每一章結束時都能找到一系列練習。<br>
大多數練習都很簡單,在合理的時間內可以完成。如將本書作為教材,可考慮在課堂內完成。老師要注意觀察,確定所有學生都已消化了講授的內容。有些練習要難些,他們是為那些有興趣深入的讀者準備的。大多數練習都可在較短時間內做完,有效地檢測和加深您的知識。有些題目比較具有挑戰性,但都不會太麻煩。事實上,練習中碰到的問題在實際應用中也會經常碰到。<br>
<br>
7. 多媒體CD-ROM<br>
本書配套提供了一片多媒體CD-ROM,可單獨購買及使用。它與其他計算機書籍的普通配套CD不同,那些CD通常僅包含了書中用到的源碼(本書的源碼可從www.BruceEckel.com免費下載)。本CD-ROM是一個獨立的產品,包含了一周“Hads-OnJava”培訓課程的全部內容。這是一個由Bruce
Eckel講授的、長度在15小時以上的課程,含500張以上的演示幻燈片。該課程建立在這本書的基礎上,所以是非常理想的一個配套產品。<br>
CD-ROM包含了本書的兩個版本:<br>
(1) 本書一個可打印的版本,與下載版完全一致。<br>
(2) 為方便讀者在屏幕上閱讀和索引,CD-ROM提供了一個獨特的超鏈接版本。這些超鏈接包括:<br>
■230個章、節和小標題鏈接<br>
■3600個索引鏈接<br>
CD-ROM刻錄了600MB以上的數據。我相信它已對所謂“物超所值”進行了嶄新的定義。<br>
CD-ROM包含了本書打印版的所有東西,另外還有來自五天快速入門課程的全部材料。我相信它建立了一個新的書刊品質評定標準。<br>
若想單獨購買此CD-ROM,只能從Web站點www.BruceEckel.com處直接訂購。<br>
<br>
8. 源代碼<br>
本書所有源碼都作為保留版權的免費軟件提供,可以獨立軟件包的形式獲得,亦可從http://www.BruceEckel.com下載。為保證大家獲得的是最新版本,我用這個正式站點發行代碼以及本書電子版。亦可在其他站點找到電子書和源碼的鏡像版(有些站點已在http://www.BruceEckel.com處列出)。但無論如何,都應檢查正式站點,確定鏡像版確實是最新的版本??稍谡n堂和其他教育場所發布這些代碼。<br>
版權的主要目標是保證源碼得到正確的引用,并防止在未經許可的情況下,在印刷材料中發布代碼。通常,只要源碼獲得了正確的引用,則在大多數媒體中使用本書的示例都沒有什么問題。<br>
在每個源碼文件中,都能發現下述版本聲明文字:<br>
<br>
16-17頁程序<br>
<br>
可在自己的開發項目中使用代碼,并可在課堂上引用(包括學習材料)。但要確定版權聲明在每個源文件中得到了保留。<br>
<br>
9. 編碼樣式<br>
在本書正文中,標識符(函數、變量和類名)以粗體印刷。大多數關鍵字也采用粗體——除了一些頻繁用到的關鍵字(若全部采用粗體,會使頁面擁擠難看,比如那些“類”)。<br>
對于本書的示例,我采用了一種特定的編碼樣式。該樣式得到了大多數Java開發環境的支持。該樣式問世已有幾年的時間,最早起源于Bjarne
Stroustrup先生在《The C++ Programming Language》里采用的樣式(Addison-Wesley
1991年出版,第2版)。由于代碼樣式目前是個敏感問題,極易招致數小時的激烈辯論,所以我在這兒只想指出自己并不打算通過這些示例建立一種樣式標準。之所以采用這些樣式,完全出于我自己的考慮。由于Java是一種形式非常自由的編程語言,所以讀者完全可以根據自己的感覺選用了適合的編碼樣式。<br>
本書的程序是由字處理程序包括在正文中的,它們直接取自編譯好的文件。所以,本書印刷的代碼文件應能正常工作,不會造成編譯器錯誤。會造成編譯錯誤的代碼已經用注釋//!標出。所以很容易發現,也很容易用自動方式進行測試。讀者發現并向作者報告的錯誤首先會在發行的源碼中改正,然后在本書的更新版中校訂(所有更新都會在Web站點http://www.BruceEckel.com處出現)。<br>
<br>
10. Java版本<br>
盡管我用幾家廠商的Java開發平臺對本書的代碼進行了測試,但在判斷代碼行為是否正確時,卻通常以Sun公司的Java開發平臺為準。<br>
當您讀到本書時,Sun應已發行了Java的三個重要版本:1.0,1.1及1.2(Sun聲稱每9個月就會發布一個主要更新版本)。就我看,1.1版對Java語言進行了顯著改進,完全應標記成2.0版(由于1.1已作出了如此大的修改,真不敢想象2.0版會出現什么變化)。然而,它的1.2版看起來最終將Java推入了一個全盛時期,特別是其中考慮到了用戶界面工具。<br>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -