`
kuyuyingzi
  • 浏览: 53824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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库后,请在评论处告诉我们你所想的。我们喜欢聆听你的想法和提问。

原文链接:http://my.oschina.net/u/181141/blog/226273

分享到:
评论

相关推荐

    2-35-git&github-版本控制服务器.doc

    Git是一款免费、开源的分布式... Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    java-atividade-07-sala-eduardomassami:GitHub Classroom创建的java-atividade-07-sala-eduardomassami

    转换Tabara产品的外观,将其分类为br.... 封装类的重要产品。 Aprivtos privados e os metodos设置了para cada atributo。 塔贝拉·德·卡罗 Cor Ano Valor do Carro Amarelo 2010 10000.00

    java8stream源码-Third-Year-Project:第三年项目

    java8流源码第三年项目 介绍 这个 github 存储库是 Darren-B312 (Darren Butler) 和 MrSkillage (Conor Rabbitte) 在“信息技术专业实践”模块中的第三年项目的合作项目。 创建的程序是使用 Java 编程语言的 Tic-Tac...

    java8stream源码-Third_Year_Project:第三年_项目

    java8流源码第三年项目 介绍 这个 github 存储库是 Darren-B312 (Darren Butler) 和 MrSkillage (Conor Rabbitte) 在“信息技术专业实践”模块中的第三年项目的合作项目。 创建的程序是使用 Java 编程语言的 Tic-Tac...

    基于各种机器学习和深度学习的中文微博情感分析项目源码.zip

    Bert使用的是哈工大的预训练模型, 用Bert的[CLS]位输出在一个下游网络上进行finetune。预训练模型需要自行下载: github下载地址: ymcui/Chinese-BERT-wwm baidu网盘: ...

    SocketTool(很好用的socket测试工具)

    SocketTool调试软件是一款网络TCP/UDP通信调试工具,本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。 它可以帮助网络编程人员、网络维护人员检查...★ 支持数据循环发送,同一内容可自动发送1次至10000次

    omarxadel:欢迎来到我的GitHub个人资料

    Over 10000 lines :Java,C和JavaScript Over 1000 lines :SQL,HTML,CSS,Python,TypeScript和PHP Familiar :汇编,Arduino,MATLAB和Dart 我还可以使用许多tools和frameworks例如: NodeJS(后端...

    BeeCP:高性能JDBC连接池

    | BeeCP:轻量级高性能JDBC池 MavenartifactId(Java7) < groupId>com.github.chris2018998</ groupId> < artifactId>beecp < version>3.0.9 MavenartifactId(Java...1:一百万个Mutil线程查询(10000个线程x

    AkkaGuice:Playframework 的 Akka Guice 集成

    Akka Guice 集成安装将以下内容添加到您的 build.sbt: resolvers += " release ... 添加行(插件前面的数字是您播放应用程序内的加载顺序): 10000:akkaGuice.AkkaGuicePlugin在 Global.java 中使用 AkkaGuiceModu

    HamsterProject:测试要求仓鼠

    速度(字节/秒) 所有这些(连同文本形式的实现功能)都应发布在github上,并附加以下内容: /状态页在正在运行的应用程序中的外观的屏幕截图命令执行结果的屏幕快照ab –c 100 –n 10000 页面/状态的另一个屏幕截图...

    NettyHttpServerForHarmstercoders:需要在netty框架上实现http服务器

    bytes、receive_bytes、速度(字节/秒) 所有这些(连同文本形式的实现功能)都应该发布在 github 上,附在下面: / 状态页面在工作应用程序中的外观截图命令执行结果截图 ab - c 100 - n 10000

    netty_http_status

    bytes、速度(字节/秒) 所有这些(连同文本形式的实现功能)都应该发布在 github 上,附在下面: / 状态页面在工作应用程序中的外观截图命令执行结果截图 ab - c 100 - n 10000 页面/状态的另一个屏幕

    Percolates_UnionFind:斯坦福大学课程设置

    Documents\GitHub\Percolates_UnionFind>java PercolationStats 2 10000 mean = 0.66595 stddev = 0.013949492449245482 95% confidence interval = 0.6636350837986437, 0.6682649162013564 编写程序以通过蒙特卡洛...

    StockDataXueqiu:stock day line data 雪球股票K线api

    <groupId>com.github.s-lion-h</groupId> <artifactId>StockDataXueqiu</artifactId> <version>-SNAPSHOT</version></dependency>##生成雪球urlDataUrl dataUrl=new DataUrl("SH600011","1451577600000","1529

    数学公式-区间比较算法-判断 交并关系

    数学公式-区间比较算法 比较 区间之间的关系 开区间、比区间 ex.(100, 10000); (10, 25] 判断 数值 是否在 区间(ex.(100,...常见的使用案例是 判断unixTimeStamp 时间是否在制定时间范围内; 或者判断金额是否符合要求

Global site tag (gtag.js) - Google Analytics