Java IDE實(shí)用對(duì)比:Eclipse、NetBeans、IntelliJ 收藏
Eclipse作為開發(fā)Java的IDE,從出現(xiàn)到現(xiàn)在已經(jīng)有幾年的時(shí)間了,其豐富的特性,操作容易和在提高生產(chǎn)力方面收到了廣大開發(fā)者的青睞。當(dāng)然一提到Java IDE,人們不禁會(huì)提到其他Java IDE像NetBeans,IntelliJ等,那么這些Java IDE之間到底存在著哪些異同呢?因此在Java開發(fā)的空間里,對(duì)這些主要的IDEs做一個(gè)全面的比較是很有必要的,通過比較我們找出這些主要的IDEs在四個(gè)通常的開發(fā)領(lǐng)域:Swing, JSP/Struts, JavaServer Faces和 J2EE/EJB 3.0中哪個(gè)IDE表現(xiàn)的更出色。本文就從這四個(gè)通常的開發(fā)領(lǐng)域來比較Eclipse, NetBeans,IntelliJ。
在三個(gè)IDEs中,Eclipse是唯一個(gè)存在多個(gè)版本,從基本的版本到預(yù)先打包好的帶額外的開源插件(像EasyEclipse)和開源/商業(yè)結(jié)合的(像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和開發(fā)JSF的 Visual Web Pack )都既可以作為ZIP文件的形式來下載也可以跨平臺(tái)進(jìn)行安裝。在Windows平臺(tái)下,安裝以后會(huì)與操作系統(tǒng)無縫的集成起來,包括桌面的快捷方式和增加安裝/卸載控制面板。在Linux平臺(tái)下,NetBeans 5.5僅僅安裝在一個(gè)指定的目錄下并且在GNOME或者KDE桌面上創(chuàng)建了一個(gè)啟動(dòng)的圖標(biāo),但是,在Linux平臺(tái)下,NetBeans 5.5不能以RPM或者一個(gè).deb文件形式打包在一起,也不能提供一個(gè)標(biāo)準(zhǔn)的知識(shí)庫,這些知識(shí)庫可以使Linux用戶按照其他的應(yīng)用來安裝NetBeans 5.5。
一般特性:
早期的NetBeans版本在開發(fā)Swing上速度非常慢,而且界面很不美觀,因此并沒有收到眾多人士的歡迎,自從5的版本以后,NetBeans開發(fā)小組已經(jīng)徹底的改變了這種狀況,NetBeans 5.5和JDK 1.6的結(jié)合為用戶提供了更為出色的用戶體驗(yàn),特別在Windows平臺(tái)下(Linux仍然有一些UI上的小問題,預(yù)計(jì)在NetBeans 6.0的版本這些問題會(huì)得以改善。在5.5的版本中缺少對(duì)本地GTK的外觀支持。)
在Windows系統(tǒng)中,NetBeans 使用起來非常的方便,像收縮/隱藏/切換等功能,面板/編輯器等配置起來也非常的容易,另外,NetBeans的菜單布局也非常有邏輯,使用起來很方便,大多數(shù)的一般功能很容易上手,一直以來,NetBeans的穩(wěn)定性和性能也十分出色。
基本的Java編輯器也是相當(dāng)好的,雖然在代碼完成方面與其他IDEs相比還遜色一些,但是畢竟還是可以使用的,NetBeans也提供重構(gòu)的功能(特別是最常用的重命名/移除特性),在一些測(cè)試中,它不總是能夠進(jìn)行上下文感知(context-aware),例如在Struts工程中重命名Action類所在的包,相應(yīng)的在struts-config.xml中就不能及時(shí)的做到同步更新,但是在重構(gòu)JSF backing beans和更新在faces-config.xml 中的實(shí)體方面表現(xiàn)的很好,同時(shí)在同步更新J2EE 1.4 sessions beans和ejb-jar-xml的實(shí)體方面表現(xiàn)的也很好。
Swing開發(fā):
NetBeans包括一系列的特性來開發(fā)Swing應(yīng)用程序,像根據(jù)實(shí)際文本的位置來進(jìn)行自動(dòng)排列,它的強(qiáng)有力的尺寸恢復(fù)功能和固定功能使得UI設(shè)計(jì)器是任何平臺(tái)的任何語言都不能比擬的。NetBeans 5.5還包括一些新的有助于提高生產(chǎn)力的特性,像自動(dòng)進(jìn)行國(guó)際化(控制每個(gè)窗體/對(duì)話框/面板到ResourceBundle包括所有的國(guó)際化字符串),使用自定義的窗體/面板(只要他們?cè)谀愕墓こ讨兄辽倬幾g過一次)。
對(duì)Swing開發(fā)者來說,使用NetBeans可以充分的利用NetBeans的強(qiáng)有力的RCP(Rich Client Platform)向?qū)韯?chuàng)建新的,成熟的Swing應(yīng)用。
JSP/Struts開發(fā):
NetBeans帶有非常好的JSP編輯器,該編輯器包括我們期望的基本的特性,基本的向?qū)Ш蛣?chuàng)建一個(gè)新的Struts工程。內(nèi)嵌的Tomcat同期使得開發(fā)和調(diào)試JSP應(yīng)用程序都很容易,下圖為NetBeans web應(yīng)用向?qū)В?
NetBeans web應(yīng)用向?qū)ё詣?dòng)配置web.xml文件和struts-config.xml文件,增加對(duì)Tiles和Validator的支持,另外,NetBeans還在struts-config.xml文件中提供了內(nèi)容菜單選項(xiàng),用向?qū)У姆绞絹碓黾覣ctionForms, Actions和Forwards。提供了非可視化的編輯器來顯示在應(yīng)用程序中的頁面導(dǎo)航功能,提供對(duì)Tiles 和Validators配置的完全支持。
NetBeans 5.5對(duì)Struts支持的非常好,但并不像發(fā)布文檔說的那樣完美,非可視化的編輯器可以用來編輯JSP或者HTML頁面,對(duì)JSP編輯器缺乏對(duì)嵌入的JavaScript的支持,JSP編輯器也只帶有一個(gè)基本的CSS編輯器(當(dāng)然安裝上Visual Web Pack是更好的)。這些都有待于提高。下如為NetBeans對(duì)Struts的支持:
JSF開發(fā):
NetBeans對(duì)JSF的支持就像對(duì)Struts支持的一樣,提供了一個(gè)基本的向?qū)韯?chuàng)建一個(gè)工程,包括類庫,配置所有要求的文件等,甚至在JSP編輯器中提供了對(duì)backing beans屬性的代碼補(bǔ)全功能。同時(shí)包括在faces-config.xml文件中對(duì)導(dǎo)航規(guī)則的向?qū)А?
NetBeans Visual Web Pack提供了一個(gè)交互式的解決方案通過從Sun Java Studio Creator直接移植到NetBeans的特性來構(gòu)建JSF應(yīng)用,這包括用來構(gòu)建web頁面的一個(gè)Matisse樣式的GUI構(gòu)造器,并帶有豐富的JSF控件,這些JSF控件擴(kuò)展了基本的JSF RI集,同時(shí)也支持?jǐn)?shù)據(jù)綁定(直接依靠數(shù)據(jù)庫查詢甚至通過JPA/Hibernate)。
盡管Visual Web Pack有一些優(yōu)點(diǎn),但是Visual Web Pack也有一些缺點(diǎn):
1. 缺少對(duì)頁面模板的支持(雖然可以保存一個(gè)頁面作為一個(gè)模板并且作為一個(gè)標(biāo)準(zhǔn)使用,但是模板的變化不是級(jí)連的),對(duì)Facelets的支持或者來自MyFaces對(duì)Tiles的支持在這里將是很有用處的。
2. 缺乏對(duì)Apache MyFaces的支持(存在著潛在的問題,當(dāng)使用MyFaces RI而不是Sun的規(guī)范像JBoss部署到一個(gè)應(yīng)用服務(wù)器)
3. 不靈活的backing beans自動(dòng)產(chǎn)生功能。
另一個(gè)主要的特性是支持Facelets,在許多JSF社區(qū)中,F(xiàn)acelets被認(rèn)為是JSP的替代品,尤其是JBoss Seam已經(jīng)開放了它的所有文檔。
雖然NetBeans一再宣稱下一個(gè)發(fā)布版本的不足,但是對(duì)JSF開發(fā)來說,Visual Web Pack是最能提高生產(chǎn)力的工具。
企業(yè)開發(fā):
NetBeans 5.5是第一個(gè)支持JPA和EJB 3.0的IDE,在自動(dòng)產(chǎn)生JPA實(shí)體類和注釋(包括persistence.xml文件的正確設(shè)置,甚至基本的連接信息)可以節(jié)省大量的手工編寫代碼的時(shí)間,自動(dòng)產(chǎn)生的JPA代碼的質(zhì)量非常高并且可以立即使用,第一次使用Matisse開發(fā)一個(gè)Swing應(yīng)用和通過JPA查詢/更新一個(gè)數(shù)據(jù)庫所達(dá)到的水平是我使用PowerBuilder多年達(dá)到的水平。
對(duì)純粹的企業(yè)開發(fā)來講,NetBeans提供了對(duì)J2EE 1.4和Java EE 5的支持,特別對(duì)J2EE 1.4的項(xiàng)目來說,EJB向?qū)Мa(chǎn)生了所有要求的代碼(包括business/home/remote接口),總之,
NetBeans考慮了與J2EE 1.4相關(guān)的冗長(zhǎng)的代碼,同時(shí)提供了對(duì)Java EE 5的封裝。
NetBeans對(duì)部署到GlassFish/Sun Application Server和JBoss上的企業(yè)應(yīng)用提供了官方的支持,而且更新站點(diǎn)為WebLogic和 WebSphere提供了額外的插件。
IntelliJ IDEA 6.0.4
IntelliJ IDEA 6.0.4的基本信息如下表
Vendor:
JetBrains
Website:
Price:
$499.00 ($299.00 upgrade
安裝:
在Windows下,IDEA提供了exe形式的安裝文件,在Linux下,IDEA的安裝是更為簡(jiǎn)單,包括一個(gè)TAR.GZ文件,解壓該文件,手動(dòng)改變到bin子目錄下執(zhí)行./idea.sh。如果不能正常的執(zhí)行,可能是因?yàn)槟銢]有正確的設(shè)置$JDK_HOME環(huán)境變量,設(shè)置$JDK_HOME在.bashrc文件中:
JDK_HOME=/home/jacek/Dev/Java/JDK/jdk1.6.0_01
export JDK_HOME
JAVA_HOME=/home/jacek/Dev/Java/JDK/jdk1.6.0_01
export JAVA_HOME
在Linux版本中,JetBrains并沒有提供標(biāo)準(zhǔn)的.deb或者RPM文件來進(jìn)行安裝,因此,安裝以后沒有桌面快捷方式或者創(chuàng)建K Menu實(shí)體,更糟糕的是,雙擊bin/idea.sh文件也不能啟動(dòng)(返回的錯(cuò)誤是沒有設(shè)置JAVA_HOME,雖然已經(jīng)正確的設(shè)置了),所以必須的手動(dòng)地轉(zhuǎn)到命令行執(zhí)行./idea.sh以正常啟動(dòng),這點(diǎn)在三個(gè)IDEs中是最差的。
一般特性:
與NetBeans一樣,IDEA提供了靈活的布局,在各種配置中截短/鎖定/浮動(dòng) 面板的功能,但它沒有NetBeans(Windows系統(tǒng)下)那樣流暢和可配置。
相對(duì)IDEA杰出的編輯器來講,這些只是一些小問題,IDEA的編輯器是非??斓模哂袑?duì)敏感內(nèi)容的顏色凸顯,提示和彈出建議框的功能,使用IDEA的時(shí)間越長(zhǎng),編程的效率就會(huì)越高。下圖為一個(gè)簡(jiǎn)單的IDEA編輯器和高級(jí)的顏色/語法突出顯示:
JSP/Struts開發(fā):
IDEA可以自動(dòng)的建立配置文件(包括Tiles 和Validator),下載所有需要的Struts類庫,它也提供了一個(gè)Struts助手,提供圖形化的編輯器和向?qū)磉M(jìn)行Struts配置,包括tiles-config.xml 和validation.xml文件。
IDEA沒有JSP/HTML頁面的可視化編輯器,其規(guī)則的IDEA JSP/HTML編輯器即使沒有一個(gè)可視化的組件也是非常好看的,支持嵌入的JavaScript,特別是能夠處理DHTML或者AJAX代碼,JavaScript編輯器也支持指定的瀏覽器(IE, Mozilla和 Opera)和流行的AJAX礦見像Dojo, Bindows和 Prototype。
IDEA Struts Web應(yīng)用的建立
IDEA Struts助手
IDEA對(duì)Web 2.0開發(fā)的支持也是很酷的,比如它將支持GWT (Google Web Toolkit)作為它的一個(gè)核心特性。
JSF開發(fā):
可以選擇JSF版本(1.0,1.1,1.2)和實(shí)現(xiàn)(JSF RI或者Apache MyFaces),IDEA可以下載需要的類庫,JSF模塊提供了對(duì)JBoss Seam封裝的支持,這說明IntelliJ在JSF開發(fā)上正逐漸成為標(biāo)準(zhǔn)框架,也進(jìn)一步證明了IntelliJ在Java Web開發(fā)中會(huì)有更好的表現(xiàn)。
IDEA JSF新Web應(yīng)用的建立
企業(yè)開發(fā):
IDEA提供了對(duì)J2EE規(guī)范的完全支持,更重要的是它提供了對(duì)EJB3.0和JPA的支持,雖然并沒有像NetBeans那樣支持的好(自動(dòng)的在持久化單元中為JPA增加實(shí)體并在所有的實(shí)體域中為指定的查詢產(chǎn)生代碼,使用NetBeans 5.5習(xí)慣以后可能會(huì)在IDEA中丟失這些),IDEA確實(shí)有選項(xiàng)來為JPA持久化單元中觀察ER圖,這可能只在EJB模塊中可以使用,在一個(gè)規(guī)則的web模塊中使用JPA,不能調(diào)用ER圖選項(xiàng)。IDEA也全面的支持J2EE/Java EE 5,它甚至提供了一個(gè)升級(jí)的路徑從J2EE到基于注釋的Java EE 5方法。
至于應(yīng)用服務(wù)器,IDEA提供了部署插件來為WebLogic, WebSphere, JBoss, Geronimo和Glassfish等應(yīng)用服務(wù)器進(jìn)行部署。
同時(shí)支持單元測(cè)試,像支持JUnit 4,并提供了測(cè)量code coverage的集成工具。
Eclipse 3.2.2 "Callisto"/MyEclipse 5.1.0 GA
Vendor: Eclipse Foundation
Website:
www.eclipse.org Price: Free (base distribution)/Open-Source
Vendor: Genuitec
Website:
www.myeclipseide.com Distribution: MyEclipse IDE
Price: $49/year subscription
安裝:
在Windows和Linux下,Eclipse的安裝非常簡(jiǎn)單,僅是一個(gè).zip或者.tar.gz文件,你只需解壓到你自己想要的目錄下即可,為了使用Eclipse開發(fā)環(huán)境,我們需要從Eclipse站點(diǎn)上下載額外的插件(也可以通過Help->Software Updates->Find And Install),我們最感興趣的是可視化編輯器(Swing GUI),Web工具工程(為了支持JSP)JSF工具和Dali(為了支持JPA)。
在Linux平臺(tái)下安裝新的插件可能會(huì)有些不同,Eclipse能夠與已經(jīng)安裝的Linux應(yīng)用程序集成的很好,然而,安裝Eclipse到一個(gè)系統(tǒng)的目錄(如/usr/lib/eclipse),更新的插件只有具有root的權(quán)限的用戶才能進(jìn)行更新,解決方法是復(fù)制整個(gè)本地Eclipse安裝程序到一個(gè)主目錄下的文件夾,以后在進(jìn)行更新插件就不會(huì)在出問題了。這可能是由于登錄的session是root的原因吧。
MyEclipse是一個(gè)基于Java的安裝程序,在Windows下與操作系統(tǒng)集成的非常好(包括快捷方式),在Linux下雖然沒有創(chuàng)建任何的桌面快捷方式,但使用起來并不覺得麻煩。
一般特性:
Eclipse一經(jīng)出現(xiàn)就以其快速,豐富的特性贏得了認(rèn)可,其主要的屬性有:
1. 快速的性能
2. 重構(gòu)功能
3. 快速修復(fù)錯(cuò)誤
4. 調(diào)整/組織導(dǎo)入包
5. 彈出窗口進(jìn)行代碼自動(dòng)裝配
然而,Eclipse的Windows系統(tǒng)下,也有不和邏輯的地方,例如:最小化Package Explorer/Hierarchy視圖并沒有收縮到邊上,相反,Eclipse僅折疊起來在屏幕上留下令人不習(xí)慣的界面,如圖:
Swing開發(fā):
Eclipse的可視化編輯器是所有的Java IDEs中最差的一個(gè),主要是由于它支持最先進(jìn)的布局是GridBagLayout,使用NetBeans的Matisse以后,你就會(huì)覺得使用Eclipse來創(chuàng)建Swing UIs是多么的不方便。由于有社區(qū)的強(qiáng)有力的支持,MyEclipse聲稱Matisse GUI構(gòu)造器已經(jīng)集成到了Eclipse里,并且運(yùn)行的非常好。NetBeans正不斷的將一些更新融入到新版本中(像bean綁定特性已經(jīng)是NetBeans 6.0的一部分)。沒有一個(gè)IDE像Eclipse這樣有強(qiáng)大的社區(qū)來開發(fā)插件不斷的補(bǔ)充Eclipse的基本的功能。
JSP/Struts開發(fā):
Web Tools Project (WTP)對(duì)Eclipse增加了web開發(fā),提供了一個(gè)固定的JSP編輯器來進(jìn)行基本的JSP開發(fā),在部署web應(yīng)用程序上,Eclipse可能會(huì)有一點(diǎn)問題,如:部署到Tomcat上可能會(huì)由于錯(cuò)誤而發(fā)生死鎖。
WTP缺少對(duì)Struts開發(fā)的支持,MyEclipse完全禰補(bǔ)了這些不足,提供了對(duì)Struts的完全的支持,包括對(duì)struts-config.xml進(jìn)行圖形化編輯,創(chuàng)建Actions和FormBeans的向?qū)А?/div>
MyEclipse的struts-config.xml編輯器
Eclipse和MyEclipse也只不過是提供了一個(gè)可視化的編輯器來創(chuàng)建JSP/Struts頁面。下圖是利用MyEclipse的特性來增加到一個(gè)web工程。
MyEclipse的Web工程選項(xiàng)
JSF開發(fā):
Eclipse對(duì)JSF開發(fā)的支持應(yīng)該比其他的IDE更好,提供了更成熟的JSF功能,包括對(duì)faces-config.xml進(jìn)行可視化編輯,代碼自動(dòng)裝配,在JSP頁面管理bean的屬性,新的管理bean的向?qū)В梢暬庉嬈鹘onverters, RenderKits和Validators。Eclipse還計(jì)劃發(fā)布可視化的JSP/JSF編輯器。
企業(yè)開發(fā):
Eclipse并沒有對(duì)JPA提供官方的支持,但它提供了一個(gè)叫Dali的孵化器項(xiàng)目來連接到發(fā)布的功能,目前它處于開發(fā)的早期階段,雖然能夠從一個(gè)數(shù)據(jù)庫中產(chǎn)生實(shí)體,但是它產(chǎn)生的代碼沒用NetBeans產(chǎn)生的好(例如沒有任何自動(dòng)創(chuàng)建的指定的查詢),如果你沒有從事JPA開發(fā)而正在使用Hibernate,MyEclipse是一個(gè)不錯(cuò)的選擇。
對(duì)J2EE開發(fā),Eclipse支持創(chuàng)建EJB和EAR模塊,為了避免J2EE的復(fù)雜性,Eclipse專注通過XDoclet來產(chǎn)生EJB,這無疑是一個(gè)很好的解決方案,減少了企業(yè)應(yīng)用的復(fù)雜性。MyEclipse擴(kuò)展了這些功能通過提供session beans,消息驅(qū)動(dòng)beans向?qū)Ш腿萜鞴芾沓志没痓eans,同時(shí)也被XDoclet驅(qū)動(dòng)。
目前,Eclipse和MyEclipse都沒有支持Java EE 5,在將來的版本中應(yīng)該會(huì)提供對(duì)Java EE 5的支持。
MyEclipse的EJB代碼產(chǎn)生
總結(jié):
對(duì)不同的IDE,每個(gè)人有著不同的簡(jiǎn)介,同時(shí)每個(gè)IDE也有著不同的特性和優(yōu)點(diǎn),根據(jù)開發(fā)的不同需要可能會(huì)選擇不同的IDE。
在Java開發(fā)的每個(gè)方面,每個(gè)IDE都能勝任工作,然而根據(jù)你所做的不同開發(fā)如Swing開發(fā),web開發(fā),或者企業(yè)開發(fā),我們會(huì)選擇不同的IDE。
Swing開發(fā):
如果你專門從事Swing開發(fā),NetBeans無疑是最好的選擇,如果你沒有選擇NetBeans而是選擇了Eclipse,建議使用MyEclipse 和它的Matisse4Eclipse構(gòu)造器。IDEA由于對(duì)JGoodies Forms的支持,所以在開發(fā)Swing方面與前兩者相比并不占有優(yōu)勢(shì)。
JSP/Struts開發(fā):
開發(fā)JSP/Struts首選的是IDEA,接下來是MyEclipse,然后是NetBeans,由于缺少對(duì)內(nèi)建Struts的支持,Eclipse的基本版本沒有競(jìng)爭(zhēng)優(yōu)勢(shì)。
JSF開發(fā):
在開發(fā)JSF方面,這三個(gè)IDE可以說都是很好的選擇,但是IDEA可能會(huì)更好一點(diǎn),接下來是Eclipse/MyEclipse,最后是NetBeans。
企業(yè)開發(fā):
由于NetBeans對(duì)JPA的支持和它產(chǎn)生代碼的質(zhì)量以及對(duì)持久化單元合適的設(shè)置,所以在企業(yè)開發(fā)方面,NetBeans是首選,接下來是IDEA,由于Eclipse的Dali項(xiàng)目的限制,Eclipse可能是最后選擇的。如果放棄標(biāo)準(zhǔn)的JPA,從事Hibernate開發(fā),MyEclipse是最好的選擇。
IDEA由于對(duì)J2EE 和 Java EE 5支持的很好,所以很適合進(jìn)行企業(yè)開發(fā),Eclipse缺少對(duì)Java EE 5的支持,應(yīng)該是最后的選擇。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。