天天看點

Eclipse 平台入門Eclipse 平台入門

<a href="http://www.ibm.com/developerworks/cn/">developerWorks 中國</a>

<a href="http://www.ibm.com/developerworks/cn/linux/">Linux</a>

<a href="http://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp">文檔庫</a>

使用 Eclipse 插件來編輯、編譯和調試應用程式

簡介: 本文為您提供關于 Eclipse 平台的概述,包括其起源和體系結構。本文首先簡要讨論 Eclipse 的開放源代碼性質及其對多種程式設計語言的支援,然後通過一個簡單的程式例子展示 Java 開發環境。本文還将考查以插件擴充形式可用的一些軟體開發工具,并展示一個用于 UML 模組化的插件擴充。

<a href="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecov/#">标記本文!</a>

<b>釋出日期:</b> 2010 年 9 月 21 日 

<b>級别:</b> 初級 

通路情況 : 31193 次浏覽 

 平均分 (49個評分)

<a href="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecov/#iratings">為本文評分</a>

<a>Eclipse 是什麼?</a>

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 服務和資料庫通路的支援。

<a href="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecov/#ibm-pcon">回頁首</a>

<a>Eclipse 是開放源代碼的軟體</a>

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

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

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

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

<a>Eclipse 是什麼機構?</a>

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 背後的一些理論、曆史和管理,下面讓我們考察該産品本身。

<a>Eclipse 工作台</a>

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

<a>圖 1. Eclipse 工作台 </a>

Eclipse 工作台由幾個稱為 視圖(view)的窗格組成,比如左上角的 Navigator 視圖。窗格的集合稱為 透視圖(perspective)。預設的透視圖是 Resource 透視圖,它是一個基本的通用視圖集,用于管理項目以及檢視和編輯項目中的檔案。

Navigator 視圖允許您建立、選擇和删除項目。Navigator 右側的窗格是 編輯器區域。取決于 Navigator 中標明的文檔類型,一個适當的編輯器視窗将在這裡打開。如果 Eclipse 沒有注冊用于某特定文檔類型(例如,Windows 系統上的 <code>.doc</code> 檔案)的适當編輯器,Eclipse 将設法使用外部編輯器來打開該文檔。

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

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

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

為繼續這個短暫的 Eclipse 之旅,我們将在 Navigator 中建立一個項目。右鍵單擊 Navigator 視圖,然後選擇 New=&gt;Project。當 New Project 對話框出現時,選擇左面的 Java。标準 Eclipse 隻有一種 Java 項目類型,名為“Java Project”。如果安裝了插件來提供 JSP 和 servlet 支援,我們會從這裡看到一個用于 Web 應用程式的附加選項。眼下,請選擇 Java Project,在提示項目名稱時輸入“Hello”,然後按 Finish。

接下來,我們将檢查一下 Java 透視圖。取決于您喜歡的螢幕管理方式,您可以通過選擇 Window=&gt;Open Perspective=&gt;Java來改變目前視窗中的透視圖,也可以通過選擇 Window=&gt;New Window,然後再選擇這個新的透視圖,進而打開一個新的視窗。

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

<a>Java 開發環境(JDE)</a>

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

<a>圖 2. 在 Java 透視圖中建立新類 </a>

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

<a>圖 3. Java 編輯器中的 Hello 類 </a>

您會在鍵入時注意到 Eclipse 編輯器的一些特性,包括文法檢查和代碼自動完成。在 2.1 版(我曾下載下傳 M2 版來試用過)中,當您鍵入開括号或雙引号時,Eclipse 會自動提供配對的符号,并将光标置于符号對之内。

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

文法檢查依賴增量編譯。每當您儲存代碼,它就在背景接受編譯和文法檢查。預設情況下,文法錯誤将以紅色下劃線顯示,一個帶白 “X” 的紅點将出現在左邊沿。其他錯誤在編輯器的左邊沿通過燈泡狀的圖示來訓示;這些就是編輯器或許能為您修複的問題——即所謂的Quick Fix(快速修複)特性。

上面的代碼例子在 <code>for</code> 語句後面有一個燈泡狀圖示,因為 <code>i</code> 的聲明被省略了。輕按兩下該圖示将調出建議的修複清單。在此例中,它将提供建立一個類字段 <code>i</code> 、一個局部變量 <code>i</code> 或一個方法參數 <code>i</code> 的建議;單擊其中的每一個建議都會顯示将要生成的代碼。圖 4 顯示了該建議清單和建議建立一個局部變量之後生成的代碼。

<a>圖 4. Quick Fix 建議 </a>

輕按兩下該建議就會把建議代碼插入到代碼中的恰當位置。

