我们分析了30,000个GitHub项目-以下是Java,JS和Ruby排名前100的图书馆
开发人员每天面临的最大难题之一是要使用哪些软件库。 选择热门的新框架还是已经使用了10年的“无聊”的经过反复测试的框架? 使框架成功的主要因素之一是其用户和贡献者社区。 虽然很容易知道有多少人为一个项目做贡献(特别是如果它是开源的),但是很难知道实际上有多少人在使用它。 我们决定采用数据驱动的方法来回答这些问题。
GitHub目前托管着超过一百万个项目。 项目范围从小型公用事业和测试应用程序一直到拥有数百名贡献者的大规模基础设施项目。 这样,它提供了一个相当多样化且最新的数据集可供探索,这也表明了封闭源代码和企业软件的趋势。
我们在GitHub上选择了3种主要语言-Java,Ruby和JavaScript。 对于每个项目,我们分析了10,000个项目 (即GitHub存储库),这些项目倾向于开发人员最喜欢的项目。
我们分析了最常用的100个组件中的哪些,并将它们分为几类(例如,Testing,DB,UI等)。 看到这些不同语言之间的差异是非常有趣的。
以下是一些值得注意的发现以及每种语言的前十名库(您可以在本文的底部找到完整列表):
Ruby
- SQL仍然占主导地位 。 尽管NoSQL数据库近来风靡一时,但关系数据库(SQL)仍在Ruby世界中占主导地位– 25%的项目中使用了Sqlite,postgreSQL,MySql,而Redis和mongo仅在3%的项目中使用。
- 但是, MongoDB在185个条目中仍然在Ruby中很流行,这是Java中项目的两倍。
- 在Web开发中,我们看到,尽管在最近几年中吸引了新的框架(例如Sinatra拥有570个条目),但Ruby仍然以Rails为中心,有7,000多个项目。 对于Web服务器,与Unicorn相比,使用Thin (具有487个条目)的项目要多两倍。
- 拥有1000多个项目的Ruby Web开发人员似乎很喜欢CoffeeScript (一种基于JavaScript的新语言层)。
- Twitter在Ruby中也产生了很大的影响,在前100个项目中有3个库使用了382个项目。 虽然这相当大,但仍不及我们稍后看到的Google对Java 的影响那么大。
JavaScript
- JS是零散的 。 Java中最重要的组件达到了项目的30%。 对于Ruby来说大约是20%。 对于JS来说,甚至不到10%。 随着JavaScriptSwift发展以支持更多类型的应用程序,许多新功能尚未被语言或标准库所吸收。 结果,在前100名中,我们发现JavaScript中使用的框架比Ruby和Java中使用的框架多50%,这表明该语言仍处于早期阶段。
- 咕unt声很大 。 Grunt自动化框架在JS开发(尤其是node.js)中扮演着非常重要的角色,前100个库中有23%插入了该框架。 Grunt似乎正在填补JS的构建,测试和部署周期中的空白。 这可以通过其他著名工具(例如Maven或Jenkins)从项目外部使用Java等语言进行处理。
- 联网仍然是一个大问题 。 JavaScript库的很大一部分(前100名中的7%)专注于网络和客户端/服务器通信。 这是Java和Ruby的三倍。 这很可能是由于Web开发人员必须在浏览器端处理零散的生态系统以及服务器堆栈的相对早期状态。
- 对于服务器端Web开发– node.js的快速框架以631个条目领先该图表。
- 努力结构 。 JavaScript还具有数量最多的844个条目的语言扩展。 有趣的是,尽管JavaScript是一种非常灵活的语言,但是开发人员正在寻找将其塑造为更结构化的东西的方法。 Underscore.js提供的功能编程功能类似于在更具结构性的语言(例如Scala)中发现的功能,拥有416个条目,使其成为第五大流行的JS库。
Java
- 现在是番石榴季-Google代码已成为主流 。 Spring和Apache库如此普遍,它们实际上是该语言的一部分,在前100个库中,有25%以上在这两个库之间平均分配。 令人惊讶的是,谷歌制造的库(如GWT和Guava)在Java中的流行率居前100名的7%。似乎我们生活中还有一个更大的领域,而谷歌在其中占有很大的份额。
- BigData – Hadoop领先 。 数据处理是Java的重要组成部分,前100个库中有16个专注于数据库管理,而Ruby中有12个库,JavaScript中有5个库(当然,更多的是客户端语言)。
- 有趣的是,Hadoop兑现了其作为168个条目的领先大数据技术的承诺。 确切地说 , MySql是最著名和最常见的SQL DB之一,具有225个条目。 另一个著名的关系数据库Postgre SQL有121个。
- ElasticSearch是一种用于搜索大数据集的新技术,在GitHub上也有很好的表现,有100多个项目正在使用它。
- 在Java和Ruby中,测试驱动开发(TDD)的功能非常强大(但在JS中却不是) –在这三种语言中,我们都认为测试扮演着非常重要的角色。 在Java和Ruby中,审查的项目中有40-50%使用的是自动测试框架。 领先的是Java中的JUnit和Ruby中的RSpec 。 在JavaScript中,使用测试框架的项目所占的比例要低得多,仅为25%。
- 模拟( Mocking )是一种用于在测试和开发中模拟现实世界对象的方法,在Java中有10%的项目在Ruby中有7%的项目得到了广泛的应用。 在JavaScript中,模拟仍然几乎不存在。
单击此处查看完整的前100个库列表。
翻译自: https://www.javacodegeeks.com/2013/12/we-analyzed-30000-github-projects-here-are-the-top-100-libraries-in-java-js-and-ruby.html
我们分析了30,000个GitHub项目-以下是Java,JS和Ruby排名前100的图书馆相关推荐
- java项目 github_我们分析了30,000个GitHub项目-以下是Java,JS和Ruby排名前100的图书馆...
java项目 github 开发人员每天面临的最大难题之一是要使用哪些软件库. 使用热门的新框架还是已经使用了十年的"无聊"的经过反复测试的框架? 使框架成功的主要因素之一是其用户 ...
- GitHub 上排名前 100 的 Objective-C 项目简介
https://github.com/Aufree/trip-to-iOS/blob/master/Top-100.md http://www.oschina.net/news/61416/githu ...
- GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 转自:http://www.devstore.cn/essay/essayInfo/6485.html 排名完全是根据 GitH ...
- 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
2016年GitHub 排名前 100 的安卓.iOS项目简介(收藏) 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android ...
- 转:GitHub 排名前 100 的安卓、iOS项目简介
排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
- GitHub上排名前100的iOS开源库介绍(来自github)
主要对当前 GitHub 排名前 100 的项目做一个简单的简介,方便初学者快速了解到当前 Objective-C 在 GitHub 的情况. 项目名称 项目信息 1. AFNetworking 作者 ...
- GitHub 上排名前 100 的 IOS 开源库介绍
转自:https://github.com/Aufree/trip-to-iOS/blob/master/Top-100.md 主要对当前 GitHub 排名前 100 的项目做一个简单的简介, 方便 ...
- 在分析了47,251个依赖关系之后,2016年排名前100的Java库
谁在上面,谁在后面? 我们分析了Github上的47,251个依赖关系,并抽取了前100个Java库 长周末我们最喜欢的消遣是浏览Github并搜索流行的Java库. 我们决定与您分享乐趣和信息. 我 ...
最新文章
- 华为手机像素密度排行_4500元以上的手机排行,华为P40Pro未上榜,第一你猜到了吗?...
- 数字万用表的四位半,三位半都是什么意思?
- java 获取私有方法_如何获取java类里的私有方法
- 记录 之 tensorflow常见的数据预处理操作
- 做订购系统必须要明白的几点
- .net 初学者_在此初学者课程中学习使用TensorFlow 2.0开发神经网络
- 再议libcurl编程
- php调用twitter api
- 二进制的科学计数法?白话谈谈计算机如何存储与理解小数:IEEE 754
- list()的相关问题
- 词云python灿烈,Python jieba分词、词云、文件读取、函数调用、匿名函数
- 少儿编程python学啥-少儿编程学什么?少儿编程课程体系介绍
- (Tekla Structures二次开发)操作梁的属性对话框的宏语句
- android手机之-------64位操作系统 与 64位处理器
- Python每日一记179文氏图绘制
- 高效C++ Effective C++
- 网络安全与网站安全及计算机安全:如何通过Kali Linux设置一个钓鱼安全测试网站?
- 500万条微博数据来源分析
- JS中find()和findIndex()
- ❤️数据可视化❤️:基于Echarts + GeoJson实现的地图视觉映射散点(气泡)组件【10】 - 黑龙江省
热门文章
- Milimeter-Wave UAV Communications(21-30)
- PIC以太网开发板——基于微芯最新ENC28J60以太网控制器
- Leetcode-区间问题
- Linux网络环境搭建
- html页面中加skype,分享个刚学会的电子邮件中加Skype即时联络标签的方法~有用请顶...
- Servlet 发送电子邮件
- 两万条数据需要做个数据图_第3关:基于Excel对电商母婴数据进行分析
- 飞利浦SHL3565耳机套耳罩更换
- 【面经——广州道一云+笔试+一二三面+HR面+offer】
- pyqt5 ,实现串口调试助手