官术网_书友最值得收藏!

前言

致讀者

本書是按照Java SE 8完全更新后的《Java核心技術 卷Ⅱ 高級特性(原書第10版)》。卷Ⅰ主要介紹了Java語言的一些關鍵特性;而本卷主要介紹編程人員進行專業軟件開發時需要了解的高級主題。因此,與本書卷Ⅰ和之前的版本一樣,我們仍將本書定位于用Java技術進行實際項目開發的編程人員。

編寫任何一本書籍都難免會有一些錯誤或不準確的地方。我們非常樂意聽到讀者的意見。當然,我們更希望對本書問題的報告只聽到一次。為此,我們創建了一個FAQ、bug修正以及應急方案的網站http://horstmann.com/corejava。你可以在bug報告網頁(該網頁的目的是鼓勵讀者閱讀以前的報告)的末尾處添加bug報告,以此來發布bug和問題并給出建議,以便我們改進本書將來版本的質量。

內容提要

本書中的章節大部分是相互獨立的。你可以研究自己最感興趣的主題,并可以按照任意順序閱讀這些章節。

第1章中,你將學習Java 8的流庫,它帶來了現代風格的數據處理機制,即只需指定想要的結果,而無須詳細描述應該如何獲得該結果。這使得流庫可以專注于優化的計算策略,對于優化并發計算來說,這顯得特別有利。

第2章的主題是輸入輸出處理。在Java中,所有I/O都是通過輸入/輸出流來處理的。這些流(不要與第1章的那些流混淆了)使你可以按照統一的方式來處理與各種數據源之間的通信,例如文件、網絡連接或內存塊。我們對各種讀入器和寫出器類進行了詳細的討論,它們使得對Unicode的處理變得很容易。我們還展示了如何使用對象序列化機制從而使保存和加載對象變得容易而方便,及其背后的原理。然后,我們討論了正則表達式和操作文件與路徑。

第3章介紹XML,介紹怎樣解析XML文件,怎樣生成XML以及怎樣使用XSL轉換。在一個實用示例中,我們將展示怎樣在XML中指定Swing窗體的布局。我們還討論了XPath API,它使得“在XML的干草堆中尋找繡花針”變得更加容易。

第4章介紹網絡API。Java使復雜的網絡編程工作變得很容易實現。我們將介紹怎樣創建連接到服務器上,怎樣實現你自己的服務器,以及怎樣創建HTTP連接。

第5章介紹數據庫編程,重點講解JDBC,即Java數據庫連接API,這是用于將Java程序與關系數據庫進行連接的API。我們將介紹怎樣通過使用JDBC API的核心子集,編寫能夠處理實際的數據庫日常操作事務的實用程序。(如果要完整介紹JDBC API的功能,可能需要編寫一本像本書一樣厚的書才行。)最后我們簡要介紹了層次數據庫,探討了一下JNDI(Java命名及目錄接口)以及LDAP(輕量級目錄訪問協議)。

Java對于處理日期和時間的類庫做出過兩次設計,而在Java 8中做出的第三次設計則極富魅力。在第6章,你將學習如何使用新的日期和時間庫來處理日歷和時區的復雜性。

第7章討論了一個我們認為其重要性將會不斷提升的特性——國際化。Java編程語言是少數幾種一開始就被設計為可以處理Unicode的語言之一,不過Java平臺的國際化支持則走得更加深遠。因此,你可以對Java應用程序進行國際化,使得它們不僅可以跨平臺,而且還可以跨越國界。例如,我們會展示怎樣編寫一個使用英語、德語和漢語的退休金計算器。

第8章討論了三種處理代碼的技術。腳本機制和編譯器API允許程序去調用使用諸如JavaScript或Groovy之類的腳本語言編寫的代碼,并且允許程序去編譯Java代碼。可以使用注解向Java程序中添加任意信息(有時稱為元數據)。我們將展示注解處理器怎樣在源碼級別或者在類文件級別上收集這些注解,以及怎樣運用這些注解來影響運行時的類行為。注解只有在工具的支持下才有用,因此,我們希望我們的討論能夠幫助你根據需要選擇有用的注解處理工具。

第9章繼續介紹Java安全模型。Java平臺一開始就是基于安全而設計的,該章會帶你深入內部,查看這種設計是怎樣實現的。我們將展示怎樣編寫用于特殊應用的類加載器以及安全管理器。然后介紹允許使用消息、代碼簽名、授權以及認證和加密等重要特性的安全API。最后,我們用一個使用AES和RSA加密算法的示例進行了總結。

第10章涵蓋了沒有納入卷Ⅰ的所有Swing知識,尤其是重要但很復雜的樹形構件和表格構件。隨后我們介紹了編輯面板的基本用法、“多文檔”界面的Java實現、在多線程程序中用到的進度指示器,以及諸如閃屏和支持系統托盤這樣的“桌面集成特性”。我們仍著重介紹在實際編程中可能遇到的最為有用的構件,因為對Swing類庫進行百科全書般的介紹可能會占據好幾卷書的篇幅,并且只有專門的分類學家才感興趣。

第11章介紹Java 2D API,你可以用它來創建實際的圖形和特殊的效果。該章還介紹了抽象窗口操作工具包(AWT)的一些高級特性,這部分內容看起來過于專業,不適合在卷I中介紹。雖然如此,這些技術還是應該成為每一個編程人員工具包的一部分。這些特性包括打印和用于剪切粘貼及拖放的API。

第12章介紹本地方法,這個功能可以讓你調用為微軟Windows API這樣的特殊機制而編寫的各種方法。很顯然,這種特性具有爭議性:使用本地方法,那么Java平臺的跨平臺特性將會隨之消失。雖然如此,每個為特定平臺編寫Java應用程序的專業開發人員都需要了解這些技術。有時,當你與不支持Java平臺的設備或服務進行交互時,為了你的目標平臺,你可能需要求助于操作系統API。我們將通過展示如何從某個Java程序訪問Windows注冊表API來闡明這一點。

