即使在微軟開發平臺大行其道的今天,Java IDE仍是企業開發人員用得最多的應用開發工具之一。可是,在實際使用中應該選擇哪一種IDE呢?本文為開發者提供了一些選型的依據。
Borland JBuilder、IBM Rational以及Sun NetBeans這三款著名的Java開發工具曾經分別獲得美國《InfoWorld》2005、2006、2007年度的Java IDE產品類別“年度技術”獎,是目前市面上應用最多、性能最強大的開發工具之一。在過去的幾年里,這些工具都成熟了很多,特別是在靜態代碼分析、單元測試和版本管理等方面取得了巨大進步。本文對這三款開發工具進行了詳細評測,以期為開發人員提供一些選型的依據。
IBM RAD 7: 不支持Java EE 5、Java SE 6
IBM Rational Application Developer for WebSphere Software 7.0(簡稱RAD 7)基于Eclipse——Borland/CodeGear的JBuilder產品系列也基于這個開源軟件框架。Eclipse原先就是一種Java IDE,不過近幾年它重新定位,作為可以往上面添加多種插件的框架,因而可以構建各種各樣的工具(許多工具與Java開發沒有關系)。Eclipse新的框架定位引起了一些人的擔憂,生怕原先的Java IDE概念已被淡化。這種擔心也許不無道理,不過好就好在Eclipse目前擁有最大的Java插件社區。
RAD 7為改動后的Eclipse庫添加了幾個組件,其中不少組件面向企業應用開發,它們包括門戶組件和門戶開發工具,還有廣泛的數據庫支持。數據庫支持(尤其支持IBM的DB2)包括了編寫用戶自定義函數(UDF)、存儲過程和SQLJ代碼的功能,而這些都是本次測評的三款產品中特有的功能。
不過,RAD 7的圖解和建模功能比較有限,它只支持兩種UML圖(NetBeans和JBuilder分別支持八種和九種)。要從IBM獲得更全面的圖表支持功能,就得購買價格更昂貴的IBM Rational Software Architect。
有了RAD 7,就可以開發Web服務和Web服務客戶程序,生成Web服務描述語言(WSDL),甚至對專有的通用描述發現集成(UDDI)服務進行單元測試。另外,它還支持IBM的DADX,這是Web服務使用的DB2 XML擴展。遺憾的是,該產品以IBM為中心的特性還影響到了UDDI測試:它只支持使用基于IBM技術的專有注冊庫。
在編碼方面,RAD 7提供了靜態分析工具,集成了IBM開發的200多項規則,適用于處理可能存在的Java缺陷和編碼錯誤。盡管本次測評的其他IDE提供了更多規則,但IBM的解決方案可以把這些產品無法發現的錯誤標記出來,并詳細說明使用規則的原因以及解決問題的示例代碼。這種全面的幫助體現了IBM一貫以來的傳統:說明文檔翔實、完備。RAD可鏈接到廣泛的教程。以豐富的文章數量而在開發社區中享有盛名的IBM網站也提供了另外一些資源。
如果應用程序需要腳本語言來把各部分“粘合”起來,RAD 7還提供了內部支持基于Java的Python(Jython)的功能。遺憾的是,該IDE無法自動區別什么是Jython、什么是Java,盡管這兩門語言的語法全然不同。這會導致有些操作使得IDE無法正常工作。
盡管這個缺點很小,但表明了我在使用RAD 7時經常遇到的問題:許多特性沒有實施好。譬如說,軟件安裝起來非常困難。得到IBM有關人員的支持后,筆者才正確安裝上了該產品,不過原先的一些問題的原因根本就沒有找出來。
問題還不止這些。檢查注釋和文字拼寫的選項(一項有用功能)沒法使用,因為IBM沒有發布詞典。要是這項特性被啟用,它會把所有單詞標記為拼寫有誤。代碼檢查工具指定的糾正操作偶爾會無效。對話框里面的動態幫助經常把用戶帶到錯誤的地方,所以只好重新回到特定的上下文。
一段時間后,這些問題堆積起來使得這個原本不錯的產品用起來讓人沮喪。另外,還有一個地方要抱怨:IBM在支持現有的Java標準方面落后于其他廠商。它是這次測評中惟一不支持Java EE 5和Java SE 6的一種IDE。
因此,本文推薦已經在大量使用IBM產品的站點使用RAD 7,因為該產品特別支持這些產品,尤其是DB2和WebSphere。另外,要是站點希望許多國家的開發人員使用同一種IDE,應當會喜歡RAD 7,因為它的外文版本比其他任何一種IDE都要多得多。不過,價格比較高,加上其他方面的一些不足可能會促使站點在斥資購買之前會考察所有方案。
JBuilder 2007:相當出色的IDE
Borland/CodeGear JBuilder 2007 Enterprise Edition在這次測評中榮登榜首。這個版本是自該產品移植到Eclipse平臺以來的第一個版本。它由專門開發IDE工具的Borland旗下的CodeGear發布。由于Borland的產品用起來歷來有難度,加上這是新平臺上的第一個版本,所以我以為這個優秀產品會有些不盡如人意的地方。結果出乎所料,這個非常順暢而穩定的IDE有許多創新的特性。可以這么說,CodeGear肯定為這個版本耗盡了心血,事實上確實也取得了輝煌成功。
至于Java編碼,JBuilder有三個不同系列的代碼審查器和分析器:開源PMD、Findbugs和Borland自己的代碼檢查工具。這些工具可以很好地協同工作(實際上,它們帶來的眾多標記項可能讓開發人員招架不住),不過它們對出現的問題沒有解釋應采取什么措施,也沒有IBM的RAD 7產品那樣全面的問題解決建議辦法。
JBuilder捆綁了一個度量包(metrics package),它比任何IDE的度量包都來得全面。它可以生成80多種不同的度量,并且以圖解或者電子表格的方式顯示。用戶可以關閉沒有興趣的度量,為確實想要跟蹤的那些度量設定閾值。JBuilder還能保存度量快照,那樣就可以將代碼庫的當前狀態和前幾次執行的狀態進行比較,確保數字往正確的方向發展。
CodeGear集成了JBuilder的OptimizeIt工具套件,多年來Borland把它作為獨立產品來提供。OptimizeIt提供了眾多的高清晰視圖,可以了解軟件的性能和內存使用情況。它包括代碼覆蓋分析(但只能分析類覆蓋百分比,而不是逐行分析)及其他可見性,從而可以了解底層發生的情況,包括每個線程的數據。
JBuilder還提供出眾的協作特性。它擁有面向開發人員的消息傳送系統,這有助于代碼檢查以及開發人員的通信。它使用對等設計模式,遺憾的是,只能與同一個網段上的伙伴協同工作。JBuilder為團隊協作方面提供了TeamInsight,這個易于配置的門戶服務器包括以下幾個重要的開源工具:Subversion、Bugzilla、Continuum和XPlanner。該門戶可以通過Web接口或者通過JBuilder訪問,包含眾多的項目報告和度量。其他兩種IDE都沒法與這種團隊合作的緊密性相提并論。
JBuilder整體上讓人覺得可靠、穩定:考慮到它只是Eclipse平臺上的第一個版本,取得這樣的成績實屬不易。遇到的惟一錯誤就是經常出現不管用的幫助圖標。需要抱怨的地方集中在沒有實施的特性上,譬如缺少面向JSP或者JSF的可視化設計器(不過這些設計器很快就會出現)。該產品還無法為使用DB2的應用程序生成部署文件。最后,它目前只有Windows版本。Linux和Mac版本定于5月推出。
截至測評時的版本價格為1999美元,所以JBuilder并不便宜,但完全物有所值。對不需要所有高端特性的開發人員來說,還可以使用專業版和開發人員版的JBuilder,價格分別為799美元和399美元。
NetBeans 5.5:可免費下載
Sun的NetBeans產品是這次測評產品中惟一完全開放源碼的產品,可從netbeans.org免費獲得。不像其他軟件包,NetBeans需要一些組合??梢詮暮诵腘etBeans平臺著手,添加幾個“包”(pack),具體取決于開發者的需求。
目前,Sun提供企業包和Visual Web包(兩個都用于這次測評)、用于J2ME編程的移動包以及C/C++包。性能分析包(也用于這次測評)是一個獨立的包。這些包包含常用的IDE插件,通常提供了大量新功能。一旦下載了這些包,安裝起來就輕而易舉。
幾年前,NetBeans更像是有一些優秀特性,但在后面跟隨的IDE,難以與其他Java IDE產品真正平分秋色。但現在不再是這樣,NetBeans為企業計算環境提供了幾項實用特性,包括通過Sun的GlassFish項目這一形式支持Java EE 5。該IDE擁有面向基于服務的企業開發的優秀工具,無論是面向服務的架構(SOA),還是普通的Web服務。譬如說,NetBeans是本次測評中惟一擁有業務流程執行語言(BPEL)所需的全部圖解和建模功能的產品。
不過,該企業服務產品的不足是缺少支持常用產品的功能。NetBeans不支持IBM的WebSphere應用服務器,并且缺少支持JavaDB之外的其他任何數據庫的集成功能。不過,后一點需要澄清一下:NetBeans能夠識別可通過Java數據庫連接性(JDBC)訪問的任何數據庫,但它只能為JavaDB生成配置文件、充分利用數據庫管理系統(DBMS)特定的特性。
NetBeans的協作特性非常好,擁有內置工具,可用于開發人員之間的實時協作,包括聊天和代碼共享功能。不像JBuilder中的這些特性,NetBeans的設計基于服務器。可以構建自己的服務器用于這種通信,也可以免費使用Sun提供的服務器。只要登錄到Sun的服務器,所在小組的任何開發人員都會連同他們的登錄狀態信息顯示出來,這種設計類似IM產品中的在線感知(presence awareness)。;
至于GUI設計,NetBeans捆綁了Matisse,這是同類中最出色的GUI布局工具。把窗口組件拖放到窗格和對話框上時,它們會正確地自動排列。最佳和可選位置排列方面的準則會在拖放操作過程中彈出來。Matisse然后利用這種設計來生成代碼。
如果站點大量開發基于Swing的接口,單單這個工具就讓NetBeans成為它們的首選IDE,因為Matisse只與Swing協同工作。幸好,由于Swing的性能和外觀感覺得到了穩定發展,這個局限不像以前那樣來得嚴重。
雖然本次測評的其他Java IDE都使用自己的專有格式來存放項目元數據,但NetBeans巧妙地依賴Ant文件來存放項目的配置數據(其實,它使用相當于make的開源Java工具Ant幫助構建代碼)。這具有一大優勢:在使用多種Java IDE的開發小組中,其他任何IDE都可以裝入及運行NetBeans項目,不必手工轉換或者分批導入。
但使用Ant文件也有一個缺點:NetBeans只支持單一運行時配置。其他IDE大多數可以想編寫多少運行時配置,就能編寫多少,NetBeans卻不是這樣。要是每次想改變傳遞給應用程序的參數,就得手動改變一個配置(即將推出的6.0版本IDE解決了這個問題)。
顯然,NetBeans擁有不同尋常的特性組合——有些特性實施得很好,但另一些完全沒有。它不但免費,而且比基于Eclipse的產品響應更迅即、操作更容易,因為它丟棄了Eclipse采用的“視圖”設計,而是單單使用窗口。另外,NetBeans經常得到改進,擁有非常活躍的開發社區,得益于僅次于Eclipse的龐大插件庫。
事實上,NetBeans的新版本可以解決上述許多抱怨。如果你在考慮NetBeans,不妨在做出決定之前,看一下目前可以獲得的版本6測試版。
鏈接:其他的Java IDE工具
挑選IDE的關鍵是選擇既確保工作效率、又便于使用的一種IDE。下面簡要介紹一下本文所討論的產品之外的三個選擇。
Eclipse:如果不需要RAD 7或者JBuilder的高級特性,不妨考慮普通版本的Eclipse,可以從eclipse.org免費下載。如果需要幾項高級特性,不妨考慮Genuitec的MyEclipse,它把許多開源工具(包括NetBeans的Matisse)集成到Eclipse里面,費用是每個用戶每年54美元。
JetBrains IntelliJ: 許多開發人員認為這款Java IDE是最有效率、最讓人喜歡的純編碼環境。IntelliJ的界面比IBM、Borland或者Sun IDE來得直觀,因而博得了美譽。它還有一些獨特的特性,譬如說,代碼規則在后臺運行,所以在編碼過程中出現的錯誤或者錯誤樣式會實時顯示;問題被糾正后,就會從屏幕上立馬消失。這些規則比本次測評的三款產品都要來得多,對編寫大量Java代碼、又不需要建模工具的站點而言,IntelliJ是非??煽俊⒎浅5土倪x擇。
Oracle JDeveloper: JDeveloper是一種特性豐富、免費(但不是開源)的Java IDE,可從Oracle網站獲得。與NetBeans一樣,它也不是基于Eclipse。它支持一些企業特性,包括SOA和Web服務,當然也支持與Oracle數據庫技術和OC4J Java應用服務器之間的特殊集成。