David Carlson著,張欣譯,《Eclipse精粹》,北京:機(jī)械工業(yè)出版社,2006.2
應(yīng)該說(shuō)機(jī)械工業(yè)社又為大家提供了一本好書(shū),不過(guò)這本書(shū)更像是Eclipse的學(xué)習(xí)手冊(cè),使你充分了解Eclipse這個(gè)快速便捷的開(kāi)發(fā)工具,“工要善其事,必先利其器”,熟悉你的“武器”是件非常重要的事情,但是看過(guò)一次之后,下次再打開(kāi)可能是許多天之后了。因?yàn)樵S多用法只有在開(kāi)發(fā)過(guò)程中體會(huì)了,才會(huì)感受到好處,還有的需要在開(kāi)發(fā)中體會(huì)那種使用的尺度和感覺(jué),因此我最開(kāi)始沒(méi)覺(jué)得這是本好書(shū)。為什么會(huì)被大力推薦也一直不太明白,可能外國(guó)人與我的思維方式不同吧。但是,后來(lái)在還書(shū)之前又仔細(xì)看了一遍,覺(jué)得里面許多精粹的東西還是值得記錄下來(lái),于是就有了這篇學(xué)習(xí)筆記,希望通過(guò)簡(jiǎn)單地閱讀學(xué)習(xí)筆記可以對(duì)Eclipse和精粹這本書(shū)有所了解,如果覺(jué)得瀏覽過(guò)筆記后意猶未盡可以去圖書(shū)館借來(lái)看,對(duì)于我們窮書(shū)生這個(gè)不在我推薦購(gòu)買的行列,不過(guò)有錢的兄弟姐妹還是希望支持一下作者,因?yàn)檫@本書(shū)的內(nèi)容還是值得一讀。
讀書(shū)筆記中包含有原著中的內(nèi)容,如果作者認(rèn)為侵犯了對(duì)方的權(quán)益請(qǐng)與我聯(lián)系,我會(huì)將之刪除。
第一章 Java IDE及其他
1.1 Eclipse平臺(tái)體系結(jié)構(gòu)
Eclipse是用于創(chuàng)建和部署插件的開(kāi)發(fā)和運(yùn)行環(huán)境的一種抽象視圖。
Eclipse是靈活的、可擴(kuò)展的集成開(kāi)發(fā)環(huán)境(IDE)。
Eclipse IDE的特點(diǎn):
×多平臺(tái)。Windows,Linux(motif和GTK),Solaris,AIX,HP-UX和Mac OSX。
×多語(yǔ)言。采用Java語(yǔ)言開(kāi)發(fā),支持Java、C/C++和Cobol編寫應(yīng)用程序,還支持Python、Perl、PHP和其他語(yǔ)言。插件必須用Java編寫。
×多角色。支持建模、測(cè)試、編寫程序和網(wǎng)頁(yè)及許多其他角色。
1.1.1 Eclipse運(yùn)行時(shí)平臺(tái)
核心運(yùn)行平臺(tái)提供如下最基本的服務(wù):
×插件注冊(cè)。裝載插件并管理可用插件的注冊(cè)表信息。
×資源。管理操作系統(tǒng)文件和文件夾的獨(dú)立于平臺(tái)的容器,包括鏈接資源的位置。
×UI組件。用戶界面組件是以SWT和JFace庫(kù)為基礎(chǔ)。
×更新工具。對(duì)安裝和更新來(lái)自URL可建起位置的插件具有內(nèi)置的支持。
×幫助工具。共享一個(gè)通用的幫助工具。
Java開(kāi)發(fā)工具(JDT)是Eclipse SDK中唯一的程序設(shè)計(jì)語(yǔ)言插件。基本功能:編輯器,大綱,內(nèi)容助手,模板,模式程序,Java視圖,項(xiàng)目配置,調(diào)試器。
C/C++開(kāi)發(fā)工具(C/C++ Development Tools,CDT)是Eclipse平臺(tái)的C/C++開(kāi)發(fā)工具。目前只能用于Linux平臺(tái)。
插件開(kāi)發(fā)環(huán)境(PDE)提供的工具可以自動(dòng)化插件的創(chuàng)建、操作、調(diào)試和部署操作,是Eclipse SDK的一部分。
Web工具平臺(tái)(Web Tools Platform,WTP)由Eclipse委員會(huì)由2004年6月正式批準(zhǔn),吸收了來(lái)自IBM和Object Web的開(kāi)源代碼。
Web標(biāo)準(zhǔn)工具(Web Standard Tools,WST)子項(xiàng)目為啟用Web的應(yīng)用程序提供一般的基礎(chǔ)構(gòu)造。提供的工具:標(biāo)準(zhǔn)語(yǔ)言(HTML/XHTML/XML...),編輯器(支持標(biāo)準(zhǔn)語(yǔ)言),驗(yàn)證器,服務(wù)器發(fā)布(多個(gè)目標(biāo)服務(wù)器上啟動(dòng)、停止、發(fā)布和運(yùn)行應(yīng)用程序命令和窗口)。
J2EE標(biāo)準(zhǔn)工具子項(xiàng)目為J2EE應(yīng)用服務(wù)器開(kāi)發(fā)基于J2EE 1.4規(guī)范的應(yīng)用程序提供了公用的基礎(chǔ)構(gòu)造。提供的工具:J2EE工具(EJB、Servlet、JSP、JCA、JDBC、JTA、JMS、JMX、JNDI和Web Services),JSP編輯器,JSP重構(gòu)工具,搜索工具,語(yǔ)法對(duì)比。
1.1.3 多功能客戶平臺(tái)
Eclipse多功能客戶平臺(tái)(Rich Client Platform,RCP)的著名之處在于它不能做什么,而不是能做什么。只能用于構(gòu)造任何客戶應(yīng)用程序。基礎(chǔ)仍然是動(dòng)態(tài)插件模型,UI是用同樣的工具箱和擴(kuò)展點(diǎn)構(gòu)造的。
1.2. 其他Eclipse項(xiàng)目
×圖形編輯器框架(GEF)。用已有的應(yīng)用程序模型創(chuàng)建多功能圖形編輯器。
×Eclipse建模框架(EMF)。用于構(gòu)造工具和其他基于結(jié)構(gòu)化數(shù)據(jù)模型的應(yīng)用程序的建模框架和代碼生成工具。
×可視化編輯器(VE)。創(chuàng)建GUI構(gòu)造程序的框架,包括Swing/JFC和SWT GUI構(gòu)造程序的引用實(shí)現(xiàn)。
×UML 2.實(shí)現(xiàn)了UML 2.0元模型,支持建模工具的開(kāi)發(fā),支持通用的XML模式以簡(jiǎn)化語(yǔ)義模型的交互,支持測(cè)試用例以用作驗(yàn)證規(guī)約的方式,還支持驗(yàn)證規(guī)則以用作定義兼容性并對(duì)其強(qiáng)制分層的方式。
×XML模式信息集(XSD)。檢驗(yàn)、創(chuàng)建或修改XML械(單獨(dú)的或像XForms和WSDL文檔這樣的工具的一部分)的代碼的引用庫(kù)。XSD是獨(dú)立的技術(shù)子項(xiàng)目,通常作為EMF的一部分下載。
×服務(wù)數(shù)據(jù)對(duì)象(SDO)。簡(jiǎn)化和統(tǒng)一面向服務(wù)體系結(jié)構(gòu)(SOA)中的數(shù)據(jù)應(yīng)用程序開(kāi)發(fā)的框架。
×Eclipse測(cè)試和性能分析。用于整個(gè)開(kāi)發(fā)周期(如測(cè)試、跟蹤/配置、調(diào)整、記錄、監(jiān)控、分析、自治和管理)使用的測(cè)試和性能分析工具的框架和服務(wù)。
×商業(yè)智能和制表工具(BIRT)。用于在公司內(nèi)設(shè)計(jì)、部署、生成和閱讀報(bào)表的基礎(chǔ)結(jié)構(gòu)和工具。
1.5 精粹
×Eclipse平臺(tái)的功能體系結(jié)構(gòu)由構(gòu)造模塊構(gòu)成,它們能給核心的運(yùn)行時(shí)平臺(tái)添加新特性。有幾百個(gè)Eclipse子項(xiàng)目和獨(dú)立的開(kāi)源產(chǎn)品或商業(yè)產(chǎn)品構(gòu)造在這個(gè)平臺(tái)之上。
×提供了一般的IDE支持,這個(gè)IDE可針對(duì)Java、C/C++、Web工具和其他開(kāi)發(fā)活動(dòng)進(jìn)行專用化。一般的IDE是一個(gè)面向小組的工作平臺(tái),支持多視圖、窗口、搜索工具、調(diào)試等操作。
×Java開(kāi)發(fā)工具(JDT)為配置Java項(xiàng)目提供了支持,為編輯和調(diào)試操作提供了多功能環(huán)境。
×從Eclipse的Web站點(diǎn)或其他獨(dú)立的項(xiàng)目可以得到支持其他語(yǔ)言(如C/C++)的插件。
×Web工具平臺(tái)(WTP)項(xiàng)目是Eclipse家庭的最新成員,它將為J2EE和以Web為中心的應(yīng)用程序開(kāi)發(fā)提供可擴(kuò)展的、基于標(biāo)準(zhǔn)的平臺(tái)。
×Eclipse提供了一個(gè)支持并能回事迭代式敏捷開(kāi)發(fā)周期的開(kāi)發(fā)平臺(tái)。該平臺(tái)具有持續(xù)測(cè)試、重構(gòu)、持續(xù)集成、集體所有權(quán)和編碼標(biāo)準(zhǔn)等專用特征。
1.6 參考文獻(xiàn)
Beck, Kent, Extreme Programming Explained: Embracng Change. Boston, MA: Addison-Wesley, 1999.
Budinsky, Frank, et al., Eclipse Modeling Framework. Boston, MA: Addison-Wesley, 2004.
Clayberg, Eric, and Rubel, Dan, Eclipse: Building Commercial-Quality Plug-ins. Boston, MA:Addison-Wesley, 2004.
Gamma, Erich and Beck, Kent, Contributing to Eclipse: Principles, Patterns, and Plug-ins. Boston, MA:Addison-Wesley, 2004.
第二章 Eclipse,你好
2.1 安裝與啟動(dòng)
四類Eclipse下載:
×最新正式版。開(kāi)發(fā)組宣布為主要版本的軟件,使用穩(wěn)定的、測(cè)試過(guò)的版本,不需要最新的重要特性和改進(jìn),合適的選擇。
×穩(wěn)定版。已經(jīng)證實(shí)對(duì)大多數(shù)用戶來(lái)說(shuō)都足夠穩(wěn)定的集成版。以重要的項(xiàng)目里程碑式的版本為基礎(chǔ)。想與最新的開(kāi)發(fā)進(jìn)展保持同步,使用最新特征和修正Bug,不介意遇到一些問(wèn)題,可以選擇。
×集成版。周期性地得到確認(rèn)的穩(wěn)定、狀態(tài)一致的組件,下個(gè)穩(wěn)定版將會(huì)采用的版本,只有高級(jí)Eclipse用戶才推薦使用。
×每夜編譯版。每天夜晚發(fā)布到CVS儲(chǔ)存庫(kù)的HEAD流的版本生成的。完全沒(méi)有經(jīng)過(guò)測(cè)試,幾乎一定會(huì)有重大問(wèn)題。
啟動(dòng)Eclipse前必須安裝Java JDK。啟動(dòng)Eclipse時(shí),可以使用-vm選項(xiàng)指定使用的JVM。
eclipse.exe -showlocation -vm c:\jdk\bin\javaw.exe -vmargs -Xmx256M
2.5 精粹
×由于Eclipse是開(kāi)源項(xiàng)目,所以可以看到正在進(jìn)行開(kāi)發(fā)的版本。新手不建議使用每夜編譯版和集成版。
×Eclipse啟動(dòng)時(shí)默認(rèn)顯示Resource透視圖,大多數(shù)開(kāi)發(fā)工作需要切換到Java透視圖。
×使用Java透視圖的向?qū)С绦蚩梢詣?chuàng)建新的項(xiàng)目、新的包和新的類文件。
×定制用于給新Java文件插入代碼的代碼生成模板。
×在Eclipse工作臺(tái)中運(yùn)行應(yīng)用程序,使用Console視圖難容命令行式的輸入和輸出。
第三章 管理項(xiàng)目
3.1 項(xiàng)目工作空間
在運(yùn)行Eclipse遇到問(wèn)題時(shí),可以查看當(dāng)前工作空間中的.metadata文件夾下的.log文件,如果.log文件太大可以刪除。還可查看.lock文件,如果Eclipse無(wú)法正常啟動(dòng),可以刪除.lock文件,但是正常情況下不要?jiǎng)h除。
需要多個(gè)工作空間的原因:
×獨(dú)立的工作主題,可能由不同的版本控制儲(chǔ)存庫(kù)管理
×顧問(wèn)需要明確區(qū)分開(kāi)客戶的資源。
×區(qū)別維護(hù)CVS中的分支版本的并發(fā)工作。
3.2.1 項(xiàng)目
項(xiàng)目的特性:
×把一組文件和文件夾組織在一起。
×所在的位置決定了項(xiàng)目資源在本地文件系統(tǒng)中存放的位置。
×構(gòu)造規(guī)約決定了如何構(gòu)造它的資源。
×可以具有臨時(shí)屬性,也可以具有永久屬性。
×可以是開(kāi)放的,也可以是關(guān)閉的;關(guān)閉的項(xiàng)目是被動(dòng)的,具有最小的內(nèi)存分配。
×可以引用其他項(xiàng)目。
×可以屬于一個(gè)或多個(gè)項(xiàng)目類。
3.2.2 鏈接資源的位置
可以把部分Eclipse工作環(huán)境映射到文件系統(tǒng)中不相關(guān)的位置,因?yàn)椋?br />×加入存儲(chǔ)到項(xiàng)目之外的配置或類文件目錄。
×滿足與Eclipse一起使用的工具要求采用固定的文件位置的要求。
×引用存放資源或庫(kù)文件的共享網(wǎng)絡(luò)驅(qū)動(dòng)器單元。
×引用文件系統(tǒng)中安裝的其他產(chǎn)品。
路徑變量提供的支持:
×在定義多個(gè)具有共同根目錄的鏈接資源時(shí),提供了對(duì)絕對(duì)路徑的統(tǒng)一引用。
×通過(guò)改變一個(gè)變量,可以重定義多個(gè)資源的位置。
×無(wú)需更新每個(gè)資源的路徑,用戶就能共享具有鏈接資源的項(xiàng)目。
3.4 精粹
×工作空間提供了一級(jí)相關(guān)的項(xiàng)目需要的所有資源的完整透視圖。
×Eclipse資源提供了文件和文件夾獨(dú)立于平臺(tái)的邏輯透視圖,但是,如果這些資源在Eclipse工作平臺(tái)之外發(fā)生了變化,那么它們必須與文件系統(tǒng)保持一致。
×一個(gè)Java項(xiàng)目包括源文件夾和輸出文件夾(最好分開(kāi)旋轉(zhuǎn))。項(xiàng)目自動(dòng)配置有一個(gè)漸增構(gòu)造程序,會(huì)把所有源文件構(gòu)造到輸出文件夾。非Java項(xiàng)目不包括漸增構(gòu)造程序,但除了這點(diǎn)之外,可以同樣的方式安排項(xiàng)目文件夾。
×可以把部分Eclipse工作空間的分層用鏈接資源地址映射到文件系統(tǒng)中不相關(guān)的位置。在與對(duì)文件位置有特殊要求的產(chǎn)品或開(kāi)發(fā)工具一起使用Eclipse時(shí),這點(diǎn)尤其重要。
×用多個(gè)項(xiàng)目配置一個(gè)應(yīng)用程序會(huì)帶來(lái)長(zhǎng)期好處,能提高獨(dú)立模塊的可重用性。項(xiàng)目依賴性控制了交叉項(xiàng)目導(dǎo)入的類的可視性。
第四章 定制工作平臺(tái)
4.1 透視圖
透視圖定義了一級(jí)Eclipse視圖和動(dòng)作集合,被組織成一種布局,適合一般用戶用來(lái)完成賦予該透視圖的任務(wù)。用戶可以使用默認(rèn)透視圖,還可以創(chuàng)建和保存專有透視圖。還可以將當(dāng)前透視圖恢復(fù)到默認(rèn)的視圖和布局。
4.2 工作平臺(tái)視圖
常用的視圖如下:
×Navigator。當(dāng)前工作空間中的項(xiàng)目、文件夾和文件的通用視圖;用于任何透視圖。
×Properties。由工作平臺(tái)的插件定制,顯示和編輯資源或?qū)ο蟮拿郑祵傩浴K鼤?huì)隨著別的視圖的改變而變化。
×Outline。由插件定制,顯示資源內(nèi)容的結(jié)構(gòu)圖。
×Problems。顯示資源中發(fā)現(xiàn)的問(wèn)題的列表。
×Tasks。顯示要執(zhí)行的任務(wù)的列表,每個(gè)任務(wù)還有資源引用和行數(shù)。
×Bookmarks。顯示用于快速引用和定位文件中的特定行的書(shū)簽。
×Search。顯示搜索工作空間的結(jié)果。
4.2.2 窗口布局
Eclipse支持移動(dòng)窗口位置,顯示在主工作平臺(tái)之外的獨(dú)立窗口,設(shè)置成快速窗口,并且可以記憶自己的位置。
4.4.1 首選項(xiàng)設(shè)置的作用域
×Configuration。設(shè)置將被保存在Eclipse安裝目錄中,由所有的工作空間實(shí)例共享。
×Workspace Instance。每個(gè)工作空間實(shí)例定義的,由它的所有項(xiàng)目共享。
×Project。僅適用于項(xiàng)目本身。
4.6 精粹
×不要局限于一個(gè)透視圖,要把所有的工作售中在一組視圖中。利用多個(gè)透視圖,把它們組織起來(lái),發(fā)揮它們的最大生產(chǎn)力來(lái)完成一組相關(guān)的任務(wù)。創(chuàng)建或定制透視圖來(lái)滿足你的需求。
×探討Eclipse中可用的專門視圖。使用一個(gè)合適的視圖或一組視圖可以顯著地提高你的生產(chǎn)力。
×用Package Explorer視圖和標(biāo)記視圖(Problems、Tasks和Bookmarks)中的過(guò)濾器可以解決信息過(guò)多的問(wèn)題。
×使用Eclipse個(gè)人化,以適應(yīng)你的風(fēng)格和工作。與你使用其他編輯器或IDE的習(xí)慣相匹配,探討Eclipse中的更多選項(xiàng)。
×導(dǎo)出首選項(xiàng),共享項(xiàng)目設(shè)置,可以與所有成員共享你最好的實(shí)踐經(jīng)驗(yàn)和小組標(biāo)準(zhǔn)。
第五章 快速開(kāi)發(fā)
5.4 使用快速修正
可以使用快速修正的示例:
×刪除未使用的、未解析的或看不到的import語(yǔ)句。
×為項(xiàng)目中存在但不能解析的類型添加一個(gè)impor語(yǔ)句。
×為不能解析的方法簽名引用創(chuàng)建一個(gè)新方法。
×如果方法遺漏了return語(yǔ)句,則添加該語(yǔ)句。
×用try/catch塊封裝一個(gè)方法調(diào)用或給現(xiàn)有的try塊添加一個(gè)catch塊,處理未捕捉到的異常。
×當(dāng)異常沒(méi)有在它的try塊中拋出時(shí),刪除不必要的catch塊。
5.7 精粹
×Outline視圖顯示的是當(dāng)前Java編輯器中所有域、方法和內(nèi)部類的列表;選項(xiàng)會(huì)與編輯器的定位保持一致。
×用F3和Ctrl+F3為引用的類型和方法打開(kāi)一個(gè)新的編輯器,可以分析不熟悉的Java類庫(kù)。
×用內(nèi)容助手可以插入類型和變量名或者在輸入時(shí)完成方法,從而能夠加速開(kāi)發(fā)。
×配置源代碼文件,獲取在懸浮幫助和內(nèi)容助手列表中顯示的詳細(xì)Javadoc信息。
×用源代碼模板插入常用的編碼模式(如for循環(huán)、switch語(yǔ)句或try/catch塊),并導(dǎo)引你填寫模式中的信息。定制或創(chuàng)建新的模板以適應(yīng)你的需要和風(fēng)格。
×快速修正為常見(jiàn)的編譯錯(cuò)誤(如未捕捉到拋出的異常)提供了修改建議,并能自動(dòng)糾錯(cuò)。
×為類中選定的域生成獲取器和設(shè)置器方法。定制方法模板,例如在所有設(shè)置器方法中加入記錄日志的操作或改變通知。
×用Hierarchy視圖可以分析Java代碼中的類型分層,并能迅速在其中定位,這些分層由類擴(kuò)展的類、接口擴(kuò)展的接口和類實(shí)現(xiàn)的接口構(gòu)成。
第六章 Java項(xiàng)目配置
6.1 Java構(gòu)造路徑
Java Build Path的四個(gè)標(biāo)簽:
×Source。源文件夾和輸出文件夾。建議采用分離的源文件夾和輸出文件夾,可以使用多個(gè)源文件夾。
×Projects。加入該構(gòu)造路徑的其他項(xiàng)目。
×Libraries。項(xiàng)目需要的其他檔案文件的位置。
×Order and Export。項(xiàng)目和庫(kù)出現(xiàn)在構(gòu)造路徑和默認(rèn)的運(yùn)行時(shí)類路徑中的順序。
6.5 精粹
×每個(gè)Java項(xiàng)目都有一個(gè)構(gòu)造,用于編譯源文件中的獎(jiǎng),把結(jié)果存放到輸出文件夾。簡(jiǎn)單項(xiàng)目沒(méi)有構(gòu)造程序,其他項(xiàng)目類型則可以添加相關(guān)的構(gòu)造程序,把合適的編譯器或轉(zhuǎn)換工具應(yīng)用到文件上。
×項(xiàng)目是自動(dòng)構(gòu)造的;只要保存,就會(huì)自動(dòng)應(yīng)用構(gòu)造程序。對(duì)于Java項(xiàng)目,構(gòu)造程序使用工作空間首選項(xiàng)中配置的或項(xiàng)目重載的Java編譯器設(shè)置。
×Java項(xiàng)目的Java構(gòu)造路徑定義了構(gòu)造或運(yùn)行項(xiàng)目時(shí),應(yīng)用把工作空間中的哪些項(xiàng)目和哪些JAR文件加入類路徑。
×用戶庫(kù)是定義聯(lián)合使用的一組相關(guān)JAR文件的便捷方法。
×當(dāng)?shù)谌降腏AR文件存放在外部目錄中時(shí),可以使用混合的配置。這些檔案中的一部分被打包在一個(gè)或多個(gè)用戶庫(kù)中,在Eclipse中,用簡(jiǎn)單項(xiàng)目和鏈接文件益可以輕松地訪問(wèn)所有檔案。
6.6 參考文獻(xiàn)
Apache Log4j is an open source logging facility available at http://jakarta.apache.org/log4j/.
Apache Axis is an open source Web Services development tolkit available at http://ws.apache.org/axis/.
第七章 調(diào)試代碼
7.1 啟動(dòng)調(diào)試對(duì)話
單步調(diào)試執(zhí)行
×Resume。繼續(xù)執(zhí)行線程,直到它結(jié)束或遇到斷點(diǎn)為止。
×Suspend。掛起一個(gè)正在執(zhí)行的線程。
×Terminate。終止Java VM。
×Step Into。跟蹤進(jìn)入下一個(gè)要執(zhí)行的方法。會(huì)增加一個(gè)棧幀。
×Step Over。結(jié)束當(dāng)前行的執(zhí)行,在下一個(gè)可執(zhí)行的行處掛起。
×Step Return。從當(dāng)前方法中跳出。
×Run to Line。繼續(xù)執(zhí)行到選中的行。
×Use Step Filters。當(dāng)切換到這個(gè)命令時(shí),所有調(diào)試命令都將應(yīng)用Java>Debug>Step Filtering首選項(xiàng)頁(yè)中定義的調(diào)試過(guò)濾器。
7.5 精粹
×Debug稱之為具有幾個(gè)專用于調(diào)試的視圖:Debug視圖用于查看運(yùn)行的線程以及它們掛起時(shí)的棧幀;Variables、Expressions和Display視圖用于查看對(duì)象狀態(tài);Breakpoints視圖用于管理代碼中的所有斷點(diǎn)的列表。
×當(dāng)運(yùn)行到一個(gè)斷點(diǎn)時(shí),有幾種選擇,可以繼續(xù)執(zhí)行或終止線程,或者逐句地單步調(diào)試程序。
×Variables視圖顯示了Debug視圖中選定的棧幀的域、局部變量和方法參數(shù)。棧幀為這些變量提供了執(zhí)行環(huán)境。
×可以執(zhí)行顯示、檢查或更新程序狀態(tài)的代碼段。在調(diào)試對(duì)話期間,彈出式窗口可用來(lái)顯示或檢查在Java編輯器內(nèi)選定的表達(dá)式。
×可以指派Detail Formatter,定義一個(gè)定制的輸出字符串,用于顯示調(diào)試過(guò)程中類的值。該格式程序會(huì)覆蓋這個(gè)類的toString()方法。
×用Hot Code Replace可以在調(diào)試對(duì)話中修改代碼,而無(wú)需重啟Java VM,從而給實(shí)驗(yàn)性開(kāi)發(fā)提供了便利。
×Java調(diào)試器的客戶/服務(wù)器設(shè)計(jì)允許你從網(wǎng)絡(luò)上的計(jì)算機(jī)啟動(dòng)Java程序,然后在你的工作站上運(yùn)行的Eclipse調(diào)試它。
第八章 敏捷開(kāi)發(fā)的特征
8.1 敏捷宣言(agile manifesto)http://www.agilemanifesto.org/http://www.agilealliance.org/
宣言包括12項(xiàng)準(zhǔn)則,大致分為兩類:程序員授權(quán)和迭代式開(kāi)發(fā)。
×業(yè)務(wù)與開(kāi)發(fā)必須在整個(gè)項(xiàng)目的開(kāi)發(fā)過(guò)程中一起工作。
×最后的體系結(jié)構(gòu)、需求和設(shè)計(jì)都是從自組的小組中產(chǎn)生的。
×每隔兩個(gè)星期或兩個(gè)月就交付一次可運(yùn)行的軟件,時(shí)間間隔越短越好。
×可運(yùn)行的軟件是進(jìn)度的首要度量指標(biāo)。
×采用優(yōu)秀的技術(shù)和好的設(shè)計(jì)可以提高敏捷性。
敏捷開(kāi)發(fā)以兩種計(jì)劃為基礎(chǔ):
×粗略計(jì)劃:階段或發(fā)布計(jì)劃。
×一系列周密計(jì)劃:迭代計(jì)劃。
8.4 精粹
×敏捷軟件開(kāi)發(fā)是一組相關(guān)方法的通稱,強(qiáng)調(diào)使程序員能夠自組小組,與客戶緊密協(xié)作,使用迭代式開(kāi)發(fā)周期,由開(kāi)發(fā)者進(jìn)行持續(xù)單元測(cè)試與集成。
×項(xiàng)目由兩級(jí)的計(jì)劃指導(dǎo)開(kāi)發(fā),即粗略發(fā)布計(jì)劃和周密迭代計(jì)劃。
×Eclipse提供了支持和能夠加速敏捷開(kāi)發(fā)周期的開(kāi)發(fā)平臺(tái),還可以通過(guò)插件進(jìn)行徹底不同的定制。
×有5項(xiàng)敏捷開(kāi)發(fā)準(zhǔn)則與程序設(shè)計(jì)相關(guān),即測(cè)試、重構(gòu)、持續(xù)集成、集成所有和編碼標(biāo)準(zhǔn)。
8.5 參考文獻(xiàn)
Beck, Kent, Extreme Programming Explained: Embracng Change. Boston, MA: Addison-Wesley, 1999.
Fowler, Martin, Refactoring: Improving the Design of Existing Code, Reading, MA:Addison-Wesley, 1999.
Highsmith, James. A., Adaptive Software Development: A Collaborative Approach to Managing Complex Systems. Dorset House, 2000.
Kruchten, Phillippe, The Rational Unified Process: An Introduction, Third Edition. Boston, MA: Addison-Wesley, 2004.
Leffingwell, Dean and Muirhead, Dave, Tactical Management of Agile Development: Achieving Competitive Advantage, Rally Software Development, Boulder, CO, 2004. This white paper is available from http://www.rallydev.com/.
Schwaber, Ken and Beedle, Mike, Agile Software Development with Scrum. Prentice Hall, 2001.
第九章 更新Eclipse IDE
9.1 查找和安裝特征
Eclipse特征:就是把構(gòu)成Eclipse產(chǎn)品的相關(guān)功能集合在一起并描述它們的方法。
Eclipse平臺(tái)自身被劃分為三個(gè)主要特性:平臺(tái)、JDT、PDE。
特性定義并不包括代碼自身,它們只是把一個(gè)或多個(gè)相關(guān)插件或嵌套特性打包。組織特性的目的是為了頒發(fā)和更新產(chǎn)品,而組織插件的目的是幫助產(chǎn)品小組開(kāi)發(fā)產(chǎn)品的功能。
特性會(huì)被看作普遍可移植的。特性還提供了說(shuō)明、許可和版權(quán)信息。
9.4 精粹
×Product Configuration對(duì)話框列出了所有的安裝路徑和每個(gè)路徑下的所有特性。當(dāng)安裝的插件沒(méi)有特性定義時(shí),它們不會(huì)出現(xiàn)在配置列表中。
×About Eclipse Platform對(duì)話框包括一個(gè)按鈕,能夠列出工作平臺(tái)中啟用的所有插件,它們是否被打包成了某種特性的一部分。
×可以為用于檢索新的或更新特性的遠(yuǎn)程或本地站點(diǎn)添加書(shū)簽。
×應(yīng)該把新特性安裝到擴(kuò)展路徑中,而不是安裝在Eclipse的主產(chǎn)品路徑中。這樣即使以后刪除并再安裝了Eclipse,也不會(huì)丟失第三方插件。
×許多插件并沒(méi)有特性定義或更新站點(diǎn)。不要像通常所做的那樣把它們的ZIP文件解壓縮到Eclipse的主plugins目錄中,而是解壓縮到允許你啟用和禁用這些插件的擴(kuò)展目錄中。
×當(dāng)你的防火墻使用了代理服務(wù)器時(shí),需要首選項(xiàng)設(shè)置,用更新策略文件可以把特性的URL重定向到一個(gè)本地緩存站點(diǎn)。
9.5 擴(kuò)展
×Eclipse.org的社區(qū)主頁(yè)上列出了許多可用的資源。http://www.eclipse.org/community
×Eclipse插件中心(Eclipse Plug-in Central)是Eclipse系統(tǒng)的信息入口和交流場(chǎng)所。http://www.eclipseplugincentral.com/
× http://www.eclipse-plugins.info/ 有分類的插件注冊(cè)表。
第十章 用JUnit進(jìn)行持續(xù)測(cè)試
10.1 選擇測(cè)試策略
編寫測(cè)試要:
×說(shuō)明將要編寫的代碼的預(yù)期結(jié)果。
×說(shuō)明Bug報(bào)告的修正操作。
編寫測(cè)試的收益:
×幫助你為還未編寫的類型定義API。
×幫助你理解新的復(fù)雜的API,或者確認(rèn)你對(duì)它的理解。
×驗(yàn)證從另一個(gè)小組或銷售商處得到的庫(kù)的正確操作。
×驗(yàn)證由代碼生成器生成的類的預(yù)期結(jié)果。
10.5 精粹
×Junit支持許多不同的單元測(cè)試策略,包括首次測(cè)試處理和編寫驗(yàn)證對(duì)第三方API的理解的單元測(cè)試。
×Junit測(cè)試包含在一種復(fù)合結(jié)果中。可以運(yùn)行整個(gè)測(cè)試組,也可以運(yùn)行一部分。運(yùn)行的最小單位是一個(gè)測(cè)試方法。
×組織測(cè)試時(shí)推薦的方法有兩種,即在項(xiàng)目中創(chuàng)建第二個(gè)源文件夾,或者創(chuàng)建一個(gè)測(cè)試專用的項(xiàng)目。必須在被測(cè)試的類所在的包中編寫測(cè)試用例,這樣測(cè)試才能夠訪問(wèn)保護(hù)的方法和包保護(hù)的方法。
×JUnit Test Case向?qū)С绦蚰軌驗(yàn)橐帉懙臏y(cè)試生成具有方法存根的類模板,從而加速了開(kāi)發(fā)。
×每當(dāng)測(cè)試失敗時(shí),JUnit窗口會(huì)自動(dòng)出現(xiàn),能幫助你快速地識(shí)別導(dǎo)致失敗的代碼行,并且對(duì)比預(yù)期的結(jié)果和實(shí)際的結(jié)果。
10.6 擴(kuò)展
×HttpUnit。在測(cè)試Web應(yīng)用程序時(shí),需要繞過(guò)瀏覽器,從程序中訪問(wèn)你的站點(diǎn)。HttpUnit模擬了瀏覽器行為的相關(guān)部分,包括表單提交、JavaScript、基本的HTTP驗(yàn)證、cookie和自動(dòng)頁(yè)面重定向,從而簡(jiǎn)化了這一操作,還允許測(cè)試代碼驗(yàn)證返回的頁(yè)面。http://www.httpunit.org/
×Cactus。測(cè)試服務(wù)器端的Java代碼(Servlet、EJB、Tag Libs、Filters)的框架。http://jakarta.apache.org/cactus
×DbUnit。編寫使用關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)的測(cè)試所用的框架。框架使用的是XML數(shù)據(jù)集(數(shù)據(jù)表的集合),在每次測(cè)試之前和之后都執(zhí)行數(shù)據(jù)庫(kù)操作,以確保數(shù)據(jù)庫(kù)的內(nèi)容處于已知狀態(tài)。http://www.dbunit.org/
10.7 參考文獻(xiàn)
JUnit home page, http://www.junit.org/.
Fowler, Martin, Refactoring, Chapter 4, Building Tests. Reading, MA:Addison-Wesley, 1999.
Graham, Steve, et al. Building Web Services with Java, Second Edition. Pearson Education, 2004.
Massol, Vincent. JUnit in Action. Greenwich, CT: Manning, 2004.
第11章 重構(gòu)代碼
11.4 精粹
×重構(gòu)操作使軟件更易于理解,修改更容易,為下次迭代開(kāi)發(fā)做好準(zhǔn)備,但不改變當(dāng)前行為。
×要確定程序的行為是否被重構(gòu)操作改變,唯一的方法就是在重構(gòu)操作前后都完整地運(yùn)行一次JUnit測(cè)試組。沒(méi)有采用單元測(cè)試來(lái)驗(yàn)證操作的重構(gòu)操作風(fēng)險(xiǎn)非常高。
×在重構(gòu)操作前后都要把代碼提交給儲(chǔ)存庫(kù),以便為回滾操作建立一個(gè)已知狀態(tài)。
×通常對(duì)于一個(gè)序列會(huì)應(yīng)用幾種不同的重構(gòu)操作,以實(shí)現(xiàn)一個(gè)復(fù)雜的任務(wù)。
×通過(guò)預(yù)覽重構(gòu)操作的結(jié)果,可以省略一些改變,如果整個(gè)操作不能實(shí)現(xiàn)你的預(yù)期目標(biāo),還可以取消整個(gè)操作。
×重構(gòu)操作可以更新對(duì)改變過(guò)的元素的引用,與通過(guò)搬運(yùn)操作來(lái)實(shí)現(xiàn)同樣的改變相比,這樣可以節(jié)省大量時(shí)間。
×Eclipse中的所有重構(gòu)操作是根據(jù)你的重構(gòu)活動(dòng)中的一般任務(wù)來(lái)分類的。
第12章 用Ant進(jìn)行持續(xù)集成
12.6 精粹
×持續(xù)集成使許多項(xiàng)目免受常規(guī)的Java項(xiàng)目配置之苦。所有源文件在保存時(shí)都會(huì)被自動(dòng)編譯,唯一要做的就是完成單元測(cè)試。
×利用Ant構(gòu)造文件補(bǔ)充默認(rèn)的Java構(gòu)造器通常可以滿足非常規(guī)的構(gòu)造需求。Ant是可擴(kuò)展的構(gòu)造工具,它的功能可以緊密地集成到Eclipse工作平臺(tái)上。
×Ant構(gòu)造文件編輯器與Java編輯器有許多共性。
×Ant的工作平臺(tái)首選項(xiàng)包括運(yùn)行時(shí)配置,在此可以把額外的JAR文件加入運(yùn)行構(gòu)造文件采用的類路徑。
×每個(gè)構(gòu)造文件還可以有自己的運(yùn)行時(shí)配置,能夠覆蓋或擴(kuò)展默認(rèn)的配置。
×可以把Ant構(gòu)造文件配置為在項(xiàng)目資源修改后就自動(dòng)運(yùn)行。
×一個(gè)完整的項(xiàng)目構(gòu)造文件將編譯所有的源文件,編譯并運(yùn)行所有的JUnit測(cè)試,準(zhǔn)備Unit結(jié)果的HTML報(bào)告,以及生成Javadoc的API文檔。構(gòu)造文件既可以在Eclipse中運(yùn)行,也可以作為自動(dòng)持續(xù)構(gòu)造處理的一部分,在單獨(dú)的構(gòu)造機(jī)上獨(dú)立運(yùn)行。
12.7 擴(kuò)展
PMD可以協(xié)助靜態(tài)分析Java代碼。這個(gè)工具既可以作為Eclipse的插件,也可以是一個(gè)Ant任務(wù)。
在http://pmd.sourceforge.net/index.html處可以下載Eclipse的PMD插件。
12.8 參考文獻(xiàn)
Hatcher, Erik and Loughran, Steve. Java Development with Ant. Greenwich, CT:Manning, 2003.
Massol, Vincent. JUnit in Action, Chapter 5 Automating Junit. Greenwich, CT: Manning, 2004.
Copeland, Tom. Static Analysis with PMD. See http://www.onjava.com/pub/a/onjava/2003/02/12/static_analysis.html
第13章 用CVS實(shí)現(xiàn)小組所有權(quán)
13.7 精粹
×Eclipse具有通用的小組API,支持資源控制儲(chǔ)存庫(kù)的客戶端。它包括完整的CVS客戶端。
×CVS使用樂(lè)觀模型協(xié)調(diào)小組成員之間的工作。如果采用的工作流能使你保持具有CVS的最近更新,能頻繁地與儲(chǔ)存庫(kù)進(jìn)行同步化操作,當(dāng)發(fā)生沖突的時(shí)候能解決它們,這樣才能最好地工作。
×在CVS Respository Exploring透視圖中可添加CVS儲(chǔ)存庫(kù)的路徑,瀏覽可用的模塊。
×在共享項(xiàng)目時(shí),加入配置文件,如.project和.classpath文件,這樣可以使其他成員提取完整的Eclipse項(xiàng)目定義。
×還要在CVS中共享第三方的庫(kù)和全局工作空間首選項(xiàng)設(shè)置,使小組成員能夠提取出所有必要的依賴性。
×所謂同步化,就是把更新、提交和解決工作空間及儲(chǔ)存庫(kù)之間沖突的活動(dòng)綁定起來(lái)。Team Synchronizing透視圖支持所有這些活動(dòng)。
×用Compare Editor可以瀏覽所有即將進(jìn)入和出去的改變,對(duì)于合并版本沖突至關(guān)重要。
×把一個(gè)CVS版本標(biāo)志賦予儲(chǔ)存庫(kù)中的一組文件即可創(chuàng)建一個(gè)項(xiàng)目版本。此后可以提供出所有具有相同標(biāo)志的相關(guān)文件。
×創(chuàng)建一個(gè)分支標(biāo)志和創(chuàng)建一個(gè)版本類似,只是以后學(xué)要把來(lái)自分支的改變合并回主HEAD流(主干)中。
×使用CVS補(bǔ)丁,可以在CVS服務(wù)器不能用或者你沒(méi)有提交權(quán)限時(shí)與他人交換項(xiàng)目的改變。
13.8 擴(kuò)展
http://www.eclipse.org/community/index.html
13.9 參考文獻(xiàn)
Bar, Moshe, and Fogel, Karl. Open Source Development with CVS, 3rd Edition. Scottsdal, AX: Paraglyph Press, 2003. Available for free download in HTML and PDF formats at http://cvsbook.red-bean.com/.
Concurrent Versions System(CVS) Web site, http://www.cvshome.org/.
CVS for the Windows NT Platform, http://www.cvsnt.org/.
Cederqvist, Per. Version Management with CVS. http://www.cvshome.org/docs/manual
CVS User's Guide, http://www.loria.fr/~molli/cvs/docs/cvs_toc.html
Glezen, Paul. Branching with Eclipse and CVS. IBM, 2003. http://www.eclipse.org/articles/Article-CVS-branching/eclipse_branch.thml
Vesperman, Jennifer. Essential CVS. O'Reilly, 2003.
第14章 編碼標(biāo)準(zhǔn)
Eclipse項(xiàng)目導(dǎo)引由三部分構(gòu)成:
×命名規(guī)約。如何命名包、類、方法、變量和常量。
×編碼規(guī)約。關(guān)于聲明、語(yǔ)句、代碼中的縮進(jìn)、空格,以及其他影響源代碼的理解、重用和調(diào)試源代碼的程序設(shè)計(jì)樣式的一致規(guī)約。
×Javadoc注釋。如何編寫文檔注釋,這些注釋對(duì)公共API尤其重要。
Sun Microsystems的文檔《Code Conventions for the Java Programming Language》常被用來(lái)作為軟件開(kāi)發(fā)的基礎(chǔ)。
為什么需要編碼規(guī)約?
×在軟件的生命周期中,80%的時(shí)間都用于維護(hù)。
×在軟件整個(gè)生命周期中,都由原始作者對(duì)它進(jìn)行維護(hù)幾乎是不可能的。
×在編碼規(guī)約提高了軟件的質(zhì)量和可讀性,使工程師能夠迅速全面地理解新代碼。
14.3 精粹
×對(duì)于敏捷開(kāi)發(fā)小組的成員協(xié)作以及軟件的長(zhǎng)期維護(hù)來(lái)說(shuō),編碼標(biāo)準(zhǔn)非常重要。這些標(biāo)準(zhǔn)包括命名、編碼樣式和Javadoc注釋的規(guī)約。
×Eclipse工具可減少與這些標(biāo)準(zhǔn)保持一致性的工作量。代碼格式化程序能應(yīng)用樣式規(guī)則,代碼模板能夠插入Javadoc注釋,拼寫檢查程序能夠捕捉到注釋中的錯(cuò)誤。Java編譯器不僅能檢查語(yǔ)法,還能對(duì)未使用的代碼提出警告。
×在小組儲(chǔ)存庫(kù)中共享格式化規(guī)則、代碼模板和拼寫檢查詞典,可以使所有小組成員的工作保持一致。
×使用Checkstyle插件(或其他類似的擴(kuò)展)可以審查代碼與標(biāo)準(zhǔn)的一致性。自動(dòng)運(yùn)行樣式審查可以作為完整Ant構(gòu)造文件的一部分。
14.4 擴(kuò)展
×Checkstyle。http://checkstyle.sourceforge.net/可以下載Checkstyle。http://eclipse-cs.sourceforge.net/可以下載插件。
×PMD分析工具。http://pmd.sourceforge.net/可以下載插件。
×實(shí)例化CodePro Advisor。http://www.instantiations.com/codepro/advisor.htm可以下載商業(yè)化插件。
14.5 參考文獻(xiàn)
Apache Jakarta Project, Source Repositories. See http://jakarta.apache.org/site/source.html
Eclipse Foundation. Standards, Conventions and Guidelines. See http://dev.eclipse.org/
Sun Microsystems. Code Conventions for the Java Programming Language. 1999. See http://java.sun.com/docs/codeconv/
Sun Microsystems. Requirements for Writing Java API Specifications. 2003. See http://java.sun.com/products/jdk/javadoc/writingapispecs/
Sun Microsystems. how to Write Doc Comments for Javadoc. 2003. See http://java.sun.com/products/jdk/javadoc/writingdoccomments/
SCOWL(Spell Checker Oriented Word Lists) is a collection of word lists split up in various sizes, and other categories, intended to be suitable for use in spell checkers. See http://worllist.sourceforge.net/