Eclipse作為開發Java的IDE,從出現到現在已經有幾年的時間了,其豐富的特性,操作容易和在提高生產力方面收到了廣大開發者的青睐。當然一提到Java IDE,人們不禁會提到其他Java IDE像NetBeans,IntelliJ等,那麼這些Java IDE之間到底存在著哪些異同呢?因此在Java開發的空間裡,對這些主要的IDEs做一個全面的比較是很有必要的,通過比較我們找出這些主要的IDEs在四個通常的開發領域:Swing, JSP/Struts, JavaServer Faces和 J2EE/EJB 3.0中哪個IDE表現的更出色。本文就從這四個通常的開發領域來比較Eclipse, NetBeans,IntelliJ。
在三個IDEs中,Eclipse是唯一個存在多個版本,從基本的版本到預先打包好的帶額外的開源插件(像EasyEclipse)和開源/商業結合的(像MyEclipse)。
NetBeans 5.5:
首先來看NetBeans 5.5,NetBeans 5.5的基本信息如下表:
Vendor:Sun Microsystems
Website:www.Netbeans.org
Price:Free/Open source
Distribution:Base + EnterprisePack + Visual Web Pack
安裝:
NetBeans 5.5,包括它所帶的包(像帶有 UML/BPEL/SOA的Enterprise Pack和開發JSF的 Visual Web Pack )都既可以作為ZIP文件的形式來下載也可以跨平台進行安裝。在Windows平台下,安裝以後會與操作系統無縫的集成起來,包括桌面的快捷方式和增加安裝/卸載控制面板。在Linux平台下,NetBeans 5.5僅僅安裝在一個指定的目錄下並且在GNOME或者KDE桌面上創建了一個啟動的圖標,但是,在Linux平台下,NetBeans 5.5不能以RPM或者一個.deb文件形式打包在一起,也不能提供一個標准的知識庫,這些知識庫可以使Linux用戶按照其他的應用來安裝NetBeans 5.5。
一般特性:
早期的NetBeans版本在開發Swing上速度非常慢,而且界面很不美觀,因此並沒有收到眾多人士的歡迎,自從5的版本以後,NetBeans開發小組已經徹底的改變了這種狀況,NetBeans 5.5和JDK 1.6的結合為用戶提供了更為出色的用戶體驗,特別在Windows平台下(Linux仍然有一些UI上的小問題,預計在NetBeans 6.0的版本這些問題會得以改善。在5.5的版本中缺少對本地GTK的外觀支持。)
在Windows系統中,NetBeans 使用起來非常的方便,像收縮/隱藏/切換等功能,面板/編輯器等配置起來也非常的容易,另外,NetBeans的菜單布局也非常有邏輯,使用起來很方便,大多數的一般功能很容易上手,一直以來,NetBeans的穩定性和性能也十分出色。
基本的Java編輯器也是相當好的,雖然在代碼完成方面與其他IDEs相比還遜色一些,但是畢竟還是可以使用的,NetBeans也提供重構的功能(特別是最常用的重命名/移除特性),在一些測試中,它不總是能夠進行上下文感知(context-aware),例如在Struts工程中重命名Action類所在的包,相應的在struts-config.xml中就不能及時的做到同步更新,但是在重構JSF backing beans和更新在faces-config.xml 中的實體方面表現的很好,同時在同步更新J2EE 1.4 sessions beans和ejb-jar-XML的實體方面表現的也很好。
Swing開發:
NetBeans包括一系列的特性來開發Swing應用程序,像根據實際文本的位置來進行自動排列,它的強有力的尺寸恢復功能和固定功能使得UI設計器是任何平台的任何語言都不能比擬的。NetBeans 5.5還包括一些新的有助於提高生產力的特性,像自動進行國際化(控制每個窗體/對話框/面板到ResourceBundle包括所有的國際化字符串),使用自定義的窗體/面板(只要他們在你的工程中至少編譯過一次)。
對Swing開發者來說,使用NetBeans可以充分的利用NetBeans的強有力的RCP(Rich ClIEnt Platform)向導來創建新的,成熟的Swing應用。
JSP/Struts開發:
NetBeans帶有非常好的JSP編輯器,該編輯器包括我們期望的基本的特性,基本的向導和創建一個新的Struts工程。內嵌的Tomcat同期使得開發和調試JSP應用程序都很容易,下圖為NetBeans web應用向導:
NetBeans web應用向導自動配置web.xml文件和struts-config.xml文件,增加對Tiles和Validator的支持,另外,NetBeans還在struts-config.XML文件中提供了內容菜單選項,用向導的方式來增加ActionForms, Actions和Forwards。提供了非可視化的編輯器來顯示在應用程序中的頁面導航功能,提供對Tiles 和Validators配置的完全支持。
NetBeans 5.5對Struts支持的非常好,但並不像發布文檔說的那樣完美,非可視化的編輯器可以用來編輯JSP或者Html頁面,對JSP編輯器缺乏對嵌入的JavaScript的支持,JSP編輯器也只帶有一個基本的CSS編輯器(當然安裝上Visual Web Pack是更好的)。這些都有待於提高。下如為NetBeans對Struts的支持:
JSF開發:
NetBeans對JSF的支持就像對Struts支持的一樣,提供了一個基本的向導來創建一個工程,包括類庫,配置所有要求的文件等,甚至在JSP編輯器中提供了對backing beans屬性的代碼補全功能。同時包括在faces-config.XML文件中對導航規則的向導。
NetBeans Visual Web Pack提供了一個交互式的解決方案通過從Sun Java Studio Creator直接移植到NetBeans的特性來構建JSF應用,這包括用來構建web頁面的一個Matisse樣式的GUI構造器,並帶有豐富的JSF控件,這些JSF控件擴展了基本的JSF RI集,同時也支持數據綁定(直接依靠數據庫查詢甚至通過JPA/Hibernate)。
盡管Visual Web Pack有一些優點,但是Visual Web Pack也有一些缺點:
1. 缺少對頁面模板的支持(雖然可以保存一個頁面作為一個模板並且作為一個標准使用,但是模板的變化不是級連的),對Facelets的支持或者來自MyFaces對Tiles的支持在這裡將是很有用處的。
2. 缺乏對apache MyFaces的支持(存在著潛在的問題,當使用MyFaces RI而不是Sun的規范像JBoss部署到一個應用服務器)
3. 不靈活的backing beans自動產生功能。
另一個主要的特性是支持Facelets,在許多JSF社區中,Facelets被認為是JSP的替代品,尤其是JBoss Seam已經開放了它的所有文檔。
雖然NetBeans一再宣稱下一個發布版本的不足,但是對JSF開發來說,Visual Web Pack是最能提高生產力的工具。
企業開發:
NetBeans 5.5是第一個支持JPA和EJB 3.0的IDE,在自動產生JPA實體類和注釋(包括persistence.XML文件的正確設置,甚至基本的連接信息)可以節省大量的手工編寫代碼的時間,自動產生的JPA代碼的質量非常高並且可以立即使用,第一次使用Matisse開發一個Swing應用和通過JPA查詢/更新一個數據庫所達到的水平是我使用PowerBuilder多年達到的水平。
對純粹的企業開發來講,NetBeans提供了對J2EE 1.4和Java EE 5的支持,特別對J2EE 1.4的項目來說,EJB向導產生了所有要求的代碼(包括business/home/remote接口),總之,
NetBeans考慮了與J2EE 1.4相關的冗長的代碼,同時提供了對Java EE 5的封裝。
NetBeans對部署到GlassFish/Sun Application Server和JBoss上的企業應用提供了官方的支持,而且更新站點為WebLogic和 WebSphere提供了額外的插件。
IntelliJ IDEA 6.0.4
IntelliJ IDEA 6.0.4的基本信息如下表
Vendor:
JetBrains
Website:
www.jetbrains.com/idea
Price:
$499.00 ($299.00 upgrade
安裝:
在Windows下,IDEA提供了exe形式的安裝文件,在Linux下,IDEA的安裝是更為簡單,包括一個TAR.GZ文件,解壓該文件,手動改變到bin子目錄下執行./idea.sh。如果不能正常的執行,可能是因為你沒有正確的設置$JDK_HOME環境變量,設置$JDK_HOME在.bashrc文件中:
JDK_HOME=/home/jacek/Devhttp://Java.chinaitlab.com/JDK/jdk1.6.0_01
export JDK_HOME
JAVA_HOME=/home/jacek/Devhttp://Java.chinaitlab.com/JDK/jdk1.6.0_01
export Java_HOME
在Linux版本中,JetBrains並沒有提供標准的.deb或者RPM文件來進行安裝,因此,安裝以後沒有桌面快捷方式或者創建K Menu實體,更糟糕的是,雙擊bin/idea.sh文件也不能啟動(返回的錯誤是沒有設置Java_HOME,雖然已經正確的設置了),所以必須的手動地轉到命令行執行./idea.sh以正常啟動,這點在三個IDEs中是最差的。
一般特性:
與NetBeans一樣,IDEA提供了靈活的布局,在各種配置中截短/鎖定/浮動 面板的功能,但它沒有NetBeans(Windows系統下)那樣流暢和可配置。
相對IDEA傑出的編輯器來講,這些只是一些小問題,IDEA的編輯器是非常快的,具有對敏感內容的顏色凸顯,提示和彈出建議框的功能,使用IDEA的時間越長,編程的效率就會越高。下圖為一個簡單的IDEA編輯器和高級的顏色/語法突出顯示:
JSP/Struts開發:
IDEA可以自動的建立配置文件(包括Tiles 和Validator),下載所有需要的Struts類庫,它也提供了一個Struts助手,提供圖形化的編輯器和向導來進行Struts配置,包括tiles-config.xml 和validation.XML文件。
IDEA沒有JSP/HTML頁面的可視化編輯器,其規則的IDEA JSP/HTML編輯器即使沒有一個可視化的組件也是非常好看的,支持嵌入的Javascript,特別是能夠處理DHtml或者AJax代碼,JavaScript編輯器也支持指定的浏覽器(IE, Mozilla和 Opera)和流行的AJax礦見像Dojo, Bindows和 Prototype。