2020 Java開源項目權威排名解讀:SpringBoot 太強了、ShardingSphere 上榜
這篇文章對于我們做技術選型以及技術學習都有極強的指導性作用,建議收藏!
原創(chuàng)不易,若有幫助,歡迎點贊!
開源安全基金會(OpenSSF)發(fā)布了 Github 上一些熱門開源項目的關鍵性評分數(shù)據(jù)。相比于項目的 Star 數(shù)量來說,這個關鍵性評分的含金量更高、更能反應項目的價值。
并且,統(tǒng)計數(shù)據(jù)是按照編程語言來劃分的。涵蓋的編程語言非常廣,像 Java、C、C++、Go、JS、Php、Python 這些比較火的編程語言都在其中。
對于每一個項目,OpenSSF 就會根據(jù)一定的規(guī)則給其一個關鍵性評分。這樣的話,關鍵性評分的計算規(guī)則就非常重要了!
下面這些參數(shù)決定了開源項目的關鍵性評分。并且,這些參數(shù)之間的權重也不一樣。
created_since:項目創(chuàng)建時間(單位:月)updated_since: 最近一次更新項目的時間(單位:月)contributor_count: 項目貢獻者數(shù)量org_count: 項目的貢獻者所屬的不同開源組織的數(shù)量commit_frequency: 項目去年平均每周提交次數(shù)recent_releases_count: 項目去年發(fā)行的版本數(shù)量closed_issues_count: 項目在過去 90 天里關閉的 issue 數(shù)量。updated_issues_count: 項目在過去 90 天里更新的 issue 數(shù)量。comment_frequency: 項目在過去 90 天里每個 issue 的平均評論數(shù)量dependents_count: 項目提交消息中提及的項目數(shù)
有了參數(shù)之后,我們根據(jù)對應的算法/規(guī)則即可計算出項目的關鍵性評分(0~1 之間)。
計算規(guī)則的話,小伙伴們可以在項目首頁找到。項目地址:https://github.com/ossf/criticality_score 。
我這里簡單帶著小伙伴們看下 Java 項目的情況。
對應編程語言的統(tǒng)計數(shù)據(jù)下載地址:https://commondatastorage.googleapis.com/ossf-criticality-score/index.html 。

對于 Java 后端開發(fā)來說,項目的前 15 名中,大家最熟悉的莫過于下面這幾個項目:

Gradle:對比 Maven,Gradle 同樣是一款非常好用的項目構建工具 。大部分小伙伴的客觀印象是 Gradle 只在安卓項目上用的比較多,實際并不是。關于 Gradle 的使用方法可以看這篇文章:《說實話,用完 Gradle 之后,有點嫌棄 Maven 了。賊好用!》 Spring Boot :Java 后端開發(fā)領域殺手锏級別的框架,只要你是 Java 后端開發(fā),你就離不開它!非常好用!生態(tài)也非常棒! JDK :這里指的是 OpenJDK。Oracle JDK 是 OpenJDK 的一個實現(xiàn),并不是完全開源的 Jenkins :一款基于 Java 開發(fā)的持續(xù)集成工具,避免了我們手動進行 CI/CD 的工作。 Netty :我在前面的文章就提過:但凡涉及到網(wǎng)絡通信就必然必然離不開網(wǎng)絡編程。Netty 目前作為 Java 網(wǎng)絡編程最熱門的框架,毫不夸張地說是每個 Java 程序員必備的技能之一。如果你要學習 Netty 的話,可以看看開源的 Netty 入門教程:https://github.com/Snailclimb/netty-practical-tutorial 。 PMD :PMD是一款常用的程序代碼檢查工具。我們在項目中一般會集成它來對自己提交的代碼做一層保障。
我們看了關鍵性評分最高的幾個項目之后,再來看看有關技術選型的問題。
Spring Security VS Shiro

Spring Security 的關鍵評分位列所有 Java 項目的第 29 位。很遺憾的是,Shiro 并未上榜。
Spring Security 是 Spring 全家桶中非常強大的一個用來做身份驗證以及權限控制的框架,我們可以輕松地擴展它來滿足我們當前系統(tǒng)安全性這方面的需求。
Spring Security 背靠 Spring 生態(tài),可謂是有一個強大的后盾。
雖然,相比于 Shiro 來說,Spring Security 的學習曲線更陡峭。但是,從生態(tài)等方面來說,Spring Security 依然是你做身份驗證以及權限控制時的首選框架。
Fastjson vs Jackson

Fastjson 和 Jackson 兩者都是比較常見的 Java 開源 JSON 解析庫。
從 Star 數(shù)量來看的話,F(xiàn)astjson 最多, Jackson 的低了很多。但是,關鍵性評分 Jackson 領先了很多,這個也是在我的意料之中。
主要也是因為 Fastjson 的代碼質(zhì)量以及設計更差,并且,經(jīng)常被爆出有安全漏洞(設計問題)。雖然 Fastjson 在速度方面稍稍取勝,但是,差別和 Jackson 是不太明顯的。
Spring MVC 默認采用 Jackson 解析 Json 也是有它的道理, 肯定不是 Spring 的那群巨佬拍個桌子就能決定的。
綜上,我更推薦使用 Jackson 作為項目的 JSON 解析庫。
Flyway vs Liquibase

Flyway 和 Liquibase 兩者都是比較常見的數(shù)據(jù)庫遷移工具。
Flyway 的關鍵評分位列所有 Java 項目的第 70 位,Liquibaseo 未上榜。
Guava vs Hutool

Guava 和 Hutool 兩者都是目前非常好用的 Java 第三方工具類庫。Guava 是 google 開源的,Hutool 是純國產(chǎn)。
Guava 的關鍵性評分位列所有 Java 項目的第 78 位,而 Hutool 位于第 196 位。
相關文章:
我在這篇《不要重復造輪子?提高生產(chǎn)效率!3 個常用的開源工具庫分享》 文章中推薦過 Hutool。 這篇文章《Guava - 拯救垃圾代碼,寫出優(yōu)雅高效,效率提升 N 倍》 介紹了 Guava 的基本使用,
ShardingSphere vs MyCat

ShardingSphere (包括 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar ) 和 MyCat 兩者都是常用分布式數(shù)據(jù)庫中間件,分庫分表等場景都會用到。
ShardingSphere 項目是當當捐入 Apache 的,目前主要由京東數(shù)科的一些巨佬維護。Mycat 是基于阿里 Cobar 演變而來。
ShardingSphere 的關鍵評分位列所有 Java 項目的第 72 位,MyCat 并為上榜。

這也是意料之中的事情了,畢竟 ShardingSphere 的生態(tài)體系更加完善,社區(qū)更加活躍,文檔更加完善,更新和發(fā)布也更加頻繁。從任何角度來說,你都沒有理由選擇 MyCat 。
推薦??:?Github掘金計劃:Github上的一些優(yōu)質(zhì)項目搜羅
我是Guide哥,Java后端開發(fā),擁抱開源,喜歡烹飪,自由的少年。一個喜歡讀者面試經(jīng)驗的技術人。我們下期再見!
