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