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 ...
随机推荐
- jQuery AJAX 简介
AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新. jQuery AJAX 实例 使用 jQuery AJAX 修改文本内容 尝试一下 » 什么是 AJAX? A ...
- Mac OS: How to keep network connection alive after sleep
Do the following: Find out what the network interface is for your wifi. Mine is "en1" for ...
- DB 查询分析器7.01 新增的保存执行结果到多个文件功能
1 引言 中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员)推出的个人作品----万能数据库查询分析器,中文版本DB 查询分析器.英文版本< ...
- 【mybatis深度历险系列】深入浅出mybatis中原始dao的开发和mapper代理开发
使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法.mybatis在进行dao开发的时候,涉及到三姐妹,分别是SqlSessionFactoryBuilder ...
- 网站开发进阶(四十四)input type="submit" 和"button"的区别
网站开发进阶(四十四)input type="submit" 和"button"的区别 在一个页面上画一个按钮,有四种办法: 这就是一个按钮.如果你不写ja ...
- python 3.3.3 字面量,正则,反斜杠和原始字符串
两个不起眼但是比较重要的设定 Python str类型的字面量解释器 当反斜杠及其紧接字符无法构成一个具有特殊含义的序列('recognized escape sequences')时,Python选 ...
- EBS技术开发之VPD策略
VPD (虚拟专用数据库的简称),主要作用是根据运行环境的上下文,隐式的添加条 件. 好处是在数据库层解决细粒度的角色权限访问,避免在中间层写大量代码:坏处 是数据屏蔽的逻辑太隐蔽了,对于分析查找问题 ...
- CSDN 支持Markdown写文章了!
开源中国等其他技术博客很早就支持markdown格式写文章了,今天发现csdn竟然也可以了,不仅支持而且可以在线预览,本地导入导出,远程导入. 这些对于程序员写东西都非常好用,不用总是花时间来排版了. ...
- 21 viewPager--- hzScrollView ----llContainer
结构: MainActivity.java package com.qf.day21_hsviewpagerfragment_demo5; import java.util.ArrayList; im ...
- 11 吐司 Toast 代码案例
package com.qf.day11_toast_demo05; import android.app.Activity; import android.graphics.Color; impor ...