GitHub的10,000个最受欢迎的Java项目-以下是它们使用的顶级库

随着Java开发人员正在使用既成熟又高度发展的语言来工作,无论何时编写新代码,我们都将面临一个持续的难题–使用大家都在谈论的热门新技术,或者坚持使用久经考验的库?

由于Java应用程序的很大一部分是商业性质的,因此有时很难将围绕新框架的嗡嗡声与实际使用它的项目数量分开。 这很重要,因为围绕框架的用户和贡献者社区是确定其持续成功和发展的最重要因素之一。

我们决定使用基于数据的方法,通过分析开发人员在全球最大的Java项目开放存储库GitHub上实际使用的 Java项目,来对此有更深入的了解。

在上一篇文章中,我们介绍了GitHub研究项目的主要成果以及JavaScript,Ruby和Java的前100个库 。 现在,让我们深入研究数据,尤其是分析Java。

该方法

为了生成我们的数据集,我们查询了10,000个Java项目,并偏向于社区中最喜欢的项目,以此作为相对重要性的有力指标。 我们使用pom.xml来定义依赖关系,该文件被GH上的绝大多数Java项目使用。 然后,我们将其分析并归类。 结果真的很有趣。

结果

完整列表– JavaScript,Ruby和Java的前100个库

Java1

正在记录 。 最受欢迎的Java库是slf4j –日志记录外观框架,具有3,068个条目。 看来Java GH开发人员已经完全接受了对其日志记录引擎的分离方法,并已在slf4j上进行了标准化。

由于slf4j本身不是日志记录引擎,因此查看正在使用的顶级日志记录引擎也很有用。 看起来这里的“赢家”是log4j – 891个项目正在使用它。 接下来的是Apache Commons-logging,其中包含334个项目。 虽然非常受人尊敬,但这个数字仍代表使用log4j的项目的不到一半。 sfl4j的简单日志记录实现在174个项目中排名第三。


当今最受欢迎的Java库是slf4j-10,000个项目中的30.7%使用了该库 ( Tweet this )

春天 。 尽管某些人可能认为Spring是一个更成熟,更少用的“ hip”框架,但它仍然得到了广泛的应用,在前100个库中排名第15位。由于Spring是一个伞形框架,因此很有趣地看到正在使用其哪些组件最多。 Spring测试是框架中最常用的部分(在核心库之后),包含376个条目。 其次是web-mvc,用于设计具有277个条目的强大的Web应用程序。 在实现Web功能之后,我们将看到带有218个条目的web-orm,突出显示了Spring用于构建数据库支持的Java Web应用程序的关键用例。

TDD 。 就在Spring的顶部,是带有3,068个条目的 JUnit。 这确实显示了“测试驱动开发”对Java的深远影响。 看来,如果您是发布代码的Java开发人员,那么今天的单元测试绝对必要。 值得注意的是,尽管JUnit在这个领域并不孤单(第二最受欢迎的测试框架TestNG ,有331个条目),但它是迄今为止最主要的。

Mockito是基于模拟的测试的流行框架,也获得了413个条目,赢得了广泛的欢迎。 EasyMock是另一个模拟框架,在231个项目中排名第二。


Google的Guava框架正在成为主流-10,000个Java GitHub项目中有4.8%都在使用它 ( Tweet this )

Apache Commons 。 看过Spring之后,重要的是我们不要忽略Apache Commons,Apache Commons是该语言中最基本的库之一。 Commons-io和Commons-lang分别位于前10位,分别有519和504个条目,显示了它们的普遍性。

总体而言,Apache Commons在前100名中有13个库。Google的Guava框架本身提供了语言实用程序(有些类似于Commons中的工具),在483个条目上也做得很好,将其标记为Java的另一个重要构建块。

04-1

Sql&NoSql 。 近几年来NoSql和Big data一直是热门话题(有一些很好的理由),因此值得研究一下关系型和NoSql技术的实际使用情况。 那里最受欢迎的Sql DB是带有225个条目的MySql。 Hibernate ORM虽然本身不​​是数据库,但也很受欢迎,共有181个条目。 这是我们需要牢记的一个方面,因为GH是一个开放源代码存储库,所以我们可能会看到在封闭源数据集中对商业数据库(如Oracle)的偏向更大。


证明嗡嗡声:Hadoop在Java GitHub项目中比在Postgre SQL中更受欢迎 ( Tweet this )

