2020 Java開源項目權威排名解讀:SpringBoot 太強了

這篇文章對於我們做技術選型以及技術學習都有極強的指導性作用,建議收藏!

感謝JavaGuide 的原創,原創不易,若有幫助,歡迎點贊!


開源安全基金會(OpenSSF)發佈了 Github 上一些熱門開源項目的關鍵性評分數據。相比於項目的 Star 數量來說,這個關鍵性評分的含金量更高、更能反應項目的價值。

並且,統計數據是按照編程語言來劃分的。涵蓋的編程語言非常廣,像 Java、C、C++、Go、JS、Php、Python 這些比較火的編程語言都在其中。

對於每一個項目,OpenSSF 就會根據一定的規則給其一個關鍵性評分。這樣的話,關鍵性評分的計算規則就非常重要了!

下面這些參數決定了開源項目的關鍵性評分。並且,這些參數之間的權重也不一樣。

  • created_since :項目創建時間(單位:月)
  • updated_since: 最近一次更新項目的時間(單位:月)
  • contributor_count : 項目貢獻者數量
  • org_count : 項目的貢獻者所屬的不同開源組織的數量
  • commit_frequency : 項目去年平均每週提交次數
  • recent_releases_count : 項目去年發行的版本數量
  • closed_issues_count : 項目在過去 90 天裏關閉的 issue 數量。
  • updated_issues_count : 項目在過去 90 天裏更新的 issue 數量。
  • comment_frequency : 項目在過去 90 天裏每個 issue 的平均評論數量
  • dependents_count : 項目提交消息中提及的項目數

有了參數之後,我們根據對應的算法/規則即可計算出項目的關鍵性評分(0~1 之間)。

計算規則的話,小夥伴們可以在項目首頁找到。項目地址:https://github.com/ossf/criticality_score

我這裏簡單帶着小夥伴們看下 Java 項目的情況。

對應編程語言的統計數據下載地址:https://commondatastorage.googleapis.com/ossf-criticality-score/index.html 。

對於 Java 後端開發來說,項目的前 15 名中,大家最熟悉的莫過於下面這幾個項目:

  • Gradle:對比 Maven,Gradle 同樣是一款非常好用的項目構建工具 。大部分小夥伴的客觀印象是 Gradle 只在安卓項目上用的比較多,實際並不是。關於 Gradle 的使用方法可以看這篇文章: 《說實話,用完 Gradle 之後,有點嫌棄 Maven 了。賊好用!》
  • Spring Boot :Java 後端開發領域殺手鐗級別的框架,只要你是 Java 後端開發,你就離不開它!非常好用!生態也非常棒!
  • JDK :這裏指的是 OpenJDK。Oracle JDK 是 OpenJDK 的一個實現,並不是完全開源的
  • Jenkins :一款基於 Java 開發的持續集成工具,避免了我們手動進行 CI/CD 的工作。
  • Netty :我在前面的文章就提過:但凡涉及到網絡通信就必然必然離不開網絡編程。Netty 目前作爲 Java 網絡編程最熱門的框架,毫不誇張地說是每個 Java 程序員必備的技能之一。如果你要學習 Netty 的話,可以看看開源的 Netty 入門教程:https://github.com/Snailclimb/netty-practical-tutorial 。
  • PMDPMD是一款常用的程序代碼檢查工具。我們在項目中一般會集成它來對自己提交的代碼做一層保障。

我們看了關鍵性評分最高的幾個項目之後,再來看看有關技術選型的問題。

Spring Security VS Shiro

Spring Security 的關鍵評分位列所有 Java 項目的第 29 位。很遺憾的是,Shiro 並未上榜。

Spring Security 是 Spring 全家桶中非常強大的一個用來做身份驗證以及權限控制的框架,我們可以輕鬆地擴展它來滿足我們當前系統安全性這方面的需求。

Spring Security 背靠 Spring 生態,可謂是有一個強大的後盾。

雖然,相比於 Shiro 來說,Spring Security 的學習曲線更陡峭。但是,從生態等方面來說,Spring Security 依然是你做身份驗證以及權限控制時的首選框架。

Fastjson vs Jackson

Fastjson 和 Jackson 兩者都是比較常見的 Java 開源 JSON 解析庫。

從 Star 數量來看的話,Fastjson 最多, Jackson 的低了很多。但是,關鍵性評分 Jackson 領先了很多,這個也是在我的意料之中。

主要也是因爲 Fastjson 的代碼質量以及設計更差,並且,經常被爆出有安全漏洞(設計問題)。雖然 Fastjson 在速度方面稍稍取勝,但是,差別和 Jackson 是不太明顯的。

Spring MVC 默認採用 Jackson 解析 Json 也是有它的道理, 肯定不是 Spring 的那羣巨佬拍個桌子就能決定的。

綜上,我更推薦使用 Jackson 作爲項目的 JSON 解析庫。

Flyway vs Liquibase

Flyway 和 Liquibase 兩者都是比較常見的數據庫遷移工具。

Flyway 的關鍵評分位列所有 Java 項目的第 70 位,Liquibaseo 未上榜。

Guava vs Hutool

Guava 和 Hutool 兩者都是目前非常好用的 Java 第三方工具類庫。Guava 是 google 開源的,Hutool 是純國產。

Guava 的關鍵性評分位列所有 Java 項目的第 78 位,而 Hutool 位於第 196 位。

相關文章:

ShardingSphere vs MyCat

ShardingSphere (包括 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar ) 和 MyCat 兩者都是常用分佈式數據庫中間件,分庫分表等場景都會用到。

ShardingSphere 項目是噹噹捐入 Apache 的,目前主要由京東數科的一些巨佬維護。Mycat 是基於阿里 Cobar 演變而來。

ShardingSphere 的關鍵評分位列所有 Java 項目的第 72 位,MyCat 併爲上榜。

這也是意料之中的事情了,畢竟 ShardingSphere 的生態體系更加完善,社區更加活躍,文檔更加完善,更新和發佈也更加頻繁。從任何角度來說,你都沒有理由選擇 MyCat 。





0、最後一天了,四個關鍵字回顧程序員小躍的2020

1、程序員小躍:三十而立,和大家一起「乘風破浪」

2、這八個成長陷阱,過來人很想告訴你!

本文分享自微信公衆號 - 程序員小躍(runningdimple)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章