在整個 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 技術用於各種目的的商業和開放源碼應用程序在不斷增多。