每個開發(fā)階段對應的最流行的Java工具
譯文【51CTO.com快譯】就因為某個工具是***的,并不意味著它就是“***的”。在編程領域,什么是***的取決于具體環(huán)境。然而,在一批類似的工具當中選擇時,人氣或受歡迎程度無疑是個重要的衡量標準。倒不是人氣本身增添了工具的價值,而是說某個工具的更龐大社區(qū)帶來了更豐富的資源和支持。
流行的工具更容易上手,因為有很多人可以幫助你使用它。而流行的開源工具往往代碼錯誤較少,因為有更多雙眼睛盯著代碼,更多的人在數(shù)量更多的場景下測試代碼。
所以,雖然始終有Apache和Nginx(這是兩種Web服務器)這樣的競爭對手:Apache用在數(shù)量多得多的網(wǎng)站上,但是Nginx更常被知名網(wǎng)站所使用,這意味著Nginx被一些最出色的工程團隊所使用――在許多情況下,人氣可能是工具之間的關鍵區(qū)別因素之一。
本文涵蓋了你在開發(fā)Java應用程序時需要的大部分重要工具,包括每個類別,提供了***的工具,還提供了“次流行的工具”,并附有一些背景介紹和來自Java社區(qū)調查的引言,證實了這些排名。Java初學者應看一下所有這些***工具,進一步熟悉整個生態(tài)系統(tǒng)。
語言版本
***的:Java 8
次流行的:Java 7
Java 8可能是任何新版本中采用速度最快的。這可能是由于,Java 8帶來了期待已久的現(xiàn)代語言功能,比如lambda表達式,緩解了Java經(jīng)常飽受詬病的冗長啰嗦這一缺點。性能提升也是一大方面。
雖然現(xiàn)在新的Java應用程序和主要的應用程序是用Java 8編寫的,但大量現(xiàn)有的Java應用程序依然使用Java 7或6。
我不會比較Java EE和Spring孰優(yōu)孰劣,因為這方面的統(tǒng)計數(shù)字始終存在爭議,而兩者的用戶數(shù)量似乎旗鼓相當。使用其中一種語言的約三分之一的開發(fā)人員同時還使用另一種語言。
編輯器或IDE
***的:Eclipse和IntelliJ IDEA(存在爭議)
次流行的:Netbeans
Eclipse和Netbeans都是免費、開源的。Eclipse以龐大的社區(qū)和豐富的插件(易于編寫)而家喻戶曉,這讓Eclipse平臺具有無比強大的擴展性,但是載入速度緩慢、有時比較笨拙。Netbeans的不同之處在于結合了一些特性,比如默認情況下就與Maven和Git整合起來。IntelliJ擁有商業(yè)產(chǎn)品的那種性能和成熟。它有免費版和收費版。
Web框架
***的:AngularJS和SpringMVC
次流行的:Java Server Faces(JSF)
雖然三分之二的調查顯示Spring MVC比Java Server Faces(JSF)更有優(yōu)勢,但DZone的大規(guī)模調查顯示,Spring MVC和JSF其實難分伯仲。這種比較可能不再重要,因為JavaScript框架正在大舉進入到許多流行的web堆棧。有一項調查詢問AngularJS的使用相比純粹的Java Web框架怎樣,結果發(fā)現(xiàn)AngularJS在前端方面比***的Java框架更有優(yōu)勢。
應用服務器
***的:Tomcat
次流行的:Wildfly
多年來,Tomcat一向是使用最廣泛的Java應用服務器。它是輕量級應用服務器,并不試圖實現(xiàn)所有的Java EE規(guī)格。在一些調查中,另一種輕量級應用服務器Jetty領先***的、支持Java EE的應用服務器Wildfly。對簡單的Java應用程序而言,Tomcat顯然是領頭羊;輕量級應用服務器無疑是微服務架構方面的***選擇。
測試框架
單元測試
***的:JUnit
事實上的Java單元測試框架。
模擬測試
***的:Mockito
它顯然是Java 模擬測試框架中的佼佼者。
自動化瀏覽器Web測試
***的:Selenium
Selenium可自動化測試瀏覽器。開發(fā)人員經(jīng)常結合測試框架來使用這個工具,進行大規(guī)模的Web應用程序測試。
行為驅動開發(fā)(BDD)測試
***的:Cucumber-JVM和Spock
Cucumber起初是個Ruby項目,但是現(xiàn)在已支持各大編程語言。除了Java外,Spock還支持JVM語言Groovy。它還能處理Mockito能處理的大部分工作。
版本控制系統(tǒng)
***的:Git
次流行的:Subversion
記?。篏it比僅僅使用GitHub及其版本控制約定來得活。Git似乎基本上贏得了版本控制大戰(zhàn)的勝利,而大多數(shù)Subversion和CVS用戶是只好使用一套遺留工具的開發(fā)人員。
持續(xù)集成
***的:Jenkins
次流行的:暫無
這是顯然存在領頭羊的另一個方面。在過去的五年間,Jenkins靈活的插件系統(tǒng)讓它逐漸成為霸主。不使用任何持續(xù)集成服務器的人比使用Jenkins的任何一個競爭對手的人要多。實力最接近的下一個競爭對手是Bamboo。
數(shù)據(jù)庫
***的:OracleDB
次流行的:MySQL
你在選擇數(shù)據(jù)庫時比本文介紹的其他許多工具更依賴具體環(huán)境。除了龐大的列式數(shù)據(jù)庫外,你可能還需要輕型的鍵值存儲數(shù)據(jù)庫,這取決于你在構建的應用程序。對于大多數(shù)應用程序來說,關系數(shù)據(jù)庫仍能滿足要求,這就是為什么你看到兩種關系數(shù)據(jù)庫躋身Java工具榜單的前列。
Oracle是本文中為數(shù)不多的商業(yè)軟件之一,這意味著它有許多“企業(yè)級”功能。如果你偏愛開源,MySQL或甚至SQLite是合理的選擇。
持久API及/或對象關系映射(ORM)
***的:Java持久API(JPA)/hibernate
次流行的:Java數(shù)據(jù)庫連接API(JDBC)
Hibernate太流行了,幾年前就在Java持久API規(guī)范當中實現(xiàn)了標準化。
靜態(tài)代碼分析
***的:FindBugs
次流行的:SonarQube
這兩個工具的范圍大不一樣,所以很難比較。FindBug是一個較簡單的靜態(tài)代碼分析工具,而SonarQube是個完整的平臺,可用于代碼質量分析、語法檢查和代碼度量。
語法檢查
***的:Checkstyle
次流行的:Eclipse
主要的Java IDE都有這項功能,但是如果你需要專門用于語法檢查的另一個程序,Checkstyle倒是個不錯的選擇。
工件管理
***的:Sonatype Nexus
次流行的:JFrog Artifactory
許多開發(fā)人員并不使用工件庫對JAR、WAR、庫和整個應用程序進行版本管理。但是他們在這么做時,Nexus更受用戶的青睞。兩者都是商業(yè)軟件。Apache Archiva是個開源工具。
依賴注入
***的:Spring Framework DI
次流行的:Google Guice
Spring框架在依賴注入方面做得不賴,但是谷歌的開發(fā)人員也開發(fā)了一款流行的工具:Guice。Dagger 的人氣比不上兩者,但它是新工具,用戶越來越多,尤其是在安卓開發(fā)方面。熱門游戲《Pokémon Go》用的就是它。
性能分析
Java分析
***的:VisualVM
次流行的:暫無
為數(shù)不少的Java開發(fā)人員并不使用任何性能分析工具(可能將性能問題交給不同的團隊去考慮)。YourKit是替代VisualVM的另一種流行的工具。
載入測試
***的:JMeter
次流行的:LoadRunner
除了這兩款工具外,還有一大批的載入測試工具,所以務必要調研這個市場。JMeter是開源工具,LoadRunner是商業(yè)產(chǎn)品。商業(yè)產(chǎn)品的主要優(yōu)點是它為在云端運行測試提供了眾多服務。
構建自動化和依賴管理
***的:Maven
次流行的:Gradle
雖然Maven是明顯的領頭羊,但是Gradle依然使用廣泛,是一種僅次于Maven的構建工具,它還是安卓平臺的標準構建工具。
日志庫
***的:Log4j
日志庫方面的次流行工具并不明確,因為這個工具類別方面開展的研究比較少。
原文標題:The most popular Java tools for every phase of development,作者:Mitch Pronschinske
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】