Java 7程序設(shè)計(jì)

出版時(shí)間:2012-8  出版社:機(jī)械工業(yè)出版社  作者:克尼亞萬(wàn)  頁(yè)數(shù):457  
Tag標(biāo)簽:無(wú)  

前言

  歡迎閱讀本書(shū)。Java是一種很容易學(xué)會(huì)的成熟的編程語(yǔ)言,同時(shí),它也匯集各種技術(shù)于一身,經(jīng)常令初學(xué)者不知道從何入手。如果你也有同感,那么本書(shū)就很適合你,因?yàn)檫@是一本特意為初學(xué)者量身定制的教程。  作為面向初學(xué)者的教程,本書(shū)不是要教會(huì)你每一種Java技術(shù)(因?yàn)楸”∫槐緯?shū)是不可能囊括所有Java技術(shù)的,這也是大部分Java類(lèi)書(shū)籍都只專(zhuān)注于某一種技術(shù)的原因)。應(yīng)該說(shuō),本書(shū)涵蓋了最重要的Java編程技術(shù),使你能以此為基礎(chǔ)進(jìn)而學(xué)習(xí)其他技術(shù)。本書(shū)的內(nèi)容依然豐富,只要你真正理解所有章節(jié)的內(nèi)容,并且完成練習(xí),你將完全能夠勝任一名中級(jí)Java程序員的日常工作。  本書(shū)共三大主題,這些是一名專(zhuān)業(yè)級(jí)Java程序員必須熟練掌握的內(nèi)容:  Java編程語(yǔ)言;  Java面向?qū)ο缶幊蹋∣OP);  Java核心類(lèi)庫(kù)?! ∫氚岩陨先笾黝}組織好一本高效的Java教材之所以困難,正是因?yàn)橐韵聝煞矫娴脑?。一方面,Java是一種面向?qū)ο缶幊蹋∣OP)的語(yǔ)言,如果你已經(jīng)了解OOP的話(huà),就會(huì)知道它的語(yǔ)法是比較容易學(xué)的。另一方面,OOP特性(如繼承、多態(tài)以及數(shù)據(jù)封裝),用現(xiàn)實(shí)的案例進(jìn)行示范也很容易。問(wèn)題在于,理解真實(shí)的Java程序需要具備Java核心類(lèi)庫(kù)的知識(shí)。  由于它們之間的相輔相成關(guān)系,這三大主題并沒(méi)有劃分成三個(gè)獨(dú)立的部分,而是討論某一主題的章節(jié)會(huì)與討論另一主題的章節(jié)相互交織在一起。例如,在解釋多態(tài)之前,我要先確保你了解某些Java類(lèi),之后才能講解真實(shí)的案例。此外,如泛型這樣的語(yǔ)言特性,如果你事先不理解某些類(lèi),是無(wú)法解釋清楚的,因此我就會(huì)在講完那些基礎(chǔ)類(lèi)之后再討論泛型?! ∵€有這樣的情況:某一個(gè)主題可能會(huì)在兩個(gè)甚至更多個(gè)地方出現(xiàn)。例如,for語(yǔ)句是一項(xiàng)基本的語(yǔ)言特性,它應(yīng)該在較前面的章節(jié)中進(jìn)行討論。但是,for還可以用來(lái)迭代一組對(duì)象,這種特性則又只能在講完“集合框架”之后再做討論。因此,for最早在第3章中出現(xiàn),之后在第11章中再度出現(xiàn)?! 〗酉聛?lái),我要在此首先高度概述一下Java,粗略介紹一下面向?qū)ο缶幊蹋∣OP)的概念,并簡(jiǎn)要地描述每一章的主要內(nèi)容,以及講述如何安裝Java軟件?! ava語(yǔ)言和技術(shù)  Java不僅是一種面向?qū)ο蟮木庉嬚Z(yǔ)言,它還是使軟件開(kāi)發(fā)變得更加快速并且獲得更健壯、更安全的應(yīng)用程序的一系列技術(shù)。多年來(lái),Java之所以會(huì)成為首選的編程技術(shù),是因?yàn)樗哂腥缦聝?yōu)勢(shì)?! ∑脚_(tái)獨(dú)立性  易用性  加速應(yīng)用程序開(kāi)發(fā)的完整類(lèi)庫(kù)  安全性  可擴(kuò)展性  廣泛的行業(yè)支持  Sun Microsystems公司于1995年開(kāi)發(fā)出Java,隨后Java(盡管它從一開(kāi)始就是一種通用的語(yǔ)言)成為編寫(xiě)Applet(在Web瀏覽器上運(yùn)行的小程序,為靜態(tài)的網(wǎng)站增添交互性)的著名語(yǔ)言?;ヂ?lián)網(wǎng)的快速發(fā)展有很大一部分要?dú)w功于Java早期的成功?! ∪欢?,Applet并不是令Java魅力四射的唯一因素。Java最吸引人的另一個(gè)特性是它的平臺(tái)獨(dú)立性承諾,也就是“一次編寫(xiě),到處運(yùn)行”(Write Once, Run Anywhere)的口號(hào)。這意味著編寫(xiě)一個(gè)程序就可以在Windows、UNIX、Mac、Linux及其他操作系統(tǒng)上運(yùn)行。這是任何其他編程語(yǔ)言都無(wú)法實(shí)現(xiàn)的。當(dāng)時(shí),C和C++是開(kāi)發(fā)常規(guī)應(yīng)用程序時(shí)最常用的兩種語(yǔ)言。Java自誕生之日起,似乎就搶盡了它們的風(fēng)頭?! ∵@就是Java 1.0。  1997年,Java 1.1發(fā)布了,它增加了一些更加重要的特性,例如,更好的事件模型、Java Beans以及國(guó)際化(internationalization,i18n)?! ?998年12月,Java 1.2發(fā)布了。在它發(fā)布3天之后,版本號(hào)由1變成了2,它標(biāo)志著于1999年開(kāi)始掀起的一場(chǎng)以Java作為“下一代”技術(shù)的銷(xiāo)售戰(zhàn)役拉開(kāi)了序幕。Java 2以4種風(fēng)格出售:標(biāo)準(zhǔn)版(J2SE)、企業(yè)版(J2EE),移動(dòng)版(J2ME),以及Java Card版本(從未在這個(gè)品牌名稱(chēng)中采用“2”)?! 〗酉聛?lái)于2000年發(fā)布了1.3版,也就是J2SE 1.3。兩年之后發(fā)布1.4版,即J2SE 1.4。J2SE 1.5于2004年發(fā)布。但是Java 2 的1.5版隨后改成了Java 5?! ?006年11月13日,即Java 6正式發(fā)布前的一個(gè)月,Sun Microsystems公司宣布Java變成開(kāi)源了。Java SE 6是Sun Microsystems公司誠(chéng)邀外部開(kāi)發(fā)者貢獻(xiàn)代碼和幫助修復(fù)bug后的第一個(gè)Java版本。其實(shí),Sun公司過(guò)去也曾接受過(guò)非本公司員工的參與,如Doug Lea在多線(xiàn)程方面的付出,但這是Sun公司第一次發(fā)出公開(kāi)的邀請(qǐng)。Sun公司承認(rèn)他們的資源有限,在不久的將來(lái),外界的參與者將會(huì)幫助他們畫(huà)上完美的句號(hào)?! ?007年5月,Sun公司把其Java源代碼作為免費(fèi)軟件在OpenJDK社區(qū)發(fā)布。IBM、Oracle和Apple公司隨后也都紛紛加入了OpenJDK。  2010年,Oracle公司收購(gòu)了Sun公司。  Java 7(代號(hào)Dolphin)于2011年7月發(fā)布,這也是通過(guò)OpenJDK進(jìn)行開(kāi)源合作的成果?! ∈鞘裁词笿ava平臺(tái)能夠獨(dú)立  你一定聽(tīng)說(shuō)過(guò)“平臺(tái)獨(dú)立”或者“跨平臺(tái)”這類(lèi)術(shù)語(yǔ),它意味著程序可以在多種操作系統(tǒng)上運(yùn)行。這也是使Java深得人心的一大原因。但是,到底是什么使Java得以實(shí)現(xiàn)平臺(tái)獨(dú)立呢?  在傳統(tǒng)的編程中,源代碼是要編譯成可執(zhí)行代碼的。這種可執(zhí)行代碼只能在所設(shè)計(jì)的平臺(tái)上運(yùn)行。換句話(huà)說(shuō),為Windows而編寫(xiě)和編譯的代碼就只能在Windows上運(yùn)行,在Linux中編寫(xiě)的代碼就只能在Linux上運(yùn)行,等等?! 鹘y(tǒng)的編程范例  而Java程序則編譯成字節(jié)碼(bytecode)。你不能讓它自己運(yùn)行字節(jié)碼,因?yàn)樗皇潜緳C(jī)代碼(native code)。字節(jié)碼只能在Java虛擬機(jī)(JVM)上運(yùn)行。JVM是一種解釋字節(jié)碼的本機(jī)應(yīng)用程序。Sun公司使JVM在眾多平臺(tái)上都可用,從而把Java變成一種跨平臺(tái)的語(yǔ)言。如圖I.2所示,同一個(gè)字節(jié)碼就可以在任何操作系統(tǒng)的JVM上運(yùn)行?! ava編程模式  目前,JVM適用于Windows、UNIX、Linux、Free BSD,以及世界上在用的其他的所有主流操作系統(tǒng)?! DK、JRE、JVM之間有何區(qū)別  我說(shuō)過(guò),Java程序必須進(jìn)行編譯。事實(shí)上,任何編程語(yǔ)言都需要一個(gè)編譯器,經(jīng)過(guò)編譯后編程語(yǔ)言才真正有用。編譯器是一種將程序源代碼轉(zhuǎn)化成可執(zhí)行格式(如字節(jié)碼、本機(jī)代碼或者其他)的程序。在開(kāi)始利用Java編程之前,必須先下載一個(gè)Java編譯器。Java編譯器是一個(gè)名為javac的程序,它是Java compiler的縮寫(xiě)?! ‰m然javac可以將Java源代碼編譯成字節(jié)碼,但要運(yùn)行字節(jié)碼,還需要一個(gè)Java虛擬機(jī)(JVM)。此外,由于你常常需要用到Java核心類(lèi)庫(kù)中的類(lèi),因此還需要下載這些類(lèi)庫(kù)。Java運(yùn)行時(shí)環(huán)境(Java Runtime Environment,JRE)包含JVM和類(lèi)庫(kù)。當(dāng)然,Windows的JRE與Linux的JRE不同,也就是說(shuō),某一種操作系統(tǒng)的JRE與另一種操作系統(tǒng)的JRE是不同的。  Java軟件有兩個(gè)發(fā)行包:  JRE,它包括JVM和核心類(lèi)庫(kù),最適合用來(lái)運(yùn)行字節(jié)碼?! DK,它包括JRE,外加一個(gè)編譯器和其他工具。它是編寫(xiě)和編譯Java程序的必備軟件?! 『?jiǎn)而言之,JVM就是一種運(yùn)行字節(jié)碼的本機(jī)應(yīng)用程序。JRE則是一種包含JVM和Java類(lèi)庫(kù)的環(huán)境。JDK則包含JRE及一個(gè)Java編譯器和其他工具?! DK的第一個(gè)版本是1.0,之后的版本依次是1.1、1.2、1.3、1.4、1.5、1.6和1.7。對(duì)于微小的更新發(fā)布,則是在版本號(hào)之后再添加一個(gè)數(shù)字。例如,1.7.1就是對(duì)1.7版本的第一次微小的更新?! DK 1.7(代號(hào)Dolphin)就是大家熟知的JDK 7。JDK所包含的JRE版本與JDK的相同。因此,JDK 1.7包含JRE 1.7。JDK經(jīng)常也稱(chēng)做SDK(Software Development Kit的縮寫(xiě))?! 〕薐DK之外,Java程序員還需要下載說(shuō)明核心類(lèi)庫(kù)中類(lèi)的Java文檔。從提供JRE和JDK的同一個(gè)網(wǎng)址可以下載說(shuō)明文檔?! ava 2、J2SE、J2EE、J2ME、Java 7究竟為何物  Sun公司為推廣Java做了很多努力。它的部分營(yíng)銷(xiāo)策略是冠以Java 2的名稱(chēng),實(shí)際上就是JDK 1.2。Java 2有三種版本:  Java 2 Platform,標(biāo)準(zhǔn)版(J2SE)。J2SE其實(shí)相當(dāng)于JDK。它也是J2EE中所定義的各種技術(shù)的基礎(chǔ)。  Java 2 Platform,企業(yè)版(J2EE)。它為開(kāi)發(fā)基于組件的多層企業(yè)應(yīng)用程序定義了標(biāo)準(zhǔn)。功能包括Web Services特性支持和開(kāi)發(fā)工具(SDK)?! ava 2 Platform,移動(dòng)版(J2ME)。它為在消費(fèi)者設(shè)備上運(yùn)行的應(yīng)用程序提供了一種環(huán)境,如移動(dòng)電話(huà)、掌上電腦(PDA),以及電視機(jī)頂盒等。J2ME包括一個(gè)JVM和有限的幾組類(lèi)庫(kù)?! ≡诎姹?中出現(xiàn)了名稱(chēng)的變化。J2SE變成了Java Platform,Standard Edition 5(Java SE 5)。而且J2EE和J2ME中的“2”也去掉了。企業(yè)版的當(dāng)前版本是Java Platform,Enterprise Edition 6(Java EE 6)。J2ME現(xiàn)在稱(chēng)做Java Platform,Micro Edition(Java ME,沒(méi)有版本號(hào))。在本書(shū)中,Java 7就是指Java SE 7?! ∨cSun公司出產(chǎn)的第一個(gè)Java版本不同,Java SE 7(包括J2SE 1.4、Java SE 5以及Java SE 6)是一系列規(guī)范,這些規(guī)范定義了在發(fā)布時(shí)需要實(shí)現(xiàn)的各種特性。軟件本身稱(chēng)做參考實(shí)現(xiàn)(Reference Implementation)。Oracle、IBM和其他公司一起,通過(guò)OpenJDK提供了Java SE 7參考實(shí)現(xiàn),以及Java后續(xù)版本的參考實(shí)現(xiàn)。  Java EE 6也屬于規(guī)范,其中包含像Servlet、JavaServer Pages、JavaServer Faces、Java Messaging Service等技術(shù)。為了開(kāi)發(fā)和運(yùn)行J2EE和Java EE 6應(yīng)用程序,還需要一個(gè)J2EE/Java EE 6應(yīng)用服務(wù)器(application server)。任何人都可以實(shí)現(xiàn)一個(gè)J2EE/Java EE 6應(yīng)用服務(wù)器。這說(shuō)明市場(chǎng)上各種應(yīng)用服務(wù)器很容易獲取到,其中包括一些開(kāi)源的應(yīng)用服務(wù)器。下面列舉了一些J2EE/Java EE 6應(yīng)用服務(wù)器的例子:  Oracle公司的WebLogic(之前BEA的WebLogic)  IBM公司的WebSphere  Sun公司的Sun Java Application Server  Oracle公司的10g Application Server  GlassFish  JBoss  Jonas  Apache Geronimo  JBoss、GlassFish、Jonas以及Geronimo都是開(kāi)源的應(yīng)用服務(wù)器。不過(guò)它們有不同的許可要求,因此在決定使用這些產(chǎn)品之前,一定要確保先讀過(guò)許可內(nèi)容?! ava社區(qū)進(jìn)程程序  Java之所以能夠持續(xù)成為技術(shù)首選,有很大一部分要?dú)w功于Sun公司的策略,它允許其他行業(yè)的人士參與決定Java的未來(lái)。這使得很多人都覺(jué)得Java也屬于他們每一個(gè)人。許多大公司(如IBM、Oracle、Nokia、Fujitsu等)都大力投資Java,因?yàn)樗鼈円部梢詾槟骋环N技術(shù)提出一種規(guī)范,并將它們想要的技術(shù)放到Java技術(shù)的下一個(gè)版本中。這種協(xié)同工作正是采用了Java社區(qū)進(jìn)程(Java Community Process,JCP)程序的形式。它的網(wǎng)址是http://www.jcp.org。  由JCP程序提出的規(guī)范,就是大家所熟悉的Java Specification Requests(JSR)。例如JSR 336定義了Java SE 7?! ∶嫦?qū)ο缶幊谈攀觥 ∶嫦驅(qū)ο缶幊蹋∣bject-Oriented Programming,OOP)是根據(jù)真實(shí)的對(duì)象來(lái)構(gòu)建應(yīng)用程序模型而實(shí)現(xiàn)的。OOP的三個(gè)原則是封裝、繼承和多態(tài)?! OP的好處是實(shí)實(shí)在在的。這些正是大多數(shù)現(xiàn)代編程語(yǔ)言(包括Java),均是面向?qū)ο螅∣O)的原因所在。我甚至可以列舉為了支持OOP而做出的兩個(gè)著名的語(yǔ)言轉(zhuǎn)變:C語(yǔ)言演變成C++,Visual Basic更新成Visual Basic.NET?! ”竟?jié)將闡明OOP的優(yōu)勢(shì),并評(píng)估學(xué)習(xí)OOP的難易程度。  OOP的優(yōu)勢(shì)  OOP的優(yōu)勢(shì)包括代碼易維護(hù)、可重用,以及易擴(kuò)展。下面就詳細(xì)地介紹這些優(yōu)勢(shì)?! ?. 易維護(hù)?,F(xiàn)代的軟件應(yīng)用規(guī)模往往都十分巨大。以前,“大”系統(tǒng)包括幾千行代碼?,F(xiàn)在,即使有上百萬(wàn)行代碼也算不上大。C++之父Bjarne Stroustrup曾經(jīng)說(shuō)過(guò),當(dāng)一個(gè)系統(tǒng)變得越來(lái)越大時(shí),就會(huì)開(kāi)始給它的開(kāi)發(fā)者帶來(lái)很多問(wèn)題。一個(gè)小程序可以用任何語(yǔ)言以任何方式編寫(xiě)。如果你不輕易放棄,最終還是可以使它運(yùn)行起來(lái)。但大型的程序就是另一回事了。如果沒(méi)有采用“好的編程”方法,一邊修復(fù)錯(cuò)誤的同時(shí)會(huì)不斷出現(xiàn)新的錯(cuò)誤。  其原因在于,大型程序的不同部分之間是相互依賴(lài)的。當(dāng)在程序的某個(gè)部分中修改某些東西時(shí),可能不知道這個(gè)變化會(huì)對(duì)程序的其他部分造成什么樣的影響。OOP則可以很容易地使程序模塊化,這種模塊性大大減少了維護(hù)的問(wèn)題。在OOP中,模塊性是可以繼承的,因?yàn)轭?lèi)(對(duì)象的一個(gè)模板)本身就是一個(gè)模塊。好的設(shè)計(jì)應(yīng)該允許類(lèi)包含類(lèi)似的功能性和有關(guān)的數(shù)據(jù)。OOP中經(jīng)常用到的一個(gè)重要的相關(guān)術(shù)語(yǔ)是耦合,它表示兩個(gè)模塊之間的交互程度。不同部分之間的松耦合會(huì)使代碼更容易實(shí)現(xiàn)重用,這就是OOP的另一個(gè)好處。  2. 可重用??芍赜靡馕吨皩?xiě)好的代碼可以被代碼的創(chuàng)建者或需要該源代碼所提供功能的其他人重用。那么,OOP語(yǔ)言經(jīng)常提供一些預(yù)先設(shè)計(jì)好的類(lèi)庫(kù)也就不足為奇了。在Java中,它配套提供了幾百個(gè)類(lèi)庫(kù)或API(應(yīng)用編程接口),這些都是經(jīng)過(guò)精心設(shè)計(jì)和測(cè)試過(guò)的。編寫(xiě)和發(fā)布自己的類(lèi)庫(kù)時(shí)也非常容易。支持編程平臺(tái)中的可重用性,這是十分吸引人的,因?yàn)樗梢源蟠罂s短開(kāi)發(fā)時(shí)間?! ☆?lèi)可重用性的一大困難是,要為類(lèi)庫(kù)創(chuàng)建好的文檔。作為一名程序員,他要找到一個(gè)能夠?yàn)槠涮峁┧韫δ艿念?lèi)能有多快?是找一個(gè)這樣的類(lèi)快呢,還是從頭寫(xiě)一個(gè)新的類(lèi)更快?值得慶幸的是,Java核心和擴(kuò)展的API都提供了詳實(shí)的文檔?! 】芍赜眯圆粌H適用于重用類(lèi)和其他類(lèi)型的編碼階段;在OO系統(tǒng)中設(shè)計(jì)應(yīng)用程序時(shí),針對(duì)OO設(shè)計(jì)問(wèn)題的解決方案也可以重用。這些解決方案稱(chēng)做設(shè)計(jì)模式。為了便于引用各解決方案,每種模式都有一個(gè)名字。可重用設(shè)計(jì)模式的早期說(shuō)明請(qǐng)見(jiàn)經(jīng)典著作《Design Patterns:Elements of Reusable Object-Oriented Software》,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著?! ?. 可擴(kuò)展性。每一個(gè)應(yīng)用程序都是獨(dú)特的。它有自己的需求和規(guī)范。說(shuō)到可重用性,有時(shí)候你可能找不到現(xiàn)成的類(lèi)來(lái)為你提供應(yīng)用程序所需的精確功能。但是,你或許可以找到一兩個(gè)能夠提供部分功能的類(lèi)??蓴U(kuò)展性的意思是,你仍然可以使用那些類(lèi),方法是對(duì)它們進(jìn)行擴(kuò)展,使其滿(mǎn)足你的需要。這樣做你依然節(jié)省了時(shí)間,因?yàn)椴槐貜念^編寫(xiě)代碼?! ≡贠OP中,可擴(kuò)展性是通過(guò)繼承來(lái)實(shí)現(xiàn)的??梢詳U(kuò)展現(xiàn)成的類(lèi),對(duì)它添加一些方法或者數(shù)據(jù),或者修改不喜歡方法的行為。如果你知道某個(gè)基本功能將多次使用,但又不想讓類(lèi)提供太具體的功能,就可以提供一個(gè)泛型類(lèi),以后可以對(duì)它進(jìn)行擴(kuò)展,使它能夠提供特定于某個(gè)應(yīng)用程序的功能?! W(xué)習(xí)OOP很困難嗎  Java程序員必須掌握OOP。事實(shí)上,如果你使用過(guò)程語(yǔ)言(如C或者Pascal)編過(guò)程序,就會(huì)發(fā)現(xiàn)它們之間有很大的區(qū)別。這其中有好有壞?! ∠日f(shuō)壞的方面?! ⊙芯咳藛T一直在探討在學(xué)校里傳授OOP的最佳方法;有人認(rèn)為,最好在教O(píng)OP之前先教過(guò)程編程。我們看到有許多地方,都是在學(xué)生臨近大學(xué)畢業(yè)時(shí)才上OOP課程。  但是現(xiàn)在有越來(lái)越多的學(xué)生認(rèn)為,具備過(guò)程編程能力的人,在模式中的思維,與OO程序員看待和解決問(wèn)題的方式有很大的不同。當(dāng)需要學(xué)習(xí)OOP時(shí),他所面臨的最大困難是要克服模式轉(zhuǎn)換。據(jù)說(shuō),要經(jīng)過(guò)6~18個(gè)月才能將一個(gè)人的思維從過(guò)程模式轉(zhuǎn)換成面向?qū)ο蟮哪J?。另有研究表明,沒(méi)有學(xué)過(guò)過(guò)程編程的學(xué)生則不覺(jué)得OOP有多么難學(xué)。  接下來(lái)說(shuō)好的方面?! ava堪稱(chēng)最容易學(xué)習(xí)的OOP語(yǔ)言之一。例如,你不需要操心指針,不必浪費(fèi)寶貴的時(shí)間去解決因沒(méi)有銷(xiāo)毀不用的對(duì)象而導(dǎo)致的內(nèi)存泄漏等。此外,在它們?cè)缙诘陌姹局?,還提供了非常全面的類(lèi)庫(kù),并且bug相對(duì)要少得多。一旦掌握了OOP,用Java編程就變得非常容易了?! £P(guān)于本書(shū)  下面概述一下各章節(jié)的主要內(nèi)容:  第1章旨在讓讀者體驗(yàn)使用Java的感覺(jué)。其中包括編寫(xiě)一個(gè)簡(jiǎn)單的Java程序,利用javac工具對(duì)它進(jìn)行編譯,并利用java程序運(yùn)行它。此外,還提出了一些關(guān)于編碼規(guī)范和集成開(kāi)發(fā)環(huán)境的建議?! 〉?章講解Java語(yǔ)言的語(yǔ)法。該章將介紹字符集、基本類(lèi)型、變量、運(yùn)算符等話(huà)題。  第3章講解Java語(yǔ)句for、while、do-while、if、if-else、switch、break和continue。  第4章是本書(shū)中第一節(jié)關(guān)于OOP的課程。該章首先說(shuō)明什么是Java對(duì)象,以及它在內(nèi)存中是如何保存的。隨后繼續(xù)講解類(lèi)、類(lèi)成員,以及兩個(gè)OOP概念(抽象和封裝)。另外還簡(jiǎn)單地介紹了一些有關(guān)的主題,如垃圾回收和對(duì)象比較。  第5章涵蓋Java核心類(lèi)庫(kù)中重要的那些類(lèi):java.lang.Object、java.lang.String、java.lang.StringBuffer和java.lang.StringBuilder、包裝類(lèi),以及java.util.Scanner。這里面還介紹了裝箱/拆箱和可變參數(shù)。這是十分重要的一章,因?yàn)槠渲薪榻B的類(lèi)是Java中最常用的一部分類(lèi)?! 〉?章介紹一種能夠使代碼具有可擴(kuò)展性的OOP特性。該章教你如何擴(kuò)展類(lèi),改變子類(lèi)的可見(jiàn)性,覆蓋方法等?! 『翢o(wú)疑問(wèn),錯(cuò)誤處理是所有編程語(yǔ)言的一項(xiàng)重要特性。作為一種成熟的語(yǔ)言,Java具備十分強(qiáng)健的錯(cuò)誤處理機(jī)制,它可以有效地防止bug蔓延。第7章詳細(xì)介紹這一機(jī)制。  第8章講解在使用數(shù)字和日期時(shí)要處理的三個(gè)問(wèn)題:解析、格式化和操作。該章介紹可以幫助你完成這些任務(wù)的Java類(lèi)。  第9章說(shuō)明接口不僅僅是一個(gè)沒(méi)有實(shí)現(xiàn)的類(lèi),它還定義服務(wù)提供者和客戶(hù)端之間的契約。本章講解如何使用接口和抽象類(lèi)。  第10章主要講解枚舉,這是從Java 5開(kāi)始添加的一個(gè)類(lèi)型?! 〉?1章說(shuō)明如何利用java.util包中的成員,將對(duì)象進(jìn)行分組,并對(duì)它們進(jìn)行操作。  泛型是Java中非常重要的一項(xiàng)特性,第12章詳細(xì)解釋這一特性?! 〉?3章介紹流的概念,并闡述如何利用java.io包中的4個(gè)流類(lèi)型來(lái)執(zhí)行輸入/輸出操作。此外,還講解對(duì)象序列化和反序列化?! 〉?4章講解如何在一個(gè)類(lèi)的內(nèi)部編寫(xiě)另一個(gè)類(lèi),并說(shuō)明為什么這項(xiàng)OOP特性非常有用?! 〉?5章是本書(shū)中關(guān)于Swing的兩章之一,這是第一章。它簡(jiǎn)單地介紹AWT組件,并詳細(xì)介紹一些基礎(chǔ)的Swing組件?! 〉?6章是關(guān)于Swing的第二章。它介紹一些更高級(jí)的技術(shù),如布局管理、事件處理,以及Swing的外觀?! 《鄳B(tài)是OOP的重要利器之一。當(dāng)我們?cè)诰幾g中不知道對(duì)象的類(lèi)型時(shí),多態(tài)的作用尤其出乎我們的想象。第17章講解這一特性,并給出很好的范例。  第18章討論Java中的一項(xiàng)特性。它介紹JDK中配套的標(biāo)準(zhǔn)注解、一般注解、元注解,以及定制注解?! ∪缃?,軟件應(yīng)用程序可以部署到不同的國(guó)家和地區(qū),這是很平常的事。這些應(yīng)用程序切記要設(shè)計(jì)成國(guó)際化。第19章探討Java程序員可以使用的方法?! pplet是指可以在Web瀏覽器上運(yùn)行的小程序。第20章講解Applet的生命周期、安全性限制,以及JApplet?! 〉?1章介紹了網(wǎng)絡(luò)編程中使用的類(lèi)。這里用一個(gè)簡(jiǎn)單的Web服務(wù)器應(yīng)用程序來(lái)說(shuō)明如何使用這些類(lèi)。  訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)和操作數(shù)據(jù)是業(yè)務(wù)應(yīng)用程序中最重要的部分任務(wù)。數(shù)據(jù)庫(kù)服務(wù)器種類(lèi)繁多,訪(fǎng)問(wèn)不同的數(shù)據(jù)庫(kù)需要不同的技能。值得Java程序員感到慶幸的是,JDBC(Java Database Connectivity)技術(shù)為訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)提供了統(tǒng)一的方法。JDBC將在第22章討論?! 【€(xiàn)程是指操作系統(tǒng)分配處理器時(shí)間的一個(gè)基本處理單元,在一個(gè)進(jìn)程里面可以有不止一個(gè)線(xiàn)程在執(zhí)行代碼。第23章說(shuō)明在Java中多線(xiàn)程編程并不是只有專(zhuān)家級(jí)程序員才能做到?! 〉?4章是本書(shū)中關(guān)于多線(xiàn)程編程的第二章。這里介紹了能使多線(xiàn)程編程變得更加容易的接口和類(lèi)?! 〉?5章講解Java應(yīng)用程序的用戶(hù)可以如何限制運(yùn)行Java應(yīng)用程序,以及可以如何利用加密術(shù)來(lái)保護(hù)應(yīng)用程序和數(shù)據(jù)的安全?! 〉?6章探討Servlet技術(shù)和Servlet API,并舉了幾個(gè)例子?! 〉?7章介紹另一種Web開(kāi)發(fā)技術(shù),并講解如何編寫(xiě)JSP頁(yè)面?! 〉?8章介紹javadoc工具,Java程序員可以用它為API產(chǎn)生文檔。  第29章介紹Java Web Start,以及如何用它將Java應(yīng)用程序部署到互聯(lián)網(wǎng)、局域網(wǎng),甚至如何從CD進(jìn)行部署?! 「戒汚、附錄B和附錄C分別介紹javac、java和jar工具?! 「戒汥和附錄E分別簡(jiǎn)要地講解NetBeans和Eclipse開(kāi)發(fā)工具。

