百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

2019排名Top 100Java类库——在分析了30073份源码后得出的结论

toyiye 2024-06-21 12:18 11 浏览 0 评论

最近,OveOps公布了《The 2019 edition of the Top 100 Java packages from GitHub》,作者查看了这份榜单,做了翻译和补充,向你展示2019年的风云Java类库,希望可以给正在使用Java的你一些帮助和启示。不能说榜单中的类库都是最好的,但是至少是目前比较受欢迎的。

距离Java首发以来已经有25年了,它仍然是最流行的编程语言(根据2019年10月TIOBE编程语言排行榜)。

Java存在了很多年,但是并不意味着他不再实用了,很多年来,Java一直在适应开发人员的需求做很多改变。就在今年,Oracle同时发布了Java 12和Java 13,为该语言增加了更多的特性和能力。

正如Java本身的变化一样,Java语言相关的类库也在做着各种变化。今年的Java类库排行榜恰恰证明了这一点。言归正传,是时候深入研究一下2019年最热门的Java类库了。

2018年排名Top 100的Java类库——在分析了277,975份源码之后得出的结论

2017年排名Top 100的Java类库——在分析了259,885份源码之后得出的结论

2016年排名Top 100的Java类库——在分析了47,251个依赖之后得出的结论

最受欢迎的前10个Java类库

今年的Java类库排行榜的榜首被hadoop摘得,这个去年第二的类库,今年终于被扶正了。

Apache Hadoop,是一款支持数据密集型分布式应用程序并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

今年的第二名是一个新星——Apache Camel,Apache Camel是一个基于规则路由和中介引擎,提供企业集成模式的Java对象的实现,通过应用程序接口来配置路由和中介的规则。

而去年的第一名fasterXML/Jackson今年降到了第十名。

Jackson是一个JSON库,可以方便的将JSON转化成Java的对象模型,以及把Java的对象模型转换成一串JSON。

前100类库透露出的主要信息

JUnit的衰落。对我们来说,今年最大的意外是JUnit的衰落。尽管它在2018年并不是第一名,我们也没料到它会从第三名一路跌到第33名。

Apache的崛起。正如您所看到的,今年的列表中有一些有趣的新名称,其中最引人注目的是Apache。免费、开源和跨平台的软件占据了前5名的位置,包括它的Hadoop包、集成框架Camel、Commons compression API、以内存为中心的分布式数据库Ignite和HTTP包。

企业单点登录。前10名中有一个新名字:Apereo。该包提供了一个用于在企业中实现SSO解决方案的开源项目。正如我们所知,在内部实现SSO解决方案可能比较困难,所以这个开源框架被广泛使用。

榜单中出现了更多新名字。Apereo并不是我们今年看到的唯一一个新名字,有一长串的包已经进入我们的顶级Java列表,比如:

#13?–?org.pentaho?–?提供数据管理和分析。

#16?–?com.facebook.buck?–?一个鼓励在各种平台和语言上创建小型可重用模块的系统。

#21?–?com.yahoo.vespa?–?雅虎的数据处理类库。

#28?–?org.killbill.billing?–?一个开源的计费和支付平台。

#56?–?com.baidu.disconf?–?百度的分布式配置管理平台。

不可能有赢家而没有输家,这使得在我们的榜单中,排名靠后的包和靠前的包一样重要。我们决定把重点放在那些从2018年跌至2019年榜单底部的类库身上。这些包括:

#79 – org.glassfish.jersey –?用于用Java开发RESTful Web服务。它提供对JAX-RS API的支持,并充当JAX-RS参考实现,去年排名#65.

#81 – org.jboss.netty –?一个非阻塞I/O客户端-服务器框架,主要用于开发Java网络应用程序,如协议服务器和客户端。异步事件驱动的网络应用程序框架和工具用于简化网络编程, 去年排名#22.

#85?–?org.apache.curator?–?Apache?ZooKeeper的Java库,去年排名#29

#87 – org.assertj.core –富类型断言库,去年排名?#56?

#88?–?org.xml.sax?–?Java?SAX解析,去年排名#71

#93?–?com.codahale.metrics?–?一款监控指标的度量类库,去年排名#42.

#97?–?org.joda.time?–?一个标准的日期和时间库,去年排名#44.

#99 – org.apache.kafka –?一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台,去年排名#69.


那些贡献较大的组织

为了深入了解我们的顶级Java包,我们逐个查看每个包,试图了解Java开发人员正在构建什么以及如何构建它们。当我们浏览列表时,有许多供应商/所有者多次出现,为不同的用途提供各种包。

这就是为什么我们决定更广泛地查看我们的整个数据集,不仅要了解谁是最受欢迎的包,还要了解谁是使用最多的包背后的组织、公司甚至个人。

那些贡献较大的组织的前10名如下:

他们分别是apache、springframework、google、jboss、amazonaws、junit、facebook、yahoo、eclipse、pentaho

另外,在前100名类库中,我们发现有4个类库分别来自3家中国企业,他们分别是:

来自百度的com.baidu.disconf (分布式配置管理平台)

来自微信的weixin.popular.bean(微信SDK)

来自阿里巴巴的com.alibaba.otter(阿里巴巴分布式数据库同步系统)和com.alibaba.jstorm(阿里巴巴流处理框架)

其中排名最高的是阿里巴巴的otter,排名第19。


分析方法

就像去年一样,我们使用谷歌BigQuery和GitHub的API来获取我们想要的数字。我们提取了顶级的存储库,并从中提取了这些存储库使用的Java包。

BigQuery 是 Google 专门面向数据分析需求设计的一种全面托管的 PB 级低成本企业数据仓库。该服务让开发者可以使用Google的架构来运行SQL语句对超级大的数据库进行操作。BigQuery 可在几秒内扫描 1 TB 的数据,在几分钟内扫描 1 PB 的数据。

从GitHub中提取的30,073个Java源文件中,我们过滤掉了Android、Arduino、重复和废弃的repos。获得每个项目的源文件后,我们提取惟一的import语句,确保每个项目只计算一次。最后一步是再次检查结果,确保没有Android、Arduino、deprecated或标准的Java包,然后导出最终的数字进行处理。

我们过滤了前100个结果,创建了一个新的谷歌电子表格,并写了这篇文章供您欣赏:https://docs.google.com/spreadsheets/d/1QXw5TILFQCBoB0wxhNAoKabRbUm9C6TE3mD260S_gXY/


关于作者:Hollis,一个对Coding有着独特追求的人,现任阿里巴巴技术专家,个人技术博主,技术文章全网阅读量数千万,《程序员的三门课》联合作者。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码