△Hollis, 一个对Coding有着独特追求的人△

这是Hollis的第 246篇原创分享

作者 l Hollis

来源 l Hollis(ID:hollischuang)

最近,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有着独特追求的人,现任阿里巴巴技术专家,个人技术博主,技术文章全网阅读量数千万,《程序员的三门课》联合作者。

- MORE | 更多精彩文章 -

  • 那些在一个公司死磕了5-10年的人,最后都怎么样了?

  • 如何回答性能优化的问题,才能打动阿里面试官?

  • 如何理解数据库优化中的读写分离、垂直拆分、水平拆分、分库分表

  • 万字长文!不为人所知的分布式锁实现全都在这里了

如果你喜欢本文,

请长按二维码,关注 Hollis.

转发至朋友圈,是对我最大的支持。

好文章,我在看❤️

​2019年排名Top 100的Java类库——在分析了30073份源码之后得出的结论相关推荐

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

    最近,OveOps公布了The Top 100 Java Libraries in 2018 - Based on 277,975 Source Files,Hollis查看了这份榜单,做了翻译和补充 ...

  2. 友盟统计java代码_SFAnalytics 分析友盟统计源码,反编译 SDK,还有部分没有 出来 android 259万源代码下载- www.pudn.com...

    文件名称: SFAnalytics下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 8023 KB 上传时间: 2016-06-05 下载次数: 0 提 供 者: ...

  3. c# 比JAVA弱吗? 用c#一份源码同时生成安卓和IOS APP

    Visual Studio 2019调试 安卓和IOS开发的app  上图为C# 同一份源码在红米note 1S 的真机上运行安卓app,和iphone 13 模拟器运行ios版app. (因为ios ...

  4. 2015 年度新增开源软件排名 TOP 100、记录以备不时之需

    2015 年度新增开源软件排名 TOP 100 http://www.oschina.net/news/69808/2015-annual-ranking-top-100-new-open-sourc ...

  5. 这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析

    前言 package com.jvm.classloader;class Father2{public static String strFather="HelloJVM_Father&qu ...

  6. Java的三种代理模式完整源码分析

    Java的三种代理模式&完整源码分析 Java的三种代理模式&完整源码分析 参考资料: 博客园-Java的三种代理模式 简书-JDK动态代理-超详细源码分析 [博客园-WeakCach ...

  7. java计算机毕业设计物流站环境监测系统源码+系统+数据库+lw文档+mybatis+运行部署

    java计算机毕业设计物流站环境监测系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计物流站环境监测系统源码+系统+数据库+lw文档+mybatis+运行部署 本源码技 ...

  8. java计算机毕业设计校园二手书交易系统源码+系统+数据库+lw文档+mybatis+运行部署

    java计算机毕业设计校园二手书交易系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计校园二手书交易系统源码+系统+数据库+lw文档+mybatis+运行部署 本源码技 ...

  9. java计算机毕业设计南通大学福利发放管理系统源码+系统+数据库+lw文档+mybatis+运行部署

    java计算机毕业设计南通大学福利发放管理系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计南通大学福利发放管理系统源码+系统+数据库+lw文档+mybatis+运行部 ...

最新文章

  1. 从数理统计简史中看正态分布的历史由来
  2. 分针网——Javascript不同浏览器差异及兼容方法
  3. SpringBoot学习:整合shiro(身份认证和权限认证),使用EhCache缓存
  4. 技术不够时间来凑,梦圆国一永不放弃
  5. Maven 使用代理下载依赖
  6. java spring redis订阅_spring中订阅redis键值过期消息通知
  7. iphonex黑屏开不了机_iphonex黑屏就算强制开机也开不了,是什么原因?_杭州维修...
  8. Java中遍历数组使用foreach循环还是for循环?
  9. 关于如何控制一个页面的Ajax读数据只读一次的简单解决办法!
  10. MySql join on 和 where
  11. “=” “:=” 区别
  12. loadrunner—web_url
  13. jieba分词错误_jieba分词处理
  14. ADRC自抗扰控制学习
  15. GridinSoft CHM编辑器3.2.0多语言,轻松快速地翻译CHM电子书
  16. vscode设置eclipse快捷键
  17. ElasticSearch 从5.6.3升级到7.9.3遇到问题总结
  18. AMiner背后的技术细节与挑战
  19. 2022.10.14每日刷题打卡
  20. wordpress采集插件-wordpress关键词插件-wordpress百度推送插件-wordpress蜘蛛统计分析插件

热门文章

  1. java return在try中_在try的括号里面有return一个值,那在哪里执行fina
  2. java mediator_关于Java 设计模式 中介者模式 Mediator
  3. 对box-sizing border-box的理解:
  4. 为了戒掉网瘾,我用PYTHON决定休息时间的活动……
  5. mysql生成固定位数随机数_mysql生成指定位数的随机数
  6. mac系统占用100多G怎么清除 mac内存系统占用了好多怎么清理
  7. jQuery中的$(window)与$(document)的用法区别
  8. 谷歌浏览器安装Restlet Client
  9. Python笛卡尔内积妙用
  10. 瑶湖之会系列活动——邓勇来校讲述纪实摄影的人文向度