所有章節都按照最新版本的Java進行了修訂,過時的材料都刪除了,Java SE 8的新API也都詳細地進行了討論。

約定

我們使用等寬字體表示計算機代碼,這種格式在眾多的計算機書籍中極為常見。各種圖標的含義如下:

注意:需要引起注意的地方。

提示:有用的提示。

警告:關于缺陷或危險情況的警告信息。

C++注意:本書中有許多這類提示,用于解釋Java程序設計語言和C++語言之間的不同。如果你對這部分不感興趣,可以跳過。

Java平臺配備有大量的編程類庫或者應用編程接口(API)。當第一次使用某個API時,我們在每一節的末尾都添加了一個簡短的描述。這些描述可能有點不太規范,但是比官方在線API文檔更具指導性。接口的名字都是斜體的,就像許多官方文檔一樣。類、接口或方法名后面的數字是JDK的版本,表示在該版本中才引入了這些特性。

Application Programming Interface 1.2

本書示例代碼以程序清單的形式列舉了出來,例如:

程序清單1-1 ScriptTest.java

可以從網站http://horstmann.com/corejava[1]下載示例代碼。

致謝

寫書總是需要付出極大的努力,而重寫也并不像看上去那么容易,特別是在Java技術方面,要跟上其飛快的發展速度,更是如此。一本書的面世需要眾多有奉獻精神的人共同努力,我非常榮幸地在此向整個《Java核心技術》團隊致謝。

Prentice Hall出版社的許多人都提供了頗有價值的幫助,但是他們甘愿居于幕后。我希望他們都能夠知道我是多么感謝他們付出的努力。與以往一樣,我要熱切地感謝我的編輯,Prentice Hall出版社的Greg Doench,他對本書從編寫到出版進行全程掌舵,并使我可以十分幸福地根本意識不到幕后那些人的存在。我還非常感謝Julie Nahil在撰寫上的支持,以及感謝Dmitry Kirsanov和Alina Kirsanova對手稿的編輯和排版。

我非常感謝找到了很多令人尷尬的錯誤并提出了許多頗具創見性的建議的早先版本的讀者。我特別要感謝十分出色的評審團隊,他們用令人驚異的眼睛仔細瀏覽了所有原稿,并將我從許多令人尷尬的錯誤中拯救了出來。

這一版及以前版本是由以下人員評審的:Chuck Allison(特約編輯,《C/C++Users Journal》)、(Lance Anderson(Oracle))、Alec Beaton(PointBase,Inc.)、Cliff Berg(iSavvix Corporation)、Joshua Bloch、David Brown、Corky Cartwright、Frank Cohen(PushToTest)、Chris Crane(devXsolution)、Dr.Nicholas J.De Lillo(曼哈頓學院)、Rakesh Dhoopar(Oracle)、Robert Evans(資深教師,約翰·霍普金斯大學應用物理實驗室)、David Geary(Sabreware)、Jin Gish(oracle)Brian Goetz(Oracle)、Angela Gordon、Dan Gordon、Rob Gordon、John Gray(Hartford大學)、Cameron Gregory(olabs.com)、Steve Haines、Marty Hall(約翰·霍普金斯大學應用物理實驗室)、Vincent Hardy、Dan Harkey(圣何塞州立大學)、William Higgins(IBM)、Vladimir Ivanovic(PointBase)、Jerry Jackson(ChannelPoint Software)、Tim Kimmet(Preview Systems)、Chris Laffra、Charlie Lai、Angelika Langer、Doug Langston、Hang Lau(McGill大學)、Mark Lawrence、Doug Lea(SUNY Oswego)、Gregory Longshore、Bob Lynch(Lynch Associates)、Philip Milne(顧問)、Mark Morrissey(俄勒岡研究生院)、Mahesh Neelakanta(佛羅里達大西洋大學)、Hao Pham、Paul Philion、Blake Ragsdell、Ylber Ramadani(Ryerson大學)、Stuart Reges(亞利桑那大學)、Simon Ritter、Rich Rosen(Interactive Data Corporation)、Peter Sanders(ESSI大學,Nice,France)、Dr.Paul Sanghera(圣何塞州立大學和布魯克學院)、Paul Sevinc(Teamup AG)、Yoshiki Shabata、Devang Shah、Richard Slywczak(NASA/Glenn研究中心)、Bradley A.Smith、Steven Stelting、Christopher Taylor、Luke Taylor(Valtech)、George Thiruvathukal、Kim Topley(《Core JFC,Second Edition》的作者)、Janet Traub、Paul Tyma(顧問)、Christian Ullenboom、Peter van der Linden、Burt Walsh、Joe Wang(Oracle)和Dan Xu(Oracle)。

Cay Horstmann

2016年9月于加州舊金山

[1] 也可登錄華章網站(http://www.hzbook.com)下載相關代碼。——編輯注

主站蜘蛛池模板: 小金县| 绥阳县| 军事| 德保县| 新竹市| 长乐市| 千阳县| 巴彦淖尔市| 宁远县| 沙田区| 康乐县| 措勤县| 丹棱县| 安多县| 湛江市| 台江县| 平利县| 宝鸡市| 台前县| 来安县| 扎赉特旗| 巴东县| 大丰市| 墨竹工卡县| 武威市| 大庆市| 台南县| 兴化市| 砚山县| 中牟县| 巧家县| 万全县| 和平县| 荔浦县| 海淀区| 新余市| 阳西县| 札达县| 杂多县| 美姑县| 锡林浩特市|