據Sun官方稱“最近幾年Java IDE已經得到了前所未有的發展。其中IBM的Eclipse、Borland的JBuilder和Sun的NetBeans將成為Java IDE的三足鼎立之勢”。
Java IDE是各大軟件公司最常用的開發工具之一,也是市場上最活躍的開發工具之一。Sun認為,現在是該問問自己:我使用的Java IDE是否最適合我嗎?或者我應該重新考慮一下是否還要繼續使用這個Java IDE.
InfoWorld曾經在2005年三月做過一個Java IDE產品的調查,自從那時,這些IDE已經開始發生變化了。就在那時, InfoWorld雜志對歷年最佳開發工具做了一個調查。在2003年是Borland的JBuilder、而2006和2007年這一殊分別被IBM的Rational和Sun的NetBeans奪得。
Java IDE給我們印象最深的是在過去的兩年裡Java IDE已經得到了非常大的發展,但令人不解的是它們在某些方面,如代碼分析、單元測試或發布管理等,並沒有走得太遠。而變化最大的就是對流行框架(如Struts、Hibernate等)的支持。下面就讓我們看一看目前最流行的三種Java IDE的表現,這在個過程中我們將會看到它們的優點和不足。
一、IBM RAD借Eclipse之身、欲成為Java開發工具的新霸主
IBM的發言人宣稱RAD7.0是基於Eclipse技術的最傑出的Java開發工具。而象Eclipse這樣的開源框架也給向Borland/CodeGear的JBuilder帶來了強大的生命力。Eclipse最初只是一個Java IDE,但是在最近幾年,它已經被包裝成一個可以使用插件的框架,並成為很多開發工具的母艦(這些開發工具有的甚至不是用於Java開發的)。
Eclipse的這種構架模式已經顛覆了很多傳統的Java IDE的理念。雖然這麼說有點偏激,但Eclipse的插件模型和巨大的開發者社區在一定程序上已經證明了這一點。
由於看到了Eclipse的機會,IBM在它的RAD7中基於Eclipse又加入了一些更強大的插件。為了滿足IBM的企業市場定位,這些新加入的插件都在一定程度上滿足了企業應用的需要。這些插件主要包括門戶和門戶開發、擴展數據庫的支持。最值得稱道是數據庫的支持,IBM在這些插件中加入了對DB2的強大支持,在這些插件中可以直接寫用戶自定義函數(UDF),存儲過程和SQLJ代碼。DB2的所有功能都可以在這裡使用。
但RAD7也有其不足之處,如在圖表和模型方面有所限制,在RAD7中只支持兩個UML圖,這比NetBeans和JBuilder要少的多,NetBeans支持8個UML圖,而JBuilder支持多達9個UML圖。如果要在RAD7中使用其他的UML圖,必須向IBM購買更多的昂貴的企業級組件。
當然,RAD7也有它的優勢,如我們可以使用RAD7開發Web Services和Web Services客戶端,生成WSDL文件,甚至測試UDDI服務。除此之外,RAD7還支持IBM的DADX,這是一個關於DB2的Web Services擴展。
在代碼層,RAD7提供了一個靜態的分析工具,通過這工具可以對Java進行缺陷檢查,這個工具可以檢查出200多個程序設計缺陷和規則。同時IBM的其他產品還提供了更多的代碼錯誤檢查,通過和這些工具的結合,可以使自己的代碼變得更加強壯。 IBM不僅在RAD7上下足了功夫,而此在幫助文檔上也使足了勁。RAD不僅提供了本地的幫助信息,而且還可以連接到IBM的訓練網站,也就是眾所周知的IBM開發者社區,在這裡有著十分豐富的文章可供學習,還有大量的資源可下載。 現在動態語言越來越熱,為了搭上動態語言的快車,RAD7也內建了Jython(基於Java的Python版本)功能,但不幸的是,IDE還無法區分什麼是Jython,什麼是Java.這可能會在一定程序上影響動態語言的使用。
RAD7雖然從總體上說功能很強大,但它也有一些不足或缺點。如很多功能做的不是很好。在安裝插件時比較困難。有些用戶由於對RAD7了解不夠,在安裝時必須要IBM支持才可以。 當然,還有更多的bug,如RAD7中的拼寫檢查功能不好使,這是因為IBM並未在RAD7中提供字典的緣故。如果將這項功能打開,RAD7將顯示所有的字為錯誤。還有那個代碼核對工具,有時自動修改的錯誤並不正確。RAD7的動態幫助系統也不太好使。有時無法顯示正確的幫助信息。另外,RAD7只支持到JDK1.4,而Sun最新的J2SE5和J2SE6並不支持。這不得不說是一個遺憾。
雖然RAD7有一些不足,但還是值得使用的。因為那些使用DB2和WebShpere的用戶會得到特殊的照顧。而且RAD7還提供了多種語言的支持。這一點做的是非常出色的。
二、Borland JBuilder2007重裝出擊,欲奪回曾經屬於自己的市場
JBuilder曾經給我們留下了輝煌的記憶。而JBuilder2007是Borland整合了Eclipse後發行的第一個版本,也是Borland將自己的開發部分拆分成CodeGear後的好行的第一個JBuilder版本。
由於Borland並不善於銷售和宣傳,再加上JBuilder2007是Borland的第一個新平台。因此,我並不期望這個產品分給用戶帶來多少驚喜。但當我用了這個產品後,改變了我的想法。這個IDE提供了很多特性。看來CodeGear是真的發力了,從JBuilder2007的IDE中可以看出,幾乎在每一個功能是都是創新。
對於Java代碼編輯來說,JBuilder有三種不同的代碼分析器:開源的PMD、Findbugs和Borland自己的代碼分析器。這些工具可以非常好地在一起運行,但JBuilder在問題解決方案方面還不如IBM的RAD7.
JBuilder雖然在有些功能上不如RAD7,但它也繼承了Borland的一貫作風,在其中集成了大量的組件。具初步統計,JBuilder2007帶了超過80種不同的組件,如動態顯示數據的,或類似Excel一樣的電子表格組件。當然,如果你不喜歡某些組件,可以將它們關閉,這樣它們就不會煩你了。除此之外,JBuilder還可以保存狀態快照,你開發人員可以跟蹤程序的狀態,以便保證朝著正確的方向發展。
CodeGear同時還在JBuilder中集成了性能優化套件。而這些套件在此之前Borland一直是以單獨的產品提供的。Borland的這套優化系統可以為用戶提供非常多的性能和內存方面的建議和指導。包括代碼覆蓋分析(這個代碼分析只能針對類,而不能對一行行的代碼)以及對並發數據的探測等。
JBuilder還為我們提供了另人振奮的協作特性。這個特性是一套面向開發人員的消息系統。這套系統可以幫助參與項目開發人員進行溝通。它使用了P2P的設計模式。但不幸的是只能用於同一個網絡中的結點。
JBuilder最吸引的要算它的團隊開發系統:TeamInsight,這套系統非常容易配置,而且帶了一個入口服務器,它個服務器包含了很多重要的開源工具:Subversion、Bugzilla、Continuum和XPlanner.這個服務器可以很容易地通過一個Web接口或通過JBuilder進行訪問。
但JBuilder也有一些缺陷,如現在比較常用的向JSP、JSF技術等沒有提供可視化的開發環境。而且對於使用DB2的程序不能產生發布文件。當然,還有很多其他的遺憾。而且JBuilder2007目前只有Windows版,而Linux和Mac版要在今年五、六月份才能正式發布。
三、NetBeans:Sun的致命殺手
Sun的NetBeans和Eclipse一樣,是完全免費開源的。使用者不用向Sun支付任何費用。並不象其他的IDE,NetBeans在默認時並沒有那麼多的組件。由於NetBeans是基於插件模式的,因此,用戶可以根據自己的需求定制NetBeans.從最近Sun發布了NetBeans6的第9個歷程碑版可以看到。Sun將NetBeans分為三個版本,基礎版、標准版和完全版。對於基礎版來說,大小不到30M,這個版本只含有基本的JAVA IDE,因此,它很適合個人用戶學習Java時使用。其他的兩個版本在功能上有了大幅度的增加。如在Web、Web Service、SOA上。
NetBeans和JBuilder一樣,在發布時也繼承了大量的組件。如NetBeans提供了一個企業開發包、一個可視化的web開發包,除了這些,還有用於移動開發、C/C++開發的組件。以及一個性能監視的包。這些組件都是以插件形式發布的,一但下載了某個開發包,用戶可以很容易地安裝它們。
對於企業計算,NetBeans為我們提供了一些非常有用的特性,包括J2SE5和J2SE6的支持。這個IDE有一個非常實用的基於服務的企業開發工具,這就是SOA或Web services.利用這些功能,在NetBeans中可以動態地利用模型和可視化的能力開發BPEL.
但是NetBeans的企業服務也有不足。如由於缺乏相關產品的支持,NetBeans並不支持IBM的WebSphere應用服務器。以及除了JavaDB外無法和其他數據庫集成。這最後一點得說明一下。無法集成並不等於無法訪問,雖然NetBeans可以通過JDBC訪問數據庫,但它只能產生JavaDB的發布文件。
NetBeans也具有強大的協同工作特性。它已經內建了面向開發人員的實時的協作平台。包括聊天室和代碼共享。
這些特性和JBuilder中的不同,NetBeans的設計是基於服務器的。你可以安裝自己的服務器或利用Sun為我們提供的一個服務器進行通訊。使用這套系統可以很容易地登錄Sun的服務,任何登錄到這套系統的用戶的各種狀態都將被顯示。從總體來看,這套系統有點向IM產品。
在GUI方面,NetBeans使用了Matisse,這是Java IDE中最好的GUI布局工具。當用戶將組件拖放到面板和對話框上時,這些組件將會自動按著正確的布局組織排列。而且Matisse還能以互動的方式產生相應的代碼,在修改代碼後,組件也會產生相應的變化。Matisse還為NetBeans做了許多基於Swing的接口,這是因為,Matisse只能在Swing上工作。幸運的是,現在Swing的性能早已今非惜比了,因此,性能已經不再是Swing的軟肋了。
在其他的Java IDE中都采用了自己的格式來存儲工程文件,而NetBeans在這一點上要開放的多,NetBeans采用了現在很流行的Ant文件格式來保存工程和配置文件(事實上,ant也相當於make,這是一套基於驅動建立的系統)。NetBeans這麼做是非常有利的。如在一個團隊開發中可以要使用很多類型的Java IDE,如果在其他的IDE中要裝載和運行NetBeans工程,就不需要將其手工轉換為當前Java IDE的工程文件格式或都一點點導入,只要當前IDE可以操作Ant工程文件格式即可。
從上述特性可以看出,NetBeans有一些非同尋常的特性 —— 就象埃及金字塔一樣是一個宏偉的建築。如果這些特性是你需要的,那麼NetBeans將是你最好的選擇。這並不只是因為它是免費的,而是因為它要比基於Eclipse的產品更容易使用和駕馭。Eclipse的視圖模式對於長期使用Windows的開發人員並不適合,而NetBeans並未使用這些難以理解的視圖做為自己的風格,而是直接使用了Windows開發人員所熟悉的窗口來完成各種任務。
為了更好地滿足開發人員的需求,Sun在NetBeans上下足的功夫,預計今年年底NetBeans就可以發布6.0的最終版,在這個版本中,NetBeans將修正很多另人討厭的bug,如字體顯示和運行時配置問題。如果你正在考慮使用NetBeans,那麼可以到www.Netbeans.org上下載NetBeans6的測試版,看看這個Java IDE是否能滿足自己的需要。
四、我們該選擇哪一個Java IDE產品呢?
上面主要介紹了三種目前流行的Java IDE產品,那麼我們應該選擇哪一個呢?我的建議是如果你正在使用IBM的軟件產品,如DB2、WebSphere等,你可以選擇使用RAD7,當然,這要有一個前提,那就是不使用J2SE5和J2SE6.
如果你想要一個便宜的解決方案,或者主要的工作平台是Mac和Solaris,你可以使用Sun的NetBeans作為自己的開發平台。當然,你也可以選擇使用Eclipse.對於Borland的JBuilder2007來說,可以在任何情況下都可以使用它,因為這個IDE是一個標准的Java IDE.也是功能最全的Java IDE.