这篇文章对付我们做技能选型以及技能学习都有极强的辅导性浸染,建议收藏!
原创不易,若有帮助,欢迎点赞!
开源安全基金会(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 只在安卓项目上用的比较多,实际并不是。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 。PMD :PMD是一款常用的程序代码检讨工具。我们在项目中一样平常汇合成它来对自己提交的代码做一层保障。
我们看了关键性评分最高的几个项目之后,再来看看有关技能选型的问题。
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 。