2019独角兽企业重金招聘Python工程师标准>>>

Java开发者所使用的Java语言已经很成熟且高度进化,目前常常要面临的问题是何时写新代码——是追随每个人都在讨论的新的热门技术,还是坚持使用经过考验证明可靠的库?

事实上,由于很大一部分的Java应用程序是以盈利为目的的,以至于我们很难分辨出传闻中的新框架的实际使用量。对于社区用户和贡献者围绕的框架,这是决定它继续成功和持续发展的最大因素之一。

我们决定通过分析托管在世界上最大的开放仓库——GitHub的Java项目的数据来看看Java开发者到底使用的是哪些库。

在我们前一篇文章中介绍了我们在GitHub研究出的结果:JavaScript、Ruby、java前100个库。现在让我们挖掘数据,特别是java。

方法

为生成数据集,我们需要10000个Java项目。这些项目偏向那些在社区里最受欢迎的。这样的限定是因为它们相对重要。我们分析被GitHub上的Java项目广泛用于定义依赖pom.xml文件,然后将它们分组。最后结果很有趣。

结果

前100的JavaScript、Ruby、Java库的完整列表

日志(Loggin)。最流行的Java库是slf4J——一个日志门面框架,有3068项。可以看出GH上的Java开发者已经完全拥抱与日志引擎解藕的范式,都很统一地使用slf4j来做。

然而slf4j本身不是一个日志引擎。看看排在前面的日志引擎同样有用。log4j似乎是“获胜者”,有891个项目使用了它。接着是Logback有340个。虽然log4j的使用量看起来体面一些,但还是少于半数的项目使用log4j。slf4j的简单实现排名第三,有174的使用量。

当今最闻名Java库是slf4J,1000个项目中有30.7%的使用率。

Spring。尽管Spring可能被看作是一个成熟的而非一个时髦框架,它仍然有可观的使用率,在前100名中占据了15个位置。由于Spring是一个超级框架,所以,看看它的哪些组件用得最多。Spring-test以376项成为Spring框架最常用的框架(在core库后)。其后是为设计健壮Web应用的web-mvc,有277项。紧跟web功能,我们看到web-orm有218项,突出Spring的关键使用场景是搭建以DB为后端的Java web应用。

TDD。和Spring一样前排的还有JUnit,有3068项。这真实的展现了测试驱动开发(Test Driven Development)在Java世界的深入影响。看来,在今天,如果Java程序员发布代码,单元测试是绝对必须的。提这个是非常有必要的,虽然在这方面不只是有最有统治地位的JUnit(TestNG,排名第二的流行的测试框架,有331项)。

Mockito。一个流行的模拟测试框架,同样获得了广泛的吸引力——有413项。EasyMock,另一个模拟框架,在本分类中排名第二,有231项。

Google的Guava框架正在成为主流,GitHub上10000个Java项目有4.8%使用它。

Apache Commons。看了Spring,我们就不能忽视众多语言级上的基础库——Apache Commons。Commons-io和Commons-lang都排前10,分别有519项和504项。显示出他们非常的流行。

整个Apache Commons有13个库排在前100。Google的Guava框架,也提供语言级的工具(有些与Commons相似),同样非常优秀,有483项,使它能成为别一个关键的Java构建块(building block)。

Sql与NoSql。介于在最近几年NoSql和大数据(Big data)是热门话题(好理由),看看关系型数据库和NoSql技术的实际使用率,还是值得的。最流行的Sql DB是MySql,有225项。Hibernate ORM本身不是数据库,也相当的流行,有181项。在DB方向,我们需要注意到的是在GH这么一个开源仓库里,我们看到一个稍强的商业数据库,它是闭源的数据库Oracle。

证明传闻(the buzz)是正确的:Hadoop在GitHub上的Java项目中比Postgre SQL更流行

Hadoop的表现也不错,有168项。实际数据证明传闻是真的。要正确看待,Hadoop比Postgre SQL(121项)具有更多的项数。Postgre SQL是最成熟的开源关系型数据库之一。

ElasticSearch,另一个大数据技术,有110项。出乎意料的是sqlite在Ruby中有1085项,但排Java的100名以外。

Android。在GH上的移动开发者,我们看到有228项是使用Maven来构建Android。尽管这表明不是很多移动项目放在GH上,但它仍然是一个强用力的指标,Java仍然是非常强大的服务器端语言。

有些结果是不是很意外?我们对其中一些结果是有些意外。看过在GitHub上排名在前100的Java库后,请在评论处告诉我们你所想的。我们喜欢聆听你的想法和提问。

翻译后语

申明:我不确定这个数据的准确性,我也想找到他们是如何统计分析的。