內(nèi)容概要

  本書(shū)由全球資深Java技術(shù)專(zhuān)家、高級(jí)Java企業(yè)級(jí)應(yīng)用架構(gòu)師、《How Tomcat
Works》作者親自執(zhí)筆,權(quán)威性毋庸置疑。它以最新的Java
7為基礎(chǔ),全面講解了Java編程語(yǔ)言、Java面向?qū)ο蠹夹g(shù)和Java核心類(lèi)庫(kù)三大主題,包含大量案例,是系統(tǒng)學(xué)習(xí)Java
7程序設(shè)計(jì)的Bible級(jí)著作。本書(shū)是Java SE 7程序設(shè)計(jì)全面、系統(tǒng)的教程,涵蓋Java編程語(yǔ)言、Java
OOP和Java核心類(lèi)庫(kù)3大主題。本書(shū)首先介紹了Java
7的語(yǔ)法、語(yǔ)句、對(duì)象和類(lèi)、核心類(lèi)、繼承、錯(cuò)誤處理等基礎(chǔ)知識(shí),幫助讀者快速入門(mén)Java
7;然后深入解析了接口和抽象類(lèi)、枚舉、集合框架、泛型、輸入輸出、嵌套類(lèi)和內(nèi)部類(lèi)等內(nèi)容,掌握這部分內(nèi)容有助于深入理解Java的底層原理;接著闡述Swing的基礎(chǔ)和高級(jí)知識(shí)、多態(tài)、注解、國(guó)際化、Java網(wǎng)絡(luò)、JDBC、Java線(xiàn)程、并發(fā)工具、安全、Java
Web應(yīng)用程序、JavaServer Pages、Javadoc,以及應(yīng)用程序部署等內(nèi)容,掌握這部分內(nèi)容有助于提升編程技能。

