1. 程式人生 > >Eclipse vs NetBeans:兩款一流的JAVA開源IDE的比較(圖文及例項)

Eclipse vs NetBeans:兩款一流的JAVA開源IDE的比較(圖文及例項)

這兩款JAVA IDE都是一流的開源軟體,那麼對於廣大的JAVA學習者及開發人員來說,那款更適合自己呢?本文通過圖文對這兩款軟體進行多方面的分析比較,同時在最後給出了一個"Hello World!"GUI程式的例項在兩個IDE中的開發流程。
筆者水平所限,文章僅供參考之用,以期讓廣大的JAVA學習者少走彎路而已。

1. 簡介
NetBeans:在2000年6月由Sun公司開源,其專案包括兩個系統:NetBeans IDE,一個開源的整合開發環境(IDE);NetBeans Platform,一個應用程式的通用框架。我們說的NetBeans一般指其IDE。其是以純Java編寫的,但具有Windows環境及OS X環境的本機介面風格。

Eclipse

:是一個相當著名的開源Java IDE,由IBM公司開源。Eclipse主要以其開放性、極為高效的GUI、先進的程式碼編輯器等著稱,其專案包括許多各種各樣的子專案組,包括Eclipse外掛、功能部件等。任何人都能夠輕易的將自己的軟體做成Eclipse的外掛,而且這些外掛只需簡單的複製到Eclipse的外掛資料夾下就可以被整合。主要採用SWT介面庫,支援多種本機介面風格。

要得到這兩個系統,只需去網上下載即可。下載和使用都是完全免費的。並且,你還能夠從其專案主頁上下載其原始碼。當然,你也需要同時遵守各自的協議。

本機配置
硬體:
CPU:AMD Athlon XP 2000+
RAM:Kingstone 256MB DDR400
軟體:
OS:SuSE Linux 9.1 Personal+KDE 3.3.0
JDK:Sun JDK 1.5.0
NetBeansEclipse
主要贊助商Sun MicrosystemsIBM Corporation
版本號NetBeans IDE 3.6Eclipse Platform 3.0.1
主要功能外掛:
Eclipse Java 開發工具(JDT) 3.0.1
Graphical Editing Framework 3.0.1
Eclipse Modeling Framework (EMF) 2.0.1
Visual Editor 1.0.1
OS需求Microsoft Windows XP
Microsoft Windows 2000
Solaris 作業系統
各種 Linux 發行版
Open VMS 7.2-1 或更高版本
Mac OS X 10.1.1 或更高版本
各種 UNIX(R) 平臺
JDK需求JDK 1.4.1 版以及更高版本未指定
  • NetBeans 由於採用了純Java開發並以Swing庫編寫GUI,因此介面色調偏暗,使用起來跟本機程式感覺不同。開始時可能會有些不習慣。如果使用JDK1.5.0版載入,其增強的Swing庫會讓NetBeans的介面看起來舒服不少。

    圖1. NetBeans的歡迎介面(JDK1.5.0)

    但是感覺選單選項的安排稍微有些混亂。

    圖2. NetBeans的引數設定介面

  • Eclipse GUI相當漂亮,且簡潔高效。甚至Microsoft的VS.net都抄襲了它的介面風格。由於採用了SWT介面庫,因此在多種平臺下的Eclipse都具有該平臺的介面風格,使用起來就和通常的本地程式一樣。

    圖3. Eclipse的歡迎介面(GTK+)

    主選單的設定相對比較合理。Borland的JBuilder的主選單就抄襲了這種風格。引數配置頁面也比較清爽。

    圖4. Eclipse的引數設定介面

