三大高手,哪個JAVA編程IDE最適合你?

Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。Java 技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計(jì)算機(jī)、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。

給你java學(xué)習(xí)路線:html-css-js-jq-javase-數(shù)據(jù)庫-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm

每個Java開發(fā)人員都需要一個代碼編輯器或IDE,可以幫助我們在編寫Java、使用類庫和框架的時候處理一些復(fù)雜、麻煩的場景,最常見的就是糾錯。哪個編輯器或IDE最適合你,取決于幾件事情:項(xiàng)目的性質(zhì),你在組織中的角色,團(tuán)隊(duì)使用什么開發(fā)過程,程序員的水平和技能。 另外考慮的是團(tuán)隊(duì)是否對工具進(jìn)行了標(biāo)準(zhǔn)化,以及個人喜好。

最常用于服務(wù)器端Java開發(fā)的三個IDE是IntelliJ IDEA,Eclipse和NetBeans。 然而,這些并不是唯一的選擇,也是時候也可以考慮一些輕量級的IDE。

下面通過在MacBook Pro上,對幾個開源項(xiàng)目使用IntelliJ IDEA Ultimate 2016.2,Eclipse Neon Java EE和NetBeans 8.1 Java EE對比一下三種IDE。

基本問題:你需要Java IDE幫你做什么事情

首先,你可能需要IDE支持JAVA 8,Scala,Groovy,其他JVM語言。還需要支持主要的應(yīng)用服務(wù)器和最流行的Web框架,包括Spring MVC,JSF,Struts,GWT,Play,Wicket,Grails和Vaadin。IDE應(yīng)與開發(fā)團(tuán)隊(duì)使用的任何構(gòu)建和版本控制系統(tǒng)兼容,例如Ant,Maven和/或Gradle,以及Git,SVN,CVS,Mercurial或Bazaar。

更多一點(diǎn)的要求,包括能處理客戶端和數(shù)據(jù)庫層,支持嵌入式JavaScript,TypeScript,HTML,SQL,JavaServer Pages,Hibernate和Java Persistence API。

最后,Java IDE應(yīng)該可以讓你輕松編輯,構(gòu)建,調(diào)試和測試系統(tǒng)。理想情況下,不僅可以完成智能代碼,還可以重構(gòu)和做代碼質(zhì)量檢測。如果你采用了測試驅(qū)動的開發(fā)模式,IDE還需要支持你的測試框架。如果你的團(tuán)隊(duì)使用CI或BUG跟蹤系統(tǒng),則IDE最好連接到它們。如果你需要部署到容器和云上并進(jìn)行調(diào)試,則IDE應(yīng)該對此提供幫助。

IntelliJ IDEA

IntelliJ IDEA是首屈一指的Java IDE,兩個版本:免費(fèi)的社區(qū)版和付費(fèi)的終極版。

社區(qū)版可用于JVM和Android開發(fā)。支持Java,Kotlin,Groovy,Scala;Android;Maven,Gradle,SBT; Git,SVN,Mercurial和CVS。終極版用于Web和企業(yè)開發(fā)的除了Git,SVN,Mercurial和CVS之外,還支持Perforce,ClearCase和TFS;JavaScript和TypeScript;Java EE,Spring,GWT,Vaadin,Play,Grails等框架; 還有數(shù)據(jù)庫工具。

商業(yè)的終極版通過提高程序員的生產(chǎn)力來獲得收益。對于學(xué)生,老師和開放源代碼開發(fā)者而言都是免費(fèi)的。

IntelliJ IDEA深入了解你的代碼,開發(fā)人員的人體工程學(xué),有內(nèi)置的開發(fā)人員工具,通曉數(shù)種語言的編程經(jīng)驗(yàn)。

小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零,五五四,六零七 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

IntelliJ IDEA用類似lint的方式對Java代碼做了靜態(tài)分析,顯示了一些警告和建議。 可以通過點(diǎn)擊它們展開這些,如下所示。在許多情況下,還可以獲得如何快速修復(fù)操作的選擇列表。

