GitHub上最流行的10000個Java都使用了哪些庫?
Java開發(fā)者所使用的Java語言已經很成熟且高度進化,目前常常要面臨的問題是何時寫新代碼——是追隨每個人都在討論的新的熱門技術,還是堅持使用經過考驗證明可靠的庫?
事實上,由于很大一部分的Java應用程序是以盈利為目的的,以至于我們很難分辨出傳聞中的新框架的實際使用量。對于社區(qū)用戶和貢獻者圍繞的框架,這是決定它繼續(xù)成功和持續(xù)發(fā)展的***因素之一。
我們決定通過分析托管在世界上***的開放倉庫——GitHub的Java項目的數據來看看Java開發(fā)者到底使用的是哪些庫。
在我們前一篇文章中介紹了我們在GitHub研究出的結果:JavaScript、Ruby、java前100個庫。現在讓我們挖掘數據,特別是java。
方法
為生成數據集,我們需要10000個Java項目。這些項目偏向那些在社區(qū)里***的。這樣的限定是因為它們相對重要。我們分析被GitHub上的Java項目廣泛用于定義依賴pom.xml文件,然后將它們分組。***結果很有趣。
結果
前100的JavaScript、Ruby、Java庫的完整列表
日志(Loggin)。***的Java庫是slf4f——一個日志門面框架,有3068項。可以看出GH上的Java開發(fā)者已經完全擁抱與日志引擎解藕的范式,都很統(tǒng)一地使用slf4f來做。
然而slf4f本身不是一個日志引擎。看看排在前面的日志引擎同樣有用。log4j似乎是“獲勝者”,有891個項目使用了它。接著是Logback有340個。雖然log4j的使用量看起來體面一些,但還是少于半數的項目使用log4j。slf4f的簡單實現排名第三,有174的使用量。
當今最聞名Java庫是slf4f,1000個項目中有30.7%的使用率。
Spring。盡管Spring可能被看作是一個成熟的而非一個時髦框架,它仍然有可觀的使用率,在前100 名中占據了15個位置。由于Spring是一個超級框架,所以,看看它的哪些組件用得最多。Spring-test以376項成為Spring框架最常用的框架(在core庫后)。其后是為設計健壯Web應用的web-mvc,有277項。緊跟web功能,我們看到web-orm有218項,突出 Spring的關鍵使用場景是搭建以DB為后端的Java web應用。
TDD。和Spring一樣前排的還有JUnit,有3068項。這真實的展現了測試驅動開發(fā)(Test Driven Development)在Java世界的深入影響。看來,在今天,如果Java程序員發(fā)布代碼,單元測試是絕對必須的。提這個是非常有必要的,雖然在這方面不只是有最有統(tǒng)治地位的JUnit(TestNG,排名第二的流行的測試框架,有331項)。
Mockito。一個流行的模擬測試框架,同樣獲得了廣泛的吸引力——有413項。EasyMock,另一個模擬框架,在本分類中排名第二,有231項。
Google的Guava框架正在成為主流,GitHub上10000個Java項目有4.8%使用它。
Apache Commons。看了Spring,我們就不能忽視眾多語言級上的基礎庫——Apache Commons。Commons-io和Commons-lang都排前10,分別有519項和504項。顯示出他們非常的流行。
整個Apache Commons有13個庫排在前100。Google的Guava框架,也提供語言級的工具(有些與Commons相似),同樣非常優(yōu)秀,有483項,使它能成為別一個關鍵的Java構建塊(building block)。
Sql與NoSql。介于在最近幾年NoSql和大數據(Big data)是熱門話題(好理由),看看關系型數據庫和NoSql技術的實際使用率,還是值得的。***的Sql DB是MySql,有225項。Hibernate ORM本身不是數據庫,也相當的流行,有181項。在DB方向,我們需要注意到的是在GH這么一個開源倉庫里,我們看到一個稍強的商業(yè)數據庫,它是閉源的數據庫Oracle。
證明傳聞(the buzz)是正確的:Hadoop在GitHub上的Java項目中比Postgre SQL更流行
Hadoop的表現也不錯,有168項。實際數據證明傳聞是真的。要正確看待,Hadoop比Postgre SQL(121項)具有更多的項數。Postgre SQL是最成熟的開源關系型數據庫之一。
ElasticSearch,另一個大數據技術,有110項。出乎意料的是sqlite在Ruby中有1085項,但排Java的100名以外。
Android。在GH上的移動開發(fā)者,我們看到有228項是使用Maven來構建Android。盡管這表明不是很多移動項目放在GH上,但它仍然是一個強用力的指標,Java仍然是非常強大的服務器端語言。
有些結果是不是很意外?我們對其中一些結果是有些意外。看過在GitHub上排名在前100的Java庫后,請在評論處告訴我們你所想的。我們喜歡聆聽你的想法和提問。
翻譯后語
申明:我不確定這個數據的準確性,我也想找到他們是如何統(tǒng)計分析的。
翻譯這文章有吹捧Java的嫌疑,同時容易引起大家在語言的無用的討論。這都不是我的目的。實際上,我們應該看到作者這種拿數據說明的精神,然后把作者那種分析問題的思維方式學下來。這才是重點。