Eclipse 平臺入門

Eclipse 平臺入門

作者:David Gallardo     來自:IBM

  本文爲您提供關於 Eclipse 平臺的概述,包括其起源和體系結構。本文首先簡要討論 Eclipse 的開放源代碼性質及其對多種編程語言的支持,然後通過一個簡單的程序例子展示 Java 開發環境。本文還將考查以插件擴展形式可用的一些軟件開發工具,並展示一個用於 UML 建模的插件擴展。

  Eclipse 是什麼?

  Eclipse 是一個開放源代碼的、基於 Java 的可擴展開發平臺。就其本身而言,它只是一個框架和一組服務,用於通過插件組件構建開發環境。幸運的是,Eclipse 附帶了一個標準的插件集,包括 Java 開發工具(Java Development Tools,JDT)。

  雖然大多數用戶很樂於將 Eclipse 當作 Java IDE 來使用,但 Eclipse 的目標不僅限於此。Eclipse 還包括插件開發環境(Plug-in Development Environment,PDE),這個組件主要針對希望擴展 Eclipse 的軟件開發人員,因爲它允許他們構建與 Eclipse 環境無縫集成的工具。由於 Eclipse 中的每樣東西都是插件,對於給 Eclipse 提供插件,以及給用戶提供一致和統一的集成開發環境而言,所有工具開發人員都具有同等的發揮場所。

  這種平等和一致性並不僅限於 Java 開發工具。儘管 Eclipse 是使用 Java 語言開發的,但它的用途並不限於 Java 語言;例如,支持諸如 C/C++、COBOL 和 Eiffel 等編程語言的插件已經可用,或預計會推出。Eclipse 框架還可用來作爲與軟件開發無關的其他應用程序類型的基礎,比如內容管理系統。

  基於 Eclipse 的應用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它構成了 IBM Java 開發工具系列的基礎。例如,WebSphere Studio Application Developer 添加了對 JSP、servlet、EJB、XML、Web 服務和數據庫訪問的支持。

  Eclipse 是開放源代碼的軟件

  開放源代碼軟件是這樣一種軟件,它們在發佈時附帶了旨在確保將某些權利授予用戶的許可證。當然,最明顯的權利就是源代碼必須可用,以便用戶能自由地修改和再分發該軟件。這種用戶權利的保護是通過一種稱爲 copyleft 的策略來完成的:軟件許可證主張版權保護,除非明確授予用戶這樣的權利,否則用戶不得分發該軟件。copyleft 還要求同一許可證涵蓋任何被再分發的軟件。這實際上倒置了版權的目的——使用版權來授予用戶權利,而不是爲軟件的開發者保留版權——copyleft 經常被描述爲“保留所有版權”。

  曾經四處蔓延的對開放源代碼軟件的許多恐懼、擔憂和疑慮,都與某些 copyleft 許可證的所謂“病毒”性質有關——如果使用開放源代碼軟件作爲您開發的程序的一部分,您將失去自己的知識產權,因爲該許可證將“傳染”您開發的專有部分。換句話說,該許可證可能要求與開放源代碼軟件一起打包的所有軟件,都必須在相同的許可證之下發布。雖然這對最著名的 copyleft 許可證(即 GNU 通用公共許可證,例如 Linux 就是在該許可證之下發布的)來說可能是事實,當時還有其他許可證在商業化和社區考慮之間提供了較好的平衡。

  開放源代碼計劃(Open Software Initiative)是一家非營利機構,它明確定義了開放源代碼的含義及滿足其標準的認證許可證。Eclipse 是在 OSI 認可的通用公共許可證(CPL)1.0 版之下被授予許可證的,CPL“旨在促進程序的商業化使用……”(欲獲得指向通用公共許可證 1.0 版完整文本的鏈接,請參閱本文稍後的 參考資料)。

  爲 Eclipse 創建插件或將 Eclipse 用作軟件開發應用程序基礎的開發人員,需要發佈他們在 CPL 下使用或修改的任何 Eclipse 代碼,但是他們可以自由決定自己添加的代碼的許可證授予方式。與出自 Eclipse 的軟件一起打包的專有代碼不需要作爲開放源代碼來授予許可證,該源代碼也不需要提供給用戶。

  儘管大多數開發人員不會使用 Eclipse 來開發插件,或創建基於 Eclipse 的新產品,但是 Eclipse 的開放源代碼性質所意味的,並不只是它使得 Eclipse 免費可用(儘管便於商業化的許可證意味着插件可能要花錢)。開放源代碼鼓勵創新,並激勵開發人員(甚至是商業開發人員)爲公共開放源代碼庫貢獻代碼。對此存在許多原因,不過最本質的原因或許是爲這個項目作貢獻的開發人員越多,這個項目就會變得對每個人都越寶貴。隨着這個項目變得更加有用,更多的開發人員將會使用它,並圍繞它形成一個社區,就像那些圍繞 Apache 和 Linux 形成的社區一樣。

  Eclipse 是什麼機構?

  Eclipse.org 協會管理和指導 Eclipse 正在進行中的開發。在據說 IBM 花了 4000 萬美元開發 Eclipse,並把它作爲一個開放源代碼項目發佈之後,Eclipse.org 協會吸收了許多軟件工具提供商,包括 Borland、Merant、Rational、RedHat、SuSE、TogetherSoft 和 QNX。從那以後還有其他公司相繼加入,包括 Hewlett Packard、Fujitsu、Sybase。這些公司分別向理事會派了一名代表,這個理事會負責確定 Eclipse 項目的方向和範圍。

  在最高層,項目管理委員會(Project Management Committee,PMC)管理着 Eclipse 項目。這個項目被劃分爲多個子項目,每個子項目都有一名負責人。大型子項目又被劃分爲組,每個組也有一名負責人。目前,這其中的大多數管理角色都由最初開發 Eclipse 的 IBM 子公司 Object Technology International (OTI)的人擔任,但是作爲一個開放源代碼的項目,它歡迎任何人的參與。任何特定部門的職責是通過該部門對項目的貢獻來爭取的。

  現在我們已經考察了 Eclipse 背後的一些理論、歷史和管理,下面讓我們考察該產品本身。

  Eclipse 工作臺

  在第一次打開 Eclipse 時,首先看到的是下面的歡迎屏幕:


