本文由 ImportNew - Andy.Song 翻译自 takipiblog。欢迎加入翻译小组。转载请见文末要求。

前言

作为Java开发人员,总是需要面临这门不断成熟、高速改进中的语言。开发人员每次开始新项目时总会面临一个困境——是使用大家都在讨论的、全新的热门类库,还是使用经久考验的类库?

译注:

  1. 这个问题说白了,是那些经验不足的程序员面临的问题。有经验的工程师会审视需求,做足功课之后,根据优缺点来平衡使用什么类型的类库。
  2. 还有项目的进度需求是什么样子的?
  3. 项目内部人员结构?地理位置?
  4. 公司的角度来看一般倾向于保守了。

现状是大多数的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。”

译注:

  1. 我还是很惊奇log4j还在被使用,即使大家知道它有性能问题。所以这里推荐大家使用以下LogBack,Apache Log4j 2。
  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个项目正在使用。

译注:

  1. TDD这个话题很好玩,我好奇的是这些项目的测试用例的覆盖率及Unit testing coverage。通过这个侧面也可以很好的了解它的质量。
  2. 还有这些项目的Good Practice是先写接口以及测试用例然后再开发,还是先开发再写测试用例那?

好了大家不要喷我哟,就让我小小邪恶一把吧。

Google的Guava 框架正在成为主流——4.8% of 10,000 Java GitHub项目正在使用它。”

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在GitHub的Java项目中比 Postgre SQL更加流行。 ”

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.comAndy.Song

译文链接: http://www.importnew.com/7743.html

[ 转载请保留原文出处、译者和译文链接。]

Github最流行的10,000个Java项目使用的类库的更多相关文章

  1. 得到JAVA项目根文件夹

    获得的相对路径 说明:相对路径(这并不说明什么时候相对谁)可以通过以下来获得(无论是一般java项目或web工程) String path = System.getProperty("use ...

  2. 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架

    20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...

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

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

  4. GitHub上那些值得一试的JAVA开源库

    作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,Spring,Hibernate等等.除了这些,你可能还会fork或Star一些其他的开 ...

  5. 28款GitHub最流行的开源机器学习项目

    现在机器学习逐渐成为行业热门,经过二十几年的发展,机器学习目前也有了十分广泛的应用,如:数据挖掘.计算机视觉.自然语言处理.生物特征识别.搜索引擎.医学诊断.DNA序列测序.语音和手写识别.战略游戏和 ...

  6. 10个用Java谋生非常有趣的方式

    令我惊讶的是,有些人觉得编程并不令人兴奋——只将它当作是一份枯燥的工作.不过,虽然可能的确有很多无聊的编程工作,但这并不意味着你不得不接受这些工作中的一个.程序员有各种各样的机会,运用他们的技能去做一 ...

  7. GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

    1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...

  8. GitHub上最受欢迎的 5 大 Java 项目

    1. Mockito Mockito 并不是无酒精混合饮料的意思.Mockito 是一个针对 Java 的 mocking 框架.它与 EasyMock 和jMock 很相似,但是通过在执行后校验什么 ...

  9. 2017年11月GitHub上最热门的Java项目出炉

    2017年11月GitHub上最热门的Java项目出炉~ 一起来看看这些项目你使用过哪些呢? 1分布式 RPC 服务框架 dubbohttps://github.com/alibaba/dubbo S ...

随机推荐

  1. Android自定义View(RollWeekView-炫酷的星期日期选择控件)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/53420889 本文出自:[openXu的博客] 目录: 1分析 2定义控件布局 3定义Cus ...

  2. SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置

    一直对springmvc和mybatis挺怀念的,最近想自己再搭建下框架,然后写点什么. 暂时没有整合缓存,druid也没有做ip地址的过滤.Spring的AOP简单配置了下,也还没具体弄,不知道能不 ...

  3. 安卓高级3 Android应用Design Support Library完全使用实例

    原作者:http://www.open-open.com/lib/view/open1433385856119.html 1 背景 上周一年一度的Google IO全球开发者大会刚刚结束,Google ...

  4. WiFi文件上传框架SGWiFiUpload

    背景 在iOS端由于文件系统的封闭性,文件的上传变得十分麻烦,一个比较好的解决方案是通过局域网WiFi来传输文件并存储到沙盒中. 简介 SGWiFiUpload是一个基于CocoaHTTPServer ...

  5. malloc_stats---检查内存泄露的神器

    在之前的博客中提到过,valgrind可以用来检测内存泄露,但在使用中,往往会遇到一些问题,给调试工作带来很多不必要的麻烦,我自己遇到的有以下两种: (1)内存泄露误检(系统初始化时,可能有一些需要长 ...

  6. docker 部署cassandra

    摘要 本文主要介绍在redhat7 平台,利用docker 部署cassandra 集群,除了介绍基本的部署步骤,另外主要 讨论类似于cassandra 这种分布式集群系统部署 docker如何进行网 ...

  7. Dynamics CRM2016 Web API之更新记录

    本篇继续探索web api,介绍如何通过web api更新记录. 下面是一段简单的更新代码,更新了几个不同类型的字段,entity的赋值和前篇创建时候的一样的. var entity = {}; en ...

  8. 探究java接口中的变量与方法

    关于变量 java接口里的变量都是默认 pubic static final的 为啥? public 接口得能被所有对象调用 static 这个变量是属于接口本身,而不是实现了接口的对象的 具体来说  ...

  9. 适配器模式(adapter)

    适配器模式的定义: 将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能在一起的那些类可以一起工作. 主要分为三类:类的适配器模式.对象的适配器模式.接口的适配器模式. ...

  10. 3.关于QT中的MainWindow窗口,MenuBar,ToolBar,QuickTip等方面的知识点

     1 新建一个空Qt项目 编写12MainWindow.pro HEADERS += \ MyMainWindow.h \ MyView.h SOURCES += \ MyMainWindow.c ...