天天看點

各個開發階段最流行的Java工具彙總

                                    各個開發階段最流行的Java工具彙總

僅僅因為工具是最流行的并不意味着它是“最好的”。最好的總是和具體的程式設計内容相關。不過,人氣,不可否認是選擇同類工具時的重要名額。這并不是說流行本身會增加工具的價值;價值在于資源和來自于社群的支援。

流行的工具更易于學習,因為有如此多的人可以幫助你使用它們。并且流行的開源工具,往往bug較少,因為有更多的目光都集中在代碼上,有更多的人在大範圍的場景中測試它。

是以,雖然總有像Apache和Nginx這樣的對位工具——兩web伺服器:Apache被更多的網站使用,但Nginx更多的是被web上的頂級站點使用,這意味着它被一些最好的工程團隊所使用——在很多情況下,知名度可以成為工具之間的關鍵差別。

名單涵蓋了絕大多數你在開發Java應用程式時所需工具的重要内容。裡面有最流行的工具“冠軍”,涵蓋了各個類别,此外還有來自于大型Java社群調查證明其地位的在一些背景和引文下稍遜一籌的“亞軍”工具。Java初學者應該看一看所有這些頂級工具以便于更了解這個生态系統。

語言版本

冠軍:Java 8

亞軍:Java 7

Java 8有可能是迄今為止最快被采用的新版本了。這可能是因為一些期待已久的現代語言功能如lambda表達式,減少了一些Java經常被批評的冗長程度。性能的提升也是很大的一個賣點。

雖然現在新的Java app和主要的app是用Java 8寫的,但是還有大量現有的Java app仍然使用的是Java 7或6。

我不會趟進Java EE與Spring之間的競争,因為相關的統計資料總是存在争議,但是兩者在使用者數量上似乎相當接近。大約三分之一的開發人員在使用其中之一的同時還是用了另外一個。

編輯器和IDE

冠軍:(存在争議)Eclipse和IntelliJ IDEA

亞軍:Netbeans

Eclipse和Netbeans都是免費和開源的。Eclipse因其大型的社群和插件(很容易寫)的富有而聞名,這使得該平台可無休止地擴充,但有時會加載緩慢和繁瑣。Netbeans因包括如Maven和Git的整合開箱即用而顯得與衆不同。IntelliJ具有商業産品的性能和完美。它有免費和付費兩種版本。

web架構

冠軍:AngularJS,Spring MVC

亞軍:Java Server Faces(JSF)

雖然三分之二的調查顯示了Spring MVC優于Java Server Faces(JSF),但是來自于DZone大型投票(圖5)顯示Spring MVC和JSF之間的打成了平手。這可能已經沒有多大關系了,因為JavaScript架構在許多流行的web堆棧中變得越來越有價值。一項問及AngularJS與純Java Web架構使用率比較的調查顯示,在前端上,AngularJS優于最流行的Java架構。

應用伺服器

冠軍:Tomcat

亞軍:Wildfly

Tomcat已經很多年擔任最常用Java應用伺服器的稱号了。它輕巧,不會嘗試實作所有的Java EE規範。在一些調查中,Jetty,另一個輕量級的應用伺服器,領先于Wildfly——頂部Java EE——支援的應用程式伺服器。Tomcat是簡單Java應用的上司者,而輕量級的應用伺服器毫無疑問是微服務架構的首選。

測試架構

單元測試

冠軍:JUnit

實際上的Java單元測試架構。

Mocking

冠軍:Mockito

顯然是Java mocking架構中的最愛。

自動化web浏覽器測試

冠軍:Selenium

Selenium不過是自動化了浏覽器。開發人員通常與測試架構一起使用這個工具來做大規模的web應用程式測試。

行為驅動開發測試(BDD)

冠軍:Cucumber-JVM,Spock

Cucumber原本是一個Ruby項目,但現在具有針對每一種主要程式設計語言的實作。Spock支援JVM語言Groovy和Java。它還可以處理很多Mockito能做的事情。

版本控制系統

冠軍:Git

亞軍:Subversion

請記住,Git比隻用GitHub及其約定的版本控制更靈活。Git似乎已經幾乎打赢了版本控制的戰役,大多數的Subversion和CVS使用者被開發人員抓進了一套遺留的工具中。

持續內建

冠軍:Jenkins

亞軍:No CI server

這是另一個有着明确上司者的領域。Jenkins的靈活的插件系統,導緻其在過去的五年時間裡,逐漸上升到主導地位。不使用任何CI server的人比使用任意單一Jenkins競争者的人要多。最接近的競争者是Bamboo。

資料庫

冠軍:OracleDB

亞軍:MySQL

選擇資料庫相比這裡的許多其他工具,更依賴于上下文。根據你要建構的app,你可能需要一個輕巧的key-value存儲,以及一個巨大的列式資料庫。對于大多數應用程式,關系資料庫可以把這工作做好,這就是為什麼你會看到兩個關系型資料庫站到Java工具世界之巅的原因。

Oracle是這篇文章中提到的少數商業産品之一,這意味着它有很多的“企業”特點。 MySQL或甚至SQLite是開源的強大選擇。

對象關系映射(ORM)

冠軍:Java Persistence API(JPA)/Hibernate

亞軍:Java Database Connectivity API(JDBC)

Hibernate是如此受歡迎,若幹年前它得到了Java Persistence API規範的标準化。

靜态代碼分析

冠軍:FindBugs

亞軍:SonarQube

這兩個工具都在範圍上有很大的不同,是以很難比較。FindBugs是一個簡單的靜态代碼分析工具,而SonarQube是一個用于代碼品質分析,文法檢查和代碼度量的完整平台。

文法檢查

冠軍:Checkstyle

亞軍:Eclipse

此功能可以在主要的java ide中找到,但如果你需要一個單獨的程式用于專門的文法檢查(又名“linting”),Checkstyle是一個不錯的選擇。

工件管理

冠軍:Sonatype Nexus

亞軍:JFrog Artifactory

許多開發人員在版本化JAR,WAR,庫和完整的app時不使用工件倉庫。但是,如果他們這樣做的話,Nexus有使用者優勢。兩者都是商業産品。Apache Archiva是一個開源選擇。

依賴注入

冠軍:Spring Framework DI

亞軍:Google Guice

Spring架構在依賴注入上做的很好,但谷歌的開發者用Guice也創造了一個流行工具。Dagger沒有那麼普及,但它很新,并且使用者在增加,特别是圍繞Android開發。它被用于Pokémon Go。

性能分析/分析器

Java分析

冠軍:VisualVM

亞軍:No profiler

顯著數量的Java開發人員不使用任何分析器。YourKit是VisualVM另一個流行的替代分析器。

負載測試

冠軍:JMeter

亞軍:LoadRunner

除了這兩個之外,還有大量各種負載測試工具,是以一定要研究這個市場。JMeter是開源的,而LoadRunner是商業産品。商業産品的主要優點是運作測試的雲服務範圍。

自動化建構與依賴管理

冠軍:Maven

亞軍:Gradle

雖然Maven明顯領先,但Gradle仍然被廣泛用作輔助建構工具,并且是Android的标準建構工具。

日志庫

冠軍:log4j

日志庫的亞軍還不清楚,因為在這個工具類上較少有研究。這篇文章給出了圍繞Java流行的日志庫和設定問題。

譯文連結:http://www.codeceo.com/article/java-tools-every-phase-dev.html

英文原文:The Most Popular Java Tools for Every Phase of Development

翻譯作者:碼農網 – 小峰