深入分析代碼

Java編輯器通常都會給出語法著色和簡單的代碼完成提示。除此之外,IDEA還能提供“智能完成”,這意味著它可以彈出在當(dāng)前上下文中的最可能的相關(guān)符號或操作列表,并且按你的個人使用頻率排列。更智能的是“鏈?zhǔn)酵瓿伞保@示的是適合當(dāng)前上下文的方法或getter列表。IDEA還能幫助完成靜態(tài)成員或常量,import語句的導(dǎo)入。

Java代碼經(jīng)常以字符串的形式,把其他語言包括在代碼中。IDEA可以將SQL,XPath,HTML,CSS或JavaScript代碼的片段注入Java字符串文字。重構(gòu)的時候,IDEA也能充分考慮到這些表示其他語言的字符串。比如,如果在JPA語句中重命名一個類,IDEA也能更新相應(yīng)的實(shí)體類和JPA表達(dá)式。

當(dāng)重構(gòu)一段代碼時,如果我們在其他地方也有這段代碼的拷貝的話,通常我們也需要對這些拷貝進(jìn)行重構(gòu)。 IDEA Ultimate(終極版)可以檢測重復(fù)和類似的片段,并一次性將同樣的的重構(gòu)應(yīng)用于這些拷貝。

IntelliJ IDEA在讀取代碼以及你輸入代碼的時候,就在分析這些代碼。它提供了一些指示來指出可能的問題。如果需要的話,也會列出快速修復(fù)這些問題的建議列表。

開發(fā)人員人體工程學(xué)

IntelliJ設(shè)計(jì)IDEA的時候,充分考慮了開發(fā)人員的工作流程中很重要的一點(diǎn),也就是“在區(qū)域中”。上圖所示的項(xiàng)目工具窗口通過簡單的鼠標(biāo)點(diǎn)擊就會從視圖中消失,你可以專注于代碼編輯器。編輯時要做的一切都具有鍵盤快捷鍵,包括在彈出窗口中顯示一些符號定義。學(xué)習(xí)捷徑確實(shí)需要時間和實(shí)踐當(dāng)然不知道快捷方式,開發(fā)人員也可以輕松快速地學(xué)習(xí)使用IDEA。

IDEA的調(diào)試器設(shè)計(jì)非常友好。變量值在編輯窗口的右邊展示,靠近相對應(yīng)的代碼。當(dāng)時某個變量狀態(tài)改變的時候,會高亮顯示。

IDEA還集成了構(gòu)建工具,單元測試的運(yùn)行和覆蓋率檢查工具,以及內(nèi)置的終端窗口。IntelliJ沒有自己的性能分析工具,但它通過插件來支持。這些包括由前IntelliJ主要開發(fā)人員創(chuàng)建的YourKit和VisualVM。IntelliJ IDEA為大多數(shù)的版本控制系統(tǒng)提供了接口,包括Git,SVN,Mercurial,CVS,Perforce和TFS。你可以在IDE中管理所有的代碼變化。IntelliJ IDEA還有個插件,可以把源代碼塊中的最后一次更改將作為注釋顯示在編輯器窗口中。

IntelliJ IDEA支持所有主流的JVM應(yīng)用服務(wù)器,并且可以在服務(wù)器中進(jìn)行部署和調(diào)試,為Enterprise Java開發(fā)人員解決一個痛點(diǎn)。IDEA通過添加Docker工具窗口的插件來支持Docker。

多語言編程

IDEA已經(jīng)擴(kuò)展了針對Spring,Java EE,Grails,Play,Android,GWT,Vaadin,Thymeleaf,Android,React,AngularJS等框架的編碼協(xié)助。并非所有這些都是Java框架。除Java之外,IDEA也能理解許多其他語言,包括Groovy,Kotlin,Scala,JavaScript,TypeScript和SQL。如果您需要更多的話,目前有大約19種IntelliJ語言插件,包括R,Elm和D的插件。

