Eclipse 是什么? Eclipse 是一個(gè)開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開發(fā)工具(Java Development Tools,JDT)。 雖然大多數(shù)用戶很樂(lè)于將 Eclipse 當(dāng)作 Java IDE 來(lái)使用,但 Eclipse 的目標(biāo)不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展 Eclipse 的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與 Eclipse 環(huán)境無(wú)縫集成的工具。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場(chǎng)所。 這種平等和一致性并不僅限于 Java 開發(fā)工具。盡管 Eclipse 是使用 Java 語(yǔ)言開發(fā)的,但它的用途并不限于 Java 語(yǔ)言;例如,支持諸如 C/C++、COBOL 和 Eiffel 等編程語(yǔ)言的插件已經(jīng)可用,或預(yù)計(jì)會(huì)推出。Eclipse 框架還可用來(lái)作為與軟件開發(fā)無(wú)關(guān)的其他應(yīng)用程序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)。 基于 Eclipse 的應(yīng)用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它構(gòu)成了 IBM Java 開發(fā)工具系列的基礎(chǔ)。例如,WebSphere Studio Application Developer 添加了對(duì) JSP、servlet、EJB、XML、Web 服務(wù)和數(shù)據(jù)庫(kù)訪問(wèn)的支持。 Eclipse 是開放源代碼的軟件 曾經(jīng)四處蔓延的對(duì)開放源代碼軟件的許多恐懼、擔(dān)憂和疑慮,都與某些 copyleft 許可證的所謂“病毒”性質(zhì)有關(guān)——如果使用開放源代碼軟件作為您開發(fā)的程序的一部分,您將失去自己的知識(shí)產(chǎn)權(quán),因?yàn)樵撛S可證將“傳染”您開發(fā)的專有部分。換句話說(shuō),該許可證可能要求與開放源代碼軟件一起打包的所有軟件,都必須在相同的許可證之下發(fā)布。雖然這對(duì)最著名的 copyleft 許可證(即 GNU 通用公共許可證,例如 Linux 就是在該許可證之下發(fā)布的)來(lái)說(shuō)可能是事實(shí),當(dāng)時(shí)還有其他許可證在商業(yè)化和社區(qū)考慮之間提供了較好的平衡。 開放源代碼計(jì)劃(Open Software Initiative)是一家非營(yíng)利機(jī)構(gòu),它明確定義了開放源代碼的含義及滿足其標(biāo)準(zhǔn)的認(rèn)證許可證。Eclipse 是在 OSI 認(rèn)可的通用公共許可證(CPL)1.0 版之下被授予許可證的,CPL“旨在促進(jìn)程序的商業(yè)化使用……”(欲獲得指向通用公共許可證 1.0 版完整文本的鏈接,請(qǐng)參閱本文稍后的 參考資料)。 為 Eclipse 創(chuàng)建插件或?qū)?Eclipse 用作軟件開發(fā)應(yīng)用程序基礎(chǔ)的開發(fā)人員,需要發(fā)布他們?cè)?CPL 下使用或修改的任何 Eclipse 代碼,但是他們可以自由決定自己添加的代碼的許可證授予方式。與出自 Eclipse 的軟件一起打包的專有代碼不需要作為開放源代碼來(lái)授予許可證,該源代碼也不需要提供給用戶。 盡管大多數(shù)開發(fā)人員不會(huì)使用 Eclipse 來(lái)開發(fā)插件,或創(chuàng)建基于 Eclipse 的新產(chǎn)品,但是 Eclipse 的開放源代碼性質(zhì)所意味的,并不只是它使得 Eclipse 免費(fèi)可用(盡管便于商業(yè)化的許可證意味著插件可能要花錢)。開放源代碼鼓勵(lì)創(chuàng)新,并激勵(lì)開發(fā)人員(甚至是商業(yè)開發(fā)人員)為公共開放源代碼庫(kù)貢獻(xiàn)代碼。對(duì)此存在許多原因,不過(guò)最本質(zhì)的原因或許是為這個(gè)項(xiàng)目作貢獻(xiàn)的開發(fā)人員越多,這個(gè)項(xiàng)目就會(huì)變得對(duì)每個(gè)人都越寶貴。隨著這個(gè)項(xiàng)目變得更加有用,更多的開發(fā)人員將會(huì)使用它,并圍繞它形成一個(gè)社區(qū),就像那些圍繞 Apache 和 Linux 形成的社區(qū)一樣。 Eclipse 是什么機(jī)構(gòu)? 在最高層,項(xiàng)目管理委員會(huì)(Project Management Committee,PMC)管理著 Eclipse 項(xiàng)目。這個(gè)項(xiàng)目被劃分為多個(gè)子項(xiàng)目,每個(gè)子項(xiàng)目都有一名負(fù)責(zé)人。大型子項(xiàng)目又被劃分為組,每個(gè)組也有一名負(fù)責(zé)人。目前,這其中的大多數(shù)管理角色都由最初開發(fā) Eclipse 的 IBM 子公司 Object Technology International (OTI)的人擔(dān)任,但是作為一個(gè)開放源代碼的項(xiàng)目,它歡迎任何人的參與。任何特定部門的職責(zé)是通過(guò)該部門對(duì)項(xiàng)目的貢獻(xiàn)來(lái)爭(zhēng)取的。 現(xiàn)在我們已經(jīng)考察了 Eclipse 背后的一些理論、歷史和管理,下面讓我們考察該產(chǎn)品本身。 Eclipse 工作臺(tái) Eclipse 工作臺(tái)由幾個(gè)稱為 視圖(view)的窗格組成,比如左上角的 Navigator 視圖。窗格的集合稱為 透視圖(perspective)。默認(rèn)的透視圖是 Resource 透視圖,它是一個(gè)基本的通用視圖集,用于管理項(xiàng)目以及查看和編輯項(xiàng)目中的文件。 Navigator 視圖允許您創(chuàng)建、選擇和刪除項(xiàng)目。Navigator 右側(cè)的窗格是 編輯器區(qū)域。取決于 Navigator 中選定的文檔類型,一個(gè)適當(dāng)?shù)木庉嬈鞔翱趯⒃谶@里打開。如果 Eclipse 沒(méi)有注冊(cè)用于某特定文檔類型(例如,Windows 系統(tǒng)上的 Navigator 下面的 Outline 視圖在編輯器中顯示文檔的大綱;這個(gè)大綱的準(zhǔn)確性取決于編輯器和文檔的類型;對(duì)于 Java 源文件,該大綱將顯示所有已聲明的類、屬性和方法。 Tasks 視圖收集關(guān)于您正在操作的項(xiàng)目的信息;這可以是 Eclipse 生成的信息,比如編譯錯(cuò)誤,也可以是您手動(dòng)添加的任務(wù)。 該工作臺(tái)的大多數(shù)其他特性,比如菜單和工具欄,都應(yīng)該和其他那些熟悉的應(yīng)用程序類似。一個(gè)便利的特性就是不同透視圖的快捷方式工具欄,它顯示在屏幕的左端;這些特性隨上下文和歷史的不同而有顯著差別。Eclipse 還附帶了一個(gè)健壯的幫助系統(tǒng),其中包括 Eclipse 工作臺(tái)以及所包括的插件(比如 Java 開發(fā)工具)的用戶指南。至少瀏覽一遍這個(gè)幫助系統(tǒng)是值得的,這樣可以看到有哪些可用的選項(xiàng),同時(shí)也可更好地理解 Eclipse 的工作流程。 為繼續(xù)這個(gè)短暫的 Eclipse 之旅,我們將在 Navigator 中創(chuàng)建一個(gè)項(xiàng)目。右鍵單擊 Navigator 視圖,然后選擇 New=>Project。當(dāng) New Project 對(duì)話框出現(xiàn)時(shí),選擇左面的 Java。標(biāo)準(zhǔn) Eclipse 只有一種 Java 項(xiàng)目類型,名為“Java Project”。如果安裝了插件來(lái)提供 JSP 和 servlet 支持,我們會(huì)從這里看到一個(gè)用于 Web 應(yīng)用程序的附加選項(xiàng)。眼下,請(qǐng)選擇 Java Project,在提示項(xiàng)目名稱時(shí)輸入“Hello”,然后按 Finish。 接下來(lái),我們將檢查一下 Java 透視圖。取決于您喜歡的屏幕管理方式,您可以通過(guò)選擇 Window=>Open Perspective=>Java來(lái)改變當(dāng)前窗口中的透視圖,也可以通過(guò)選擇 Window=>New Window,然后再選擇這個(gè)新的透視圖,從而打開一個(gè)新的窗口。 正如您可能預(yù)期的那樣,Java 透視圖包含一組更適合于 Java 開發(fā)的視圖。其中之一就是左上角的視圖,它是一個(gè)包含各種 Java 包、類、jar 和其他文件的層次結(jié)構(gòu)。這個(gè)視圖稱為 Package Explorer。還要注意主菜單已經(jīng)展開了——并且出現(xiàn)了兩個(gè)新的菜單項(xiàng):Source 和 Refactor。 Java 開發(fā)環(huán)境(JDE) 這樣將在編輯器區(qū)域創(chuàng)建一個(gè)包含 您會(huì)在鍵入時(shí)注意到 Eclipse 編輯器的一些特性,包括語(yǔ)法檢查和代碼自動(dòng)完成。在 2.1 版(我曾下載 M2 版來(lái)試用過(guò))中,當(dāng)您鍵入開括號(hào)或雙引號(hào)時(shí),Eclipse 會(huì)自動(dòng)提供配對(duì)的符號(hào),并將光標(biāo)置于符號(hào)對(duì)之內(nèi)。 在其他情況下,您可以通過(guò)按 Ctrl-Space 來(lái)調(diào)用代碼自動(dòng)完成功能。代碼自動(dòng)完成提供了上下文敏感的建議列表,您可通過(guò)鍵盤或鼠標(biāo)來(lái)從列表中選擇。這些建議可以是針對(duì)某個(gè)特定對(duì)象的方法列表,也可以是基于不同的關(guān)鍵字(比如 語(yǔ)法檢查依賴增量編譯。每當(dāng)您保存代碼,它就在后臺(tái)接受編譯和語(yǔ)法檢查。默認(rèn)情況下,語(yǔ)法錯(cuò)誤將以紅色下劃線顯示,一個(gè)帶白 “X” 的紅點(diǎn)將出現(xiàn)在左邊沿。其他錯(cuò)誤在編輯器的左邊沿通過(guò)燈泡狀的圖標(biāo)來(lái)指示;這些就是編輯器或許能為您修復(fù)的問(wèn)題——即所謂的Quick Fix(快速修復(fù))特性。 上面的代碼例子在 雙擊該建議就會(huì)把建議代碼插入到代碼中的恰當(dāng)位置。 一旦代碼無(wú)錯(cuò)誤地編譯完成,您就能夠從 Eclipse 菜單上選擇 Run 來(lái)執(zhí)行該程序(注意這里不存在單獨(dú)的編譯步驟,因?yàn)榫幾g是在您保存代碼時(shí)進(jìn)行的。如果代碼沒(méi)有語(yǔ)法錯(cuò)誤,它就可以運(yùn)行了)。這時(shí)會(huì)出現(xiàn)一個(gè)具有適當(dāng)默認(rèn)設(shè)置的 Launch Configurations 對(duì)話框;請(qǐng)按右上角的 Run 按鈕。一個(gè)新的選項(xiàng)卡式窗格將出現(xiàn)在下面的窗格(控制臺(tái))中,其中顯示了程序的輸出,如圖 5 所示。 也可以在 Java 調(diào)試器中運(yùn)行程序。首先雙擊編輯器視圖左端的灰色邊沿,從而在調(diào)用 首先,請(qǐng)注意該透視圖左上角的 Debug 視圖。這個(gè)視圖顯示調(diào)用堆棧,并且標(biāo)題欄中有一個(gè)工具欄,它允許您控制程序的執(zhí)行,包括繼續(xù)、掛起或終止程序、跟蹤下一個(gè)語(yǔ)句、單步執(zhí)行下一個(gè)語(yǔ)句,或者從方法返回。 右上角的窗格包含許多選項(xiàng)卡式的視圖,包括 Variables、Breakpoints、Expressions 和 Display。這里我單擊了 Variables 視圖,以便我們能夠看到 可以通過(guò)上下文敏感的幫助,獲得關(guān)于這些視圖的更多信息:?jiǎn)螕粢晥D的標(biāo)題,然后按 F1。 附加插件 Eclipse 標(biāo)準(zhǔn)地附帶了配合 CVS 使用的插件,CVS 是用于源代碼控制的開放源代碼并發(fā)版本系統(tǒng)(Concurrent Versions System)。Team 插件連接到 CVS 服務(wù)器,允許開發(fā)團(tuán)隊(duì)的成員操作一組源代碼文件,卻不會(huì)相互覆蓋其他人的更改。這里不打算進(jìn)一步探討如何從 Eclipse 內(nèi)部進(jìn)行源代碼控制,因?yàn)檫@需要安裝 CVS 服務(wù)器,不過(guò)支持開發(fā)團(tuán)隊(duì)而不只是獨(dú)立的開發(fā),這是 Eclipse 的一個(gè)重要的必備特性。 已經(jīng)可用或已宣布要推出的一些第三方插件包括: 版本控制和配置管理
UML 建模
圖形
Web 開發(fā)、HTML、XML
應(yīng)用服務(wù)器集成
欲了解可用插件的更完整列表,請(qǐng)參閱 參考資料中的鏈接。 例子:一個(gè)用于 UML 建模的插件 下載之后,插件的安裝通常是通過(guò)解壓縮下載文件,并將其內(nèi)容復(fù)制到 Eclipse 插件目錄來(lái)完成的。在此例中,GEF 需要解壓縮到 Eclipse目錄(它將自動(dòng)從該目錄進(jìn)入插件目錄)。為安全起見(jiàn),您可能想將它解壓縮到某個(gè)臨時(shí)目錄,再相應(yīng)地從那里復(fù)制相關(guān)目錄。如果 Eclipse 正在運(yùn)行,您需要停止它然后再重新啟動(dòng)它,這樣它才能識(shí)別新安裝的插件。 一旦 EclipseUML(以及 GEF)安裝完成,您就能夠像創(chuàng)建一個(gè) Java 類文件一樣創(chuàng)建一個(gè)類圖。在 Java 透視圖中,右鍵單擊 Package Explorer 中的“Hello”項(xiàng)目,然后從彈出菜單上選擇 New=>Other。New 對(duì)話框的左邊窗格中將會(huì)有一個(gè)用于 UML 的新選項(xiàng)。EclipseUML 的免費(fèi)版本僅支持類圖,因此右側(cè)的惟一選項(xiàng)是 UML Class Diagram。請(qǐng)選擇 UML Class Diagram,然后為該類圖鍵入一個(gè)名稱,比如“Hello”: 編輯器區(qū)域中將會(huì)出現(xiàn)一個(gè)圖形編輯器,它帶有用于繪制類圖的畫布。您可以通過(guò)兩種方式創(chuàng)建類圖:通過(guò)將 Java 文件從 Package Explorer 拖放到類圖上,從而對(duì)現(xiàn)有代碼進(jìn)行逆向工程;或者使用空白類圖上面工具欄中可用的繪制工具。要試驗(yàn)第一種方法,請(qǐng)創(chuàng)建一個(gè)名為 Person 的新類(使用 File=>New=>Class),然后賦予它下面列出的兩個(gè)私有屬性:
(應(yīng)該承認(rèn),我僅鍵入了針對(duì) name 和 address 的行。getter 和 setter 方法是通過(guò) Eclipse 自動(dòng)生成的,即右鍵單擊源代碼,然后從彈出菜單上選擇 Source=>Generate Getter and Setter。) 請(qǐng)保存并關(guān)閉 要從 UML 創(chuàng)建 Java 類,請(qǐng)單擊類圖窗口頂部工具欄上的“New class”按鈕,即左起第三個(gè)按鈕,然后單擊類圖。當(dāng) New 類向?qū)Т蜷_時(shí),請(qǐng)鍵入 Adress 作為類名稱,然后按 Finish。 您可以右鍵單擊類名稱并選擇 New=>Attribute,從而給類添加屬性。在 New 屬性對(duì)話框中,請(qǐng)輸入屬性名稱、類型和可見(jiàn)性。然后右鍵單擊類名稱并選擇 New=>Method來(lái)添加方法。 當(dāng)您更改類圖時(shí),圖下面的 Source Editor 窗口將反映所做的更改。最后,您可以單擊 Association 按鈕(左起第五個(gè)),繪制一條從 Person 類指向 Address 類的線段,從而繪制這兩個(gè)類之間的關(guān)系圖。這樣會(huì)調(diào)出另外一個(gè)對(duì)話框,您可以在其中輸入關(guān)聯(lián)屬性(請(qǐng)參考 EclipseUML 幫助,以了解關(guān)于必需信息的更多內(nèi)容)。完成后的圖應(yīng)該類似如下: 這個(gè) UML 插件展示了 Eclipse 插件的幾個(gè)典型特點(diǎn)。首先,它展示了工具之間的緊密集成。表面上絕對(duì)無(wú)法看出有多個(gè)組件在工作;與 Eclipse 平臺(tái)和 JDT 的集成是無(wú)縫的。例如,當(dāng) Person 類被創(chuàng)建時(shí),它顯示語(yǔ)法錯(cuò)誤是因?yàn)樗囊粋€(gè)屬性 另一個(gè)特點(diǎn)是 EclipseUML 利用其他插件提供的功能的能力——在此例中是 GEF 插件,它提供用于開發(fā)可視化編輯器的工具。 還有另一個(gè)特點(diǎn)涉及 EclipseUML 插件使用多層次功能來(lái)分發(fā)的方式。支持類圖的基本插件是免費(fèi)的,但是更成熟的版本要付費(fèi)才能使用。 Eclipse 平臺(tái)體系結(jié)構(gòu) 圖 10. Eclipse 平臺(tái)體系結(jié)構(gòu) 平臺(tái) 工作區(qū) 工作臺(tái) SWT 已被證明是 Eclipse 最具爭(zhēng)議的部分。SWT 比 Swing 或 SWT 更緊密地映射到底層操作系統(tǒng)的本機(jī)圖形功能,這不僅使得 SWT 更快速,而且使得 Java 程序具有更像本機(jī)應(yīng)用程序的外觀和感覺(jué)。使用這個(gè)新的 GUI API可能會(huì)限制 Eclipse 工作臺(tái)的可移植性,不過(guò)針對(duì)大多數(shù)流行操作系統(tǒng)的 SWT 移植版本已經(jīng)可用。 Eclipse 對(duì) SWT 的使用只會(huì)影響 Eclipse 自身的可移植性——使用 Eclipse 構(gòu)建的任何 Java 應(yīng)用程序都不會(huì)受到影響,除非它們使用 SWT 而不是使用 Swing/AWT。 團(tuán)隊(duì)支持 幫助 |
|