各個開發階段最流行的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之間的競爭,因為相關的統計資料總是存在爭議,但是兩者在使用者數量上似乎相當接近。大約三分之一的開發人員在使用其中之一的同時還是用了另外一個。
資料:
[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框架。
資料:
[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能做的事情。
資料:
[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是開源的強大選擇。
資料:
[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。
資料:
效能分析/分析器
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的標準構建工具。
資料:
[2] 2016年RebelLabs Java工具和技術趨勢報告(圖1.12)
[3] 2015版Java生態系統DZone指南(圖4)
日誌庫
冠軍:log4j
日誌庫的亞軍還不清楚,因為在這個工具類上較少有研究。這篇文章給出了圍繞Java流行的日誌庫和設定問題。
資料:
[2] 最詳細的Log4j使用教程
[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
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 軟體開發各個階段用到的各種圖
- 高效的Java開發工具彙總,一個都不能少!Java
- 盤點最流行的Java工具Java
- 學Java開發每個階段最應該被攻克的難點分享!Java
- 編譯的各個階段編譯
- Mac開發工具彙總Mac
- 20個高階Java面試題彙總Java面試題
- 網頁開發的階段總結(一)網頁
- Java各階段學習書目Java
- 初學Java的5個階段,你在哪個階段?Java
- PHP開發工具、開發環境彙總PHP開發環境
- 9個Java效能優化工具彙總Java優化
- 前端技術開發工具彙總前端
- 前端開發環境工具彙總前端開發環境
- LESS/SASS/Stylus開發工具彙總
- CrunchBase:2019年Q3各階段風險投資資料彙總
- 7 個流行的.Net開發ORM對映工具ORM
- 開發階段
- 2020年最流行的Java開發技術,最為主流的技術與工具你懂嗎?Java
- 用於移動開發的5個最流行的資料移動開發
- mybatis各階段的詳解MyBatis
- 最流行的開源工具 Amanda 2.5 釋出(轉)開源工具
- 六款好用的Mac最流行的開發工具,程式設計師必看~Mac程式設計師
- 5個用於移動開發的最流行資料庫移動開發資料庫
- Java開源軟體測試工具大彙總Java
- 開源安全工具彙總
- web開發人員職業發展的11個階段Web
- 分析遊戲設計各個階段的人格特徵遊戲設計特徵
- 資料庫各個階段的INSTANCE DATABASE狀態資料庫Database
- 12 個 CSS 高階技巧彙總CSS
- 最流行的自由職業者的工具
- java第三階段作業總結Java
- 大神的分享:Java程式設計師的學習生涯中各個階段的建議Java程式設計師
- Java初階段學習的複習總結Java
- 開發框架彙總框架
- 物流行業專業詞彙彙總行業
- 效能測試流程各階段的工作
- 2020年最流行的Java開發技術你不瞭解下?Java