在整個 Java 開發人員社區,Eclipse 因為行業領先的 Java Development Tools (JDT) 而廣為人知。但 Eclipse 構建目的在於促進外掛程式的使用,而且在這一方面,它獲得了驚人的成功。探索已經構建到 Eclipse 外掛程式中的一些能力,比如使用 Ruby 等其他語言編程,或者是使用 OpenLaszlo 等環境構建互動式多媒體。
簡介
越來越多的 Java 開發人員已經開始欣賞 Eclipse 的 JDT 提供的生產率和品質收益。Eclipse 對編寫 Java 代碼的支援真是棒極了。它的 Java 編輯器提供了文法高亮顯示、格式化、摺疊、內容輔助、代碼模板等許多功能,我們大多數人都無法想像離開它們會怎麼樣。它不斷增長的可用重構和代碼產生功能集合允許您在更高的層級上作業碼,並自動化通常的代碼密集型任務和易錯任務。而且,在開發完代碼並使用 JDT 對編寫和執行 JUnit 測試的內建支援對代碼進行單元測試之後,可以使用 Eclipse 的一流 Java 調試器調試在運行時遇到的任何問題。
除了 JDT 之外,Eclipse SDK —— 最流行的 Eclipse.org 下載 —— 還包含 Plug-in Development Environment (PDE)。PDE 使用特定功能擴充了 JDT 以構建 Eclipse 外掛程式 —— 基於 Eclipse 的應用程式的基本構造塊。事實上,使用由 Eclipse 本身提供的工具能夠超越 Java 開發,可擴充現有 Eclipse 應用程式,或者甚至建立全新的應用程式。
所有外掛程式的匯總
如果曾經使用過 Eclipse,可能會遇到術語 “外掛程式”。在架構上,Eclipse 由一個小運行時層構成,其中包含許多功能模組或 Eclipse 術語中所謂的 “外掛程式”。外掛程式是在 Eclipse 應用程式中提供所有功能的組件。它們通過其 API 一起協作來交付最終結果。在 Eclipse 中,甚至最基礎的功能,比如尋找和啟動安裝的外掛程式,都封裝在外掛程式中。
為了擴充現有 Eclipse 功能或在其上進行構建,外掛程式將具體的擴充 貢獻給由其他外掛程式暴露的擴充點。通常,外掛程式專註於特定地區的責任,並通過一個或多個擴充點的方式將其他責任指派給其他外掛程式。例如,一個外掛程式允許您可視地並行比較兩個檔案的內容,但它不會關心如何讀取這些檔案甚至如何解釋這些檔案的結構;這是其他外掛程式的工作。比較兩個檔案時,該外掛程式首先檢查是否有另一個外掛程式可以解釋這些檔案的結構。如果找到一個,它就會向找到的外掛程式詢問有關檔案結構的資訊,並在比較過程中使用該資訊。
可以看到,模組化架構為 Eclipse 提供了巨大的靈活性,並提供了一個可以支援原設計者沒有預料到的大量應用程式的平台。
安裝 Eclipse 外掛程式
上網尋找新外掛程式時,可能會發現它們以可下載檔案 —— zip 或 JAR 檔案的形式存在。外掛程式的發行者應該提供安裝說明。通常,以 JAR 檔案發布的獨立外掛程式可以直接儲存到 Eclipse 安裝(eclipse 目錄)中的外掛程式目錄中。在一些情況下,多個外掛程式可能打包在一起,檔案檔案可能將它們放在一個外掛程式目錄下。如果是這種情況,則必須將檔案檔案解壓到您的 eclipse 目錄中。在安裝新外掛程式之後,必須重新啟動工作台以便更改生效。
注意:重新啟動 Eclipse 工作台 (eclipse -clean) 時,確保將 -clean 添加到命令列中。這將確保您的 Eclipse 外掛程式配置是最新的。
多個外掛程式還發行就緒為一個特性(feature)。Eclipse Update Manager 是工作台的一部分,它使用特性概念作為分組相關外掛程式的方式,以便於安裝和配置。在這種情況下,您將注意到的惟一差別就是發布的檔案檔案中包含除外掛程式目錄之外的特性目錄。
Update Manager 是一個功能強大的工具,用於管理 Eclipse 配置並使之保持最新。有關如何使用 Update Manager 的詳細資料,請參閱 Eclipse Help 中的 Workbench User Guide > Tasks > Updating features with the update manager。
萬能 IDE
最初發行時,Eclipse 被吹捧為一個萬能的工具整合平台,並附帶有一組功能豐富的 Java 開發工具。它的願望是開發工具行業領頭人能夠採用 Eclipse 作為最佳血統工具的底層平台。
最終,Eclipse 已經履行了它的承諾。可用 Eclipse IDE 外掛程式和甚至整個開發套件的數目在不斷增長。Eclipse Foundation 獨自監督了許多用其他程式設計語言和平台擴充原始 Eclipse IDE 的項目的開發。越來越多的公司開始加入 Eclipse Foundation,越來越多的新項目被建立和貢獻。
Enterprise Java 和 Web Application Development
雖然開發 J2EE 應用程式通常需要 Java 編程,但也需要其他技術。因此,構建企業級軟體需要全新的工具集。
Eclipse Foundation 自己管理 Web Tools Project (WTP),後者試圖提供用於開發 J2EE Web 應用程式的工具和工具架構。雖然許多基於 Eclipse 的 J2EE 開發套件在商業市場上出現的時間並不長,但 WTP 相對而言仍是一個新來者。它實際上是以下三個子項目的組合:Web Standard Tools (WST)、J2EE Standard Tools (JST) 和 Java Server Faces (JSF) Tools。
WST 為許多 Web 標準提供了功能豐富的編輯器,這些標準有 HTML、XML、CSS、JavaScript、SVG、XML Schema、XSLT、SOAP、WSDL、SQL,等等。它還支援在一系列 HTTP 伺服器上部署和監控 Web 工件。
JST 擴充了該功能集合,支援功能完整的多層 J2EE 應用程式的開發。使用 JST,可以建立使用 JSP 和 servlet 的動態 Web 應用程式,以及 EJB 組件和 Web 服務。還可以編輯所有組件的部署描述符,並在許多受支援的 J2EE 應用程式伺服器上的工作台中直接測試回合您的應用程式。
JSF Tools 旨在添加對開發基於 JSF 的 Web 應用程式的支援。它是只具有一個發行裡程碑的新子項目,但已經計劃將其包括在 WTP V1.5 發行版中。
許多商業軟體開發套件可用於支援 J2EE 應用程式的建立。IBM? Rational? Application Developer for WebSphere? 覆蓋了企業軟體開發生命週期的幾個階段,其中包括 J2EE 應用程式的設計、開發、測試、部署和組態管理。
為了支援動態 Web 應用程式的建立,BEA 的 Workshop Studio 利用其正在申請專利的 AppXRay 技術,來跟蹤和驗證應用程式的狀態。它還包括 Hibernate-to-EJB3 ORM 映射工作台和對 Spring 架構的支援。
MyEclipse IDE 由 Genuitec 開發,是大型開發套件的低成本備選項。它提供了一組完整的針對開放源碼技術(比如 Spring、Hibernate、Tapestry 和 Struts)的 J2EE 開發工具。
傳統型應用程式開發
Java 在案頭上的複興在極大程度上歸結於 Eclipse。在還沒有成為獨佔的 Java 案頭平台時,Eclipse 似乎已經促進了 Java 平台本身的改進,並致力於對 Java 作為傳統型應用程式可視平台的重新評估。
雖然可以(事實上是許多人的首選)直接在 Java 中建立介面,但使用合適的可視 UI 開發工具可以獲得大的生產率收益。Eclipse 空間在一段時間裡(至少不是作為 Open-Source 項目時)不存在這種工具的事實被許多人認為是在更大比例上採用 Eclipse 作為富客戶機應用程式平台的一個障礙。
Visual Editor 項目的建立目的在於為 GUI 構建器提供架構,但還包括了功能完整的 SWT 和 Swing UI 構建器。Visual Editor 允許程式員使用流行的拖放技術快速有效地建立基於 SWT 和 Swing 的使用者介面。儘管這種方法將手工編程從 UI 開發中解放出來,但程式員不必犧牲對結果代碼的控制。沒有依賴一些外部 UI 描述符檔案,Visual Editor 實際上使用 Java 代碼作為其 UI 定義格式。也就是說,它解析現有的 Java 使用者介面建立代碼,並基於開發人員的視覺編輯動作對其進行修改或產生新的代碼。
許多商業產品的目標是簡化 UI 開發。Instantiations 的 WindowBuilder 是這一領域的先驅。除了 Visual Editor 提供的準系統之外,它還支援進階功能,比如 Eclipse Forms API。Matisse4Eclipse 是 MyEclipse IDE 的一部分,是它實際上將 Sun Microsystems 的 Project Matisse Swing UI 構建器引入到 Eclipse 平台中。
其他平台和程式設計語言
忠於它作為萬能工具整合平台的使命,Eclipse 支援使用非 Java 語言的程式設計語言進行軟體開發。Eclipse Foundation 自己管理 C/C++ Development Tools 項目 (CDT),旨在為 C/C++ 開發人員提供一個在功能和能力上不低於 Java 開發人員所使用環境的環境。目前,CDT 提供了一個 C/C++ 原始碼編輯器,具有文法高亮顯示、內容輔助、程式碼完成、基於 GDB 的編輯器、C/C++ 應用程式啟動器、搜尋引擎、Makefile 構建器和其他許多功能。
由 Eclipse.org 管理的其他程式設計語言項目包括遺留語言,比如 COBOL 和 Fortran(項目 Photran),但還有現代語言和編程技術,比如 AspectJ(它將面向方面編程引入 Java 技術中)、Web Services Business Process Execution Language (WS-BPEL)、Laszlo IDE(Laszlo 是用於開發和交付富 Internet 應用程式的開放源碼平台)和 Lepido(Apache Cocoon Web 應用程式架構的工具)。建立用於開發 Ajax 應用程式 (Rich Ajax Platform) 的最佳血統工具的廣泛倡議也正在被提出,新獲批准的 Eclipse PHP IDE 項目的最新宣告意味著對流行 PHP 指令碼語言的鼎力支援也在規劃中。
對其他語言的支援可從第三方供應商獲得。Omondo UML 提供了一個 Unified Modeling Language (UML) 建模工具集,與 JDT 良好整合。但是,因為 UML 獨立於程式設計語言,它可用於不一定包括 Java 技術的項目中。PyDev 項目是 Python 程式設計語言的開放源碼開發工具集。xored 軟體在其 TruStudio Professional(它的 TruStudio Foundation 註冊在 EPL 之下)中提供了對 Python 編程的商業支援。另一個開放源碼項目 Ruby Development Tools (RDT) 提供了使用 Ruby 編程的完整工具集。最後,您可以在 ANTLR Studio 的協助下設計您自己的程式設計語言或特定領域語言,ANTLR Studio 允許您基於 ANTLR 架構建立上下文自由的文法定義。ANTLR Studio 是由 Placid Systems 開發的商業產品。
核心工具和技術
Eclipse 社區的一個重要部分是用作其他產品或開發工具的基礎或補充的軟體。雖然您不可能下載並使用這些外掛程式作為終端使用者工具,但它們使其他人可以基於通用標準建立高品質的軟體,或者增加現有產品的功能。
在該類別中,Eclipse Foundation 宿主著幾個項目。Eclipse Modeling Framework (EMF) 是支援自動代碼產生的軟體建模架構。它用於其他許多獲益於模型驅動軟體開發的項目中。儘管 EMF 只使用了 UML 工具的一個子集,但 UML2 項目將其擴充以提供對完全 UML2 標準的支援。
Graphical Editor Framework (GEF) 是用於為任意物件模型建立富圖形編輯器的架構。該架構還用於其他許多提供視覺編輯功能的項目中,比如 UML 圖、圖和工作流程編輯器。Graphical Modeling Framework (GMF) 擴充了 GEF 和 EMF 以將視覺編輯能力添加到任意 EMF 模型中。
Data Tools Platform (DTP) 項目旨在建立使用各種相關資料來源的通用工具集。它提供用於管理資料庫串連以及建立和執行 SQL 指令碼的工具。
Eclipse Test 和 Performance Tools Platform (TPTP) 包括四個子項目:通用 TPTP Platform、用於應用程式監控和日誌記錄的 Monitoring Tools、Tracing and Profiling Tools 和最後一個 Testing 工具。這些工具允許在各種執行環境中監控、剖析和測試 Java 應用程式。
Business Intelligence and Reporting Tools (BIRT) 將業務報告能力添加到現有應用程式中。BIRT 支援許多媒體,其中包括 HTML 和 PDF。
Device Software Development Platform (DSDP) 旨在提供為嵌入式裝置開發軟體的工具集。相關項目 eRCP 試圖將 Rich Client Platform (RCP) 擴充到嵌入式裝置。
SOA Tools Platform (STP) 的使命是構建架構和可模仿的可擴充工具,以支援軟體的設計、配置、組裝、部署、監控,以及圍繞面向服務架構 (SOA) 而設計的軟體的管理。它由一些子項目構成,比如 Core Frameworks、SOA System、Service Creation、BPEL2Java 和 BMPN。
許多子項目宿主在 Eclipse Technology 項目的保護傘之下,後者作為有趣想法的孵化器,可能有益於其他的新項目或現有項目。其中已經在別處提到的一些項目包括 Eclipse Communication Framework (ECF),它提供用於構建即時通訊和協作應用程式的通用 API 和組件集;Higgins Trust Framework,一個用於各種組上下文中的身份、概要檔案和關係資料的可視整合的可擴充架構;以及 Voice Tools Project,它擴充 WTP 以支援語音辨識應用程式的建立。
作為 RCP 的 Eclipse
隨著 Eclipse 動力的增加,許多公司和開發人員已經發現 Eclipse 不僅是整合工具的偉大平台,還可以用於其他類型的功能豐富的用戶端應用程式,比如商業和協作。因此,從版本 3.0 開始,Eclipse 已經跨越了工具,現在正式被支援作為 Rich Client Platform (RCP)。
RCP 應用程式共用面向工具的相應方的所有靈活性和可擴充性,因為這些對應方也是由外掛程式組成。但是,通用 RCP 外掛程式集要小得多,而且一個外掛程式不能將另一個外掛程式放入 RCP 應用程式中,除非該應用程式明確支援它。
IBM 的 Workplace Client Technology 是基於全部 Eclipse RCP 的平台的商業樣本。就架構而言,它是用戶端的協作工具,Eclipse IDE 是開發工具。IBM Workplace 是一個產品族,其中包括使用集中管理的富客戶機技術的資訊管理和團隊協作。它提供立即訊息、Web 會議、共用日曆計劃,等等。
基於 Eclipse RCP 的開放源碼應用程式的兩個流行樣本是 Azureus 和 RSSOwl。Azureus 是一個功能強大的 BitTorrent 客戶機,允許您下載使用 BitTorrent 技術分布的大型檔案。它支援自己不斷增長的外掛程式集。RSSOwl 是功能豐富的聯合新聞閱讀器和彙總器。它允許您使用許多流行的同步發佈格式(比如 RSS、RDF 和 Atom)搜尋、訂閱和閱讀新聞和部落格。
Eclipse RCP 在學術領域和研究應用程式中也變得流行起來。例如,NASA 的 Jet Propulsion Laboratory (JPL) 選擇 Eclipse RCP 作為其 Maestro 項目的基礎,該項目是用於管理 NASA 的 Mars Exploration Rovers 的進階操作的工具集。該軟體用於計劃飛行器的表面活動,比如到哪裡以及要拍攝多少照片。
還有許多其他商業和開放源碼應用程式基底於 Eclipse RCP。它們跨越無數領域,其中包括生物醫學研究(Bioclipse、Sequence Scanner Software)數學和物理建模(BrainBox、GumTree、Kalypso)、通訊和協作 (WiredReach)、商業和金融(Eclipse Trader、BSI CRM、eClarus、Logic MindGuide),等等。
結束語
由於其基於外掛程式的架構,Eclipse 成為整合開發工具以及許多其他種類應用程式的萬能平台。作為一個 IDE,Eclipse 不僅可以用於編寫 Java 代碼,還可以使用其他程式設計語言開發。作為 Rich Client Platform,它甚至可以用於執行範圍廣泛的非編程任務。將 Eclipse 技術用於各種目的的商業和開放源碼應用程式在不斷增多。