Eclipse

Eclipse是最流行的Java IDE,免費(fèi)且開源。主要用Java編寫,但同時它的插件架構(gòu)允許Eclipse以其他語言進(jìn)行擴(kuò)展。Eclipse起源于2001年,是一個IBM項(xiàng)目,目的是開發(fā)一個可移植的基于Java的IDE來替代基于Smalltalk的IBM Visual Age系列IDE。該項(xiàng)目的重要目標(biāo)是針對Microsoft,要打敗微軟在工具市場上的領(lǐng)導(dǎo)地位,引領(lǐng)大家到Java開發(fā)上來,因此要做的事情是要吞噬微軟的市場,這就叫“Eclipse”。在中文里面,eclipse作名詞用就是“月蝕”,“日蝕”的意思。做動詞講,就是“使黯然失色”,“蒙蔽”的意思。

Java的可移植性幫助Eclipse成功實(shí)現(xiàn)跨平臺,Eclipse可以運(yùn)行在Linux,Mac OS X,Solaris,Windows等。Java標(biāo)準(zhǔn)窗口小部件工具包(SWT)部分負(fù)責(zé)了Eclipse的外觀UI。同樣地,Eclipse也是它的性能依賴于JVM。早年因?yàn)橛布牡托阅芎蚃VM低版本,Eclipse有運(yùn)行慢的名聲。但即使在今天,還是可以感覺到慢,特別是當(dāng)裝了許多插件再進(jìn)行更新的時候。

Eclipse中的一部分開銷是因?yàn)閮?nèi)置的增量編譯器。每當(dāng)它加載一個文件,并且每當(dāng)你更新你的代碼,它就會運(yùn)行。其實(shí)總的來看,這是一個很好的事情,因?yàn)榈阍谳斎氪a的時候可以及時提供錯誤提示。

一個Eclipse Java項(xiàng)目在獨(dú)立于構(gòu)建系統(tǒng)之外,維護(hù)著項(xiàng)目的內(nèi)容模型。這個模型包含有關(guān)Java的類層次結(jié)構(gòu),引用和聲明的信息。通過這個模型可以支持多個編輯和導(dǎo)航助手以及大綱視圖。

Eclipse安裝的時候,通常需要安裝很多其他的包。包括一個最小化的Eclipse SDK和必要的插件。安裝插件的時候很容易就會引入沖突,特別是新人。

從左到右,我們在Eclipse工作臺中看到了四個窗格:Package Explorer、Java編輯器、Java類大綱和問題列表。這個圖中加載到Eclipse中的項(xiàng)目是JUnit測試框架。窗格可以很容易地重新排列。

編輯、瀏覽、重構(gòu)、調(diào)試

第一次使用Eclipse的人可能會感到困惑。你的第一個任務(wù)是適應(yīng)Eclipse的工作空間、透視圖和視圖的概念體系,這些概念又跟你安裝的插件有關(guān)。比如Java服務(wù)器開發(fā),你可能使用Java,Java EE,瀏覽視圖;package explorer視圖;調(diào)試透視圖;團(tuán)隊(duì)同步視角;Web工具;數(shù)據(jù)庫開發(fā)視圖;數(shù)據(jù)庫調(diào)試視圖。

插件生態(tài)系統(tǒng)是Eclipse的優(yōu)勢之一,也是有時候造成問題的原因之一。Eclipse市場中目前包含1700多個解決方案,提供了數(shù)以千計(jì)的插件。這些插件可能會,也可能不會像期望的那樣工作(因?yàn)楸舜说臎_突)。盡管如此,Eclipse插件仍然支持超過100種編程語言和近200個應(yīng)用程序開發(fā)框架。大多數(shù)主流的Java服務(wù)器也支持;如果你在Eclipse定義一個新服務(wù)器連接,你會看到一個供應(yīng)商列表。下面你會發(fā)現(xiàn)大約30個應(yīng)用服務(wù)器,包括9個版本的Apache Tomcat。商業(yè)公司傾向于把他們的產(chǎn)品在一起。例如在Red Hat JBoss中間件下面只有一個條目,包括WildFly,EAP服務(wù)器工具以及JBoss。