Hadoop在168个条目上也做得很好,这表明在查看其实际使用情况数据时嗡嗡声是合理的。 透视一下,它具有比Postgre SQL(121个条目)更多的条目,Postgre SQL是其中最成熟的关系开放源代码数据库之一。

另一种大数据技术ElasticSearch也有110个项目条目。 令人惊讶地注意到,在Ruby中有1,085个条目的sqlite不在Java前100名中。

Android 。 对于GH上的移动开发人员,我们看到228个项目条目通过Maven消耗了Android。 尽管这可以表明不是很多移动项目都放在GH上,但它仍然有力地表明Java仍然是一种非常强大的服务器端语言。

对某些结果感到惊讶吗? 我们知道我们和其中一些人在一起。 查看下面GitHub上排名前100的Java库的完整列表,并在注释部分中让我们知道您的想法。 我们希望听到您的想法和问题。

参考: GitHub上最流行的10,000个Java项目–以下是 Takipi博客上我们JCG合作伙伴 Tall Weiss所使用的顶级库 。

翻译自: https://www.javacodegeeks.com/2013/12/githubs-10000-most-popular-java-projects-here-are-the-top-libraries-they-use.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 事件机制(四)

JavaScript 事件机制 1 什么是事件 JavaScript 使我们有能力创建动态页面。事件是可以被 JavaScript 侦测到的行为。 网页中的每个元素都可以产生某些可以触发 JavaScript 函数的事件。比方说,我们可以在用户点击某按钮时产生一个 onClick 事件来触发某个函数。事件…

php设计是什么意思,php – 什么是更好的设计?

