Jacek Furmankiewicz是加拿大Compuware公司一位資深的開發者/設計者。他具有12年的專業IT經驗,范圍涉及UNIX,PowerBuilder,C#/Microsoft .NET,Java,PHP,還有Microsoft SQL Server和Oracle。
一、IntelliJ IDEA 6.0.4
供應商 JetBrains 網站 www.jetbrains.com/idea 價格 $499.00(加上$299.00的升級費)
安裝
在Windows平台上,IDEA提供了一個常規的EXE安裝程序;而在Linux平台上,其安裝只包括一個TAR.GZ文件。一旦解壓完所有內容,你必須手工地切換到“bin”子目錄下,並且執行“./idea.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
export path=$JAVA_HOME/bin:$path
遺憾的是,JetBrains並沒有對於任何主流的Linux發布提供一個標准的.deb或RPM文件,致使安裝無法與桌面良好地集成(例如,不支持桌面快捷方式或創建K菜單入口)。更糟糕的是,從Konqueror文件管理器下雙擊“bin/idea.sh”文件也無法工作(它將返回一個關於JAVA_HOME還沒有建立的錯誤,盡管實際上已經正確建立它了)。看起來,唯一可行的辦法是打開命令行並手工執行“./idea.sh”。總之,IDEA在Linux平台上的安裝體驗還需要進一步的簡化。在本文被測試的三個IDE中,IDEA在安裝方面提供的功能是最弱的。
總體特征
就象NetBeans一樣,IDEA中也提供了一種很靈活的布局,對於各種配置都提供了相應的停靠/固定/浮動面板。然而,這看起來尚不如NetBeans窗口系統那麼平滑和可配置。
然而,這只是對於傑出的IDEA編輯器的一個小小的抱怨—一直被認為是它的傑作之一。其實,IDEA編輯器速度極快,並提供復雜的上下文敏感的顏色加亮、提示和建議彈出框—更不必提給人印象極深的大量的重構選項。IDEA編輯器簡直就是任何頂級編程者的夢想。使用它的時間越多,我就會從中發現越多的提高開發效率的編程技巧。我肯定,在這麼有限的時間內我根本不可能了解它所有的功能。下圖4中的示例展示了一種IDEA編輯器及其高級的顏色/語法高亮功能。
圖4:應用中的IDEA編輯器
Swing開發
另一方面,IDEA也提供一個較強有力的GUI編輯器。但是,比起NetBeans Matisse,還是略微遜色一些,但是它確屬GUI編輯器中的亞軍。特別是,它對於JGoodies表單(無可爭議地成為比GroupLayout優秀得多的布局管理器)的支持使它遠遠跑在了那些仍然依賴於GridBagLayout技術的GUI編輯器的前面(例如Eclipse的Visual Editor)。
有趣的是,IDEA以一個單獨的“.form”文件形式保存相應的UI布局(類似NetBeans),但是默認情況下,它並沒有生成相應的Swing代碼—它僅在編譯期間經由一個專利性GUI編譯器(該編譯器還可以作為一個單獨的Ant任務進行打包)生成。如果你比較喜歡把該IDE生成的代碼直接放到你的.java文件中,那麼,你必須經由一個選項來啟動這一功能(我認為這是更好些的方法,因為我不太喜歡把我所有的UI代碼都隱藏起來而僅在運行一個IDE特定的代碼生成機制後才變得可用)。
JSP/Struts開發
IDEA對於Struts的支持是十分成功的。這方面支持的一個良好的例子是,它甚至支持下載所有你需要的Struts庫!它不僅提供自動地建立所有的配置文件(包括Tiles和Validator),而且還提供了一個稱為Struts Assistant的專用Struts面板,用於針對所有的Struts配置文件—包括tiles-config.xml和validation.xml—提供圖形化的編輯器和生產向導。
IDEA沒有為JSP/HTML頁面提供可視化編輯器,但是常規的IDEA JSP/HTML編輯器已經比較優秀了—盡管沒有一個可視化組件。對於嵌入式JavaScript(並提供完整的實現代碼!)的支持對於操作大量DHTML或AJAX代碼的任何開發者都是一個極大的福音。另一個值得注意的優點是,JavaScript編輯器的發行還支持浏覽器特定的元素(IE,Mozilla和Opera)以及流行的AJAX框架(例如Dojo,Bindows和Prototype)。(關於IDEA對Struts提供支持的例子請參考圖5和圖6。)
圖5:建立IDEA Struts Web應用程序
圖6:IDEA Struts Assistant
對於頂級的Web 2.0開發,IDEA為GWT(Google Web Toolkit)相關開發提供了全面的支持—把GWT作為它的一個核心特征。我發現這會給人留下極為深刻的印象,特別是當考慮到GWT是如此新的AJAX開發框架時。
JSF開發
就象它的Struts伙伴一樣,其實JSF工程選項僅是其靈活性的一個小小的練習:你可以選擇你想使用哪一個版本的JSF(1.0,1.1,或1.2)及相應的實現方式(JSF RI或Apache MyFaces),然後,IDEA甚至可以為你自動下載所要求的庫。NetBeans開發小組應當特別注意:這的確是對於所有流行的開源框架或實現(而不僅僅是Sun贊助的那些)的廣泛支持,而在你們的IDE中恰恰缺乏這一點!而且,JSF模塊還對JBoss Seam提供了現成的支持,這使大家幾乎一致認為它很可能會成為JSF開發的標准框架(類似Struts框架中對於JSP提供的支持)。這進一步證明了IntelliJ能夠及時完好地支持Java web世界的前沿開發。
在重構方面,IntelliJ看上去全面支持JSF技術(例如,把一個托管bean移動到一個不同的包中會自動地更新faces-config.xml)。(有關IDEA對JSF支持的示例,請參考圖7和圖8。)
圖7:在IDEA中創建新的JSF Web應用程序
圖8:在IDEA中進行JSF相關配置
企業開發
IDEA針對J2EE規范提供了徹底的支持。更為重要的是,它對EJB 3.0和JPA也提供全面的支持,盡管還不如NetBeans支持得那麼完善(NetBeans能夠自動地為JPA提供者在持久單元中添加相應的入口並針對所有實體域的命名查詢自動生成代碼,在我習慣於使用NetBeans 5.5後我發現在IDEA中卻缺少這方面的支持)。不過,IDEA發行中的確提供了觀察一個JPA持久單元ER圖的選項,但遺憾的是,這看起來僅可用於一個EJB模塊中。當在一個常規web模塊中使用JPA時,我無法激活這個ER圖選項。除去這個小小的瑕疵之外,IDEA對於J2EE/Java EE 5的全面支持也是一流的。它甚至提供了一種從J2EE到Java EE 5基於注解的方法的升級路徑!
至於應用程序服務器方面,IDEA針對所有的主流產品(也就是WebLogic,WebSphere,JBoss,Geronimo和Glassfish)都提供了相應的發布插件。