在Eclipse中,通常有不止一種方法來完成一個任務(wù)。例如,你可以使用package explorer或Java瀏覽視圖來瀏覽代碼。選擇哪個方式取決于你自己的體驗(yàn)感受。

Java搜索支持查找Java包、類型、方法、字段。您還可以使用快速訪問搜索,并使用快速視圖來彈出類大綱之類的內(nèi)容。

添加方法和生成類都有錯誤注釋和內(nèi)容輔助支持(其實(shí)其他兩個IDE也支持)。可以從代碼模板生成常見的代碼模式,而Eclipse可以自動生成和組織import語句。在Eclipse中,重構(gòu)支持23個操作,從常見的重命名操作到更晦澀的轉(zhuǎn)換,從Martin Fowler的書中可以得到。重構(gòu)不僅可以交互式地執(zhí)行,還可以從重構(gòu)腳本中進(jìn)行。

Eclipse支持本地和遠(yuǎn)程調(diào)試(其實(shí)其他兩個IDE也支持),假設(shè)您使用的是支持遠(yuǎn)程調(diào)試的JVM。調(diào)試的過程是標(biāo)準(zhǔn)的方式:設(shè)置斷點(diǎn),然后在調(diào)試視圖的一個選項(xiàng)卡中查看變量。

Eclipse提供了豐富的幫助和文檔。但經(jīng)常會發(fā)現(xiàn),文檔中的圖片可能并不匹配當(dāng)前的版本,或者快捷鍵跟幫助中說的不太一樣。這可能是開源項(xiàng)目的常見問題:文檔會延遲幾個月甚至幾年才更新。Eclipse的生態(tài)系統(tǒng)非常龐大,所以在文檔及時性上問題不小。

NetBeans

NetBeans的履歷挺完整的。最早是一個大學(xué)生項(xiàng)目,于1996年在布拉格誕生。在1997年成為一個商業(yè)產(chǎn)品,在1999年被Sun收購,然后在2000年開源。運(yùn)行在Windows、Mac OS X、Linux和Solaris上。還有一個可移植的子集,可在支持Java的其他系統(tǒng)上運(yùn)行。它的Java EE發(fā)行版本包含JavaScript和HTML支持、GlassFish和Tomcat,不支持PHP,C / C++ / Fortran,Groovy。在“All”下載包中有Grails。NetBeans也有插件,比Eclipse少,但是不像Eclipse的插件,NetBeans的插件不太可能相互干擾。

Oracle仍然在管理和貢獻(xiàn)NetBeans開放源碼項(xiàng)目,Oracle認(rèn)為NetBeans是Java 8的官方IDE。(但是who care? )

NetBeans確實(shí)對Java 8有很好的支持,并且可以將舊代碼轉(zhuǎn)換為基于Java 8。它的編輯器、代碼分析器和轉(zhuǎn)換器可以幫助您升級您的應(yīng)用程序,使用新的Java 8語言結(jié)構(gòu),如lambda、函數(shù)操作和方法引用。NetBeans 8中的JavaScript插件改進(jìn)了對Node.js,以及一些新的JavaScript工具的支持,如Gulp和Mocha,還改進(jìn)了對JavaScript Nashorn引擎的支持。

小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零,五五四,六零七 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

這是NetBeans基于Maven的項(xiàng)目,與IntelliJ IDEA在圖里打開的是同一個項(xiàng)目。請注意上下文菜單和它的重構(gòu)子菜單中的功能。

“檢查與變換”工具使你能夠在代碼庫中運(yùn)行檢查,同時自動修復(fù)代碼。但你最好在執(zhí)行自動修復(fù)之前,確保已經(jīng)檢查了所有代碼,并成功運(yùn)行所有的單元測試。被自動“修復(fù)”可能會導(dǎo)致代碼被還原或修復(fù)成你可能不期望的結(jié)果。