圖 1. Eclipse 工作臺

  Eclipse 工作臺由幾個稱爲 視圖(view) 的窗格組成,比如左上角的 Navigator 視圖。窗格的集合稱爲 透視圖(perspective)。默認的透視圖是 Resource 透視圖,它是一個基本的通用視圖集,用於管理項目以及查看和編輯項目中的文件。

  Navigator 視圖 允許您創建、選擇和刪除項目。Navigator 右側的窗格是 編輯器區域。取決於 Navigator 中選定的文檔類型,一個適當的編輯器窗口將在這裏打開。如果 Eclipse 沒有註冊用於某特定文檔類型(例如,Windows 系統上的 .doc 文件)的適當編輯器,Eclipse 將設法使用外部編輯器來打開該文檔。

  Navigator 下面的 Outline 視圖 在編輯器中顯示文檔的大綱;這個大綱的準確性取決於編輯器和文檔的類型;對於 Java 源文件,該大綱將顯示所有已聲明的類、屬性和方法。

  Tasks 視圖 收集關於您正在操作的項目的信息;這可以是 Eclipse 生成的信息,比如編譯錯誤,也可以是您手動添加的任務。

  該工作臺的大多數其他特性,比如菜單和工具欄,都應該和其他那些熟悉的應用程序類似。一個便利的特性就是不同透視圖的快捷方式工具欄,它顯示在屏幕的左端;這些特性隨上下文和歷史的不同而有顯著差別。Eclipse 還附帶了一個健壯的幫助系統,其中包括 Eclipse 工作臺以及所包括的插件(比如 Java 開發工具)的用戶指南。至少瀏覽一遍這個幫助系統是值得的,這樣可以看到有哪些可用的選項,同時也可更好地理解 Eclipse 的工作流程。

  爲繼續這個短暫的 Eclipse 之旅,我們將在 Navigator 中創建一個項目。右鍵單擊 Navigator 視圖,然後選擇 New=>Project。當 New Project 對話框出現時,選擇左面的 Java。標準 Eclipse 只有一種 Java 項目類型,名爲“Java Project”。如果安裝了插件來提供 JSP 和 servlet 支持,我們會從這裏看到一個用於 Web 應用程序的附加選項。眼下,請選擇 Java Project,在提示項目名稱時輸入“Hello”,然後按 Finish。

  接下來,我們將檢查一下 Java 透視圖。取決於您喜歡的屏幕管理方式,您可以通過選擇 Window=>Open Perspective=>Java 來改變當前窗口中的透視圖,也可以通過選擇 Window=>New Window,然後再選擇這個新的透視圖,從而打開一個新的窗口。

  正如您可能預期的那樣,Java 透視圖包含一組更適合於 Java 開發的視圖。其中之一就是左上角的視圖,它是一個包含各種 Java 包、類、jar 和其他文件的層次結構。這個視圖稱爲 Package Explorer。還要注意主菜單已經展開了——並且出現了兩個新的菜單項:Source 和 Refactor。

  Java 開發環境(JDE)

  爲試驗一下 Java 開發環境,我們將創建並運行一個“Hello, world”應用程序。使用 Java 透視圖,右鍵單擊“Hello”項目,選擇 New=>Class,如圖 2 所示。在隨後出現的對話框中,鍵入“Hello”作爲類名稱。在“Which method stubs would you like to create?”下面,選中“public static void main(String[] args)”複選框,然後按 Finish。


圖 2. 在 Java 透視圖中創建新類

  這樣將在編輯器區域創建一個包含 Hello 類和空的 main() 方法的 .java 文件,如圖 3 所示。然後向該方法添加如下代碼(注意其中 i 的聲明是有意省略了的):


圖 3. Java 編輯器中的 Hello 類

  您會在鍵入時注意到 Eclipse 編輯器的一些特性,包括語法檢查和代碼自動完成。在 2.1 版(我曾下載 M2 版來試用過)中,當您鍵入開括號或雙引號時,Eclipse 會自動提供配對的符號,並將光標置於符號對之內。

  在其他情況下,您可以通過按 Ctrl-Space 來調用代碼自動完成功能。代碼自動完成提供了上下文敏感的建議列表,您可通過鍵盤或鼠標來從列表中選擇。這些建議可以是針對某個特定對象的方法列表,也可以是基於不同的關鍵字(比如 for 或 while)來展開的代碼片斷。

  語法檢查依賴增量編譯。每當您保存代碼,它就在後臺接受編譯和語法檢查。默認情況下,語法錯誤將以紅色下劃線顯示,一個帶白 “X” 的紅點將出現在左邊沿。其他錯誤在編輯器的左邊沿通過燈泡狀的圖標來指示;這些就是編輯器或許能爲您修復的問題——即所謂的Quick Fix(快速修復)特性。

  上面的代碼例子在 for 語句後面有一個燈泡狀圖標,因爲 i 的聲明被省略了。雙擊該圖標將調出建議的修復列表。在此例中,它將提供創建一個類字段 i、一個局部變量 i 或一個方法參數 i 的建議;單擊其中的每一個建議都會顯示將要生成的代碼。圖 4 顯示了該建議列表和建議創建一個局部變量之後生成的代碼。


圖 4. Quick Fix 建議

  雙擊該建議就會把建議代碼插入到代碼中的恰當位置。

  一旦代碼無錯誤地編譯完成,您就能夠從 Eclipse 菜單上選擇 Run 來執行該程序(注意這裏不存在單獨的編譯步驟,因爲編譯是在您保存代碼時進行的。如果代碼沒有語法錯誤,它就可以運行了)。這時會出現一個具有適當默認設置的 Launch Configurations 對話框;請按右上角的 Run 按鈕。一個新的選項卡式窗格將出現在下面的窗格(控制檯)中,其中顯示了程序的輸出,如圖 5 所示。


