盤點當下最流行的 Java 工具

最流行的工具並不一定是“最好的”,對於開發來說,什麼是最好的,取決於使用場景。然而,當選擇工具時,流行程度是不可忽視的一個重要因素,並不是因為工具的流行增加了其價值,而是因為廣泛使用的社區帶來了無價的資源和支持。

流行的工具更容易學習,因為會有很多人樂意幫助你。如果是開源的話,麻煩就更少了。因為有更多的人在審核代碼和進行測試,能考慮到更多的情況。

在很多情況下,都會有一個對立的競爭對手,比如Apache和Nginx——兩個web服務器。Apache被使用的更多,但是頂尖的網站使用Nginx更多,也就是說,頂級工程師更加青睞Nginx——在很多情況下,流行度可能是區分工具最重要的一點。

這份列表包含了開發Java應用程序所需要的大部分工具。包括最流行的、次流行的,他們都有強大的社區支持。Java的初學者需要認識一下這些工具,熟悉生態系統。

語言版本

最流行的:Java 8

次流行的:Java 7

Java 8可能是所有版本中被接受最快的。可能是因為,Java 8帶來了期待已久的現代語言特性,例如lambda表達式,解決了長久以來Java飽受人們批評的冗長囉嗦的缺點。當然,性能也是一大方面。

雖然現在很多Java應用和主要的應用都是用Java 8寫的,但也有很大數量的Java應用依然使用Java 7或6。

我不會蹚Java EE和Spring這趟渾水,因為一談論這個,總是伴隨著很多爭吵,在用戶數量方面,似乎相當。也有一些第三方開發者兩者都用。

數據

  • RebelLabs Java Tools and Technologies Landscape Report 2016(figure 1.9, 1.10)
  • 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框架,在前端方面更受歡迎。

數據

  • 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)
  • JSF and Spring MVC Tie in Java / JVM Frameworks Poll

應用服務器

最流行的:Tomcat

次流行的:Wildfly

很長時間以來,Tomcat都是最流行的Java應用服務器框架。它是一個輕量級框架,在一些其他調查中,Jetty——另一個輕量級應用框架——領先於Wildfly——最流行的Java EE支持的應用服務器。Tomcat在輕量Java應用方面無疑是霸主地位,是微型服務架構方面的最佳選擇。

數據

  • RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.13)
  • DZone Guide to the Java Ecosystem, 2015 edition(chart 4)
  • 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能做的事情它基本上都能做。

數據

  • RebelLabs Java Tools and Technologies Landscape Report 2014
  • DZone Guide to Continuous Delivery, 2015 edition (page 20)

版本控制系統

最流行的:Git

次流行的:Subversion

記住,使用Git比僅僅使用Github和簡單提交那樣更加靈活。現在來看,Git贏得了版本控制大戰的勝利,很多Subversion和CVS的用戶逐漸開始轉向Git。

數據

  • RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.18)

持續集成

最流行的:Jenkins

次流行的:No CI server

在這方面也有一個明顯的巨頭。Jenkins靈活的插件系統,在過去的五年間逐漸控制了這個領域。其餘Jenkins的競爭對手中,更多的人選擇No CI server。接下來是Bamboo。

數據

  • RebelLabs Java Tools and Technologies Landscape Report 2016(figure 1.13)
  • DZone Guide to Continuous Delivery, 2015 edition (page 20)
  • DZone Guide to the Java Ecosystem, 2015 edition (paragraph 4)

數據庫

最流行的:OracleDB

次流行的:MySQL

在所有這些工具中,數據庫可謂是最取決於使用場景的。取決於你要創建的應用的不同,你可能需要一個輕量的鍵值對存儲數據庫,或者存儲很多列的數據庫。對於大多數的應用來說,一般的數據庫就能滿足需求,這就是為什麼這兩種數據庫可以排名前列的原因。

Oracle是這篇文章中為數不多的商業軟件,這意味著,它有很多“企業級”特性。如果你偏愛開源軟件的話,強烈推薦MySQL和SQLite。

數據

  • DB-Engines Database Rankings
  • DZone Guide to Databases 2016
  • 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是一個全平臺的代碼質量分析、語法檢查、代碼度量的工具。

數據

  • DZone Guide to Continuous Delivery, 2015 edition (page 20)
  • RebelLabs Java Tools and Technologies Landscape Report 2014 (page 2)

語法檢查

最流行的:Checkstyle

次流行的:Eclipse

大型的Java IDE都有這個功能,但是如果你需要特定的程序專門進行類型檢查,Checkstyle是一個不錯的選擇。

數據

  • DZone Guide to Continuous Delivery, 2015 edition(page 20)

人工倉庫管理

最流行的:Sonatype Nexus

次流行的:JFrog Artifactory

很多開發者並不使用人工倉庫管理JARs,WARs,庫和應用。但是如果想這麼做的話,Nexus是最好的選擇。兩者都是商業軟件,Apache Archiva是一個開源的選擇。

數據

  • RebelLabs Java Tools and Technologies Landscape Report 2014 (page 45)

控制反轉

最流行的:Spring Framework DI

次流行的:Google Guice

Spring framework在控制反轉方面做的很不錯,但是Google的開發者也做了一個不錯的工具。Dagger在這方面的用戶並不很多,但是正在逐漸流行起來,尤其是安卓開發方面。Pokémon Go使用的也是它。

數據

  • Poll of reddit.com/r/java

性能分析

Java性能總覽

最流行的:VisualVM

次流行的:No profiler

有相當一部分的開發者並不使用性能分析工具(也許他們有專業的性能優化團隊來做)。YourKit也是替代VisualVM的一個不錯選擇。

負載測試

最流行的:JMeter

次流行的:LoadRunner

除了這兩款工具之外,還有很多做負載性能測試的工具,所以在使用之前,最好做好充分的市場調研。JMeter是開源軟件,LoadRunner是商業軟件。商業軟件的好處是服務廣泛,可以在雲端運行測試。

數據

  • RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.19)
  • DZone Guide to Continuous Delivery, 2015 edition (page 20)

編譯自動化和依賴管理

最流行的: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中的設置展開。


分享到:


相關文章: