作为整天和成熟、不断发展的Java语言打交道的开发者,我们在写代码的时候面临的一个困境就是,是不是要使用新技术呢?大家都在谈论,还是坚持一些老的但成熟的类库?由于大多数Java应用程序都是用于商业目的,因此有时很难轻易区分实际使用了哪些框架。.在一个开源Java框架的发展过程中,社区用户和贡献者是框架持续成功和发展的关键因素。我们选择了目前全球最大的程序员使用的Java项目代码库GitHub,使用基于数据的方法进行研究。在我们之前的文章中,我们查看了GitHub中100个最常用的Javascript、Ruby和Java项目。在本文中,我们将重点分析Java项目中使用了哪些流行的类库。研究方法本文采用以下方法进行研究:选择10000个在社区中比较流行,并且在社区中有比较重要地位的开源项目。我们选择了GitHub中大部分项目使用的pom.xml进行分类研究,将其中使用的类库进行分组,结果很有意思。调查结果下图是调查结果中Java开源项目中使用最多的类库的部分截图。完整的调查结果请参考:https://docs.google.com/spreadsheet/ccc?key=0Alceaf46X4GPdHhKV0FFSnVpTlA2SkpiaVU0M3BDYXc&usp=sharing#gid=0以下是简单的分析归纳和一些值得关注的点:最日志使用的类库是slf4j,3068个项目都在用。GitHub上的Java开发者似乎已经接受了具体日志系统和应用程序解耦的方法,因为sl4j实际上并没有限制开发者在具体应用中使用的日志引擎,提供了一个统一的接口来记录日志。只要按照提供的方式进行记录,最终的日志格式、记录级别、输出方式等都是通过具体日志系统的配置来实现的,因此在应用中可以灵活切换日志系统。当然,在具体的日志系统中,log4j还是用得最多的——891个项目都在用。亚军是Apache的Commons-logging,被334个项目使用,不到log4j的一半。第三名是sl4j自带的最简单的实现类库,被174个项目使用。Spring虽然Spring可能一直被认为比新潮框架成熟,但它在前100名中仍然占据了近15个席位(都是Spring相关的库)。Spring是一个巨大的框架,看看它的哪些库最常用是很有趣的。除了Spring的核心类库外,Spring-test是使用最多的(376个项目使用)。之后强大的Spring-MVC框架被277个项目使用,其次是Spring的SpringORM相关功能的类库,被218个项目使用。有3068个项目与使用JUnit的TDD相关。由此可见,测试驱动开发的方式已经占据了Java项目的半壁江山。看来如果你是一个Java程序员,在开发程序的时候单元测试是必不可少的。需要注意的是,在测试框架中,JUnit并不是独占鳌头的。另一个很好的测试框架TestNG有331个项目在使用。Mockito Mockito是一个非常流行的模拟测试框架,受到413项目的青睐。EasyMock紧随其后,有231个项目使用它。GoogleGuava工具库 目前越来越多的开发者喜欢使用GoogleGuava类库,4.8%的项目都在使用。ApacheCommons工具类库接下来我们注意到ApacheCommon,它是Apache旗下的开源工具类库,也是Java语言中使用非常广泛的工具类库。Commons-io和Commons-langz占据前10名,分别有519和504个项目在使用,非常受欢迎。在Apache的Commons实用类库家族中,有13个出现在前100名中。谷歌的Guava类库提供了类似的功能,得到了483个项目的支持。下图按类型显示了最常用的Java类库:SQL和NoSQL。随着NoSQL成为近年来最热门的话题,有必要考察一下同时使用关系型数据库和NoSQL的项目数量。统计显示,有225个项目使用了Mysql,HibernateORM本身并不是数据库,但是有181个项目使用了Hibernate技术。Hadoop在调查数据中,我们发现有168个项目涉及Hadoop,超过了成熟关系型数据库之一的PostgreSQL的投票数(121个项目使用了PostgreSQL)。另一种大数据技术ElasticSearch在调查样本中被发现被110个项目使用。另外,我惊奇的发现Ruby中1085个项目使用的sqlite数据库在Java中进不了前100。安卓。在此GitHub调查中,发现228个项目通过Maven使用Android。虽然目前GitHub上的移动应用占比不算太多,但可以看出Java仍然是服务器端编程语言的领头羊。原文链接:http://java.dzone.com/articles/github%e2%80%99s-10000-most-popular
