Java开发者使用的Java语言已经成熟且高度进化,今天经常面临的问题是何时编写新代码——是跟随大家热议的新技术,还是坚持久经考验的技术经过验证的可靠库?事实上,由于有如此多的Java应用程序都是为了盈利,所以很难说传闻中的新框架到底有多少被使用。对于用户和贡献者社区所围绕的框架,这是决定其持续成功和持续发展的最大因素之一。我们决定通过分析GitHub(世界上最大的开放存储库)上托管的Java项目的数据来了解Java开发人员正在使用哪些库。在我们之前的文章中,我们介绍了我们在GitHub上的研究成果:JavaScript、Ruby、java的前100个库。现在让我们深入研究数据,特别是java.lang.方法要生成数据集,我们需要10000个Java项。这些项目偏向于那些在社区中受欢迎的人。这种资格是由于它们的相对重要性。我们分析GitHub上Java项目广泛使用的pom.xml文件来定义依赖,然后进行分组。***原来很有趣。前100个JavaScript、Ruby、Java库日志记录(Loggin)的完整列表。最好的Java库是slf4f——一个有3068个条目的日志外观框架。可见GH上的Java开发者已经完全接受了与日志引擎解耦的范式,并且都统一使用了slf4f。然而slf4f本身并不是一个日志引擎。查看顶级日志记录引擎也很有用。log4j似乎是“赢家”,有891个项目使用它。然后有340个Logback。虽然log4j的使用看起来还过得去,但是只有不到一半的项目使用log4j。slf4f的简单实现以174次使用排名第三。当今最著名的Java库是slf4f,在1000个项目中使用率为30.7%。春天。虽然Spring可能被看作是一个成熟的框架而不是一个新潮的框架,但是它的使用率还是相当可观的,在前100名中占据了15个位置。既然Spring是一个超级框架,那么我们来看看它的哪些组件被使用最多。Spring-test以376项成为Spring框架中最常用的框架(仅次于核心库)。紧随其后的是web-mvc,用于设计具有277个项目的健壮的Web应用程序。在web函数后面,我们看到web-orm有218项,突出了Spring的关键使用场景是构建以DB为后端的Javaweb应用。测试驱动开发。和Spring一样,前排有JUnit,有3068项。这确实显示了测试驱动开发在Java世界中的深远影响。看来在今天,如果一个Java程序员发布代码,单元测试是绝对必须的。重要的是要提到这一点,尽管在这里占主导地位的不仅仅是JUnit(TestNG,第二流行的测试框架,有331个条目)。莫基托。一个流行的模拟测试框架,也获得了广泛的吸引力——有413个条目。另一个模拟框架EasyMock以231个条目在该类别中排名第二。谷歌的Guava框架正在成为主流,GitHub上的10,000个Java项目中有4.8%使用它。阿帕奇公地。看完Spring,我们不能忽视语言层面的众多基础库——ApacheCommons。Commons-io和Commons-lang均进入前10,分别有519项和504项。显示他们有多受欢迎。整个ApacheCommons有13个库在前100。Google的Guava框架,也提供语言级别的工具(有些类似于Commons),也很不错,有483项,成为Java的又一个关键构建块(buildingblock).SQL和NoSql。由于NoSql和大数据是近年来的热门话题(有充分的理由),因此值得研究一下关系数据库和NoSql技术的实际使用情况。最新的SqlDB是MySql,有225项。HibernateORM本身不是数据库,而且相当流行,有181项。在DB方向,我们需要注意的是,在GH这样的开源仓库中,我们看到了稍微强一点的商业数据库,也就是闭源数据库Oracle。证明嗡嗡声(嗡嗡声)是正确的:在GitHub上的Java项目中,Hadoop比PostgreSQL更受欢迎Hadoop也做得很好,有168个条目。实际数据证明谣言是真的。换句话说,Hadoop的条目比PostgreSQL(121个条目)多。PostgreSQL是最成熟的开源关系数据库之一。另一种大数据技术ElasticSearch有110项。令人惊讶的是,sqlite在Ruby中有1085项,但它排在Java的100之外。Android。在GH的MobileDevelopers上,我们看到228个项目使用Maven构建Android。虽然这表明没有多少移动项目放在GH上,但这仍然是一个强有力的指标,表明Java仍然是一门非常强大的服务器端语言。有些结果令人惊讶吗?我们对其中一些结果感到有些惊讶。在查看了GitHub上排名前100的Java库之后,请在评论中告诉我们您的想法。我们喜欢听取您的想法和问题。译后声明:我不确定这个数据的准确性,我也想知道他们是如何统计的。翻译这篇文章有吹捧Java之嫌,容易引起对语言无用的讨论。这不是我的目的。其实我们应该看到作者用数据说明的精神,进而学习作者分析问题的思维方式。这才是重点。原文:http://www.takipiblog.com/2013/11/26/githubs-10000-most-popular-java-projects-here-are-the-top-libraries-they-use/翻译链接:http://my.oschina.net/u/181141/blog/226273