一旦代碼無錯誤地編譯完成,您就能夠從 Eclipse 菜單上選擇 Run 來執行該程式(注意這裡不存在單獨的編譯步驟,因為編譯是在您儲存代碼時進行的。如果代碼沒有文法錯誤,它就可以運作了)。這時會出現一個具有适當預設設定的 Launch Configurations 對話框;請按右上角的 Run 按鈕。一個新的頁籤式窗格将出現在下面的窗格(控制台)中,其中顯示了程式的輸出,如圖 5 所示。

<a>圖 5. 程式的輸出 </a>

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

<a>圖 6. Debug 透視圖 </a>

首先,請注意該透視圖左上角的 Debug 視圖。這個視圖顯示調用堆棧,并且标題欄中有一個工具欄,它允許您控制程式的執行,包括繼續、挂起或終止程式、跟蹤下一個語句、單步執行下一個語句,或者從方法傳回。

右上角的窗格包含許多頁籤式的視圖,包括 Variables、Breakpoints、Expressions 和 Display。這裡我單擊了 Variables 視圖,以便我們能夠看到 <code>i</code> 的目前值。

可以通過上下文敏感的幫助,獲得關于這些視圖的更多資訊:單擊視圖的标題,然後按 F1。

<a>附加插件</a>

除了像 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

<a>例子:一個用于 UML 模組化的插件</a>

下載下傳之後,插件的安裝通常是通過解壓縮下載下傳檔案,并将其内容複制到 Eclipse 插件目錄來完成的。在此例中,GEF 需要解壓縮到 Eclipse目錄(它将自動從該目錄進入插件目錄)。為安全起見,您可能想将它解壓縮到某個臨時目錄,再相應地從那裡複制相關目錄。如果 Eclipse 正在運作,您需要停止它然後再重新啟動它,這樣它才能識别新安裝的插件。

一旦 EclipseUML(以及 GEF)安裝完成,您就能夠像建立一個 Java 類檔案一樣建立一個類圖。在 Java 透視圖中,右鍵單擊 Package Explorer 中的“Hello”項目,然後從彈出菜單上選擇 New=&gt;Other。New 對話框的左邊窗格中将會有一個用于 UML 的新選項。EclipseUML 的免費版本僅支援類圖,是以右側的惟一選項是 UML Class Diagram。請選擇 UML Class Diagram,然後為該類圖鍵入一個名稱,比如“Hello”:

<a>圖 7. Class Diagram 編輯器 </a>

編輯器區域中将會出現一個圖形編輯器,它帶有用于繪制類圖的畫布。您可以通過兩種方式建立類圖:通過将 Java 檔案從 Package Explorer 拖放到類圖上,進而對現有代碼進行逆向工程;或者使用空白類圖上面工具欄中可用的繪制工具。要試驗第一種方法,請建立一個名為 Person 的新類(使用 File=&gt;New=&gt;Class),然後賦予它下面列出的兩個私有屬性:

(應該承認,我僅鍵入了針對 name 和 address 的行。getter 和 setter 方法是通過 Eclipse 自動生成的,即右鍵單擊源代碼,然後從彈出菜單上選擇 Source=&gt;Generate Getter and Setter。)

請儲存并關閉 <code>Person.java Hello.ucd。</code>

<a>圖 8. Person 類圖 </a>

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

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

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

<a>圖 9. 關聯 </a>

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

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

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

<a>Eclipse 平台體系結構</a>

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

<a>圖 10. Eclipse 平台體系結構 </a>

平台 

平台運作庫是核心,它在啟動時檢查已安裝了哪些插件,并建立關于它們的系統資料庫資訊。為降低啟動時間和資源使用,它在實際需要任何插件時才加載該插件。除了核心外,其他每樣東西都是作為插件來實作的。

工作區 

工作區是負責管理使用者資源的插件。這包括使用者建立的項目、那些項目中的檔案,以及檔案變更和其他資源。工作區還負責通知其他插件關于資源變更的資訊,比如檔案建立、删除或更改。

工作台 

工作台為 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 檔案的形式添加文檔。

<a>Eclipse 的前景</a>

圍繞 Eclipse 的開發正處于關鍵階段。主要軟體工具提供商都參與進來了,并且開放源代碼 Eclipse 插件項目的數量正在與日俱增。

可移植、可擴充、開放源代碼的架構并不是個新思想(您會想起 Emacs),但是由于它成熟、健壯和優雅的設計,Eclipse 帶來了全新的動力。IBM 價值 4000 萬美元的世界級軟體在開放源代碼領域的釋出,給業界帶來了久違的震撼

本文轉自9pc9com部落格,原文連結:      http://blog.51cto.com/215363/752334  如需轉載請自行聯系原作者