最受歡迎的100個(gè)Java庫(kù)
誰拔得頭籌?誰又落于人后?我們分析了 GitHub 中 47,251 條依賴關(guān)系,得出***的100個(gè) Java 庫(kù)。
漫長(zhǎng)的周末里,我們最喜歡的消遣方式是遍歷 GitHub,找出***的 Java 庫(kù)。我們決定,將其中的樂趣與所得分享給大家。
我們分析了 GitHub 中前3862個(gè) Java 項(xiàng)目里用到的12059個(gè)不同 Java 庫(kù)的47251條導(dǎo)入聲明。從該列表中,我們選取了排名前100的 Java 庫(kù),并將結(jié)果在此呈現(xiàn)。
***的20個(gè) Java 庫(kù)
連續(xù)兩年,junit 二度成為 GitHub 中***的 Java 庫(kù)。與此同時(shí),Java 日志記錄 API slf4j 獲得第二名,log4j 排名第四。
此外,谷歌的開源項(xiàng)目 Guava 來勢(shì)洶洶,勇奪第三名,該庫(kù)包含了一系列谷歌內(nèi)含的核心 Java 庫(kù)。如果你對(duì) Guava 不甚了解或者不確定如何使用,你應(yīng)該讀一下我們的文章,了解一下谷歌 Guava 鮮為人知但其實(shí)每個(gè)開發(fā)者都應(yīng)該知道的特性。
Spring 庫(kù)的崛起
作為 Java EE 的首要競(jìng)爭(zhēng)者,Spring 框架日漸流行,其受歡迎程序也反映在 GitHub 中。在本次***的100個(gè) Java 庫(kù)中,44個(gè)庫(kù)與 Spring 相關(guān)。其中,最有意思的是 Spring Boot 的疾速增長(zhǎng),該庫(kù)能幫助開發(fā)者通過最精簡(jiǎn)的引用打造以 Spring 為驅(qū)動(dòng)的應(yīng)用及服務(wù)。你想在最短的時(shí)間內(nèi)打造能適應(yīng)生產(chǎn)環(huán)境的 Java 應(yīng)用么?請(qǐng)閱讀我們的文章:Java 引導(dǎo)程序:Dropwizard 對(duì)比 Spring Boot。
***的 Spring 庫(kù)列表:
第13名 – springframework.spring-context
第17名 – springframework.spring-test
第22名 – springframework.spring-webmvc
第24名 – springframework.spring-core
第27名 – springframework.spring-web
第36名 – springframework.spring-jdbc
第37名 – springframework.spring-orm
第38名 – springframework.spring-tx
第40名 – springframework.spring-aop
第47名 – springframework.spring-context-support
第72名 – springframework.boot.spring-boot-starter-web
第81名 – springframework.security.spring-security-web
第82名 – springframework.security.spring-security-config
第88名 – springframework.boot.spring-boot-starter-test
第99名 – springframework.security.spring-security-core
***的 JSON 庫(kù)
我們知道,Java 并未向 JSON 提供原生支持(盡管 Java 9 差點(diǎn)就將其包括了),我們很有興趣知道這些庫(kù)在 GitHub 項(xiàng)目中的受歡迎程度。
你不應(yīng)該根據(jù)表象判斷一個(gè)庫(kù)的好壞。并非所有的 JSON 庫(kù)都性能相當(dāng),選擇合適自身環(huán)境的庫(kù)非常重要。想要知道應(yīng)該如何選擇 JSON 庫(kù),可以查看我們***的 JSON 評(píng)測(cè)基準(zhǔn)。
***的 JSON 庫(kù)有:
第14名 – fasterxml.jackson.core.jackson-databind
第19名 – google.code.gson.gson
第43名 – json.json
第80名 – googlecode.json-simple.json-simple
第89名 – thoughtworks.xstream.xstream
最驚艷的4個(gè)庫(kù)
其實(shí),有許多有意思甚至新出現(xiàn)的庫(kù),都讓我們印象深刻。不過,我們決定專注于下面4個(gè)庫(kù):
第68名:projectlombok.lombok ——該庫(kù)旨在簡(jiǎn)化 Java 中的引用樣本,并用簡(jiǎn)單的注釋集替代了一些極為繁雜的引用樣本。
第90名:jsoup.jsoup——該庫(kù)用于同 HTML 協(xié)作。它提供了通過 DOM 操作、CSS 以及類 jquery 方法以抽取并操縱數(shù)據(jù)的 API。
第92名:io.netty.netty-all——用于快速、簡(jiǎn)便地部署可維護(hù)的高性能協(xié)議服務(wù)器以及客戶端的網(wǎng)絡(luò)應(yīng)用框架。
第98名:dom4j.dom4j——用于處理 XML 的開源框架。與 XPath 集成,提供了對(duì) DOM、JAXP 以及 Java 平臺(tái)的全面支持。
按類型排序的100個(gè) Java 庫(kù)
排名計(jì)算方式
你很可能會(huì)疑惑,我們是如何得到該排序的。首先,我們根據(jù)評(píng)分抽取出 GitHub 中排名靠前的 Java 項(xiàng)目。之后,抽取使用 Maven 或 Ivy 進(jìn)行依賴管理的項(xiàng)目,快速地得到它們的 pom.xml / ivy.xml 依賴。至此,我們得到 47,251 個(gè)數(shù)據(jù)點(diǎn)。
接下來,經(jīng)過一些整合與分析,我們得到來自前3862個(gè) Java 項(xiàng)目的12059個(gè)不同的 Java 庫(kù)。由此,根據(jù)這些庫(kù)在 GitHub 中出現(xiàn)的次數(shù),不難得到***的100個(gè)庫(kù)。
如果你想查看我們的原始數(shù)據(jù),可以在此處查看文件。盡管我們努力保持嚴(yán)謹(jǐn)以防止出現(xiàn)疏忽,你也可以看看這些數(shù)據(jù),說不定會(huì)有新的有趣見解。
文末反思
當(dāng)我們將今年的前100名數(shù)據(jù)與去年的相對(duì)比時(shí),我們發(fā)現(xiàn)小的 Java 庫(kù)有一些名次變動(dòng),其中 Spring 相關(guān)庫(kù)的排名總體升高,而人們對(duì) MongoDB 相關(guān)庫(kù)的興趣有所下降。
然而,對(duì)于絕大多數(shù) Java 開發(fā)者而已,他們對(duì)自己選擇的 GitHub 庫(kù),都保持相當(dāng)?shù)闹艺\(chéng)度。考慮到現(xiàn)有的使用這些庫(kù)的項(xiàng)目數(shù)量,我們有理由相信這些庫(kù)在以后都會(huì)廣受歡迎。