本文由 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. 解释session

    我理解的session就是,多个页面都要使用某一个或一些数据,这时就可以用session,将数据暂时保存起来,这样其他的页面开启session,就能将那些数据拿出来使用.

  2. JavaScript原型与原型链

    一.数据类型 JavaScript的数据类型可以分为基本数据类型和引用数据类型. 基本数据类型(6种) String Number Boolean null undefined Symbol(ES6) ...

  3. Android自定义View(CustomCalendar-定制日历控件)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/54020386 本文出自:[openXu的博客] 目录: 1分析 2自定义属性 3onMeas ...

  4. Openstack: change endpoint IP addresses after installation

    Prerequisites You have a single node DevStack installation using mysql for the database that was wor ...

  5. 亲密接触Redis-第三天(Redis的Load Balance)

    前言 上两天讲述了Redis的基本搭建和基于HA的集群布署方式以及相关的策略和注意点.今天开始讲述Redis的Cluster功能,而这块目前来说网上资料不是太全,就算有1,2篇也只是单讲服务端的搭建也 ...

  6. Ubuntu使用dpkg安装软件依赖问题解决 ubuntu-tweak ubuntu 16.04 LTS 系统清理

    Ubuntu使用dpkg安装软件依赖问题解决 这里以在ubuntu 16.04安装Ubuntu Tweak为例进行说明,通常安装包依赖问题都可以用这种方法解决: sudo apt-get instal ...

  7. 28自定义View 模仿联系人字母侧栏

    自定义View LetterView.java package com.qf.sxy.customview02; import android.content.Context; import andr ...

  8. CRM 2013 Script Loading Deep Dive

    关于CRM中脚本的加载次序梳理的很不错,可以看看 https://community.dynamics.com/crm/b/develop1/archive/2013/11/02/crm-2013-s ...

  9. FORM开发中Profiles的使用

    用户配置文件相当于系统参数,可以在不同层级(Site层.应用模块层.责任层.用户层)设置不同的值:作用范围小的覆盖范围大的层,系统已经预设了很多user profile; 开发人员也可以定义 在EBS ...

  10. Xcode7.3中SKAudioNode"诡异"初始化的解决

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我没有在之前版本的Xcode中测试,不过很多人反映SKAudi ...