構(gòu)建、調(diào)試、調(diào)優(yōu)

NetBeans對Maven和Ant有很好的內(nèi)置支持,還有一個Gradle的插件。已有的Maven項(xiàng)目現(xiàn)在被視為“本地”項(xiàng)目,這意味著只需打開它們,而不是導(dǎo)入它們。NetBeans還包含一個Maven依賴關(guān)系的性感(有用的)圖形視圖。

能感知語言的NetBeans編輯器在你輸入代碼的時候會檢查錯誤,并通過彈出窗口的文檔和智能的代碼輔助完成功能來幫助你。NetBeans在做檢查和給予提示的時候比Eclipse的停頓更少,比IntelliJ IDEA稍微多一些。NetBeans還提供全面的重構(gòu)工具,以允許你重建代碼而不會中斷代碼;執(zhí)行源代碼分析;并提供豐富的提示,以幫助你快速修復(fù)或增強(qiáng)代碼。 NetBeans包含一個用于Swing GUI的設(shè)計(jì)工具,以前稱為“Project Matisse”。

比較三大JAVA IDE

多年來,我個人依次使用了Eclipse、NetBeans和IntelliJ。每次換了IDE并熟悉之后,我都覺得我已經(jīng)提高了工作效率。甚至有一次,我以為我已經(jīng)堅(jiān)定地轉(zhuǎn)向IntelliJ。然而,有時我不得不返回另一個Java IDE。比如Eclipse曾經(jīng)是唯一支持Android的IDE開發(fā)。(目前官方Android IDE,Android Studio是基于IntelliJ IDEA。)

我有一些全職的Java程序員朋友,他們都聲稱使用了這三大IDE中的每一個。IntelliJ IDEA的用戶特別忠誠,就像忠誠于Visual Studio的 c++和c#程序員那樣。他們聲稱只需要幾周時間,生產(chǎn)率增長節(jié)約的成本就足夠支付一年的授權(quán)費(fèi)用了。NetBeans和Eclipse用戶對他們的選擇也是非常忠誠的,他們中的一部分人想不明白為什么有人會愿意為IntelliJ付費(fèi)。所以,程序員其實(shí)是很固執(zhí)的。

推薦JAVA新人不要用Eclipse,盡管它是最受歡迎的JAVA IDE,卻有最陡峭的學(xué)習(xí)曲線。在日常使用和維護(hù)IDE隨時都有可能出現(xiàn)一些混亂或困擾。許多透視圖和視圖提供了各種各樣的功能,但是從一個角度切換到另一個視角可能會讓你感到不適應(yīng),干擾你的思路。有些從Eclipse轉(zhuǎn)IntelliJ的人宣稱IntelliJ沒有Eclipse用起來好用,其實(shí)只是操作習(xí)慣不同帶來的不適而已,特別是快捷鍵。

Eclipse擁有所有IDE中最大的插件生態(tài)系統(tǒng)。但是很容易因?yàn)榘惭b了一組不兼容的插件,變得不可用。有時候不得不刪除Eclipse,用一個正式的發(fā)行包重新開始。

NetBeans對大多數(shù)人來說都很好,并且有一個很好的性能分析工具。我有時候會使用它,但我還是更喜歡IntelliJ IDEA終極版。

如果是沒有錢的屌絲,建議在NetBeans和IntelliJ IDEA社區(qū)版之間選擇。如果你編寫Java服務(wù)器代碼很少或根本沒有錢,NetBeans會是更好的選擇。如果你是學(xué)生或開源項(xiàng)目開發(fā)人員,你就有權(quán)免費(fèi)或以一個折扣價使用IntelliJ IDEA終極版。

輕量級的JAVA IDE

當(dāng)大多數(shù)人選擇IntelliJ,NetBeans或Eclipse,仍然存在一些情況下,你可能希望一個輕量級的IDE,甚至一個編輯器如Sublime Text、emacs或有Java支持的vim 。

