1. 程式人生 > >2017年排名 Top 100 的 Java 類庫—在分析了 259,885 份原始碼之後得出的結論

2017年排名 Top 100 的 Java 類庫—在分析了 259,885 份原始碼之後得出的結論

        一年的時間就這麼匆匆過去了,就好像像我們昨天才剛剛從GitHub上分析了2016年的Top Java類庫一樣。
        今年,我們在資料檢索方面採用了Google的BigQuery,來得到更精確的結果。
        首先,我們按照star數排名,從GitHub上拉取了前1000份Java程式碼倉庫,然後過濾掉Android專案,剩下477個純Java專案。
        我們基於這477個純Java專案進行了分析。我們去重之後統計了所有的類庫的import。更深入的關於統計方法的介紹在文章底部。

        廢話不多說,讓我們來看看2017年最受歡迎的Java類庫都有哪些?今年又是誰穩坐第一的寶座。

       最受歡迎的前20個Java類庫


    和去年一樣,排名第一的類庫,依舊是JUnit。基於它擴充套件的 JUnit Runner 佔據第二名的位置,甚至是較舊的 junit.framework 此次也在第三名的位置。也就是說JUnit包攬了前三甲。

    Mockito,這個開源的mock測試框架排名第四。

譯者注:Mockito 是一個強大的用於 Java 開發的模擬測試框架, 通過 Mockito 我們可以建立和配置 Mock 物件, 進而簡化有外部依賴的類的測試.

        Java中的日誌組建 slf4j 位列第五。這從某個側面體現出目前的開發人員對日誌還是比較情有獨鍾的。
同時也看得出Java開發人員對於 java.util.logging 庫的使用率較低。我們也曾經分析過Java開發者使用日誌的一些習慣和偏好。整理在eBook中。

    Hamcrest類庫排名的上升,說明了開發人員確實是需要更好的測試環境。

譯者注:Hamcrest是一個協助編寫用Java語言進行軟體測試的框架。它支援建立自定義的斷言匹配器(assertion matchers)(名稱“Hamcrest”即為“matchers”的異位構詞),允許宣告式定義匹配規則。這些匹配器在單元測試框架(例如JUnit和jMock)中有用。

        分析排名在前幾名的類庫我們發現,測試對於寫出更好的程式碼是十分重要的。這也就說明了一個事實,出現線上問題是開發者最不想看到的,所以我們會想盡一切辦法去避免他的發生。

        Google的Guava類庫排名第 7。 最受歡迎的JSON類庫是Jackson 。 榜單第20名,是一個新晉類庫:org.w3c.dom 。它提供了一系列操作DOM的介面。

        其他值得我們注意的類庫

        縱觀前100名,我們發現Spring 有很好的表現。以下8個類庫進入前100 :


        除了Spring之外,Apache的類庫也有廣泛的應用:

譯者注:看到apache類庫有這麼好的表現,筆者比較開心。筆者一直崇尚不要重複製造輪子,

我們日常開發中可能用到的一些方法在apache的類庫中具有最佳實現。比如處理IO流、處理集合等。

        在今年的排名中,AssertJ較去年有明顯的提升,它為 Java 提供了流式斷言(Fluent assertions)。今年它攀升至 50 名。
        我們在榜單中也發現了 javax.和 org.apache.http.client.utils這兩個指令碼API。

指令碼API供那些希望在其 Java 應用程式中執行用指令碼語言編寫的程式的應用程式程式設計人員使用。

最後的一點想法
        一個主要的結論是:那些2016年受歡迎的類庫,在2017年依舊受歡迎。這也說明,這些類庫背後的開發者、團隊或者公司都在努力的使這些類庫更好。
        這也意味著,如果你打算開始寫自己的Java專案,或者日常的開發中,我們的電子表格可以提供一些好的建議。這些排名靠前的類庫是不錯的選擇。

附錄:Top 100 Java Libraries