GitHub 上100個最受歡迎的Java基礎類庫
譯文作為一名整天與既成熟且不斷發展的Java語言打交道的開發者,面對的困境之一就是在我們編寫代碼的時候,是使用一些人人談論的人們新技術呢,還是堅持使用一些雖舊但成熟的類庫?
由于Java應用中大部分是商業用途,因此有的時候很難輕易將實際已使用的有哪些框架分離出來統計。在一個開源Java框架的發展過程中,社區用戶和貢獻者是該框架能否持續成功和發展的關鍵因素。
我們選取了目前程序員們在使用的,世界上***的Java項目代碼庫GitHub去使用基于數據的方法去進行研究。在我們之前的文章中,我們研究了GitHub中
最多人使用的100個Javascript、Ruby和Java項目。在本文中,將重點分析Java項目中其中用到了哪些受歡迎的類庫。
研究方法
在本文中,我們采用如下的方法去進行研究:挑選了10000個深受社區歡迎的開源項目,它們在社區中有相對重要的地位。我們選用了GitHub中大多數項目中使用的pom.xml去進行分類研究,將其中用到的類庫進行分組,其結果十分有趣味。
調查結果
下圖顯示的是調查結果圖中,Java開源項目中用得最多的類庫的部分截圖,完整的調查結果請參考:
下面簡單進行一個分析歸納和提出一些值得關注的要點:
日志方面的類庫 使用最多的類庫是slf4j,有3068個項目使用它。看上去GitHub上的Java開發者都接受了將具體的日志系統和應用解耦的方法,因為sl4j其實上并沒限制開發者在具體應用中使用什么日志引擎,提供了統一的記錄日志的接口,只要按照其提供的方法記錄即可,最終日志的格式、記錄級別、輸出方式等通過具體日志系統的配置來實現,因此可以在應用中靈活切換日志系統。當然,其中具體的日志系統中使用的最多的依然是log4j――有891個項目使用它。居亞軍的是Apache的Commons-logging,有334個項目使用,數量連log4j的一半也不到,第三位的是sl4j自帶的最簡單實現類庫,有174個項目使用。
Spring 盡管Spring可能一直被人認為是更成熟而不是時髦的框架,但依然在前100位中占據了近15席(都是Spring相關的類庫)。Spring是龐大的框架,探究它其中有哪些類庫是用得最多的是很有趣的事情。除了Spring的核心類庫外,Spring-test是使用得最多的(有376個項目使用)。之后是強大的Spring-MVC框架有277個項目使用,接下來的是Spring的SpringORM相關功能的類庫,有218個項目使用。
TDD相關有 3068個項目使用JUnit。這表明測試驅動開發的方式已經占據Java項目的半壁江山。看上去如果是Java程序員,則在開發程序的時候單元測試是必不可少的了。要值得注意的是,在測試框架中,并不是只有JUnit稱霸,另外一個不錯的測試框架TestNG,有331個項目在使用。
Mockito Mockito是一個很流行的mock測試框架,獲得的413個項目的青睞。EasyMock緊隨其后,有231個項目在使用。
Google Guava工具類庫 目前,越來越多的開發者喜歡使用Google Guava類庫,其中有4.8%的項目在使用。
Apache Commons工具類庫 接下來我們留意到Apache旗下的開源工具類庫Apache Common,它也是在Java語言中使用十分廣泛的工具類庫。Commons-io和Commons-langz占據了前10位,分別有519個和504的項目在使用它們,十分流行。
在Apache的Commons工具類庫系列中,其中有13個在前100位中出現。Google的Guava類庫,也提供類似的功能,得到了483個項目的支持。
下圖為按照類型去統計的使用最多的Java類庫:
SQL & NoSQL. 隨著NoSQL最近這幾年成為最火熱的話題,則必須考察既使用關系數據庫也使用NoSQL的項目數。其中統計數據表明,Mysql有225個項目在使用,Hibernate ORM盡管本身不是數據庫,但有181個項目用到Hibernate技術。
Hadoop 在調查數據中我們發現,其中有168個項目涉及到Hadoop,這比本身在成熟的關系數據庫之一Postgre SQL的票數要多(121個項目使用Postgre SQL)。
ElasticSearch,. 另外一項大數據技術,在調查樣本中發現有110個項目使用,另外很驚訝發現在Ruby中有1085個項目使用的sqlite數據庫,在Java這邊卻不能進入前100位。
Android.在GitHub的本次調查中,發現有228個項目通過Maven在使用Android。盡管目前在GitHub上的移動應用比例不是太多,但可以顯示出Java依然是服務端編程語言的老大。
原文鏈接:http://java.dzone.com/articles/github%e2%80%99s-10000-most-popular