Eclipse 專案及其平臺架構
現在,先來看看 Eclipse 項目,再共同領略一下 Eclipse 平臺的體系結構。
1. Eclipse 項目
Eclipse 生態環境是一個大型社區並且有時令人生畏。在筆者寫作本書時,Eclipse 中正在開發的專案超過 90 個,而各個發行版只是一個縮影,Eclipse Callisto(3.2 版)發行了 10個專案,而 Eclipse Europa(3.3 版)的發行推出了 21 個項目,Eclipse Ganymede(3.4 版)則同步發行了 24 個主要的 Eclipse 項目(如表 3.1 所示),Eclipse Galileo(3.5 版)包括 33個項目。各發行版旨在展示 Eclipse 技術,還幫助採用者把 Eclipse 技術集成到他們的產品之
中。
表 3.1 Ganymede 發行系列專案(按照字母排序)
序號 | 項目 | 大綱 | Web 站點 |
1 | Business Intelligence and Reporting Tools (BIRT) | 生成報表 | /birt |
2 | Buckminster | 簡化部署 | /Buckminster |
3 | C/C++ Development Tools (CDT) | 編寫 C/C++ 代碼 | /cdt |
4 | Dynamic Languages Toolkit (DLTK) | 編寫 Perl 和 Ruby 代碼 | /dltk |
5 | Device Software Development Platform — Device Debugging (DSDPDD) |
調試嵌入式設備 | /dsdp/dd |
6 | Device Software Development Platform — Native Application Builder (DSDPNAB) |
構建設備 GUI | /dsdp/nab |
7 | Device Software Development Platform — Target Management (DSDPTM) |
遠程流覽器(SSH) | /dsdp/tm |
8 | Eclipse Data Tools Platform (DTP) | 管理以資料為中心的系統 | /datatools/ |
9 | Eclipse Communications Framework (ECF) | 在 Eclipse 中交談 | /ecf |
10 | Eclipse Project | 用於構建 Eclipse 的工具,包括 Platform、JDT、PDE 和Equinox | /eclipse |
11 | Eclipse Modeling Framework (EMF) | 開發模型 | /emf |
12 | Eclipse Modeling Framework Technologies (EMFT) | 用於輔助模型開發的實用程式 | /emft |
13 | Eclipse Packaging Project (EPP) | 構建安裝程式 | /epp |
14 | Graphical Editing Framework (GEF) | 開發圖形應用程式 | /gef |
15 | Graphical Modeling Framework (GMF) | 開發圖形編輯器 | /gmf |
16 | Model Development Tools (MDT) | 用於輔助模型開發的實用程式 | /mdt |
17 | M2M | 用於模型轉換語言的框架 | /m2m/ |
18 | Model To Text (M2T) | 用於輔助模型開發的實用程式 | /m2t |
19 | Mylyn | 關注基於任務的開發 | /mylyn |
20 | Rich Ajax Platform (RAP) | 開發基於 Eclipse 的 Web2.0應用程式 | /rap |
21 | SOA Tools Platform (STP) | 面向 SOA 的工具 | /stp |
22 | Subversive | 支援子版本 | /subversive |
23 | Test and Performance Tools Platform (TPTP) | 分析程式(Profiler) | /tptp |
24 | Web Tools Platform (WTP) | 編寫基於 Web 的應用程式 | /webtools |
注:表 3.1 中的 Web 站點鏈結的基底位址為:http://www.eclipse.org
有興趣的讀者可以進一步查閱相關資源。接下來,簡要介紹 Eclipse 的框架結構。
2. Eclipse 平臺架構
Eclipse 是當前世界上最新最實用的 IDE 環境,被譽為令人著迷的可以隨心所欲定制的開發環境,它提供的核心框架和可擴展的插件機制給廣大程式師提供了無限的想像和創造空間,網上流傳相當豐富且全面的開發工具方面的插件,使 Eclipse 已經超越了開發環境的概念。現在,您可以先想一想或者查閱一下 Mozilla Firefox 及其插件,體驗一下這個 Web 流覽器是不是很好的解決了擴展性問題。
Eclipse 也一樣,通過它的插件模式我們可以安裝不同的插件來進行 HTML 的編輯、資料庫的設計、Java 開發、C++ 開發等等,所有這些開發工作完全在一個 Eclipse 安裝平臺上進行。而且 Eclipse 模型所能做的遠超過了這些,理解 Eclipse 插件的關鍵是首先要理解 Eclipse擴展點,正是這個擴展點幫您在 Eclipse 中添加新功能。例如,如果希望在功能表中添加一項,就是通過 Eclipse 擴展點實現的。
所以當 Eclipse 插件實現了一個擴展點,就創建了一個擴展,此外,擴展還可以創建自己的擴展點。這種插件模式的擴展和擴展點是遞迴的,而且被證明是非常靈活的。在最初對Eclipse 開發進行區域性調查時,最初的決定之一便是:“We will eat our own dog food”(注:諺語,指一個公司在日常運行中使用自己的產品),即 Eclipse 團隊要使用 Eclipse 進行 Eclipse的開發。事實上,Eclipse 本身是一個核心的運行時綁定了一些在插件之上構建的插件,換句話說,Eclipse 本身就是一系列的插件。這樣隨著使用 Eclipse 構建 Eclipse 的經驗累積,這種插件模式就變得日臻成熟,並從而造就了 Eclipse 在 IDE 市場上的霸主地位。
實際上,目前的 Eclipse 本身就具備資源管理和外部程式的功能,加上無所不能的插件,將構成一個豐富多彩的工作環境而不僅僅是一個 IDE。Eclipse 以 JVM 為底層,包含了Platform、JDT(Java Development Tools)、PDE(Plugin
Development Environment)等幾層,
如圖 3.11 所示。Eclipse 的特徵就在於可以使用 plugin(插件程式)來擴展它的功能。
Eclipse 平臺(Eclipse Platform)就像一幢房子,由數種元件組成:平臺核心(Platform kernel)、工作臺(Workbench)、JFace、SWT、工作空間(Workspace)、團隊元件(Team component)和說明元件(Help)以及 JDT、PDE 等等都是基於這個平臺的插件。下面介紹一下這些基礎插件的基本功能,以幫助讀者理解以更加自如的駕馭 Eclipse 這把“利器”。
Workbench 用來控制工作臺。工作臺指的是桌面開發環境。工作臺的任務就是創建、管理和導航工作臺的資源,並提供公共範例,從而獲得無縫的工具集成。啟動 Eclipse 後,工作臺是主要的工作視窗(參閱圖 3.18),Eclipse 工作臺可以用來創建、管理和導航專案,也可以管理資源。但它本身並不知道如何編輯、運行和測試 Java 程式或 JSP 頁面,這些功能都是由其他元件來完成的。簡單的說,Workbench 負責控制工作臺上包括功能表、視圖、透視圖等等的操作。Workbench 包含用於構建用戶介面的附加工具箱 JFace 和 SWT。
SWT(Standard Widget Toolkit)是一個類似 awt、swing 的 Java 元件,是一個羽量級的元件,是 awt 和 swing 的強大競爭者,而且和 awt、swing 不同的是,它底層實現不是基於JRE,而是根據不同作業系統,有相應的動態連結程式庫實現,所以作出來的效果很專業,SWT主要用於 Workbench 的 UI 繪製。迄今為止,SWT 無論是在性能和外觀上,都超越了 SUN公司提供的 awt 和 swing,而且,SWT 已經十分穩定。
JFace 是基於 SWT 的一個插件,對 SWT 進行了封裝,封裝實現了對話方塊、視圖等東西。
Workspace 是用來控制工作空間的(有別於工作臺),包括對工作空間中項目的控制、刪除、添加、編譯專案資源等等,都由它來控制。Eclipse 平臺體系結構的重點在於工作空間。工作空間維護構建和測試軟體專案所需的一切,它包含物件(源代碼和資源),還保存了用於專案、IDE 和插件的配置設置。
Help 是一個 Eclipse 幫助系統,單擊 Eclipse 的功能表〖Help〗〖Help Content〗就可以打開這個幫助系統,這個系統不是封閉的,可以進行擴展。
Team 是一個 CVS 系統,可以和 CVS Server 協調使用,進行版本控制。
JDT 即 Java Development Tools,用來開發 Java 的插件。這是 Eclipse 附帶的一個標準的插件集,大多數用戶可以把 Eclipse 當作 Java IDE 來使用,雖然它本身遠不止於此。
PDE 即 Plug-in Development Environment,開發插件的平臺。
Eclipse 平臺的用戶介面(UI:User Interface;參見圖 3.16)有這幾個組件:功能表、工具欄、視圖、透視圖、編輯器。
視圖就是 View,比如 Navigator、Outline、Tasks 等等都是視圖,每一個視圖都有自己相應的功能,可以參看 Workbench User Guide 來瞭解這些視圖。
編輯器,就是 Editor,比如有開發 Java 的編輯器,編寫文本的編輯器,等等。
透視圖,英文是 perspective,Eclipse 工作臺把幾個視圖的組合稱為透視圖,如:“Java透視圖”,每個“工作臺”視窗都包含一個或多個透視圖。透視圖定義“工作臺”窗口中視圖(View,如 Menu、Toolbar、Editor 等)的初始集和佈局。在視窗中,每個透視圖共用同一組編輯器。每個透視圖都提供了一組功能,目的在於完成特定類型的任務或使用特定類型的資源。比如要開發 Java,就經常會用到 Package Explorer、Tasks、Outline 等 View 和編寫Java 的 Editor,以及適合開發 Java 的功能表(Source 和 Refactor),那它就會佈局一個適合開發 Java 的透視圖;而“調試”透視圖包含將在調試 Java 程式時使用的視圖。當在“工作臺”中工作時,有可能頻繁地在各個透視圖之間進行切換。
透視圖控制出現在特定功能表和工具欄中的內容。它們定義可視操作集,可以更改這些操
作集來定制透視圖,並且可以保存以此方式構建的透視圖,並建立自己的定制透視圖,稍後
可以再次打開它。
小貼士 當把 Eclipse 的面孔整的一塌糊塗、目不忍睹的時候,可以使用〖Window〗
〖Reset Perspective〗菜單將 Eclipse 還原成默認的老面孔(透視圖)。