我有以下课程:class User {public function setName($value) { ... }public function setEmailAddress($value) { ... }public function setUsername($value) { ... }public function getName() { ... }public function getEmailAddress() { ... }public function g…

JavaScript——根据数组中的某个值进行排序

我这里是根据次数进行倒叙,可根据自己情况进行修改 function sortKey(array,key){return array.sort(function(a,b){var x a[key];var y b[key];return ((x>y)?-1:(x<y)?1:0)}) }; 转载于:https://www.cnblogs.com/wangyang0210/p/10185494.html

Java防止Xss注入json_每日一题(java篇) 如何防止xss注入

1、XssAndSqlHttpServletRequestWrapper 类&#xff1a;import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; public class XssAndSqlHttpServletRequestWrapper extends HttpServletReques…

【工具相关】web-HTML/CSS/JS Prettify的使用

一&#xff0c;打开Sublime Text,代码如下面所示。 二&#xff0c;鼠标右键--->HTML/CSS/JS Prettify--->Prettify Code.代码如图所示&#xff0c;明显的代码变得整齐了。 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

centos 多个mysql,Centos中安装多个MySQL数据的配置实例

这篇文章主要为大家详细介绍了Centos中安装多个MySQL数据的配置实例&#xff0c;具有一定的参考价值&#xff0c;可以用来参考一下。感兴趣的小伙伴&#xff0c;下面一起跟随512笔记的小编小韵来看看吧&#xff01;注:本文档做了两个MYSQL实例,多个实例方法以此类推LINUX操作系…

MS SQL 分页存储过程

最近换了家新公司&#xff0c;但是新公司没有使用分页的存储过程。那我就自个写一个往项目上套 &#xff08;效率怎么样就不怎么清楚没有详细的测试过&#xff09; CREATE PROCEDURE [dbo].[pro_common_pageList](tab NVARCHAR(MAX) ,---表名PrimaryKey VARCHAR(100) , --主键I…

了解Spring Web初始化

几年前&#xff0c;我们大多数人习惯到处编写XML配置文件&#xff0c;甚至可以设置简单的Java EE应用程序。 如今&#xff0c;使用Java或Groovy来配置项目已成为一种首选方式–您只需要看一下Spring框架的其他版本中引入的Gradle或功能&#xff0c;就可以对此进行总结。 现在&…

STM32CubeMX HAL库串口+DMA数据发送不定长度数据接收

参考资料&#xff1a;1、ST HAL库官网资料 2、https://blog.csdn.net/u014470361/article/details/79206352#comments 一、STM32CubeMX配置外部时钟 注意在进行外部时钟配置时&#xff0c;即“High Speed Clock”和“Low Speed Clock”需配置成“Crytal/Ceramic Resonator&…

浅谈自记忆函数

浅谈自记忆函数 最近阅读《JavaScript忍者秘籍》看到了一种有趣的函数&#xff1a;自记忆函数。 简介 何为自记忆函数&#xff1f;书中提到&#xff1a; 记忆化&#xff08;memoization&#xff09;是一种构建函数的处理过程&#xff0c;能够记住上次计算结果 通过这句话可以…

pyqt5 qlabel无法显示图片_实战PyQt5: 011-单选框控件QRadioButton

单选框QRadioButton简介QRadioButton为单选按钮&#xff0c; 可以选中(打开)或者取消选中(关闭)。在一组单选按钮中&#xff0c;一次只能选中其中的一个按钮。选中或者取消选中QRadioButton&#xff0c; 都会发出toggled()信号。使用isChecked()可以查看是否选择了某个QRadioBu…

matlab数据游标不能使用,启用数据游标模式

文本解释器&#xff0c;指定为下列值之一&#xff1a;tex - 使用 TeX 标记子集解释字符。latex - 使用 LaTeX 标记解释字符。none - 显示字面字符。TeX 标记默认情况下&#xff0c;MATLAB 支持一部分 TeX 标记。使用 TeX 标记可添加下标和上标&#xff0c;修改字体类型和颜色&a…

MySQL 快速定位性能问题

一、性能查看几款小工具&#xff1a;Top 查看&#xff1a;观察 load average &#xff1a;1分钟&#xff0c;5分钟&#xff0c;15分钟的平均负载值1. us% 用户使用的 CPU 占比&#xff0c;如果 us% 太高&#xff0c; 极有可能索引使用不当。2. sy% 系统内核使用的CPU占比&#…

使用Google GSON:额外的赠品:第二部分

如果您错过了系列的第一篇文章 &#xff0c;我们将继续上一篇文章的“使用GSON ” &#xff0c;这里是link 。 因此&#xff0c;这里我们进行另一系列的讨论。 版本支持 如果要维护一个对象的多个版本以进行JSON转换&#xff0c;则Google GSON库具有不错的Since注释。 该注释可…

Python开发【第2节】【Python运算符】

Python语言支持以下类型的运算符: 算术运算符比较&#xff08;关系&#xff09;运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符运算符优先级1、算术运算符 假设变量a 10&#xff0c;变量b 21&#xff1a; 运算符描述实例加 - 两个对象相加a b 输出结果 31-减 - 得…

mybatis-plus分页查询_SpringBoot + MyBatisPlus 快速入门

Hello,大家好&#xff01;前面与大家分享了一次如何搭建Java项目脚手架&#xff0c;并且送给大家一个基础项目模板。那今天与大家分享如何使用这个基础项目&#xff0c;也就是快速上手 SpringBoots ➕ MyBatisPlus。 项目 / 目录结构 天津商业大学学院信息 这是一张天津商业大学…

php 获取每年的节假日,shell获取每年农历节日的日期

原创内容&#xff0c;转载请注明出处&#xff1a;https://www.myzhenai.com.cn/post/3711.html我打算自己写一个每年节日就自动在网站上展示灯笼的源码功能&#xff0c;但是这里最重要的是要获得每年春节、端午节、中秋节等节日的日期&#xff0c;因为要自己写这判断这些日期的…

AJAX跨域问题解决方法(1)——禁止浏览器进行跨域限制

思路&#xff1a;通过命令行修改浏览器启动参数&#xff0c;使得浏览器不进行跨域检查&#xff0c;从而允许跨域 方法&#xff1a;命令行参数启动浏览器后添加参数--disable-web-security 例&#xff1a;chrome --disable-web-security --disabl-web-security参数的作用是禁…

Android Studio 管理所有程序退出

import android.app.Activity; import java.util.ArrayList; import java.util.List;public class fa {public static List<Activity> activitieanew ArrayList<>();public static void add(Activity act){activitiea.add(act);//在创建活动是加入}public static v…

项目学生:Web服务集成

这是Project Student的一部分。 其他职位包括带有Jersey的 Web服务 客户端&#xff0c;带有Jersey的 Web服务服务器 &#xff0c; 业务层 &#xff0c; 具有Spring数据的持久性和分片集成测试数据 。 早些时候&#xff0c;我们成功地针对持久性/业务层&#xff08;使用嵌入式H…