翻译这文章有吹捧Java的嫌疑,同时容易引起大家在语言的无用的讨论。这都不是我的目的。实际上,我们应该看到作者这种拿数据说明的精神,然后把作者那种分析问题的思维方式学下来。这才是重点。

转载于:https://my.oschina.net/zjzhai/blog/226273

GitHub上最流行的10000个Java都使用了哪些库?相关推荐

  1. 细数GitHub上既有趣又有用的Java项目Top14

    转载:http://news.51cto.com/art/201901/591528.htm 细数GitHub上既有趣又有用的Java项目Top14 在 GitHub 上有很多项目,能够帮我们优化手头 ...

  2. GitHub上的编程语言:JavaScript领衔Java次之

    最近,Linguist项目统计了代码托管网站GitHub上各类编程语言的热度.下图展示了自2008年以来各编程语言的排名状况及它们的相对热度. \\ \\ 从上图中可以看出,Perl已经不再流行,C# ...

  3. GitHub上那些值得一试的JAVA开源库--转

    原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...

  4. GitHub上反对996,这些程序员都来自哪里?

    996工作制是指工作日早9点上班,晚上9点下班,中午和晚上休息1小时(或不到),总计10小时以上,并且一周工作6天的工作制度,是非常辛苦且严重违反劳动法践踏人权的工作制度.而作为互联网行业的IT程序员 ...

  5. 解决本地从 github上传或下载代码时每次都需要输入用户名和密码

    第一步,在本地执行如下命令 git config --global credential.helper store 第二步,在执行上传或下载时,输入用户名和密码即可,以后就不用输了

  6. GitHub 上 57 款最流行的开源深度学习项目【转】

    GitHub 上 57 款最流行的开源深度学习项目[转] 2017-02-19 20:09 334人阅读 评论(0) 收藏 举报 分类: deeplearning(28) from: https:// ...

  7. 近几个月Github上最热门的Java项目一览

    今天逛了逛Github,顺手精选出了一下近几个月以来Github上最热门的12个Java项目.如果遇到自己感兴趣的开源项目,不妨去学习一下哦! 1. java-design-patterns(Star ...

  8. Github上Python超越Java,人工智能程序员大热

    前言 GitHub 2017年年度报告发布:有70万来自中国的新用户加入,占据Github新人总数70%.Python超越Java成为第二最受欢迎的语言,TensorFlow依然是最受欢迎的深度学习库 ...

  9. GitHub 上有哪些优秀的项目?

    首先,这个神仙项目请你pick: https://github.com/sindresorhus/awesome 各领域各语言资源大合集 另外,可以关注GitHub的每日榜单,看看大家都在关注些什么( ...

最新文章

  1. 现在社交APP发展如何?
  2. 关于路径搜索的算法, 可能用到
  3. linux下文件夹压缩解压.tar , .gz , .tar.gz , .bz2 , .tar.bz2 , .bz , .tar.bz , .zip , .rar
  4. Android应用基础知识(4)---Android处理运行时变更
  5. MFC开发IM-设置 static的背景色和字体色
  6. 关于TTThumbsViewController加载更多
  7. android gettext方法,方法getText()必须从UI线程(Android Studio)调用
  8. 51单片机初学3-从零开始制作一款电子时钟
  9. [Spark机器学习]基于Spark 2.0 机器学习之推荐系统实现
  10. 模式识别--绪论 什么是模式识别?模式识别的主要方法及具体应用
  11. C# StreamReader 读取ANSI编码文本文件乱码
  12. Luat模块应用手册-示例-Luat DEMO-长连接超低功耗方案
  13. IP地址分类/IP地址10开头和172开头和192开头的区别
  14. ASP.NET CORE 内置的IOC解读及使用
  15. 【Python字符串】
  16. 蓝鲸智云-腾讯给广大运维工作者的福利
  17. 计算机 绘图 教案,计算机绘图教案.doc
  18. 社群运营——你专属的新媒体流量入口! | 黎想
  19. android_使用adb安装app包的详细步骤和可能遇到的问题(apk文件)
  20. SQL Server研习录(29)——sql server 设置列自增长

热门文章

  1. 微信小程序之页面跳转
  2. 易信七夕调查 八成情侣玩转社交软件
  3. rundeck 内存溢出
  4. libqrencode 3.4.3 发布,二维码的C解析库
  5. hdu 1709 (母函数,有些特殊)
  6. 别告诉我你懂Javascript
  7. java 爬 维基百科_爬取维基百科词条
  8. FP-Growth算法
  9. 如何选择好的BI系统工具
  10. 大数据分析的方法有哪些