假設(shè)需要一個輕量級IDE,可以考慮以下這些:

DrJava是一個免費(fèi)的輕量級開發(fā)環(huán)境,用于編寫Java程序。Rice大學(xué)專門為學(xué)生設(shè)計(jì)的,目前已有超過200萬次下載。 DrJava旨在促進(jìn)測試驅(qū)動的軟件開發(fā)。它包括智能的程序編輯器,用于評估程序的交互面板,源碼調(diào)試器和單元測試工具。

BlueJ是為肯特大學(xué)(the University of Kent)為初學(xué)者設(shè)計(jì)的免費(fèi)Java開發(fā)環(huán)境。 它由Oracle支持。 BlueJ具有比NetBeans或Eclipse等專業(yè)環(huán)境更小更簡單的界面,還有一本關(guān)于使用BlueJ學(xué)習(xí)OOP的大學(xué)教科書。

JCreator是Windows平臺的輕量級Java IDE,出于性能考慮以C++編寫。付費(fèi)的Pro版本有一個調(diào)試器,Ant支持和代碼向?qū)? 免費(fèi)的LE版本沒有。

小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零,五五四,六零七 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

Eclipse Che是一個基于瀏覽器和云的IDE以及程序員工作服務(wù)器。Che支持Java與C ++,JavaScript,Python,PHP,Ruby和SQL。

基于項(xiàng)目的選擇Java IDE的建議

上面已經(jīng)描述了三大Java IDE的顯著特征,并提供了一些輕量級的替代方案。可以需要根據(jù)你個人開發(fā)需求和資源來衡量這些信息,以決定哪個IDE最適合。除了個人考慮之外,還有基于項(xiàng)目的考慮。在許多情況下,使用與開發(fā)團(tuán)隊(duì)其他部分相同的IDE比較好。但這也并不是一定必要的。我自己的團(tuán)隊(duì)就同時使用Eclipse和IntelliJ IDEA。可以通過一些插件來 保證統(tǒng)一的編碼風(fēng)格等問題。使用前者的人就是上文中說的那種“想不明白為什么有人會愿意為IntelliJ付費(fèi)” 的人。

如果項(xiàng)目托管在GitHub,那么直接集成了GitHub的IDE能讓你的生活更美好一點(diǎn)。另外IDE對構(gòu)建系統(tǒng)的支持也是類似。當(dāng)然三大IDE對Ant, Maven, and Gradle對此支持都很好。

對開發(fā)框架的支持也是要考慮的一個因素。例如,IDE知道JPA語句與實(shí)體類和JPA表達(dá)式(比如IntelliJ),那么你可能會花更少的時間在你JPA相關(guān)的代碼。

與BUG跟蹤系統(tǒng)的集成也是一個因素。你可以通過使用web客戶端來訪問JIRA,但是如果可以直接從IDE查看,會更爽。

結(jié)論

很多人會認(rèn)為IntelliJ IDEA是Java ide中的凱迪拉克。雖然它不是像Eclipse或NetBeans那樣的免費(fèi),但我相信提高生產(chǎn)率的代價是值得的。對于剛剛起步的開發(fā)人員,或者那些不愿意付費(fèi)的開發(fā)人員,我推薦NetBeans在Eclipse之上。盡管Eclipse的插件生態(tài)系統(tǒng)曾經(jīng)讓它成為開發(fā)人員的首選,但是現(xiàn)在它已經(jīng)變得笨拙,并且維護(hù)得很差。

輕量級的替代方案中包括兩個為學(xué)生設(shè)計(jì)的方案。這些都是值得嘗試的,如果你只是學(xué)習(xí)Java,如果你發(fā)現(xiàn)功能齊全的ide具有壓倒性優(yōu)勢。如果你只是喜歡輕量級的開發(fā)環(huán)境,那么上面說到的幾個都可以考慮。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容