為何IntelliJ IDEA 比 Eclipse 更好

2020-12-13 開源中國

聖戰

有一些沒有唯一正確答案的「永恆」的問題,例如哪個更好:是Windows還是Linux,Java還是C#;誰更強壯:Chuck Norris還是Van Damme。

其中的一個聖戰便是Java IDE的選擇:

有許多爭論的話題是討論它們哪個有更多的插件、快捷鍵等等。它們之間有太多的不同而很難決定什麼才是最重要的。

因此,人們都表示兩個IDE在功能性上都差不多,選擇某一個則是個人喜好問題了。

我認為這不僅僅是個人喜好的問題,有客觀的原因能表明:Intellij IDEA 肯定比Eclipse更好.

我不會去大量比較兩者細微不同,例如插件與快捷鍵之類的。因為有一系列的blog是關於這些的,例如:[part 1] [part 2] [part 3]。我將會展示IDEA與Eclipse的一個最大的不同之處。通常IDEA和Eclipse的fans都不曾了解。前者已經習慣性的使用著它而不曾想像IDE缺少它會怎樣,後者則沒有使用它的習慣且難以想像有了它IDE能做得這麼好。Eclipse的用戶在把玩IDEA的時候通常都不會意識到這個不同點,因為他們習慣了以Eclipse模式工作。

為何我如此確信?

在開始說明之前,讓我解釋一下我是誰和為什麼我的觀點值得一聽。

我使用Eclipse已經5年之久,我很了解它,我為它編寫插件並真心地喜愛它。然後,我換了一個公司工作,並被強行轉移到IDEA上開發,在這次「分手」後,我才最終意識到為什麼IDEA更加敏銳。而如今我我已經使用IDEA一些年了,所以我能比較它們兩者,因為我了解它們。

IDEA與Eclipse主要的不同

IDEA之所以更加敏銳的原因是:IDEA懂得上下文。這也是JetBrains員工命名IDEA為intelligent的原因。它真正的含義又是什麼呢?IDEA檢索你的整個項目,分析項目所有的內容,甚至構建語法樹。幸虧有它,在任何時候無論你將滑鼠放置在哪裡,IDEA都知道你在哪裡並知道在那能幹什麼。

仍舊不瞭然?別擔心,在列舉了以下幾個例子後,一切就清楚了。

這種對上下文的理解表現在很多很多方式上,以下只是其中的一部分。

1、調試

通常在調試過程中,我們想要求一些表達式的值,在Eclipse中你需要選定這個表達式,選定整個表達式非常重要,否則你就沒法求出它的值。然後,你可以使用Ctrl+Shift+I看到這個表達式的值。

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

基本上在兩個IDE上都能讓你做同樣的事,但是使用IDEA會更加簡單和快速。對此我認真的表示,這個差異太大了:就像天堂跟人間一樣。在一個小小的IDEA對話窗口中就提供了自動完成,語法高亮以及你需要的一切。

2、自動完成

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

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

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

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

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

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

3、重構

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

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

public void assertErrorMessageIsHidden() { assertElement(By.id("errorMessage"), Condition.visible);}

我們以字符串「errorMessage」作為該方法的一個參數。

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

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

每月驚奇

你會經常地驚訝於IDEA的聰敏表現,比如它為你提示一些選項的名稱。它考慮到方法名稱,變量類型甚至是變量值,以及其他的此類變量的名稱,與之前你給定的此變量的名稱,除了忽略了你的生肖。相信我,你會想說「Wow,IDEA也能這樣?」,我想說至少每個月一次吧。

現在然我們看看Eclipse是怎麼樣給出建議的。

別忘了,選擇整個"errorMessage"表達式哦。選擇一個「推薦參數」的重構功能(通過菜單,沒有什麼快捷鍵可供使用),獲得差不多相同的結果,然而,Eclipse不會給出變量名提示選項,但幸虧不會。

結論

如果我們選擇Java IDE,那麼Intellij IDEA肯定要比Eclipse好的。這不僅僅是個人喜好問題。從客觀上看,IDEA更好。它是的你能夠快捷地編寫和修改代碼。它給出恰當的名稱提示,查找適合的方法。它不需要你特別地選擇表達式便會猜測到你想要做的以及你想如何對它命名。IDEA預示著並給你提示。

P.S. Remarks

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

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

