試驗一下 Java 開發環境,我們將創建並運行一個“Hello, world”應用程序。使用 Java 透視圖,右鍵單擊“Hello”項目,選擇 New=>Class,如圖 2 所示。在隨後出現的對話框中,鍵入“Hello”作為類名稱。在“Which method stubs would you like to create?”下面,選中“public static void main(String[] args)”復選框,然後按 Finish。
這樣將在編輯器區域創建一個包含 Hello 類和空的 main() 方法的 .Java 文件,如圖 3 所示。然後向該方法添加如下代碼(注意其中 i 的聲明是有意省略了的):
您會在鍵入時注意到 Eclipse 編輯器的一些特性,包括語法檢查和代碼自動完成。在 2.1 版(我曾下載 M2 版來試用過)中,當您鍵入開括號或雙引號時,Eclipse 會自動提供配對的符號,並將光標置於符號對之內。在其他情況下,您可以通過按 Ctrl-Space 來調用代碼自動完成功能。代碼自動完成提供了上下文敏感的建議列表,您可通過鍵盤或鼠標來從列表中選擇。這些建議可以是針對某個特定對象的方法列表,也可以是基於不同的關鍵字(比如 for 或 while)來展開的代碼片斷。語法檢查依賴增量編譯。每當您保存代碼,它就在後台接受編譯和語法檢查。默認情況下,語法錯誤將以紅色下劃線顯示,一個帶白 “X” 的紅點將出現在左邊沿。其他錯誤在編輯器的左邊沿通過燈泡狀的圖標來指示;這些就是編輯器或許能為您修復的問題——即所謂的Quick Fix(快速修復)特性。
上面的代碼例子在 for 語句後面有一個燈泡狀圖標,因為 i 的聲明被省略了。雙擊該圖標將調出建議的修復列表。在此例中,它將提供創建一個類字段 i、一個局部變量 i 或一個方法參數 i 的建議;單擊其中的每一個建議都會顯示將要生成的代碼。 顯示了該建議列表和建議創建一個局部變量之後生成的代碼。
雙擊該建議就會把建議代碼插入到代碼中的恰當位置。一旦代碼無錯誤地編譯完成,您就能夠從 Eclipse 菜單上選擇 Run 來執行該程序(注意這裡不存在單獨的編譯步驟,因為編譯是在您保存代碼時進行的。如果代碼沒有語法錯誤,它就可以運行了)。這時會出現一個具有適當默認設置的 Launch Configurations 對話框;請按右上角的 Run 按鈕。一個新的選項卡式窗格將出現在下面的窗格(控制台)中,其中顯示了程序的輸出,如圖 5 所示。
也可以在 Java 調試器中運行程序。首先雙擊編輯器視圖左端的灰色邊沿,從而在調用 System.out.println() 之後的 main() System.out.println() 中設置一個斷點。一個藍色的點將會出現在那裡。然後從 Run 菜單上選擇 Debug。正如上面描述的,這時會出現一個 Launch Configurations 對話框。請選擇 Run。透視圖將自動切換到 Debug 透視圖,其中具有許多有趣的新視圖,如圖 6 所示:
首先,請注意該透視圖左上角的 Debug 視圖。這個視圖顯示調用堆棧,並且標題欄中有一個工具欄,它允許您控制程序的執行,包括繼續、掛起或終止程序、跟蹤下一個語句、單步執行下一個語句,或者從方法返回。右上角的窗格包含許多選項卡式的視圖,包括 Variables、Breakpoints、Expressions 和 Display。這裡我單擊了 Variables 視圖,以便我們能夠看到 i 的當前值。可以通過上下文敏感的幫助,獲得關於這些視圖的更多信息:單擊視圖的標題,然後按 F1。
附加插件除了像 JDT 這樣用於編輯、編譯和調試應用程序的插件外,還有些可用的插件支持從建模、生成自動化、單元測試、性能測試、版本控制到配置管理的完整開發過程。 Eclipse 標准地附帶了配合 CVS 使用的插件,CVS 是用於源代碼控制的開放源代碼並發版本系統(Concurrent Versions System)。Team 插件連接到 CVS 服務器,允許開發團隊的成員操作一組源代碼文件,卻不會相互覆蓋其他人的更改。這裡不打算進一步探討如何從 Eclipse 內部進行源代碼控制,因為這需要安裝 CVS 服務器,不過支持開發團隊而不只是獨立的開發,這是 Eclipse 的一個重要的必備特性。已經可用或已宣布要推出的一些第三方插件包括:版本控制和配置管理CVS Merant PVCS Rational ClearCase UML 建模 OMONDO EclipseUMLRational XDE (代替 Rose) Together WebSphere Studio Edition 圖形Batik SVG Macromedia Flash Web 開發、Html、XML Macromedia Dreamweaver XMLBuddy 應用服務器集成Sysdeo Tomcat launcher要查看插件的例子,以及查看它是如何與 Eclipse 集成的,請下載流行的 OMONDO EclipseUML,該插件是免費的。這個插件依賴 GEF,即 Graphical Editor Framework,這是另一個 Eclipse 插件。GEF 是 Tools 子項目的一部分。要下載 GEF,請轉到 Eclipse Web 站點,選擇“downloads”,然後單擊“Tools PMC downloads page”鏈接。注意您需要下載 OMONDO 推薦的 GEF 版本(針對 OMONDO 1.0.2 的是 GEF 2.0 版)。下載之後,插件的安裝通常是通過解壓縮下載文件,並將其內容復制到 Eclipse 插件目錄來完成的。在此例中,GEF 需要解壓縮到 Eclipse目錄(它將自動從該目錄進入插件目錄)。為安全起見,您可能想將它解壓縮到某個臨時目錄,再相應地從那裡復制相關目錄。如果 Eclipse 正在運行,您需要停止它然後再重新啟動它,這樣它才能識別新安裝的插件。一旦 EclipseUML(以及 GEF)安裝完成,您就能夠像創建一個 Java 類文件一樣創建一個類圖。在 Java 透視圖中,右鍵單擊 Package Explorer 中的“Hello”項目,然後從彈出菜單上選擇 New=>Other。New 對話框的左邊窗格中將會有一個用於 UML 的新選項。EclipseUML 的免費版本僅支持類圖,因此右側的惟一選項是 UML Class Diagram。請選擇 UML Class Diagram,然後為該類圖鍵入一個名稱,比如“Hello”:
編輯器區域中將會出現一個圖形編輯器,它帶有用於繪制類圖的畫布。您可以通過兩種方式創建類圖:通過將 Java 文件從 Package Explorer 拖放到類圖上,從而對現有代碼進行逆向工程;或者使用空白類圖上面工具欄中可用的繪制工具。要試驗第一種方法,請創建一個名為 Person 的新類(使用 File=>New=>Class),然後賦予它下面列出的兩個私有屬性:
/** Person.Java * @author david */public class Person {private String name;private Address address;/** * Returns the address. * @return Address */public Address getAddress() { return address;}/** * Returns the name. * @return String */public String getName() { return name;}/** * Sets the address. * @param address The address to set */public void setAddress(Address address) { this.address = address;}/** * Sets the name. * @param name The name to set */public void setName(String name) { this.name = name;}}
(應該承認,我僅鍵入了針對 name 和 address 的行。getter 和 setter 方法是通過 Eclipse 自動生成的,即右鍵單擊源代碼,然後從彈出菜單上選擇 Source=>Generate Getter and Setter 。) 請保存並關閉 Person.Java Hello.ucd。
要從 UML 創建 Java 類,請單擊類圖窗口頂部工具欄上的“New class”按鈕,即左起第三個按鈕,然後單擊類圖。當 New 類向導打開時,請鍵入 Adress 作為類名稱,然後按 Finish。
您可以右鍵單擊類名稱並選擇 New=>Attribute,從而給類添加屬性。在 New 屬性對話框中,請輸入屬性名稱、類型和可見性。然後右鍵單擊類名稱並選擇 New=>Method 來添加方法。當您更改類圖時,圖下面的 Source Editor 窗口將反映所做的更改。最後,您可以單擊 Association 按鈕(左起第五個),繪制一條從 Person 類指向 Address 類的線段,從而繪制這兩個類之間的關系圖。這樣會調出另外一個對話框,您可以在其中輸入關聯屬性(請參考 EclipseUML 幫助,以了解關於必需信息的更多內容)。完成後的圖應該類似如下:
這個 UML 插件展示了 Eclipse 插件的幾個典型特點。首先,它展示了工具之間的緊密集成。表面上絕對無法看出有多個組件在工作;與 Eclipse 平台和 JDT 的集成是無縫的。例如,當 Person 類被創建時,它顯示語法錯誤是因為它的一個屬性 Address 沒有定義。一旦 Address 類在 UML 圖中創建完成,這些組件就會分開顯示出來。另一個特點是 EclipseUML 利用其他插件提供的功能的能力——在此例中是 GEF 插件,它提供用於開發可視化編輯器的工具。還有另一個特點涉及 EclipseUML 插件使用多層次功能來分發的方式。支持類圖的基本插件是免費的,但是更成熟的版本要付費才能使用。Eclipse 平台體系結構Eclipse 平台是一個具有一組強大服務的框架,這些服務支持插件,比如 JDT 和插件開發環境(PDE)。它由幾個主要的部分構成:平台運行庫、工作區、工作台、團隊支持和幫助。
平台平台運行庫是內核,它在啟動時檢查已安裝了哪些插件,並創建關於它們的注冊表信息。為降低啟動時間和資源使用,它在實際需要任何插件時才加載該插件。除了內核外,其他每樣東西都是作為插件來實現的。工作區 工作區是負責管理用戶資源的插件。這包括用戶創建的項目、那些項目中的文件,以及文件變更和其他資源。工作區還負責通知其他插件關於資源變更的信息,比如文件創建、刪除或更改。 工作台工作台為 Eclipse 提供用戶界面。它是使用標准窗口工具包(SWT)和一個更高級的 API(JFace)來構建的;SWT 是 Java 的 Swing/AWT GUI API 的非標准替代者,JFace 則建立在 SWT 基礎上,提供用戶界面組件。SWT 已被證明是 Eclipse 最具爭議的部分。SWT 比 Swing 或 SWT 更緊密地映射到底層操作系統的本機圖形功能,這不僅使得 SWT 更快速,而且使得 Java 程序具有更像本機應用程序的外觀和感覺。使用這個新的 GUI API可能會限制 Eclipse 工作台的可移植性,不過針對大多數流行操作系統的 SWT 移植版本已經可用。Eclipse 對 SWT 的使用只會影響 Eclipse 自身的可移植性——使用 Eclipse 構建的任何 Java 應用程序都不會受到影響,除非它們使用 SWT 而不是使用 Swing/AWT。團隊支持團隊支持組件負責提供版本控制和配置管理支持。它根據需要添加視圖,以允許用戶與所使用的任何版本控制系統(如果有的話)交互。大多數插件都不需要與團隊支持組件交互,除非它們提供版本控制服務。幫助 幫助組件具有與 Eclipse 平台本身相當的可擴展能力。與插件向 Eclipse 添加功能相同,幫助提供一個附加的導航結構,允許工具以 Html 文件的形式添加文檔。Eclipse 的前景圍繞 Eclipse 的開發正處於關鍵階段。主要軟件工具提供商都參與進來了,並且開放源代碼 Eclipse 插件項目的數量正在與日俱增。可移植、可擴展、開放源代碼的框架並不是個新思想(您會想起 EMacs),但是由於它成熟、健壯和優雅的設計,Eclipse 帶來了全新的動力。IBM 價值 4000 萬美元的世界級軟件在開放源代碼領域的發布,給業界帶來了久違的震撼。