github上java项目_GitHub上10,000个最受欢迎的Java项目-以下是他们使用的顶级库

github上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分别以519和504个条目排在前10名中,显示出它们的普遍性。

总体而言,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个条目)更多的条目,后者是最成熟的关系型开放源代码数据库之一。

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

github上java项目

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

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

相关文章

char java 回文_LeetCode刷题笔记(Java)---第1-18题

题目来自LeetCode文章目录全部章节1-18题19-40题41-60题61-80题81-100题101-120题121-140题1.两数之和2.两数相加3.无重复字符串的最长子串4.寻找两个有序数组的中位数5.最长回文子串6.Z 字形变换7.整数反转8.字符串转换整数 (atoi)9.回文数10.正则表达式匹配11.盛最多水的容器…

使用PostgreSQL使用Spring Boot和JPA构建基本应用

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 每个不平凡的应用程序都需要一种保存和更新数据的方法:可通过HTTP访问的资…

通过示例了解Apache Ignite Baseline拓扑

点燃基准拓扑或BLT表示群集中的一组服务器节点,这些服务器节点将数据持久存储在磁盘上。 其中,N1-2和N5服务器节点是具有本机持久性的Ignite集群的成员,这些集群使数据能够持久存储在磁盘上。 N3-4和N6服务器节点是Ignite群集的成员&#x…

Spring Boot集成测试中@ContextConfiguration和@SpringApplicationConfiguration之间的区别

即使同时使用ContextConfiguration和SpringApplicationConfiguration批注以及SpringJUnit4ClassRunner来指定如何加载Spring应用程序上下文,它们之间也存在细微的差异。 尽管ContextConfiguration在加载应用程序上下文方面表现出色,但没有充分利用Spring…

vert.x_使用vert.x 2.0,RxJava和mongoDB创建simpe RESTful服务

vert.x中断了将近半年后发表了一篇新文章。 在本文中,我们将快速了解如何开始使用vert.x,更有趣的是,如何使用RxJava简化异步系统的编程。 我们将涵盖以下主题: 使用Maven创建一个空的vert.x项目 导入IntelliJ并创建一个简单的H…

如何通过Rultor将Maven工件部署到CloudRepo

在我以前的文章中 ,我描述了如何在Amazon S3中设置私有Maven存储库并通过Rultor进行部署。 如果您熟悉管理Amazon Web Services(AWS), S3和AWS Identity and Access Management(IAM)的话,这是一…

java里面自行车的属性_11、Java基础知识

1、安装jdk,配置环境变量2、public class HelloWorld{publicstatic void main(String[] args){System.out.println(‘HelloWorld’);}}3、编译过程:通过javac编译java文件,生成.class文件,使用java命令运行class文件,注…

布线问题分支限界法java_大型布线:Java云应用程序缺少的技术

布线问题分支限界法java您是否曾经想过,为什么大多数Java框架中的依赖项注入仅用于本地进程内服务而不是分布式服务? 我最近在2013年EMC世界大会上遇到了Paul Maritz的主题演讲 (跳至第32分钟),这使我在云平台的背景下…

Spring Boot微服务,Docker和Kubernetes研讨会–第2部分

在上一篇文章中,我们使用SpringBoot和Docker创建了第一个微服务“ ProductService”。 在这一部分中,我们将详细介绍如何使用Spring Cloud,netflix库,API网关来管理多个微服务。 假设对于我们的订单管理系统,最小关系…

jboss5.1安全性配置_使用Java EE安全性和JBoss AS 7.x保护JSF应用程序的安全

jboss5.1安全性配置企业应用程序的一个常见要求是在登录页面后面保护所有JSF页面。 有时,您甚至希望在应用程序内部具有保护区,只有拥有特定角色的用户才能访问这些保护区。 Java EE标准附带了实现受某些安全性约束保护的Web应用程序所需的所有方法。 在…

分布式事务 camel_使用Camel在Amazon上构建分布式工作流应用程序

分布式事务 camel带有SNS-SQS的管道 工作流由以动态条件确定的特定顺序执行的独立任务组成。 工作流通常代表业务流程,例如电子商务商店中的订单处理步骤。 Amazon Web Services提供了用于构建分布式和可伸缩工作流应用程序的各种工具。 构建此类应用程序的一种方法…

比较Java REST文档框架

确定在记录REST API时选择哪种Java框架可能很麻烦。 在本博文中,我们将简要比较我们自己使用的REST Web服务的三种文档框架,以及它们如何与Spring框架(这是Foreach最常使用的Java框架)集成。 这些是RESTful API建模语言&#xff0…

jaVa游戏三国志英杰传,《三国志英杰传》到底是怎样的一款游戏

原标题:《三国志英杰传》到底是怎样的一款游戏介绍作为PC平台上经典的战棋策略类游戏,英杰传系列可谓把这一类型游戏在战略性和资源获取上的精髓发挥的淋漓尽致。系列初代的《三国志英杰传》诞生在1995年的DOS系统上,虽然我接触英杰传时已经是…

jvm 内存镜像_镜像镜像–使用反射在运行时查看JVM内部

jvm 内存镜像开发人员:Takipi会告诉您何时新代码在生产中中断– 了解更多 我们都习惯于在我们的日常工作中直接或通过利用反射的框架来运用反射。 它是Java和Scala编程的主要方面,它使我们使用的库可以与我们的代码进行交互,而无需对其进行硬…

谁去过顽皮,谁去过尼斯? 圣诞老人为您提供Java 11建议!

有没有想过圣诞老人如何为世界各地的孩子们送上节日礼物? 有20亿个孩子,每个孩子都有自己的愿望清单,他会在24小时内完成。 这意味着每个孩子平均需要43微秒,他需要检查每个孩子是否顽皮或好。 您无需再怀疑了。 我会透露这个秘密…

php时间格式函数,PHP函数之日期时间函数date()使用详解_php基础_脚本

$ttime();echo date("Y-m-d H:i:s",$t);第一个参数的格式分别表示:a - "am" 或是 "pm"A - "AM" 或是 "PM"d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"D - 星期几…

play框架配置 拦截器_如何使用Play框架为https配置SSL证书

play框架配置 拦截器我花了几个小时试图使它起作用,最后,问题是我自己没有使用keytool生成CSR(证书请求)。 当我尝试通过https访问Play时,我一直收到此错误: javax.net.ssl.SSLPeerUnverifiedException&a…

matlab 球坐标绘图,MATLAB绘制地图

1使用向量绘制地图1.1绘制全球海岸线向量数据可以表示一个地图。这种向量存在的形式是一系列的经纬度或投影坐标对,它们代表一个点集、一个线条或者多边形。例如,描绘出行政区域边界的点、公路系统、城市的中心或者以上三个集合放在一起,都可…

php 有 stringbuffer,String、StringBuffer、StringBulider三者介绍

三者都实现了CharSequence接口,因此CharSequence可认为是一个字符串的协议接口1.String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁;我们常常定义的时候 S…

php生成网页按钮,JavaScript实现自动生成网页元素功能(按钮、文本等)_javascript技巧...

创建元素的方法:1、利用createTextNode()创建一个文本对象2、利用createElement()创建一个标签对象3、直接利用容器标签中的一个属性:innerHTML-----本质上改该标签容器中的“html代码”,不是我们认为的对象树的操作详解代码:这是…