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

2016-10-09    分類:JAVA開發、程式設計開發、首頁精華0人評論發表於2016-10-09

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

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

流行的工具更易於學習,因為有如此多的人可以幫助你使用它們。並且流行的開源工具,往往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之間的競爭,因為相關的統計資料總是存在爭議,但是兩者在使用者數量上似乎相當接近。大約三分之一的開發人員在使用其中之一的同時還是用了另外一個。

資料:

[1] 2016年RebelLabs Java工具和技術趨勢報告(圖1.9,1.10)

[2] 2015版Java生態系統DZone指南(圖1&2)

編輯器和IDE

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

亞軍:Netbeans

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

資料:

[1] IntelliJ IDEA的光芒會蓋過Eclipse嗎

[2] 2016年RebelLabs Java工具和技術趨勢報告(IntelliJ IDEA是本報告中的最佳IDE,圖1.11)

[3] 2015版Java生態系統DZone指南(Eclipse是其中的最佳IDE,圖4)

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框架。

資料:

[1] 調查:Java程式設計師最親睞的Web框架

[2] 2016年RebelLabs Java工具和技術趨勢報告(圖1.16)

[3] 2015版Java生態系統DZone指南(表3,第5段顯示平局)

[4] JSF和Spring MVC在Java打成平手 / JVM框架調查投票

應用伺服器

冠軍:Tomcat

亞軍:Wildfly

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

資料:

[1] 2016年RebelLabs Java工具和技術趨勢報告(圖1.13)

[2] 2015版Java生態系統DZone指南(圖4)

[3] 2013年RebelLabs應用程式伺服器辯論(為了更深入地瞭解應用伺服器用例)

測試框架

單元測試

冠軍:JUnit

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

Mocking

冠軍:Mockito

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

自動化web瀏覽器測試

冠軍:Selenium

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

行為驅動開發測試(BDD)

冠軍:Cucumber-JVM,Spock

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

資料:

[1] 8個超實用的Java測試工具和框架

[2] 2014年RebelLabs Java工具和技術趨勢報告

[3] 2015版Java生態系統DZone指南(第20頁)

版本控制系統

冠軍:Git

亞軍:Subversion

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

資料:

[1] Git教程及相關文章

[2] 2016年RebelLabs Java工具和技術趨勢報告(圖1.18)

持續整合

冠軍:Jenkins

亞軍:No CI server

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

資料:

[1] 2016年RebelLabs Java工具和技術趨勢報告(圖1.13)

[2] 2015版持續交付DZone指南(第20頁)

[3] 2015版Java生態系統DZone指南(第4段)

資料庫

冠軍:OracleDB

亞軍:MySQL

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

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

資料:

[1] 2015年240個資料庫引擎排名參考

[2] DB-引擎資料庫排名

[3] 2016年資料庫DZone指南

[4] 2016年RebelLabs Java工具和技術趨勢報告(圖1.14,這是唯一特定Java的一個)

物件關係對映(ORM)

冠軍:Java Persistence API(JPA)/Hibernate

亞軍:Java Database Connectivity API(JDBC)

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

資料:

[1] 2015版Java生態系統DZone指南(第4段)

[2] 2014年RebelLabs Java工具和技術趨勢報告(第31頁)

靜態程式碼分析

冠軍:FindBugs

亞軍:SonarQube

這兩個工具都在範圍上有很大的不同,因此很難比較。FindBugs是一個簡單的靜態程式碼分析工具,而SonarQube是一個用於程式碼質量分析,語法檢查和程式碼度量的完整平臺。

資料:

[1] 2015版持續交付DZone指南(第20頁)

[2] 2014年RebelLabs Java工具和技術趨勢報告(第2頁)

語法檢查

冠軍:Checkstyle

亞軍:Eclipse

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

資料:

[1] 2015版持續交付DZone指南(第20頁)

工件管理

冠軍:Sonatype Nexus

亞軍:JFrog Artifactory

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

資料:

[1] 2014年RebelLabs Java工具和技術趨勢報告(第45頁)

依賴注入

冠軍:Spring Framework DI

亞軍:Google Guice

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

資料:

[1] reddit.com/r/java<wbr>

效能分析/分析器

Java分析

冠軍:VisualVM

亞軍:No profiler

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

負載測試

冠軍:JMeter

亞軍:LoadRunner

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

資料:

[1] 2016年RebelLabs Java工具和技術趨勢報告(圖1.19)

[2] 2015版持續交付DZone指南(第20頁)

自動化構建與依賴管理

冠軍:Maven

亞軍:Gradle

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

資料:

[1] Gradle在大型Java專案上的應用

[2] 2016年RebelLabs Java工具和技術趨勢報告(圖1.12)

[3] 2015版Java生態系統DZone指南(圖4)

日誌庫

冠軍:log4j

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

資料:

[1] Java程式設計師最常用的8個Java日誌框架

[2] 最詳細的Log4j使用教程

[3] 2016年Takipi Java庫 100強

[4] 2013年Java日誌狀態

你有什麼要補充的最新的Java工具研究嗎?歡迎分享。

譯文連結:http://www.codeceo.com/article/java-tools-every-phase-dev.html
英文原文:The Most Popular Java Tools for Every Phase of Development
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章