程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Eclipse,NetBeans及IntelliJ—Java IDE大戰之Eclipse篇

Eclipse,NetBeans及IntelliJ—Java IDE大戰之Eclipse篇

編輯:關於JAVA

Jacek Furmankiewicz是加拿大Compuware公司一位資深的開發者/設計者。他具有12年的專業IT經驗,范圍涉及UNIX,PowerBuilder,C#/Microsoft .NET,Java,PHP,還有Microsoft SQL Server和Oracle。

一、Eclipse 3.2.2/MyEclipse 5.1.0 GA

供應商 Eclipse基金會 網站 www.eclipse.org 價格 免費(基本發布)/開源     供應商 Genuitec 網站 www.myeclipseide.com 分發 MyEclipse IDE 價格 $49/年訂閱

安裝

在Windows和Linux平台上,基本的Eclipse發行只是一個簡單的.zip或.tar.gz文件—你可以解壓到任何你認為必要的目錄下。注意,這只是提供給你一個基本的IDE—只能創建基本的“Hello World”式程序,其它功能卻非常欠缺。為了把Eclipse變成一個真正可使用的環境,你必須從Eclipse網站(可以直接經由Eclipse的“Help->Software Updates->Find And Install”進行操作)下載額外的插件。最令我感興趣的幾個插件是:Visual Editor(構建SWING GUI),Web Tools Project(支持JSP),JSF Tools,以及Dali(支持JPA)。其中,最後兩個插件官方聲稱為“預覽”式發行,還沒有正式推出其1.0版本。

對於安裝新插件而言,在Windows上是相當直接的。而在Linux平台上,是幾乎不可能從一個標准倉庫(大多數基於Debian的或面向RPM的distros特征的Eclipse)下載Eclipse的,這十分自然地與通常的Linux應用程序安裝方式集成到一起。然而,這種方法把Eclipse安裝到一個系統目錄(例如Ubuntu/Kubuntu平台中的“/usr/lib/eclipse”路徑)下,而這僅經由“sudo”且作為根或使用根權限運行時才能得到更新。遺憾的是,Eclipse似乎不知道這一點,結果在下載插件時出現一個錯誤—因為當試圖把它們安裝到指定的“/usr/lib/eclipse”文件夾下時Eclipse並沒有向我提供根口令。如果Eclipse在其未來發行版本中改進這一點的話倒是不錯的。這僅是一個細節。作為一種簡單方案,我干脆簡單地把整個本地的Eclipse安裝復制到我的home目錄下的一個文件夾中,並且能夠在沒有任何更多問題的情況下安裝完所有其它的插件(我猜測,這也許是由於我以“root”身份登錄到一個會話中,但是我的確不喜歡這樣做)。

另外,MyEclipse發行中提供了一個基於Java的安裝程序。這個安裝程序十分友好地與Windows平台集成到一起(包括快捷方式),而在Linux平台上也提供了一種可以接受的安裝方式(盡管它並不創建任何桌面快捷方式)。

總體特征

當初次接觸Eclipse時,其令人驚訝的速度和特征豐富的Java編輯器一定會給你留下最為深刻的印象。具體說來,它具有如下特征:

◆速度快

◆強大的重構功能

◆快速錯誤修改功能

◆能夠修改/組織導入信息

◆以細節方式呈現的大量閃光亮點(例如,在代碼完成方面提供了吸引人的Javadoc彈出菜單)。

不管怎麼說,Eclipse確實是一個相當優秀的編輯器。

另一方面,我並不太喜歡Eclipse中的窗口系統,特別是它的Perspectives/View概念(我討厭這種與NetBeans 4.0系統一樣的特征,但是NetBeans在後來的版本中非常明智地替換了這一點)。我比較喜歡把所有相關的編輯器/調色板/面板通過單個窗口進行配置這種簡單的方法—根本不容易混淆。無可否認,這僅是一種我個人的一種喜愛。

我還發現它所提供的窗口系統在一些方面不太符合邏輯。例如,最小化“Package Explorer/Hierarchy”視圖並不會把它折疊到旁邊去(而根據我的其它IDE使用經驗—無論是NetBeans或是Visual Studio.NET,它們都能夠友好地實現這樣的功能)。代之的是,Eclipse僅把它折疊起來而留出未使用屏幕的一大部分—的確是一種極不尋常的設計決定(圖9展示了這種奇怪的窗口行為的一個示例)。除此之外,整個窗口系統完全可以接受,但是我更喜歡NetBeans的系統。

