本文為您提供關於 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 時,首先看到的是下面的歡迎畫面:
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。
這樣將在編輯器地區建立一個包含 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 伺服器,允許Team Dev的成員操作一組原始碼檔案,卻不會相互覆蓋其他人的更改。這裡不打算進一步探討如何從 Eclipse 內部進行原始碼控制,因為這需要安裝 CVS 伺服器,不過支援Team Dev而不只是獨立的開發,這是 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 萬美元的世界級軟體在開放原始碼領域的發布,給業界帶來了久違的震撼。
原文地址:http://www.javafan.net/article/20041209094024728.html