作為紀念我就嘗試著列絕一些Eclipse可能比IDEA更好的地方:

  • Eclipse看上去更棒,所有大題小做的SWT以及本地控制項都用的很值。Eclipse看上去很穩定的深思熟慮過的程序,它有著漂亮的字體以及圖標。然而當第一眼看到IDEA是,它像是作噱頭的玩具一樣,有著不完全的圖標以及笨拙的Swing界面。
  • Eclipse擁有更強的項目結構支持。在IDEA中,你的項目是有模塊組成。在Eclipse中你擁有一個由工程組成的工作區,每個工程都能被單獨打開或關閉,分組或隱藏。但是你真的需要麼?
  • 為Eclipse編寫插件似乎很簡單
  • IDEA比Eclipse使用更多的系統資源。這其實也說得通--因為IDEA了解得更多
  • 最後,Eclipse是免費的,然而IDEA Community版本已經夠我用了

最後的建議

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

 

via:dzone.com ,OSChina原創編譯

相關焦點

  • IntelliJ IDEA 2019.3 發布,更好的性能和質量
    IntelliJ IDEA 2019.3 版本的更新內容包括有:更好的性能 更快的 IDE 啟動 總體上更好的 UI 響應能力,更少的 UI 和編輯器凍結 減少內存消耗,特別是在 Gradle 項目導入上現有功能質量的提升
  • IntelliJ IDEA 11.0.2 發布,性能可用性顯著提升
    修復了諸多可用性和異常方面的問題,主要包括: 性能:許可輸入對話框中的「Discover」按鈕執行EDT中的許可伺服器連接 可用性:「Optimize Imports」自動移除只用於元素值的XML命名空間聲明 可用性:「關聯文件類型」功能應可以自動檢測文件類型 可用性:在Flex調試器中,允許從Variables視圖中隱藏靜態欄位 可用性:IDEA更新補丁包不應該升級idea
  • IntelliJ IDEA VS Eclipse,哪個更好?
    作者:彭博 oschina.net/news/26929爭論有一些沒有唯一正確答案的「永恆」的問題,例如,更好的是
  • IntelliJ IDEA 2020 Mac 2020.3.1無限試用版(Java開發工具)
    您還可以享受JavaScript,HTML,CSS和其他語言和技術的簡單編輯器,如LESS,Sass,TypeScript,Node.js,CoffeeScript,PHP,Python/Django和RubyonRails體驗:mac.orsoon.com/Mac/163677.htmlintellij idea mac 破解版破解教程intellij idea
  • IntelliJ IDEA 2019.3 Beta 2 已經發布!
    公告:https://blog.jetbrains.com/idea/2019/11/intellij-idea-2019-3-beta-2-is-out
  • IntelliJ IDEA 2020.3 EAP6 發布:重新設計 Endpoints、URL 嵌入提示
    更好的 URL 完成。EAP6 引入更改,以使每個 URL 更加完整,其中包括: 代表用於創建 web 服務的框架的圖標 HTTP 方法 在其中聲明端點的類或文件的源位置 刪除已棄用的 URL。在「Search Everywhere」對話框和 Endpoints 工具窗口中,不推薦使用的 URL 也會被刪除 。
  • IntelliJ IDEA 2020.1 穩定版發布
    下載地址 https://www.jetbrains.com/idea/download,也可以使用 Toolbox App 進行更新。▲ 支持 Records以上提到的新功能在社區版中均可使用,詳細更新內容查看 https://www.jetbrains.com/idea/whatsnew/
  • IntelliJ IDEA 新插件,可以檢查注釋、文檔與 commit 語法
    2019.2.4 版本開始,Grazie 可用於 IntelliJ IDEA,詳情查看:https://blog.jetbrains.com/idea/2019/11/meet-grazie-the-ultimate-spelling-grammar-and-style-checker-for-intellij-idea
  • IntelliJ IDEA 2020.1 EAP4 發布,重命名/更改籤名新功能
    詳情查看更新說明:https://blog.jetbrains.com/idea/2020/02/intellij-idea-2020-1-eap4
  • 讓Idea比eclipse更加好用
    Idea的項目目錄我們創建的項目,在d:\ideawork目錄的demo下目錄是存儲編譯後的.class文件目錄是存儲我們編寫的.java源文件Idea默認的常用快捷快捷鍵這個功能非常有用,你可以根據這個,設置你要的快捷代碼,比如輸入if輸出if的完整語句等,如下:比如輸入if輸出if的完整語句等,如idea默認輸入if不會自動補全,缺少{},而你可以通過自定義模板配置一個叫if的模板, 模板的文字內容寫if語句的完整格式,$END$表示光標最後停留的位置,如下:自動導包
  • 寫Java,eclipse還是IDEA?教你怎麼選編譯器
    打開APP 寫Java,eclipse還是IDEA?教你怎麼選編譯器 酷愛小島 發表於 2020-07-01 15:36:51 寫Java,「eclipse」還是「IDEA」?
  • IntelliJ IDEA 2017.2 EAP 將至,新特性前瞻
    Java的更好的 Gradle UX:進度和環境變量當Gradle正在下載封裝分發文件時,IntelliJ IDEA將在「 控制臺」工具窗口和「 後臺任務」彈出窗口中顯示進度條更好的HiDPI支持:每個顯示器,自動調整的字體大小早些時候,在Windows和Linux上IntelliJ IDEA將根據全局設置(主顯示)擴展UI,這意味著所有顯示器都使用了一個比例因子。現在,在Windows上,每個顯示器都有自己的縮放因子(只要它是一個整數值),並支持Linux和分數值即將到來。
  • IntelliJ IDEA 卡成球了?
    萬行代碼( Java[1] 8 和 Groovy ),303個Gradle模塊 兩個微服務——約有10000——20000行代碼( Java 8 和 Groovy )的小項目,各有一個Gradle模塊 測試場景 在 Idea 中關閉所有項目 基於測試文件 idea.vmoptions
  • IntelliJ IDEA 調試技巧,比 Eclipse 強太多了!
    Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081注意:遠程調試從技術上講,就是在本機與遠程建立scoket通訊,所以埠不要衝突,而且本機要允許訪問遠程埠,另外這一段參數,放要在-jar 或 ${main_class}的前面4.2 idea
  • Java 開發工具 IntelliJ IDEA 2020.1 穩定版發布
    下載地址 https://www.jetbrains.com/idea/download,也可以使用 Toolbox App 進行更新。▲ 支持 Records以上提到的新功能在社區版中均可使用,詳細更新內容查看 https://www.jetbrains.com/idea/whatsnew/
  • 習慣使用eclipse,如何快速上手IDEA?
    1.前言首先下載ideaIU-2019.3.4.win.zip包激活,打開如下:2.修改IDEA為eclipse快捷鍵方式菜單File-》Settings中搜索keymap,設置eclipse快捷鍵操作設置快捷鍵為eclipse之後,就可以使用eclipse的快捷鍵在IDEA中操作了3.設置默認sdk(jdk
  • 開發屬於自己的第一款IDEA插件!
    所以這裡來學學如何編寫IDEA插件,讓自己的編程環境更加強大,更好的進行裝逼。下載IntelliJ IDEA Community Edition源碼社區版的安裝包裡是不包含源碼的,所以我們需要手動從github上clone一份:git clone --depth 1 git://git.jetbrains.org/idea/community.git idea
  • IntelliJ IDEA 2020.2 穩定版發布
    新版下載地址:https://www.jetbrains.com/idea/download/ 更好的 Stream API 方法自動補全:可以直接在集合或數組中輸入 Stream API 方法名,IDEA 會自動插入 'stream()'。 這適用於任何流操作。
  • IntelliJ IDEA 2017.3 首個 RC 版發布,帶來更好的可用性
    新功能和更好的可用性:設置背景圖片的功能已添加到常規設置中。現在有更簡單的方法來為你的 IDE 改變背景 —— 只需點擊 Background Image 按鈕進行設置即可。IntelliJ IDEA 2017.3 RC 下載地址:https://www.jetbrains.com/idea/nextversion/來自:https://blog.jetbrains.com/
  • IntelliJ idea 卡頓優化技巧 Windows
    idea 卡頓idea 經常出現卡頓,尤其是項目代碼量大,使用代碼提示時,那卡頓感覺尤其明顯。idea 本身就是java 開發工具,出現卡頓也屬於正常。對於idea這級別的軟體,卡頓的一般原因就是內存太低使用滿了,java 頻繁進行Full GC 。下面從兩個方面進行優化 jconsole 監控 full gc 頻率 調整內存設置。