圖9:Eclipse提供的一種極不常用的折疊式視圖

Swing開發

Eclipse中的Visual Editor是目前(至少還有一段時間)主流Java IDE中功能最弱的GUI編輯器之一,主要因為它支持下的大多數高級布局還停留在GridBagLayout的水平。在使用過NetBeans的Matisse之後,我簡直無法想象自己還會再求助於那種古老而拖沓的Swing UI創建方法。幸好,如今一個圍繞Eclipse成長起來的社區力量—MyEclipse—提供了把 Matisse GUI Builder功能直接集成進Eclipse的功能!並且它工作性能相當好,盡管它看上去明顯是緊跟在NetBeans團隊新性能改進之後才進行一些更新(例如,據分析bean綁定特征將作為NetBeans 6.0的部分發行)。不過,Matisse成為Eclipse平台上唯一可用的最優秀GUI開發工具的事實(即使把它作為一種商業解決方案的一部分)足已證明為什麼它會成為Java IDE圈中“800磅的大猩猩”—沒有哪一位競爭對手能擁有象它那麼一批插件開發團隊並甘心情願地補充(或有時是完全代替)Eclipse的基本功能。

JSP/Struts開發

Web Tools Project(WTP)為Eclipse添加了web開發特征。它完全勝任基本的JSP開發—提供一個堅固的JSP編輯器。然而,在發布你的web應用程序時,卻使人看上去有點古怪。當我把它發布到Tomcat時,經常會發生伴隨著錯誤出現某種鎖定。這與其它IDE(它們根本沒有表現出任何這方面的問題)直接形成對比。

WTP還缺乏對Struts開發的任何內置支持,這看起來象是其功能的一個主要的缺憾(盡管快速搜索一下www.eclipseplugincentral.com會出現超過24個以上的Struts支持插件—既有商業的也有開源的)。並不驚奇的是,MyEclipse以其全面的Struts支持(還包括圖形化的struts-config.xml編輯器,以及創建新的Action和FormBean的向導)填補了這個漏洞(圖10展示了實戰中的Struts編輯器)。

圖10:MyEclipse的struts-config.xml編輯器

值得注意的是,安裝了MyEclipse的Eclipse仍然是目前唯一的為創建JSP/Struts頁面而提供一種可視化編輯器的工具(圖11提供的示例展示了MyEclipse可以添加到一個web工程中)。遺憾的是,我還無法全面地測試它—由於一個Eclipse錯誤禁止它在Linux平台上使用。

圖11:MyEclipse的Web工程選項

JSF開發

基本Eclipse發行中提供了一個其對於JSF開發提供未來支持的預覽版本。盡管它只是“預覽”狀態,但是它實際上已經相當穩定可用,並且,恕我斗膽說一句,要比其競爭者宣傳的對於JSF功能的支持更為成熟一些。這包括為文件faces-config.xml提供了一個可視化的編輯器,JSP頁面開發中針對托管的bean屬性的代碼自動完成功能,新的托管bean向導,以及建立Converters,RenderKits和Validators的可視化編輯器。我很激動地聽到,Eclipse開發小組正在計劃發行一個可視化的JSP/JSF編輯器。MyEclipse所提供的JSF功能大致范圍與Eclipse非常相似;但是根據我的測試,基本Eclipse提供的JSF支持足已夠用。

企業開發

Eclipse對JPA並沒有提供正式支持。不過,的確有一個稱為Dali的衍生工程能夠實現這一功能,但是此工程仍然處於早期的開發階段。然而,盡管我能夠利用它從一個數據庫生成一組可用的實體,但是其生成的代碼還遠沒有達到NetBeans當前所生成的代碼的級別(例如,它並沒有實現自動地創建任何命名查詢)。如果你的開發團隊目前還沒有使用到JPA而是直接使用了Hibernate,那麼,不妨把MyEclipse作為一個備選方案,因為它提供了相當豐富級別的Hibernate支持。

對於J2EE開發,Eclipse支持創建EJB和EAR模塊,盡管為了避免J2EE的復雜性它看上去集中於經由XDoclet生成EJB—無可否認,這是在Java EE 5和EJB 3.0出現之前能夠極大地降低企業應用程序復雜性的可以利用的最佳方案。通過針對會話bean、消息驅動的bean以及容器管理器持久性bean提供相應的向導,MyEclipse進一步擴展了這一功能—但仍然是Xdoclet驅動型的。

目前看起來,Eclipse和MyEclipse都沒有提供對Java EE 5的支持;不過考慮到它還是一個相當新的規范,所以我假定Eclipse Foundation現在正忙於在未來的發行版本中添加對它的支持(圖12展示了MyEclipse提供的J2EE 1.4 EJB向導)。

圖12:MyEclipse提供的EJB代碼生成支持

二、根據實際需要選擇IDE

首先得承認,我在此所列結論絕對不可能無一差失。每一種IDE開發隊員可能會對本文中的許多觀點提出相反的意見。在此,我不可能評估所有可能的開發需要(例如在本文中很少涉及RCP,UML,JUnit和報告支持),因此很顯然,你的IDE選擇應該主要基於你所熟悉的特定Java技術。

本文中所討論的每一種IDE都能夠勝任Java開發中的某一類工作。然而,其中的某幾種可能更勝任某一類特定的工作,這要依賴於你是在進行Swing,web,或是企業開發而定。基於此,我把前面的討論總結為下面幾個方面。

Swing開發

如果你的團隊擅長Swing開發,那麼,NetBeans無疑是最恰當的選擇,因為Matisse最易於使用。如果因公司原因你只能選擇Eclipse,那麼,我會毫不猶豫地建議你使用MyEclipse並結合它的Matisse4Eclipse Builder。在推薦了這兩種選擇後,接下來我會建議你使用IDEA(由於它對JGoodies表單提供支持),而Eclipse位列最後—它提供的缺省的Visual Editor性能並不好;應該盡可能避免選用這個工具。

JSP/Struts開發

至此,競爭變得相當激烈起來。IDEA表現出其突出的優點,其次當屬MyEclipse,然後是NetBeans。注意,由於缺乏內置的Struts支持,Eclipse的基本發行尚無法加入這方面功能的爭冠者之列。

JSF開發

在這一方面,這三個IDE緊緊相隨。坦率地說,我感覺IDEA相對最好些,其次是Eclipse/MyEclipse,而列於第三位的當屬對JSF開發僅提供基本支持的NetBeans。無可否認,如果你也把NetBeans Visual Web Pack考慮在內的話(假定可以接受它的有限功能—這將會把它移動排隊的最前面),那麼,上面這種排序也許不些不同。

企業開發

關於JPA支持方面,我將首先推薦NetBeans(這主要是因為其代碼生成的質量以及支持適當創建存儲單元),其次應是IDEA,最後當屬功能有限的Eclipse的Dali工程。如果你願意放棄標准的JPA方法而想使用更為直接的Hibernate的話,那麼,MyEclipse也會成為一個有價值的競爭者之一。

對於企業開發來說,我認為IDEA以其豐富的J2EE及Java EE 5支持而成為最佳侯選,其次應是NetBeans(它在這方面開發也給人留下不錯的印象),列於第三位的才是Eclipse/MyEclipse(主要由於它們當前缺乏對於Java EE 5的支持)。

三、小結

如果說Eclipse是Java IDE中一只800磅的大猩猩的話,那麼,微軟堪稱是背後一只極具威脅力的10噸重的King Kong(電影《King Kong》中的巨型大猩猩的名字)。作為一位使用C#/.NET進行過多年開發的程序員,我跟隨微軟的新技術一直到現在的.NET 3.0和它的下一個版本的Visual Studio(確定代號為“Orcas”)。因此,我希望每一們Java IDE經銷商都不會安逸於其目前所取得的成就,因為微軟在庫及開發工具方面一直在投入大量的精力進行研究和發展。因此,只有創造出與微軟技術可以相匹敵的產品時,Java生態系統才能夠保持良好的發展勢態(甚至更好一些—超過它,就象在產品Matisse,JPA及EJB 3.0所取得的成就一樣)。

事實證明,任何忽略微軟的重大影響的公司和技術通常都會以失敗而告終。我現在很高興地看到,以前陳舊的“先發行API,然後等待不同檔次的開發工具慢慢上市”的觀念正在被“盡可能同時發行API及相應的世界級開發工具”的迅猛勢頭所取代,因為這也正是微軟多年來所采取的開發策略。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved