Github最流行的10,000个Java项目使用的类库
前言
作为Java开发人员,总是需要面临这门不断成熟、高速改进中的语言。开发人员每次开始新项目时总会面临一个困境——是使用大家都在讨论的、全新的热门类库,还是使用经久考验的类库?
译注:
- 这个问题说白了,是那些经验不足的程序员面临的问题。有经验的工程师会审视需求,做足功课之后,根据优缺点来平衡使用什么类型的类库。
- 还有项目的进度需求是什么样子的?
- 项目内部人员结构?地理位置?
- 公司的角度来看一般倾向于保守了。
现状是大多数的Java应用程序是商业化的,所以很难判断那些被不断谈论的类库(框架)是否真正被一些应用程序实际使用。然而,弄清这一点又是类库或者是框架取得成功的关键条件,那就是在开发社区里该类库的使用和贡献状况。
译注:最明显的应当属Hadoop了,许多年前还不是很火的技术,由于Yahoo、Facebook等公司的贡献就变得不一样了。
这里我们决定用数据来说话。通过分析在Github最流行的Java项目实际使用的类库,进行统计和梳理。
译注:数据为王,又来了。实际上数据到处都是,只不过有没有如何使用的眼光了。
评判方法
我们根据Github社区内用户最喜欢的项目作为是否为加入候选列表的评判条件,得到标题中提到的10,000个最流行的Java项目。同时,我们分析了大多数项目几乎都使用的pom.xml ,分析这些项目依赖哪些类库(框架)。最后,把这些分析数据归类得出来非常有趣的结果。
译注:对pom.xml 不了解的人去请看看Maven吧。
评估结果
最终结果——JavaScript、Ruby和Java最受欢迎类库Top100:
Logging:最流行的Java日志类库是slf4j——一个façade(门面)日志框架。统计结果有3068个,同时表明Github上的Java项目的开发者已经全盘接受使用解耦方式来实现的日志框架,即日志操作接口与实际输出日志的引擎之间的松散耦合。
译注slf4j是一个日志的门户框架,它并没有实际的输出日志的能力所以你需要制定内部是使用log4j或者logback。好处是你可以通过配置变化最终的日志输出类库提高项目的可扩展性。
同时,由于slf4j本身不是一个日志引擎,所以我们还是应该观察最流行的日志引擎。冠军是log4j——891个项目正在使用;亚军是Apache Commons-logging——334个项目在使用它,但是这个数字还不及Log4j使用量的一半;Sfl4j是铜牌获得者,它是一个简单的日志框架——174个项目正在使用它。
“现在,最受欢迎的Java函数库是slf4j——1万个项目中有30.7%使用了slf4j。”
译注:
- 我还是很惊奇log4j还在被使用,即使大家知道它有性能问题。所以这里推荐大家使用以下LogBack,Apache Log4j 2。
- 另外很好奇的是为什么不统计日志收集分析的类库那?难道只记日志,不收集以及分析吗?
Spring:Spring可能被视为更加成熟以及不是那么“性感”的框架。但是当你发现在TOP 100 项目中使用了它的15个框架的话,你就会经验它的巨大的被使用量。 当然Spring是属于一种雨伞式的框架,那么深入进去发现它的哪个部分子框架被使用的最多就变成有趣的事情了。Spring-test是被使用最多的框架(当然除了核心类库之外)—— 376个项目使用了它。(译注:更多的是在Web开发项目中使用)其次,Web-mvc是用来设计开发健壮的Web系统—— 277个项目使用了它。最后是web-orm,用来建立使用后置数据库方式的Java Web系统——218个项目使用了它。
TDD(测试驱动开发):JUnit毫无疑问的是这个领域的排头兵——有3068个项目使用。这也反映了测试驱动开发对Java领域开发的深刻影响。貌似如果你是一个Java开发者提交代码的同时也需要单元测试变成了一个必须的需求。当然需要注意的是JUnit在这个领域里面不是孤单的,TestNG排在第二位——331个项目在使用它。
Mockito:Mockito 是一个流行的模拟测试框架——有413个项目正在使用,是该领域的老大。紧随其后的是EasyMock,另一种模拟测试框架——有231个项目正在使用。
译注:
- TDD这个话题很好玩,我好奇的是这些项目的测试用例的覆盖率及Unit testing coverage。通过这个侧面也可以很好的了解它的质量。
- 还有这些项目的Good Practice是先写接口以及测试用例然后再开发,还是先开发再写测试用例那?
好了大家不要喷我哟,就让我小小邪恶一把吧。
Apache Commons:既然看到了Spring,那么就不能忽略Apache Commons。它是Java开发领域中不可或缺的最重要基础类库之一。 Commons-io 以及 Commons-lang 分别都有519和504个项目在使用它们。这些数据标识着它们在实际开发中非常流行。
与此同时,Apache Commons总共在Top 100 类库中占据了13席。Google的Guava框架也表现得十分出色—— 有483个项目正在使用它,这显示了它在Java开发领域中的重要性。
译注:我觉得作者想表示的类别应该是通用类库,但是直接使用Apache Commons感觉上有点不像分类了。
Sql和NoSQL:随着NoSql以及大数据这几年逐渐成为热门话题,讨论关系型数据库以及NoSql技术变得很时髦。最流行的关系型数据库是MySql——
225个项目在使用它。Hibernate一个著名的OR mapping(对象关系映射)工具,虽然它本身不是数据库却也相当流行——181个项目在使用它。请记住Github是一个开源代码仓库,所以对于商业的数据库产品,例如Oracle,更有可能出现在一些私有项目中。
译注:作者这么说估计是为了避免又有人跳出来讨论为什么没有Oracle什么之类的了。
Hadoop: Hadoop的表现ye十分出色—— 168个项目在使用它。为了对比,Prostgre Sql——一个流行的成熟的开源的关系型数据库,有121个项目在使用它。这样的数据对比验证了上面的说法。
ElasticSearch:ElasticSearch作为另外一个大数据项目——有110个项目在使用它.。令人惊奇的是,Sqlite在Ruby开发领域中——有1085个项目在使用它,但是它并不属于Java Top 100的开发类库。
Android:对于移动设备开发领域的开发者,我们在Github中发现了228个项目使用了Android和Maven。这说明没有很多移动项目托管在Github上,另一方面也标志着Java始终占据服务器端软件主流。
对结果你感到惊奇?那么就来观看完整的在Github上Top 100 Java类库吧,同时也让我们知道你对于这样的结果有什么想法。我们希望听见你的想法以及问题。
原文链接: takipiblog 翻译: ImportNew.com- Andy.Song
译文链接: http://www.importnew.com/7743.html
[ 转载请保留原文出处、译者和译文链接。]
Github最流行的10,000个Java项目使用的类库的更多相关文章
- 得到JAVA项目根文件夹
获得的相对路径 说明:相对路径(这并不说明什么时候相对谁)可以通过以下来获得(无论是一般java项目或web工程) String path = System.getProperty("use ...
- 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架
20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...
- GitHub上那些值得一试的JAVA开源库--转
原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...
- GitHub上那些值得一试的JAVA开源库
作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,Spring,Hibernate等等.除了这些,你可能还会fork或Star一些其他的开 ...
- 28款GitHub最流行的开源机器学习项目
现在机器学习逐渐成为行业热门,经过二十几年的发展,机器学习目前也有了十分广泛的应用,如:数据挖掘.计算机视觉.自然语言处理.生物特征识别.搜索引擎.医学诊断.DNA序列测序.语音和手写识别.战略游戏和 ...
- 10个用Java谋生非常有趣的方式
令我惊讶的是,有些人觉得编程并不令人兴奋——只将它当作是一份枯燥的工作.不过,虽然可能的确有很多无聊的编程工作,但这并不意味着你不得不接受这些工作中的一个.程序员有各种各样的机会,运用他们的技能去做一 ...
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
- GitHub上最受欢迎的 5 大 Java 项目
1. Mockito Mockito 并不是无酒精混合饮料的意思.Mockito 是一个针对 Java 的 mocking 框架.它与 EasyMock 和jMock 很相似,但是通过在执行后校验什么 ...
- 2017年11月GitHub上最热门的Java项目出炉
2017年11月GitHub上最热门的Java项目出炉~ 一起来看看这些项目你使用过哪些呢? 1分布式 RPC 服务框架 dubbohttps://github.com/alibaba/dubbo S ...
随机推荐
- delphi 线程教学第五节:多个线程同时执行相同的任务
第五节:多个线程同时执行相同的任务 1.锁 设,有一个房间 X ,X为全局变量,它有两个函数 X.Lock 与 X.UnLock; 有如下代码: X.Lock; 访问资源 P; ...
- 初步配置阿里云ECS服务器
阿里云服务器配置记录01 购买阿里云学生服务器9.9元每月 创建ubuntu64位实例系统,注意必须添加安全组设置才可远程登入(设置课访问端口及IP范围 putty 软件在windows10下远程登入 ...
- PHP AJAX 简介
AJAX 简介 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX 是什么? AJAX = Asynchronous JavaScript and XML. AJAX ...
- Sybase identity 字段
1.identity Oracle, DB2, pgSQL中都有sequence的概念,这个概念比Identity先进很多,在Sybase中没有Sequence对象,与之相对应的是Identity 2 ...
- linux系统性能监控--I/O利用率
尽管整体的处理器速度. 内存大小以及 I/O执行速度在不断提高,但 I/O操作的吞吐率和延迟性能仍然要比等价的内存访问操作低多个数量级.另外,由于许多工作负荷都拥有重要的I/O组件,I/O处理很容易成 ...
- SOAP Binding: Difference between Document and RPC Style Web Services
SOAP Binding: Difference between Document and RPC Style Web Services 20FLARES Twitter 1Facebook 9Goo ...
- Python实现八大排序算法(转载)+ 桶排序(原创)
插入排序 核心思想 代码实现 希尔排序 核心思想 代码实现 冒泡排序 核心思想 代码实现 快速排序 核心思想 代码实现 直接选择排序 核心思想 代码实现 堆排序 核心思想 代码实现 归并排序 核心思想 ...
- 百度编辑器UEditor常用设置函数
最近在研究UEditor的使用,下面是附上传送门: 这是API文档http://ueditor.baidu.com/doc/ 这是下载地址http://ueditor.baidu.com/websit ...
- 微信小程序基础之新建的项目文件图解
昨天发布的文章,感觉对于学习不够直观,所以今天重点在图标上进行了详细的对应介绍,稍后会尝试开发小程序控件的使用.转载请标注出处,谢谢!
- Intellij IDEA 插件开发之自建插件仓库
Intellij IDEA 有一个自己的官方的插件仓库,但是当我们的开发的 Intellij IDEA 的插件不能够对外公开时,我们就需要搭建自己的 Intellij IDEA 的插件仓库.前不久我们 ...