最好的Java IDE之爭:Eclipse PK IntelliJ IDEA

摘要:在今年的谷歌大會上,谷歌發佈了新的Android集成IDE“Android Studio”,其中最大的轉變就是從Eclipse轉向了IntelliJ。

話說,好馬配好鞍,一個好的工匠,必定要有一套好的工具才能打造出最好的工藝給大家。之前,Plumbr團隊裏的所有成員都使用Eclipse編輯器,而如今,大家都成爲IntelliJ IDEA用戶。那麼,到底是什麼讓大家拋棄老練且免費的戰馬,轉而去搶高達600美元的座位呢?當然,IntelliJ IDEA也提供了開源免費的社區版本。下面不妨聽原文作者細細道來,並列出了幾大原因。

1.索引

儘管JetBrains的夥計正在做“引擎蓋下”的事情,但是他們索引的確是極其快速,並且還支持各種不同的內容。快速的索引在幾個可用性特徵上已見成效:


  • 自動檢索代碼,並且會給出相應的警告:在Eclipse中,你必須手動啓動分析,而IntelliJ

  • IDEA則會快速做出響應和回饋,它能懂得上下文。

  • 在相同的索引條件下,IntelliJ IDEA在代碼完成和代碼生成方面要好很多。大家還記得那個Lists裏臭名昭著的java.awt.List自動導入,開發者花費數年才把“頂級推薦”予以刪除掉,而使用IntelliJ IDEA完全沒有這樣的煩勞。

  • 按ALT+ENTER鍵會自動提供完成程序,該功能可以使用在多個場合,我甚至懷疑有Amazon Mechanical Turk在偷窺我,因爲它的建議實在是太好了。


5238173803e85.jpg 

2.跨語言操作上更勝一籌

即使在IntelliJ IDEA裏想要表現不同的內容,編輯起來也是非常自然的。無論是編輯Java、JavaScript、HTML或者是一個JPA查詢——其跨語言操作都是非常的好。即使不是編輯Java代碼,也無需重新設置快捷鍵。並且具有很好的代碼補全功能,尤其是編寫JavaScript代碼,而Eclipse卻無法提供支持。

3.給出基於上下文的建議

當開發者在着手處理不同的問題時,Eclipse試圖給大家提供“最好的建議”,這也就意味着我的屏幕布局得不停的切換,從開發模式到調試再到重構等,這是非常令人困擾的。而現在,只需一個額外的上下文窗口即可解決上面所有問題。

4.調試

使用IntelliJ IDEA調試,你只需要把光標移到你的表達式中然後按下Alt+F8。IntelliJ IDEA會很好的理解這個你可能需要的表達式,然後顯示一個對話窗口,其中有一些它給出的建議參數變量。你也可以編輯並在對話框中立即得到這個表達式的值。相當的方便!試過這個特性後,你就不會再想在Eclipse中調試了。

5.技術支持

Eclipse由基金會成立,這本身不是什麼壞事,但由於基金會裏的各個團體利益出發點不同,所以在管理和執行上肯定會有所不同。對於開發者來說,這並不是什麼好事,當你想獲得一些技術指導或支持時,它很有可能不能及時給你回覆。而IntelliJ IDEA完全不會存在這樣的問題。

下面是我最近發現的幾個好東西:


  • 當你輸入時,JPA查詢語法會立即進行正確性檢查,這樣就節省了大量的時間來檢查錯誤。

  • 屬性文件集成:在一個屬性文件裏,開發者可以在源碼裏看到某個屬性的使用狀態。

  • 整合不同的瀏覽器:爲了測試HTML代碼的兼容性,開發者可以在IDE裏建立不同的瀏覽器,這樣開發者就無需安裝各種不同的瀏覽器進行測試。

  • 在IDE的右邊會顯示CSS代碼顏色,所以開發者不用在瀏覽器裏對此進行檢查。 


523e47cf76413.jpg 

最近,越來越多的開發者體會到,使用IntelliJ IDEA要好於Eclipse,對此,筆者從網上蒐集到了一些資料(以下內容節選自:爲何IntelliJ IDEA比Eclipse更好):

1.自動完成

擁有自動完成功能的IDE要比notepad更加優秀,在這個領域,能感知上下文的IntelliJ IDEA有了質的飛躍。例如,我們開始如下一行代碼:


[java] view plaincopy

  1. assertElement(By.id("errorMessage"), vi  


現在我們想要查找以vi開頭的選項有哪些。

IntelliJ  IDEA怎麼做的呢?無需等待任何的按鍵,它馬上就能理解assertElement需要一個Conditaion類的示例作爲第二個參數,而在Condition類中有一個靜態變量名叫visible。IntelliJ IDEA會直接建議這個唯一的有效選項。

  523e4d66dab64.jpg

然而,Eclipse會怎麼做呢?唉,它不能理解上下文,它不知道光標所在處就是assertElement方法的第二個參數。因此當你按下“神聖”的Ctrl+Space時,Eclipse只會簡單的顯示全局中以vi字母開頭的一切。 

523e4dbb08e52.jpg 

在一個美麗的彈出框中我看到了很多漂亮的高亮的格式規範的無用信息。 

2.重構

專業的程序員能夠高效的使用IDE提供的重構功能。所有的現代IDE都提供許多印象深刻的重構功能。但還是那句,IntelliJ  IDEA的重構功能也很聰明智能。它們能讀懂你需要什麼,然後針對不同的情況提供給你最適合的解決方案。 

例如,假設有一個assertErrorMessageIsHidden方法: 


[java] view plaincopy

  1. public void assertErrorMessageIsHidden() {  

  2.   assertElement(By.id("errorMessage"), Condition.visible);  

  3. }  

我們以字符串“errorMessage”作爲該方法的一個參數。

讓我們先從IntelliJ IDEA開始,將光標放在任何字符串“errorMessage”上,按Ctrl+Alt+P(代表“parameter”),IntelliJ IDEA將會建議我們可以在哪些表達中用次字符串爲參數。

523e4e8c5466a.jpg 

當“errorMessage”表達式被選定以後,IntelliJ IDEA將會建議一些可能的能用做該參數的變量名稱。 

523e4eb09ae28.jpg 

IntelliJ IDEA在作爲Java IDE時確實比Eclipse更好。如果你考慮他們其他方面的能力例如用於其他例如C++、Python、Scala的IDE上,或者是作爲構建桌面的應用的平臺,Eclipse很有可能拔得頭籌。

事實上這是依賴於對他們的定義的,Eclipse已將自己定位爲一個抽象平臺,用來使用插件構建任何工具,而IntelliJ IDEA則定位爲一個“智能的Java IDE”,而且它正如此。

3.Eclipse好於IntelliJ IDEA的地方

下面列一些Eclipse可能比IntelliJ IDEA更好的地方:


  • Eclipse看上去更棒,所有大題小做的SWT以及本地控件都用的很值。Eclipse看上去很穩定的深思熟慮過的程序,它有着漂亮的字體以及圖標。然而當第一眼看到IntelliJ IDEA是,它像是作噱頭的玩具一樣,有着不完全的圖標以及笨拙的Swing界面。

  • Eclipse擁有更強的項目結構支持。在IntelliJ IDEA中,你的項目是有模塊組成。在Eclipse中你擁有一個由工程組成的工作區,每個工程都能被單獨打開或關閉,分組或隱藏。但是你真的需要麼?

  • 爲Eclipse編寫插件似乎很簡單

  • IntelliJ IDEA比Eclipse使用更多的系統資源。這其實也說得通--因爲IntelliJ IDEA更加智能

  • 最後,Eclipse是免費的,然而IntelliJ IDEA Community版本已經夠我用了


最後的建議

如果你需要漂亮的圖標,用來創建桌面程序的平臺,C++IDE或者你用一個低配的筆記本工作,那麼Eclipse可能對你來說是更好的選擇。但是如果你是一個正兒八經的Java開發者,你需要更快更方便的工具幫你集中注意於解決問題而不是讓你分心,IntelliJ  IDEA則正是你所需要的。

關於IntelliJ IDEA

目前最新的穩定版本是12.1.4, 點擊查看 IntelliJ IDEA最新版本介紹。

下載地址:


  • IntelliJ IDEA:(IntelliJ IDEA提供兩個版本,旗艦版,需要licence,但有30天的試用期;社區版,開源免費)


相關資料:



綜合上看,主要是eclpise+Intelij IDEA

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章