1. 程式人生 > >最好的Java IDE之爭:Eclipse PK IntelliJ IDEA

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

話說,好馬配好鞍,一個好的工匠,必定要有一套好的工具才能打造出最好的工藝給大家。之前,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在偷窺我,因為它的建議實在是太好了。

 

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程式碼顏色,所以開發者不用在瀏覽器裡對此進行檢查。 

 

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

1.自動完成

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

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

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

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

  

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

 

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

2.重構

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

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

  1. publicvoid assertErrorMessageIsHidden() {  
  2.   assertElement(By.id("errorMessage"), Condition.visible);  
  3. }  

我們以字串“errorMessage”作為該方法的一個引數。

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

 

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

 

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天的試用期;社群版,開源免費)

相關資料:

來自:Plumbr