(2)文件

  • NetBeans 基本上都是線上文件,有聯機幫助、IDE使用指南、快速學習指南、支援和文件,另外還具有Javadoc文件索引搜尋功能。
  • Eclipse 基本上是本地文件,不過其幫助系統會首先建立一個本地的網頁伺服器以顯示其文件,因為這些文件都是jsp格式的。所有外掛及功能部件的幫助文件都會統一安排到Eclipse幫助中心的首頁,瀏覽起來很舒服,並且有很強的搜尋功能。
    同時,IBM的知識庫中提供了大量Java及Eclipse相關的文章。
  • NetBeans 提供。

    圖5. NetBeans的線上升級介面

  • Eclipse 提供。

    圖6. Eclipse的線上升級介面

  • NetBeans 主介面的中文化程度相當高。線上文件也提供了中文版。
    直接提供了為程式增加國際化支援的功能。
  • Eclipse GUI提供了中文包。但個別部件沒有中文。
    帶有詳細的中文幫助文件。
  • NetBeans 支援 Servlet 2.4 和 JSP 2.0。
    支援使用 Tomcat 5 部署和除錯兩層 J2EE 1.4 和 1.3 應用程式。
  • Eclipse 外掛支援。
  • NetBeans IBM DB2
    Oracle
    Pointbase
    Microsoft SQL Server
    MySQL
  • Eclipse 外掛支援。
NetBeansEclipse
CVS(版本控制)
SVN(版本控制)√(外掛支援)
JUnit(測試框架)
Refactoring(程式碼重構)部分支援
Javadoc(文件生成)
NetBeansEclipse
程式碼摺疊
智慧括號/引號
智慧補全程式碼
自動格式化程式碼
書籤支援
任務/問題列表
錯誤提示及更正建議
特有功能
  • 縮寫擴充套件: 只要填寫一個縮寫詞,再按空格鍵即可自動生成語句。如打入sout,然後按[空格],則"sout"會被擴充套件為"System.out.println("");"
  • 自動註釋: 一個非常易用的為程式碼編寫Javadoc註釋的工具。
    類/方法導航器:和VB中的那個函式導航器差不多,用組合框進行選擇。
  • 快速型別層次瀏覽:可以在編寫程式碼時直接檢視相關類的層次結構
  • 本地歷史記錄:可以瀏覽程式碼從建立至今所經歷的改變,並且能夠將程式碼恢復到任何一次儲存過的狀態。
  • 拼寫檢查:可以在編寫程式碼時給出拼寫建議
  • 元素標記:可以高亮顯示某個範圍中指定元素(變數/類等)的出現情況
  • 方法出口標記:可以標記方法的所有出口
  • 異常丟擲標記:在程式碼中標記會丟擲異常的位置
  • 智慧程式碼模板:只需填寫開頭詞,再按Alt+Tab即可出現程式碼補全列表及程式碼模板列表。
    如打入for,然後按[Alt]+[Tab],在出現的列表中選擇iterator over array,則一個對陣列進行迭代的for迴圈會自動生成,系統會自動猜測陣列名。
    可以用[Tab]在自動變數裡切換並更改變數名。
    此方法還可以呼叫快速智慧輔助等輔助編碼功能。
  • 此外還有其他許多簡化程式設計的特性。
GUI庫支援NetBeansEclipse
SWT
SWing
AWT
Beans
概述具有極其簡單易用的GUI設計器,可以與VB、Delphi的窗體設計器相提並論。
輕鬆簡單的屬性及事件編輯。支援窗體快速預覽。
獨立的窗體檔案和程式碼檔案緊密關聯,設計器自動為窗體生成只讀程式碼。
速度比較快,資源佔用較少。
Eclipse的GUI設計器是一個叫做Visual Editor的部件。
其設計器將工作區分隔為程式碼區和介面區,在任何區域的更新都將反映到另一個區域。
窗體會自動預覽。仿Delphi的元件板設計得漂亮又直觀
窗體設計器生成的程式碼可以直接改寫。
沒有專用的窗體檔案,窗體是實時按程式碼生成的。
速度很慢,資源佔用比較高。估計需要512MB記憶體才能跑起來。
其Swing介面的設計似乎不支援Abosolute佈局方式。
總的來說,儘管很漂亮,但表現只能說是差強人意
  • NetBeans 在程式碼行開頭點選即可設定/取消斷點。
    支援條件斷點、單步執行等流程控制功能。
    支援區域性變數、監視、堆疊顯示等功能。
    支援會話、執行緒的檢視及修改。
    提供了完善的遠端除錯功能。
    操作簡單,功能強大。
  • Eclipse 帶有專用的Debug檢視並能自動切換。
    其Debug的功能和Delphi的Debug比較相似,Inspect、Watch等應有盡有。
    支援反彙編、記憶體、堆疊、暫存器顯示等高階功能。
    支援會話、執行緒的檢視及修改。
    似乎沒有遠端除錯能力。