作者簡(jiǎn)介

  Budi Kurniawan
資深Java技術(shù)專(zhuān)家和Java企業(yè)級(jí)應(yīng)用架構(gòu)師,是軟件咨詢(xún)和技術(shù)出版公司Brainy
Software的創(chuàng)始人,經(jīng)驗(yàn)十分豐富。他還是一位經(jīng)驗(yàn)豐富的技術(shù)作家,撰寫(xiě)了深入揭示Tomcat工作原理和設(shè)計(jì)理念的名著《How
Tomcat Works》(中文名稱(chēng):《深入剖析Tomcat》,機(jī)械工業(yè)出版社出版)和《Struts Design and
Programming》,并在多種權(quán)威出版物上發(fā)表過(guò)100多篇文章。

書(shū)籍目錄

譯者序
前 言
第1章 初識(shí)Java
1.1 第一個(gè)Java程序
1.1.1 編寫(xiě)Java程序
1.1.2 編譯Java程序
1.1.3 運(yùn)行Java程序
1.2 Java編碼規(guī)范
1.3 集成開(kāi)發(fā)環(huán)境(IDE)
1.4 小結(jié)
習(xí)題
第2章 語(yǔ)言基礎(chǔ)
2.1 ASCII和Unicode
2.2 分隔符
2.3 基本類(lèi)型
2.4 變量
2.5 常量
2.6 字面量
2.6.1 整數(shù)字面量
2.6.2 浮點(diǎn)字面量
2.6.3 布爾字面量
2.6.4 字符字面量
2.7 基本類(lèi)型轉(zhuǎn)換
2.7.1 擴(kuò)大轉(zhuǎn)換
2.7.2 縮小轉(zhuǎn)換
2.8 操作符
2.8.1 一元操作符
2.8.2 算術(shù)操作符
2.9 注解
2.10 小結(jié)
習(xí)題
第3章 語(yǔ)句
3.1 Java語(yǔ)句概述
3.2 if語(yǔ)句
3.3 while語(yǔ)句
3.4 do-while語(yǔ)句
3.5 for語(yǔ)句
3.6 break語(yǔ)句
3.7 continue語(yǔ)句
3.8 switch語(yǔ)句
3.9 小結(jié)
習(xí)題
第4章 對(duì)象和類(lèi)
4.1 什么是Java對(duì)象
4.2 Java類(lèi)
4.2.1 域
4.2.2 方法
4.2.3 UML類(lèi)圖中的類(lèi)成員
4.3 創(chuàng)建對(duì)象
4.4 關(guān)鍵字null
4.5 內(nèi)存中的對(duì)象
4.6 Java包
4.7 封裝和訪(fǎng)問(wèn)控制
4.7.1 類(lèi)訪(fǎng)問(wèn)控制修飾符
4.7.2 類(lèi)成員訪(fǎng)問(wèn)控制修飾符
4.8 關(guān)鍵字this
4.9 使用其他類(lèi)
4.10 final變量
4.11 靜態(tài)成員
4.12 靜態(tài)final變量
4.13 靜態(tài)導(dǎo)入
4.14 變量作用域
4.15 方法重載
4.16 賦值傳遞還是引用傳遞
4.17 加載、鏈接和初始化
4.17.1 加載
4.17.2 鏈接
4.17.3 初始化
4.18 對(duì)象創(chuàng)建初始化
4.19 對(duì)象的比較
4.20 垃圾回收器
4.21 小結(jié)
習(xí)題
第5章 核心類(lèi)
5.1 java.lang.Object
5.2 java.lang.String
5.2.1 比較兩個(gè)String對(duì)象
5.2.2 字符串字面量
5.2.3 字符轉(zhuǎn)義
5.2.4 switch中的String
5.2.5 String類(lèi)的構(gòu)造器
5.2.6 String類(lèi)的方法
5.3 java.lang.StringBuffer和java.lang.StringBuilder
5.3.1 StringBuilder類(lèi)的構(gòu)造器
5.3.2 StringBuilder類(lèi)的方法
5.4 基本類(lèi)型包裝
5.4.1 java.lang.Integer
5.4.2 java.lang.Boolean
5.4.3 java.lang.Character
5.5 數(shù)組
5.5.1 迭代數(shù)組
5.5.2 修改數(shù)組大小
5.5.3 將String數(shù)組傳遞給main
5.6 java.lang.Class
5.7 java.lang.System
5.8 java.util.Scanner
5.9 裝箱和拆箱
5.10 可變參數(shù)
5.11 格式和printf方法
5.12 小結(jié)
習(xí)題
第6章 繼承
6.1 繼承概述
6.1.1 關(guān)鍵字extends
6.1.2 is-a關(guān)系
6.2 可訪(fǎng)問(wèn)性
6.3 方法覆蓋
6.4 調(diào)用超類(lèi)的構(gòu)造器
6.5 調(diào)用超類(lèi)的隱藏成員
6.6 類(lèi)型轉(zhuǎn)換
6.7 Final類(lèi)
6.8 關(guān)鍵字instanceof
6.9 小結(jié)
習(xí)題
第7章 錯(cuò)誤處理
7.1 捕捉異常
7.2 沒(méi)有catch的try
7.3 捕捉多個(gè)異常
7.4 try-with-resources語(yǔ)句
7.5 java.lang.Exception類(lèi)
7.6 從方法拋出異常
7.7 用戶(hù)自定義的異常
7.8 異常處理總結(jié)
7.9 小結(jié)
習(xí)題
第8章 數(shù)字和日期
8.1 數(shù)字解析
8.2 數(shù)字格式化
8.3 用java.text.NumberFormat解析數(shù)字
8.4 java.lang.Math類(lèi)
8.5 java.util.Date類(lèi)
8.6 java.util.Calendar類(lèi)
8.7 用DateFormat進(jìn)行日期解析和格式化
8.7.1 DateFormat
8.7.2 SimpleDateFormat
8.8 小結(jié)
習(xí)題
第9章 接口和抽象類(lèi)
9.1 接口的概念
9.2 從技術(shù)角度看接口
9.2.1 接口中的域
9.2.2 方法
9.3 基類(lèi)
9.4 抽象類(lèi)
9.5 小結(jié)
習(xí)題
第10章 枚舉
10.1 枚舉概述
10.2 類(lèi)中的枚舉
10.3 java.lang.Enum類(lèi)
10.4 迭代枚舉值
10.5 枚舉在switch中的應(yīng)用
10.6 小結(jié)
習(xí)題
第11章 集合框架
11.1 集合框架概述
11.2 Collection接口
11.3 List和ArrayList
11.4 用Iterator和for迭代集合
11.5 Set和HashSet
11.6 Queue和LinkedList
11.7 集合轉(zhuǎn)換
11.8 Map和HashMap
11.9 對(duì)象比較和排序
11.9.1 使用java.lang.Comparable
11.9.2 使用Comparable和Comparator
11.10 小結(jié)
習(xí)題
第12章 泛型
12.1 沒(méi)有泛型的生活
12.2 泛型類(lèi)型簡(jiǎn)介
12.3 使用沒(méi)有類(lèi)型參數(shù)的泛型類(lèi)型
12.4 使用“·”通配符
12.5 在方法中使用有界通配符
12.6 編寫(xiě)泛型類(lèi)型
12.7 小結(jié)
習(xí)題
第13章 輸入/輸出
13.1 文件系統(tǒng)和路徑
13.2 文件和目錄的處理及操作
13.2.1 創(chuàng)建和刪除文件及目錄
13.2.2 獲取目錄的對(duì)象
13.3.3 復(fù)制和移動(dòng)文件
13.2.4 文件讀取和寫(xiě)入
13.3 輸入/輸出流
13.4 讀取二進(jìn)制數(shù)據(jù)
13.5 寫(xiě)入二進(jìn)制數(shù)據(jù)
13.6 寫(xiě)入文本(字符)
13.6.1 Writer
13.6.2 OutputStreamWriter
13.6.3 PrintWriter
13.7 讀取文本(字符)
13.7.1 Reader
13.7.2 InputStreamReader
13.7.3 BufferedReader
13.8 用PrintStream記錄日志
13.9 隨機(jī)訪(fǎng)問(wèn)文件
13.10 對(duì)象序列化
13.11 小結(jié)
習(xí)題
第14章 嵌套類(lèi)和內(nèi)部類(lèi)
14.1 嵌套類(lèi)概述
14.2 靜態(tài)的嵌套類(lèi)
14.3 成員內(nèi)部類(lèi)
14.4 局部?jī)?nèi)部類(lèi)
14.5 匿名內(nèi)部類(lèi)
14.6 深入嵌套類(lèi)和內(nèi)部類(lèi)
14.7 小結(jié)
習(xí)題
第15章 Swing基礎(chǔ)知識(shí)
15.1 AWT組件
15.2 有用的AWT類(lèi)
15.2.1 java.awt.Color
15.2.2 java.awt.Font
15.2.3 java.awt.Point
15.2.4 java.awt.Dimension
15.2.5 java.awt.Rectangle
15.2.6 java.awt.Graphics
15.2.7 java.awt.Toolkit
15.3 基礎(chǔ)的Swing組件
15.3.1 JFrame
15.3.2 調(diào)整尺寸和定位
15.3.3 擴(kuò)展JFrame
15.3.4 JComponent
15.3.5 Icon和ImageIcon
15.3.6 JLabel
15.3.7 JButton
15.3.8 JTextField和JPasswordField
15.3.9 JTextArea
15.3.10 JCheckbox
15.3.11 JRadioButton
15.3.12 JList
15.3.13 JComboBox
15.3.14 JDialog
15.3.15 JOptionPane
15.3.16 JFileChooser
15.4 小結(jié)
習(xí)題
第16章 Swing高級(jí)知識(shí)
16.1 布局管理器
16.1.1 BorderLayout
16.1.2 FlowLayout
16.1.3 BoxLayout
16.1.4 GridLayout
16.1.5 不用LayoutManager
16.2 事件處理
16.2.1 Java事件模型
16.2.2 Swing事件處理
16.2.3 AWT事件API
16.3 使用菜單
16.4 外觀
16.5 快速啟動(dòng)畫(huà)面
16.6 系統(tǒng)托盤(pán)支持
16.7 桌面助手應(yīng)用程序
16.8 小結(jié)
習(xí)題
第17章 多態(tài)
17.1 定義多態(tài)
17.2 多態(tài)實(shí)戰(zhàn)
17.3 繪圖應(yīng)用程序中的多態(tài)
17.4 多態(tài)和反射
17.5 小結(jié)
習(xí)題
第18章 注解
18.1 注解概述
18.1.1 注解和注解類(lèi)型
18.1.2 注解語(yǔ)法
18.1.3 注解接口
18.2 標(biāo)準(zhǔn)注解
18.2.1 Override
18.2.2 Deprecated
18.2.3 SuppressWarnings
18.3 一般注解
18.4 標(biāo)準(zhǔn)元注解
18.4.1 Documented
18.4.2 Inherited
18.4.3 Retention
18.4.4 Target
18.5 定制注解類(lèi)型
18.5.1 編寫(xiě)自己的定制注解類(lèi)型
18.5.2 使用定制注解類(lèi)型
18.5.3 用反射查詢(xún)注解
18.6 小結(jié)
習(xí)題
第19章 國(guó)際化
19.1 Locale
19.2 應(yīng)用程序國(guó)際化
19.2.1 將文本組件單獨(dú)放進(jìn)屬性文件
19.2.2 用ResourceBundle讀取屬性文件
19.3 將Swing應(yīng)用程序國(guó)際化
19.4 小結(jié)
習(xí)題
第20章 Applet
20.1 Applet歷史簡(jiǎn)介
20.2 Applet API
20.2.1 Applet類(lèi)
20.2.2 AppletContext接口
20.2.3 AudioClip接口
20.2.4 AppletStub接口
20.3 安全限制
20.4 編寫(xiě)和部署applet
20.5 AppletViewer工作原理
20.6 將參數(shù)傳遞給Applet
20.7 SoundPlayerApplet
20.8 JApplet
20.9 在JAR文件中部署Applet
20.10 更快速加載
20.11 小結(jié)
習(xí)題
第21章 Java網(wǎng)絡(luò)
21.1 網(wǎng)絡(luò)概述
21.2 超文本轉(zhuǎn)移協(xié)議(HTTP)
21.2.1 HTTP請(qǐng)求
21.2.2 HTTP響應(yīng)
21.3 java.net.URL
21.3.1 解析URL
21.3.2 讀取Web資源
21.4 java.net.URLConnection
21.4.1 讀取Web資源
21.4.2 把數(shù)據(jù)寫(xiě)入Web服務(wù)器
21.5 java.net.Socket
21.6 java.net.ServerSocket
21.7 一個(gè)Web服務(wù)器應(yīng)用程序
21.7.1 HttpServer類(lèi)
21.7.2 Request類(lèi)
21.7.3 Response類(lèi)
21.7.4 運(yùn)行應(yīng)用程序
21.8 小結(jié)
習(xí)題
第22章 JDBC
22.1 JDBC簡(jiǎn)介
22.2 數(shù)據(jù)訪(fǎng)問(wèn)的4個(gè)步驟
22.2.1 加載JDBC驅(qū)動(dòng)程序
22.2.2 獲得數(shù)據(jù)庫(kù)連接
22.2.3 創(chuàng)建Statement對(duì)象
22.2.4 創(chuàng)建一個(gè)ResultSet對(duì)象
22.3 關(guān)閉JDBC對(duì)象
22.4 讀取元數(shù)據(jù)
22.5 SQLTool示例
22.6 小結(jié)
習(xí)題
第23章 Java線(xiàn)程
23.1 Java線(xiàn)程簡(jiǎn)介
23.2 創(chuàng)建線(xiàn)程
23.2.1 擴(kuò)展線(xiàn)程
23.2.2 實(shí)現(xiàn)Runnable接口
23.3 使用多線(xiàn)程
23.4 線(xiàn)程優(yōu)先級(jí)
23.5 停止線(xiàn)程
23.6 同步
23.6.1 線(xiàn)程沖突
23.6.2 方法同步
23.6.3 塊同步
23.7 可見(jiàn)性
23.8 線(xiàn)程協(xié)調(diào)
23.9 使用Timer
23.10 Swing Timer
23.11 小結(jié)
習(xí)題
第24章 并發(fā)工具
24.1 原子變量
24.2 Executor和ExecutorService
24.3 Callable和Future
24.4 Swing Worker
24.5 鎖
24.6 小結(jié)
習(xí)題
第25章 安全
25.1 Java安全概述
25.2 使用安全管理器
25.3 策略文件
25.3.1 keystore
25.3.2 grant
25.4 權(quán)限
25.4.1 java.io.FilePermission
25.4.2 java.security.BasicPermission
25.4.3 java.util.PropertyPermission
25.4.4 java.net.SocketPermission
25.4.5 java.security.Unresolved-Permission
25.4.6 java.lang.RuntimePermission
25.4.7 java.awt.AWTPermission
25.4.8 java.net.NetPermission
25.4.9 java.lang.reflect.Reflect-Permission
25.4.10 java.io.Serializable-Permission
25.4.11 java.security.Security-Permission
25.4.12 java.security.AllPermission
25.4.13 javax.security.auth.Auth-Permission
25.5 使用Policy Tool
25.6 Applet安全
25.7 安全編程
25.8 加密概述
25.8.1 加密/解密
25.8.2 驗(yàn)證
25.8.3 數(shù)據(jù)完整性
25.8.4 SSL工作原理
25.9 創(chuàng)建證書(shū)
25.10 KeyTool程序
25.10.1 生成配對(duì)的密鑰
25.10.2 進(jìn)行認(rèn)證
25.10.3 將證書(shū)導(dǎo)入密鑰庫(kù)
25.10.4 從密鑰庫(kù)中導(dǎo)出證書(shū)
25.10.5 列出密鑰庫(kù)條目
25.11 JarSigner工具
25.11.1 簽署JAR文件
25.11.2 驗(yàn)證已簽署的JAR文件
25.11.3 范例:簽署一個(gè)Applet
25.12 Java Cryptography API
25.13 小結(jié)
習(xí)題
第26章 Java Web應(yīng)用程序
26.1 Servlet應(yīng)用程序架構(gòu)
26.2 Servlet API概述
26.3 Servlet
26.4 編寫(xiě)基礎(chǔ)的Servlet應(yīng)用程序
26.4.1 安裝Tomcat
26.4.2 編寫(xiě)和編譯Servlet類(lèi)
26.4.3 應(yīng)用程序目錄結(jié)構(gòu)
26.4.4 訪(fǎng)問(wèn)Servlet
26.5 ServletRequest
26.6 ServletResponse
26.7 ServletConfig
26.8 ServletContext
26.9 GenericServlet
26.10 HTTP Servlet
26.10.1 HttpServlet
26.10.2 HttpServletRequest
26.10.3 HttpServletResponse
26.10.4 編寫(xiě)一個(gè)Http Servlet
26.11 使用部署描述符
26.12 小結(jié)
習(xí)題
第27章 JavaServer Pages
27.1 JSP概述
27.2 jspInit、jspDestroy及其他方法
27.3 隱式對(duì)象
27.4 JSP語(yǔ)法元素
27.4.1 指令
27.4.2 腳本元素
27.5 處理錯(cuò)誤
27.6 小結(jié)
習(xí)題
第28章 Javadoc
28.1 在Java類(lèi)中編寫(xiě)文檔
28.1.1 @author
28.1.2 {@code}
28.1.3 {@docRoot}
28.1.4 @deprecated
28.1.5 @exception
28.1.6 {@inheritDoc}
28.1.7 {@link}
28.1.8 {@linkplain}
28.1.9 {@literal}
28.1.10 @param
28.1.11 @return
28.1.12 @see
28.1.13 @serial
28.1.14 @serialData
28.1.15 @serialField
28.1.16 @since
28.1.17 @throws
28.1.18 {@value}
28.1.19 @version
28.2 Javadoc語(yǔ)法
28.2.1 Javadoc選項(xiàng)
28.2.2 標(biāo)準(zhǔn)Doclet選項(xiàng)
28.2.3 生成文檔
28.3 小結(jié)
習(xí)題
第29章 應(yīng)用程序部署
29.1 JWS概述
29.2 JNLP文件語(yǔ)法
29.2.1 jnlp元素
29.2.2 information元素
29.2.3 security元素
29.2.4 resources元素
29.2.5 application-desc元素
29.2.6 applet-desc元素
29.3 部署范例
29.4 安全關(guān)注點(diǎn)
29.5 小結(jié)
習(xí)題
附錄A javac
附錄B java
附錄C jar
附錄D NetBeans
附錄E Eclipse

