来啦!2020 Java开源项目权威排名解读:Spring Boot排名稳定、Shiro未上榜
这篇文章对于我们做技术选型以及技术学习都有极强的指导性作用,建议收藏!
原创不易,若有帮助,欢迎点赞!
推荐:
开源安全基金会(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 。
- 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 位。
相关文章:
- 我在这篇《不要重复造轮子?提高生产效率!3 个常用的开源工具库分享》 文章中推荐过 Hutool。
- 这篇文章《Guava - 拯救垃圾代码,写出优雅高效,效率提升 N 倍》 介绍了 Guava 的基本使用,
ShardingSphere vs MyCat
ShardingSphere (包括 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar ) 和 MyCat 两者都是常用分布式数据库中间件,分库分表等场景都会用到。
ShardingSphere 项目是当当捐入 Apache 的,目前主要由京东数科的一些巨佬维护。Mycat 是基于阿里 Cobar 演变而来。
ShardingSphere 的关键评分位列所有 Java 项目的第 72 位,MyCat 并为上榜。
这也是意料之中的事情了,毕竟 ShardingSphere 的生态体系更加完善,社区更加活跃,文档更加完善,更新和发布也更加频繁。从任何角度来说,你都没有理由选择 MyCat 。
我的Github地址:Snailclimb - Overview
来啦!2020 Java开源项目权威排名解读:Spring Boot排名稳定、Shiro未上榜的更多相关文章
- 网上下载的 java开源项目 如何 打jar包
目前很多java开源项目(例如qlexpress)只提供了源码,没有提供jar,下面提供maven打jar包的方法. 1.进入qlexpress下载后源代码所在的目录,此目录应包含pom.xml,如下 ...
- 用Java开源项目JOONE实现人工智能编程
http://www.robotsky.com/ZhiN/MoS/2011-08-25/13142461416649.html 用Java开源项目JOONE实现人工智能编程 https://sourc ...
- 【我整理的java开源项目】
摘要: 1. 整理出一些使用比较广或者个人觉得比较好的java开源项目和资料供参考. 2. 如果你觉得好但是我没有列出的开源项目请告诉我,方便我添加到列表里. 3. 如果你发现信息描述有误请联系我,我 ...
- 3月份GitHub上最热门的Java开源项目
今天,我们来盘点3月份GitHub上最热门的Java项目的时候了,如果你每月都有关注猿妹发布的排行榜,那么本月的Java项目对你来说一定不陌生,这些都是曾经多次出现在榜单中的项目: 1 advance ...
- 硬核! 逛了4年Github ,一口气把我收藏的 Java 开源项目分享给你!
Awsome Java Great Java project on Github(Github 上非常棒的 Java 开源项目). English Version 大家都知道 Github 是一个程序 ...
- 阿里巴巴的26款Java开源项目
阿里巴巴的26款Java开源项目 开源展示了人类共同协作,成果分享的魅力.没有任何一家网络公司可以不使用开源技术,仅靠自身技术发展起来.“取之于开源,用之于开源,才能促进开源的良性发展”,阿里巴巴各个 ...
- java开源项目
原文地址:http://blog.longjiazuo.com/archives/2625 1.整理出一些使用比较广或者个人觉得比较好的java开源项目和资料供参考.2.如果你觉得好但是我没有列出的开 ...
- 硬核! Github上 ,star超高的Java 开源项目分享给你!
Awsome JavaGreat Java project on Github(Github 上非常棒的 Java 开源项目). English Version 大家都知道 Github 是一个程序员 ...
- 【c3p0】目前使用它的开源项目有Hibernate,Spring等
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等. c3p0与dbcp区别 JNDI ...
- 我的第一个 60 k+ Star Java开源项目
JavaGuide([Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识):https://github.com/Snailclimb/JavaGuide. 人生总有各种各样的 ...
随机推荐
- 敏捷编辑器Sublime text 4中文配置Python3开发运行代码环境
敏捷编辑器Sublime text 4中文配置Python3开发运行代码环境 首先来到Win11环境下,进入Sublime text 4官网的下载页面:https://www.sublimetext. ...
- 【MFC】CListCtrl 如何设置单元格颜色?
CListCtrl默认可设置的内容很少,如单元格颜色默认无法设置.若想设置单元格颜色,需要对CListCtrl进行拓展,已有老外为我们写好demo,这里对其中原理.设置方法进行一个解析. 其原理是:设 ...
- 2014年第五届蓝桥杯【C++省赛B组】
第一题:啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒. 注意:答案是一个整数.请通过浏览器提 ...
- freeswitch新增模块APP
概述 之前的文章中,我们讲解了freeswitch的源码基本结构,如何新增一个插件式模块,以及如何在模块中新增一个命令式API接口. freeswitch的架构非常适合这种业务开发模式,即以frees ...
- python爬虫-豆瓣电影top250
一.python爬虫简介1.什么是爬虫:网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或者脚本.由于互联网数据的多样性和资源的有限性,根据用户需求定向抓取相关网页并分析已成为如今主流的爬取策略 ...
- 带你熟悉NLP预训练模型:BERT
本文分享自华为云社区<[昇思技术公开课笔记-大模型]Bert理论知识>,作者: JeffDing. NLP中的预训练模型 语言模型演变经历的几个阶段 word2vec/Glove将离散的文 ...
- CSS - 设置自动等比例缩放
img { width: 100vw; height: 100vh; object-fit: cover; }
- 百度网盘(百度云)SVIP超级会员共享账号每日更新(2024.01.08)
一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...
- VMware虚拟机部署Linux Ubuntu系统的方法
本文介绍基于VMware Workstation Pro虚拟机软件,配置Linux Ubuntu操作系统环境的方法. 首先,我们需要进行VMware Workstation Pro虚拟机软件的 ...
- 配置Chrome支持网页内的frame跨域
前言 跨域限制可以保证安全,但是调试的时候关掉会更方便,然而现在网络上能找到的关闭跨域限制方法,在新版的Chrome浏览器上根本没用-- 经过一番摸索,发现用旧版的Chrome就可以绕过跨域限制,刚好 ...