4.小結

  • NetBeans 一款不可多得的Java IDE。
    其窗體設計器及其偵錯程式尤其讓人印象深刻。其易用性甚至讓人想起了當年的VB。
    眾多小功能大大方便了開發人員。其他方面的功能也相當不錯。
    儘管使用了純Java開發,但總體的資源佔用不多,速度也比較快。
    遺憾的是,其窗體設計器不支援SWT庫的介面設計。對於程式碼重構支援不夠。IDE採用的介面沒有采用本地介面,讓人多少有些不大習慣。其選項配置略微繁雜了些,選單設定不夠合理,尚待改進。而本地文件的缺少對於無法上網者或是窄帶上網者來說,是一個很嚴重的問題。
    另外,筆者沒有發現專案的JAR生成選項,對於釋出軟體來說,這應該是個不小的紕漏。

  • Eclipse 絕對是一款相當好用的程式開發平臺。
    其程式碼編輯器十分先進,眾多的編碼輔助功能相當實用。儘管微軟的VS.Net系列從很早就已經開始模仿Eclipse的風格,但是直至如今的VS.Net 2005,也還是隻能“逼近”Eclipse的水平。
    相當創新的整合化GUI也讓人們耳目一新。而開放式的平臺則給了Eclipse在眾多開發平臺中前所未有的擴充套件性。通過外掛,我們能夠在Eclipse中進行所見即所得的窗體設計,能夠開發C/C++軟體,能夠進行Web專案開發及測試,還能夠進行企業級軟體的開發管理和效能測試。如果你需要什麼功能,那麼只需要去找來外掛直接安裝就行了!
    更為值得推崇的是其中率先整合的CASE工具讓軟體開發更科學高效。其中不僅有CVS,甚至集成了最新的版本控制程式SubVersion(SVN),這大大促進了協同開發的效率。對重構的直接支援,則有助於提高軟體的質量。直接整合的JUnit則提供了在軟體開發中使用TDD(Test Driven Develop)方法的一個便捷且低廉的實現方案。而Borland的JBuilder則全面抄襲了這部分功能。
    可惜VE的資源佔用太高,而為了實時生成窗體而付出的時間代價則更是巨大,甚至有時會讓人無法忍受。
    這是一個高品質的開發平臺。也許唯一的遺憾就是其資源佔用問題吧。

我們的目標是要開發一個GUI應用,窗體中顯示一行文字"Hello World!",下方有一個[確定]按鈕,點選該按鈕則程式退出。
我們分別使用NetBeans和Eclipse開發這一簡單的程式,以此更能體驗兩個開發工具優缺點。

NetBeans

我們採用Swing做介面,佈局使用GridLayout以簡化操作。這種佈局方式的好處是各控制元件的大小及位置能隨窗體的變化而變化。

1.選擇選單[檔案]->[安裝檔案系統],選擇[本地目錄]並單擊[下一步],指定一個路徑並新建目錄"hello",選中該資料夾並點選[完成]繼續。
2.可以看到[檔案系統]視圖裡已經出現了"hello"這個專案,選中它並點選右鍵,選擇快捷選單[新建]->[JFrame窗體],在[名稱]中填寫"frmHello"並點選[完成]繼續。這時[檔案系統]視圖裡會出現新建立的窗體,右邊的工作區也會開啟程式碼檔案和窗體檔案。
3.開啟[窗體]工作頁面,這時右邊會出現4個檢視,分別是元件、檢查樹、屬性/事件、即時幫助。在[檢查器]中點選JFrame,在右鍵選單中選擇[設定佈局]->[GridLayout]。然後在下面的[屬性]欄中將其[行]改為2(按回車鍵生效),[列]改為1。這時窗體不會有任何變化。
4.在[面板]中選擇Swing,選中JLabel元件,並在窗體中單擊。可以看到一個Label出現在窗體的上半部分中。用同樣的方法將一個JButton元件加入到窗體中。
5.在窗體中選中jButton1,在[屬性]欄中將其[text]屬性值改為"確定"。窗體的設計就告一段落了。點選工作區中標籤欄下面的[測試窗體]可以預覽窗體的執行效果。

圖7. NetBeans的GUI設計器

