最流行的工具並不必定是「最好的」,對於開發來講,什麼是最好的,取決於使用場景。然而,當選擇工具時,流行程度是不可忽視的一個重要因素,並非由於工具的流行增長了其價值,而是由於普遍使用的社區帶來了無價的資源和支持。
流行的工具更容易學習,由於會有不少人樂意幫助你。若是是開源的話,麻煩就更少了。由於有更多的人在審覈代碼和進行測試,能考慮到更多的狀況。
在不少狀況下,都會有一個對立的競爭對手,好比Apache和Nginx——兩個web服務器。Apache被使用的更多,可是頂尖的網站使用Nginx更多,也就是說,頂級工程師更加青睞Nginx——在不少狀況下,流行度多是區分工具最重要的一點。
這份列表包含了開發Java應用程序所須要的大部分工具。包括最流行的、次流行的,他們都有強大的社區支持。Java的初學者須要認識一下這些工具,熟悉生態系統。html
語言版本 前端
最流行的:Java 8
次流行的:Java 7
Java 8多是全部版本中被接受最快的。多是由於,Java 8帶來了期待已久的現代語言特性,例如lambda表達式,解決了長久以來Java飽受人們批評的冗長囉嗦的缺點。固然,性能也是一大方面。
雖然如今不少Java應用和主要的應用都是用Java 8寫的,但也有很大數量的Java應用依然使用Java 7或6。
我不會蹚Java EE和Spring這趟渾水,由於一談論這個,老是伴隨着不少爭吵,在用戶數量方面,彷佛至關。也有一些第三方開發者二者都用。
數據
java
RebelLabs Java Tools and Technologies Landscape Report 2016(figure 1.9, 1.10)web
DZone Guide to the Java Ecosystem, 2015 edition (graphs 1 & 2)數據庫
最流行的:Eclipse和IntelliJ IDEA(存在爭議)
次流行的:Netbeans
Eclipse和Netbeans都是免費、開源的。Eclipse以強大的社區和豐富的插件聞名(開發Eclipse插件很是方便),這讓Eclipse平臺的擴展性變得很強,可是這個IDE啓動比較慢。Netbeans經過整合了Maven和Git等讓本身變得不同凡響。IntelliJ以性能著稱,而且是一款商業產品。它有免費和付費兩種版本。
數據
編程
RebelLabs Java Tools and Technologies Landscape Report 2016 (IntelliJ IDEA was the top IDE in this report, figure 1.11)性能優化
DZone Guide to the Java Ecosystem, 2015 edition (Eclipse was the top IDE in this one, paragraph 4)服務器
Web Framework 架構
最流行的:AngularJS,SpringMVC
次流行的:Java Server Faces(JSF)
三個調查中的兩個都顯示Spring MVC的受歡迎度比Java Server Faces(JSF)高,DZone的調查顯示Spring MVC和JSF之間不分伯仲。隨着JavaScript框架在web方面的發展,也許這些都再也不重要了。有一個調查顯示,AngularJS相比與純Java框架,在前端方面更受歡迎。
數據
app
RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.16)
DZone Guide to the Java Ecosystem, 2015 edition (chart 3, paragraph 5 shows a tie)
最流行的:Tomcat
次流行的:Wildfly
很長時間以來,Tomcat都是最流行的Java應用服務器框架。它是一個輕量級框架,在一些其餘調查中,Jetty——另外一個輕量級應用框架——領先於Wildfly——最流行的Java EE支持的應用服務器。Tomcat在輕量Java應用方面無疑是霸主地位,是微型服務架構方面的最佳選擇。
數據
RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.13)
RebelLabs’ Great Application Server Debate 2013 (for a deeper dive into app server use cases)
單元測試
最流行的:JUnit
名副其實的最佳Java測試框架
模擬
最流行的:Mockito
最受歡迎的Java模擬測試框架。
自動化Web瀏覽測試
最流行的:Selenium
Selenium只是自動化瀏覽測試。開發者常用這個工具配合其餘的測試框架,來測試大型Web應用。
行爲驅動開發測試(BDD)測試
最流行的:Cucumber-JVM, Spock
Cucumber最開始只是一個Ruby項目,可是如今已經用各大主流編程語言實現了。Spock支持JVM驅動的語言Groovy,固然也支持Java。Mockito能作的事情它基本上都能作。
數據
版本控制系統
最流行的:Git
次流行的:Subversion
記住,使用Git比僅僅使用Github和簡單提交那樣更加靈活。如今來看,Git贏得了版本控制大戰的勝利,不少Subversion和CVS的用戶逐漸開始轉向Git。
數據
最流行的:Jenkins
次流行的:No CI server
在這方面也有一個明顯的巨頭。Jenkins靈活的插件系統,在過去的五年間逐漸控制了這個領域。其他Jenkins的競爭對手中,更多的人選擇No CI server。接下來是Bamboo。
數據
RebelLabs Java Tools and Technologies Landscape Report 2016(figure 1.13)
DZone Guide to the Java Ecosystem, 2015 edition (paragraph 4)
最流行的:OracleDB
次流行的:MySQL
在全部這些工具中,數據庫可謂是最取決於使用場景的。取決於你要建立的應用的不一樣,你可能須要一個輕量的鍵值對存儲數據庫,或者存儲不少列的數據庫。對於大多數的應用來講,通常的數據庫就能知足需求,這就是爲何這兩種數據庫能夠排名前列的緣由。
Oracle是這篇文章中爲數很少的商業軟件,這意味着,它有不少「企業級」特性。若是你偏心開源軟件的話,強烈推薦MySQL和SQLite。
數據
RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.14, this is the only Java-specific one)
最流行的:The Java Persistence API (JPA) / Hibernate
次流行的:The Java Database Connectivity API (JDBC)
Hibernate太流行了,多年前就在Java Persistence API成了標準。
數據
DZone Guide to the Java Ecosystem, 2015 edition (paragraph 4)
RebelLabs Java Tools and Technologies Landscape Report 2014 (page 31)
最流行的:FindBugs
次流行的:SonarQube
這兩個工具很是不一樣,因此很難比較。FindBug是一個簡單的靜態代碼分析工具,SonarQube是一個全平臺的代碼質量分析、語法檢查、代碼度量的工具。
數據
語法檢查
最流行的:Check
次流行的:Eclipse
大型的Java IDE都有這個功能,可是若是你須要特定的程序專門進行類型檢查,Check 是一個不錯的選擇。
數據
人工倉庫管理
最流行的:Sonatype Nexus
次流行的:JFrog Artifactory
不少開發者並不使用人工倉庫管理JARs,WARs,庫和應用。可是若是想這麼作的話,Nexus是最好的選擇。二者都是商業軟件,Apache Archiva是一個開源的選擇。
數據
最流行的:Spring Framework DI
次流行的:Google Guice
Spring framework在控制反轉方面作的很不錯,可是Google的開發者也作了一個不錯的工具。Dagger在這方面的用戶並不不少,可是正在逐漸流行起來,尤爲是安卓開發方面。Pokémon Go使用的也是它。
數據
Java性能總覽
最流行的:VisualVM
次流行的:No profiler
有至關一部分的開發者並不使用性能分析工具(也許他們有專業的性能優化團隊來作)。YourKit也是替代VisualVM的一個不錯選擇。
載入測試
最流行的:JMeter
次流行的:LoadRunner
除了這兩款工具以外,還有不少作載入性能測試的工具,因此在使用以前,最好作好充分的市場調研。JMeter是開源軟件,LoadRunner是商業軟件。商業軟件的好處是服務普遍,能夠在雲端運行測試。
數據
最流行的:Maven
次流行的:Gradle
Maven無疑佔據了領導地位,可是Gradle的使用也很普遍,它仍是安卓的標準編譯工具。
數據
RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.12)
DZone Guide to the Java Ecosystem, 2015 edition (chart 4)
最流行的:Log4j
次流行的日誌庫尚不明確,這方面的調查比較少。這篇文章的內容場景圍繞流行的日誌庫和Java中的設置展開。