圖 5. 程序的輸出

  也可以在 Java 調試器中運行程序。首先雙擊編輯器視圖左端的灰色邊沿,從而在調用 System.out.println() 之後的 main() System.out.println() 中設置一個斷點。一個藍色的點將會出現在那裏。然後從 Run 菜單上選擇 Debug。正如上面描述的,這時會出現一個 Launch Configurations 對話框。請選擇 Run。透視圖將自動切換到 Debug 透視圖,其中具有許多有趣的新視圖,如圖 6 所示:


圖 6. Debug 透視圖

  首先,請注意該透視圖左上角的 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 EclipseUML
  □ Rational XDE (代替 Rose)
  □ Together WebSphere Studio Edition

  圖形

  □ Batik SVG
  □ Macromedia Flash

  Web 開發、HTML、XML

  □ Macromedia Dreamweaver
  □ XMLBuddy

  應用服務器集成

  □ Sysdeo Tomcat launcher

  欲瞭解可用插件的更完整列表,請參閱 Eclipse 插件列表

  例子:一個用於 UML 建模的插件

  要查看插件的例子,以及查看它是如何與 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”:


圖 7. Class Diagram 編輯器

  編輯器區域中將會出現一個圖形編輯器,它帶有用於繪製類圖的畫布。您可以通過兩種方式創建類圖:通過將 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。


圖 8. Person 類圖

  要從 UML 創建 Java 類,請單擊類圖窗口頂部工具欄上的“New class”按鈕,即左起第三個按鈕,然後單擊類圖。當 New 類嚮導打開時,請鍵入 Adress 作爲類名稱,然後按 Finish。

  您可以右鍵單擊類名稱並選擇 New=>Attribute,從而給類添加屬性。在 New 屬性對話框中,請輸入屬性名稱、類型和可見性。然後右鍵單擊類名稱並選擇 New=>Method 來添加方法。

  當您更改類圖時,圖下面的 Source Editor 窗口將反映所做的更改。最後,您可以單擊 Association 按鈕(左起第五個),繪製一條從 Person 類指向 Address 類的線段,從而繪製這兩個類之間的關係圖。這樣會調出另外一個對話框,您可以在其中輸入關聯屬性(請參考 EclipseUML 幫助,以瞭解關於必需信息的更多內容)。完成後的圖應該類似如下:


圖 9. 關聯

  這個 UML 插件展示了 Eclipse 插件的幾個典型特點。首先,它展示了工具之間的緊密集成。表面上絕對無法看出有多個組件在工作;與 Eclipse 平臺和 JDT 的集成是無縫的。例如,當 Person 類被創建時,它顯示語法錯誤是因爲它的一個屬性 Address 沒有定義。一旦 Address 類在 UML 圖中創建完成,這些組件就會分開顯示出來。

  另一個特點是 EclipseUML 利用其他插件提供的功能的能力——在此例中是 GEF 插件,它提供用於開發可視化編輯器的工具。

  還有另一個特點涉及 EclipseUML 插件使用多層次功能來分發的方式。支持類圖的基本插件是免費的,但是更成熟的版本要付費才能使用。

  Eclipse 平臺體系結構
  Eclipse 平臺是一個具有一組強大服務的框架,這些服務支持插件,比如 JDT 和插件開發環境(PDE)。它由幾個主要的部分構成:平臺運行庫、工作區、工作臺、團隊支持和幫助。


圖 10. Eclipse 平臺體系結構

  平臺
  平臺運行庫是內核,它在啓動時檢查已安裝了哪些插件,並創建關於它們的註冊表信息。爲降低啓動時間和資源使用,它在實際需要任何插件時才加載該插件。除了內核外,其他每樣東西都是作爲插件來實現的。

  工作區
  工作區是負責管理用戶資源的插件。這包括用戶創建的項目、那些項目中的文件,以及文件變更和其他資源。工作區還負責通知其他插件關於資源變更的信息,比如文件創建、刪除或更改。

  工作臺
  工作臺爲 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 萬美元的世界級軟件在開放源代碼領域的發佈,給業界帶來了久違的震撼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章