6.選中jButton1元件,在右鍵選單中選擇[事件]->[Mouse]->[MouseClicked],這將為該按鈕新增預設的事件處理程式碼,此時工作區將轉為[程式碼]頁面,同時游標已經調整到jButton1MouseClicked方法內。注意,淺藍色背景的程式碼是由窗體設計器自動生成的,不能手動編輯。
7.首先通過上面的導航框將游標定位到main方法內,刪掉那行"new frmHello().show();",然後寫上如下程式碼:
frmHello frmMain=new frmHello();
frmMain.jLabel1.setText("Hello World!");
frmMain.setSize(300,150);
frmMain.show();
出現程式碼補全框時,選中補全字串後按回車鍵輸入。
8.導航到jButton1MouseClicked方法,在其中新增程式碼:
System.exit(0);

圖8. NetBeans的程式碼工作區

9.按[Ctrl]+[Shift]+[F]鍵來格式化程式碼,然後按[F6]鍵編譯並執行程式。

圖9. NetBeans例項執行效果(JDK1.5.0)

Eclipse

這裡採用SWT庫做介面,這樣開發出來的程式將會擁有本地介面。
以下假定開發者的Eclipse已經安裝好VE外掛(Visual Editor)。
注意:如果沒有安裝VE外掛,則Eclipse不支援所見即所得的視覺化開發。

1.選擇選單[檔案]->[新建]->[專案],開啟[Java],選擇[Java Project]並單擊[下一步],在[專案名稱]處填上"Hello"並單擊[完成]。
2.選擇選單[視窗]->[開啟透檢視]->[Java]以選定Java程式設計檢視。
3.在左邊的[包瀏覽器]欄中選中Hello專案,在右鍵選單中選擇[新建]->[其他],展開[Java],選擇[Visual Class]並單擊[下一步],在[名稱]中填寫"frmHello",並在[Style]樹中選中[SWT]->[Application],勾選選項[public static void main(String[] args)]和[繼承的抽象方法]並點選[完成]繼續。系統會自動將SWT庫包含進專案中。
4.這時工作區會自動分為程式碼區和介面區兩部分,同時在左邊出現了[Java Beans]欄用於顯示窗體中的元件樹,下方則出現了[Properties]視窗用於顯示元件屬性。另外,系統會彈出一個空窗體,這就是當前窗體的預覽效果。
5.將滑鼠停留在工作區右端的那條縱向[Palette]條上片刻,窗體元件會顯示在上面。選擇[SWT Controls]元件板,選中其中的[Label]元件,用滑鼠在窗體上拖動以畫出該元件。用同樣的方法畫出一個[Button]元件。

圖10. Eclipse的GUI設計器(屬性視窗已經放到右邊了)

6.選中按鈕,然後在下面的屬性框中更改其text值為"確定"並點選[回車]。在按鈕上的右鍵選單裡,選擇[Events]->[Add Events],選擇[Mouse]->[mouse Up],生成選項用[extends:****],然後點選[完成]繼續。這時左邊的[Java Beans]欄和右邊的[Outline]欄都顯示了新建的這個mouseUp方法,都可以通過點選來導航到這個方法的程式碼中。
7.用[Outline]欄導航到main方法內,在第4行程式碼"thisClass.sShell.open();"前插入如下程式碼:
thisClass.label.setText("Hello World!");
出現程式碼補全框時,選中補全字串後按回車鍵、[.]或[(]鍵都可以完成輸入。
8.用[Java Beans]欄導航到[button-"確定"]中的mouseUp方法,刪除其中原來的那行程式碼,並在方法中加入程式碼: sShell.close();
9.在程式碼工作區中點出右鍵選單後選擇[原始碼]->[格式化]來自動格式化程式碼。

圖11. Eclipse的程式碼工作區(已經最大化工作區)

10.選擇主選單中的[Run]->[Run...],在[主要]標籤頁下,點選[Main類]框中的[搜尋]按鈕,在[匹配的型別]表中選擇[frmHello]並點選[確定]。在[自變數]標籤頁下,在[VM自變數]中填寫如下語句:
-Djava.library.path=${system:ECLIPSE_HOME}/plugins/org.eclipse.swt.${system:WS}_3.0.1/os/${system:OS}/${system:ARCH}
點選下面的[Run]按鈕,在彈出的對話方塊中點[確定]以儲存並編譯執行專案。

圖12. Eclipse例項執行效果(GTK+)