章節(jié)摘錄

  第1章  初識(shí)Java  開(kāi)發(fā)Java程序包括編寫(xiě)代碼,將它編譯成字節(jié)碼,然后運(yùn)行這些字節(jié)碼。這是Java程序員在職業(yè)生涯中要不斷重復(fù)的過(guò)程,因此,這個(gè)過(guò)程的舒適度就顯得尤為重要。本章的主要目的就是讓你體驗(yàn)一下用Java進(jìn)行軟件開(kāi)發(fā)的過(guò)程?! 【帉?xiě)出來(lái)的代碼不僅需要能夠運(yùn)行,更重要的是還要易于閱讀和維護(hù),因此,本章將先介紹Java編碼規(guī)范。此外,由于明智的開(kāi)發(fā)者將會(huì)選擇使用集成開(kāi)發(fā)環(huán)境(IDE)來(lái)簡(jiǎn)化他們的工作,因此本章最后一節(jié)將會(huì)介紹Java IDE?! ?.1 第一個(gè)Java程序  本節(jié)將重點(diǎn)介紹Java開(kāi)發(fā)的步驟:編寫(xiě)程序,將它編譯成字節(jié)碼,然后運(yùn)行字節(jié)碼?! ?.1.1 編寫(xiě)Java程序  你可以利用任何一種文本編輯器來(lái)編寫(xiě)Java程序。打開(kāi)一個(gè)文本編輯器,并輸入代碼清單1.1中的代碼。當(dāng)然,如果你已經(jīng)下載了本書(shū)配套的程序范例,那么只需將它復(fù)制到你的文本編輯器中即可?! 〈a清單1.1 一個(gè)簡(jiǎn)單的Java程序  就目前而言,我們只需要將Java代碼放在一個(gè)類(lèi)中即可,并確保將代碼清單1.1中的代碼另存為MyFirstJava.java文件。所有Java源文件都必須用java作為擴(kuò)展名?! ?.1.2 編譯Java程序  我們使用javac工具來(lái)編譯Java程序,它在JDK安裝目錄下的bin目錄中。假如在電腦中已經(jīng)設(shè)置好了PATH環(huán)境變量(如果還沒(méi)有設(shè)置,請(qǐng)查閱“引言”中的“下載和安裝Java”),那么就可以從任何目錄下調(diào)用javac?,F(xiàn)在用以下的操作來(lái)編譯代碼清單1.1中的MyFirstJava類(lèi):  1)打開(kāi)一個(gè)命令提示符窗口,并將目錄切換到MyFirstProgram.java文件所在的目錄?! ?)輸入以下命令:javac MyFirstJava.java  如果一切順利,javac會(huì)在當(dāng)前工作目錄下創(chuàng)建一個(gè)名為MyFirstJava.class的文件?! √崾尽⊥ㄟ^(guò)指定選項(xiàng),可以使用javac工具提供的更多的特性。例如,可以指定將新生成的類(lèi)文件放置的在什么位置。關(guān)于javac工具使用方法的詳細(xì)介紹,請(qǐng)參見(jiàn)附錄A?! ?.1.3 運(yùn)行Java程序  我們使用JDK的java工具來(lái)運(yùn)行Java程序。當(dāng)然,只有添加了PATH環(huán)境變量,才能夠從任何目錄下調(diào)用java指令。在上述命令窗口的路徑后輸入以下代碼,并按回車(chē)鍵:java MyFirstJava  注意,在運(yùn)行Java程序時(shí),不需要包含class擴(kuò)展名?! ∵@時(shí),就可以在控制臺(tái)中看到以下代碼:Java rocks.  恭喜!你已經(jīng)成功地編寫(xiě)了第一個(gè)Java程序!由于本章的唯一目的就是讓你親身體驗(yàn)編寫(xiě)和編譯的過(guò)程,因此將不在此解釋這個(gè)程序的工作原理?! ∧氵€可以給Java程序傳遞參數(shù)。例如,要傳遞給Calculator類(lèi)兩個(gè)參數(shù),可以這樣寫(xiě):  java Calculator arg-1 arg-2  這里的arg-1是第一個(gè)參數(shù),arg-2是第二個(gè)參數(shù)。你想傳遞多少個(gè)參數(shù)都可以,java工具會(huì)將這些參數(shù)作為一個(gè)字符串?dāng)?shù)組提供給要運(yùn)行的Java程序。第5章將教你使用參數(shù)?! √崾荆簀ava工具是一個(gè)高級(jí)程序,它也提供了很多配置選項(xiàng)。例如,可以設(shè)置要分配給它的內(nèi)存大小。這些選項(xiàng)的解釋請(qǐng)參見(jiàn)附錄B。  提示:java工具還可以用來(lái)運(yùn)行打包在jar文件中的Java類(lèi)。詳情請(qǐng)參見(jiàn)附錄C中的C.4節(jié)?! ?hellip;…

編輯推薦

  ·全球資深Jvava技術(shù)專(zhuān)家、《How Tomcat Works》作者最新力作!  ·基于最新Java 7,全面講解Java編程語(yǔ)言、Java面向?qū)ο蠹夹g(shù)和Java核心類(lèi)庫(kù)三大主題,為系統(tǒng)學(xué)習(xí)Java 7程序設(shè)計(jì)提供絕佳指導(dǎo)。

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    Java 7程序設(shè)計(jì) PDF格式下載


用戶(hù)評(píng)論 (總計(jì)0條)

 
 

 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7