随着Java开发人员正在使用既成熟又高度发展的语言来工作,无论何时编写新代码,我们都将面临一个持续的难题–使用大家都在谈论的热门新技术,或者坚持使用久经考验的库?
由于Java应用程序的很大一部分是商业性质的,因此有时很难将围绕新框架的嗡嗡声与实际使用它的项目数量分开。 这很重要,因为围绕框架的用户和贡献者社区是确定其持续成功和发展的最重要因素之一。
我们决定使用基于数据的方法,通过分析开发人员在全球最大的Java项目开放存储库GitHub上实际使用的 Java项目,来对此有更深入的了解。
在上一篇文章中,我们介绍了GitHub研究项目的主要成果以及JavaScript,Ruby和Java的前100个库 。 现在,让我们深入研究数据,尤其是分析Java。
该方法
为了生成我们的数据集,我们查询了10,000个Java项目,并偏向于社区中最喜欢的项目,以此作为相对重要性的有力指标。 我们使用pom.xml来定义依赖关系,该文件被GH上的绝大多数Java项目使用。 然后,我们将其分析并归类。 结果真的很有趣。
结果
完整列表– JavaScript,Ruby和Java的前100个库
正在记录 。 最受欢迎的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的另一个重要构建块。
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库的完整列表,并在注释部分中让我们知道您的想法。 我们希望听到您的想法和问题。
翻译自: https://www.javacodegeeks.com/2013/12/githubs-10000-most-popular-java-projects-here-are-the-top-libraries-they-use.html