2019年排名Top 100的Java類庫——在分析了30073份源碼之后得出的結(jié)論
最近,OveOps公布了《The 2019 edition of the Top 100 Java packages from GitHub》,作者查看了這份榜單,做了翻譯和補(bǔ)充,向你展示2019年的風(fēng)云Java類庫,希望可以給正在使用Java的你一些幫助和啟示。不能說榜單中的類庫都是最好的,但是至少是目前比較受歡迎的。
距離Java首發(fā)以來已經(jīng)有25年了,它仍然是最流行的編程語言(根據(jù)2019年10月TIOBE編程語言排行榜)。
Java存在了很多年,但是并不意味著他不再實(shí)用了,很多年來,Java一直在適應(yīng)開發(fā)人員的需求做很多改變。就在今年,Oracle同時發(fā)布了Java 12和Java 13,為該語言增加了更多的特性和能力。
正如Java本身的變化一樣,Java語言相關(guān)的類庫也在做著各種變化。今年的Java類庫排行榜恰恰證明了這一點(diǎn)。言歸正傳,是時候深入研究一下2019年最熱門的Java類庫了。
最受歡迎的前10個Java類庫
今年的Java類庫排行榜的榜首被hadoop摘得,這個去年第二的類庫,今年終于被扶正了。
Apache Hadoop,是一款支持?jǐn)?shù)據(jù)密集型分布式應(yīng)用程序并以Apache 2.0許可協(xié)議發(fā)布的開源軟件框架。它支持在商品硬件構(gòu)建的大型集群上運(yùn)行的應(yīng)用程序。Hadoop的框架最核心的設(shè)計(jì)就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲,而MapReduce則為海量的數(shù)據(jù)提供了計(jì)算。
今年的第二名是一個新星——Apache Camel,Apache Camel是一個基于規(guī)則路由和中介引擎,提供企業(yè)集成模式的Java對象的實(shí)現(xiàn),通過應(yīng)用程序接口來配置路由和中介的規(guī)則。
而去年的第一名fasterXML/Jackson今年降到了第十名。
Jackson是一個JSON庫,可以方便的將JSON轉(zhuǎn)化成Java的對象模型,以及把Java的對象模型轉(zhuǎn)換成一串JSON。
前100類庫透露出的主要信息
JUnit的衰落。對我們來說,今年最大的意外是JUnit的衰落。盡管它在2018年并不是第一名,我們也沒料到它會從第三名一路跌到第33名。
Apache的崛起。正如您所看到的,今年的列表中有一些有趣的新名稱,其中最引人注目的是Apache。免費(fèi)、開源和跨平臺的軟件占據(jù)了前5名的位置,包括它的Hadoop包、集成框架Camel、Commons compression API、以內(nèi)存為中心的分布式數(shù)據(jù)庫Ignite和HTTP包。
企業(yè)單點(diǎn)登錄。前10名中有一個新名字:Apereo。該包提供了一個用于在企業(yè)中實(shí)現(xiàn)SSO解決方案的開源項(xiàng)目。正如我們所知,在內(nèi)部實(shí)現(xiàn)SSO解決方案可能比較困難,所以這個開源框架被廣泛使用。
榜單中出現(xiàn)了更多新名字。Apereo并不是我們今年看到的唯一一個新名字,有一長串的包已經(jīng)進(jìn)入我們的頂級Java列表,比如:
- #13 – org.pentaho – 提供數(shù)據(jù)管理和分析。
- #16 – com.facebook.buck – 一個鼓勵在各種平臺和語言上創(chuàng)建小型可重用模塊的系統(tǒng)。
- #21 – com.yahoo.vespa – 雅虎的數(shù)據(jù)處理類庫。
- #28 – org.killbill.billing – 一個開源的計(jì)費(fèi)和支付平臺。
- #56 – com.baidu.disconf – 百度的分布式配置管理平臺。
不可能有贏家而沒有輸家,這使得在我們的榜單中,排名靠后的包和靠前的包一樣重要。我們決定把重點(diǎn)放在那些從2018年跌至2019年榜單底部的類庫身上。這些包括:
- #79 – org.glassfish.jersey – 用于用Java開發(fā)RESTful Web服務(wù)。它提供對JAX-RS API的支持,并充當(dāng)JAX-RS參考實(shí)現(xiàn),去年排名#65.
- #81 – org.jboss.netty – 一個非阻塞I/O客戶端-服務(wù)器框架,主要用于開發(fā)Java網(wǎng)絡(luò)應(yīng)用程序,如協(xié)議服務(wù)器和客戶端。異步事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用程序框架和工具用于簡化網(wǎng)絡(luò)編程, 去年排名#22.
- #85 – org.apache.curator – Apache ZooKeeper的Java庫,去年排名#29
- #87 – org.assertj.core –富類型斷言庫,去年排名 #56
- #88 – org.xml.sax – Java SAX解析,去年排名#71
- #93 – com.codahale.metrics – 一款監(jiān)控指標(biāo)的度量類庫,去年排名#42.
- #97 – org.joda.time – 一個標(biāo)準(zhǔn)的日期和時間庫,去年排名#44.
- #99 – org.apache.kafka – 一個開源流處理平臺,由Scala和Java編寫。該項(xiàng)目的目標(biāo)是為處理實(shí)時數(shù)據(jù)提供一個統(tǒng)一、高吞吐、低延遲的平臺,去年排名#69.
那些貢獻(xiàn)較大的組織
為了深入了解我們的頂級Java包,我們逐個查看每個包,試圖了解Java開發(fā)人員正在構(gòu)建什么以及如何構(gòu)建它們。當(dāng)我們?yōu)g覽列表時,有許多供應(yīng)商/所有者多次出現(xiàn),為不同的用途提供各種包。
這就是為什么我們決定更廣泛地查看我們的整個數(shù)據(jù)集,不僅要了解誰是最受歡迎的包,還要了解誰是使用最多的包背后的組織、公司甚至個人。
那些貢獻(xiàn)較大的組織的前10名如下:
他們分別是apache、springframework、google、jboss、amazonaws、junit、facebook、yahoo、eclipse、pentaho
另外,在前100名類庫中,我們發(fā)現(xiàn)有4個類庫分別來自3家中國企業(yè),他們分別是:
來自百度的com.baidu.disconf (分布式配置管理平臺)
來自微信的weixin.popular.bean(微信SDK)
來自阿里巴巴的com.alibaba.otter(阿里巴巴分布式數(shù)據(jù)庫同步系統(tǒng))和com.alibaba.jstorm(阿里巴巴流處理框架)
其中排名最高的是阿里巴巴的otter,排名第19。
分析方法
就像去年一樣,我們使用谷歌BigQuery和GitHub的API來獲取我們想要的數(shù)字。我們提取了頂級的存儲庫,并從中提取了這些存儲庫使用的Java包。
BigQuery 是 Google 專門面向數(shù)據(jù)分析需求設(shè)計(jì)的一種全面托管的 PB 級低成本企業(yè)數(shù)據(jù)倉庫。該服務(wù)讓開發(fā)者可以使用Google的架構(gòu)來運(yùn)行SQL語句對超級大的數(shù)據(jù)庫進(jìn)行操作。BigQuery 可在幾秒內(nèi)掃描 1 TB 的數(shù)據(jù),在幾分鐘內(nèi)掃描 1 PB 的數(shù)據(jù)。
從GitHub中提取的30,073個Java源文件中,我們過濾掉了Android、Arduino、重復(fù)和廢棄的repos。獲得每個項(xiàng)目的源文件后,我們提取惟一的import語句,確保每個項(xiàng)目只計(jì)算一次。最后一步是再次檢查結(jié)果,確保沒有Android、Arduino、deprecated或標(biāo)準(zhǔn)的Java包,然后導(dǎo)出最終的數(shù)字進(jìn)行處理。
我們過濾了前100個結(jié)果,創(chuàng)建了一個新的谷歌電子表格,并寫了這篇文章供您欣賞:https://docs.google.com/spreadsheets/d/1QXw5TILFQCBoB0wxhNAoKabRbUm9C6TE3mD260S_gXY/
關(guān)于作者:Hollis,一個對Coding有著獨(dú)特追求的人,現(xiàn)任阿里巴巴技術(shù)專家,個人技術(shù)博主,技術(shù)文章全網(wǎng)閱讀量數(shù)千萬,《程序員的三門課》聯(lián)合作者。