盘点 100 个最受欢迎的 Java 库!谁拔得头筹?

谁拔得头筹?谁又落于人后?

我们分析了 GitHub 中 47,251 条依赖关系,得出最受欢迎的100个 Java 库。

漫长的周末里,我们最喜欢的消遣方式是遍历 GitHub,找出最受欢迎的 Java 库。我们决定,将其中的乐趣与所得分享给大家。

我们分析了 GitHub 中前3862个 Java 项目里用到的12059个不同 Java 库的47251条导入声明。从该列表中,我们选取了排名前100的 Java 库,并将结果在此呈现。

最受欢迎的20个 Java 库



续两年,junit 二度成为 GitHub 中最受欢迎的 Java 库。与此同时,Java 日志记录 API slf4j 获得第二名,log4j 排名第四。

此外,谷歌的开源项目 Guava 来势汹汹,勇夺第三名,该库包含了一系列谷歌内含的核心 Java 库。如果你对 Guava 不甚了解或者不确定如何使用,你应该读一下我们的文章,了解一下谷歌 Guava 鲜为人知但其实每个开发者都应该知道的特性。

Spring 库的崛起

作为 Java EE 的首要竞争者,Spring 框架日渐流行,其受欢迎程序也反映在 GitHub 中。在本次最受欢迎的100个 Java 库中,44个库与 Spring 相关。

其中,最有意思的是 Spring Boot 的疾速增长,该库能帮助开发者通过最精简的引用打造以 Spring 为驱动的应用及服务。你想在最短的时间内打造能适应生产环境的 Java 应用么?请关注公众号Java技术栈回复boot阅读系列文章。

最受欢迎的 Spring 库列表:

第13名 – springframework.spring-context 第17名 – springframework.spring-test 第22名 – springframework.spring-webmvc 第24名 – springframework.spring-core 第27名 – springframework.spring-web 第36名 – springframework.spring-jdbc 第37名 – springframework.spring-orm 第38名 – springframework.spring-tx 第40名 – springframework.spring-aop 第47名 – springframework.spring-context-support 第72名 – springframework.boot.spring-boot-starter-web 第81名 – springframework.security.spring-security-web 第82名 – springframework.security.spring-security-config 第88名 – springframework.boot.spring-boot-starter-test 第99名 – springframework.security.spring-security-core

最受欢迎的 JSON 库

我们知道,Java 并未向 JSON 提供原生支持(尽管 Java 9 差点就将其包括了),我们很有兴趣知道这些库在 GitHub 项目中的受欢迎程度。

你不应该根据表象判断一个库的好坏。并非所有的 JSON 库都性能相当,选择合适自身环境的库非常重要。想要知道应该如何选择 JSON 库,可以查看我们最新的 JSON 评测基准。

最受欢迎的 JSON 库有:

第14名 – fasterxml.jackson.core.jackson-databind 第19名 – google.code.gson.gson 第43名 – json.json 第80名 – googlecode.json-simple.json-simple 第89名 – thoughtworks.xstream.xstream

最惊艳的4个库

其实,有许多有意思甚至新出现的库,都让我们印象深刻。不过,我们决定专注于下面4个库:

第68名:projectlombok.lombok ——该库旨在简化 Java 中的引用样本,并用简单的注释集替代了一些极为繁杂的引用样本。

第90名:jsoup.jsoup——该库用于同 HTML 协作。它提供了通过 DOM 操作、CSS 以及类 jquery 方法以抽取并操纵数据的 API。

第92名:io.netty.netty-all——用于快速、简便地部署可维护的高性能协议服务器以及客户端的网络应用框架。

第98名:dom4j.dom4j——用于处理 XML 的开源框架。与 XPath 集成,提供了对 DOM、JAXP 以及 Java 平台的全面支持。

按类型排序的100个 Java 库

名计算方式


你很可能会疑惑,我们是如何得到该排序的。首先,我们根据评分抽取出 GitHub 中排名靠前的 Java 项目。之后,抽取使用 Maven 或 Ivy 进行依赖管理的项目,快速地得到它们的 pom.xml / ivy.xml 依赖。至此,我们得到 47,251 个数据点。

接下来,经过一些整合与分析,我们得到来自前3862个 Java 项目的12059个不同的 Java 库。由此,根据这些库在 GitHub 中出现的次数,不难得到最受欢迎的100个库。

如果你想查看我们的原始数据,可以在此处查看文件。尽管我们努力保持严谨以防止出现疏忽,你也可以看看这些数据,说不定会有新的有趣见解。

文末反思

当我们将今年的前100名数据与去年的相对比时,我们发现小的 Java 库有一些名次变动,其中 Spring 相关库的排名总体升高,而人们对 MongoDB 相关库的兴趣有所下降。

然而,对于绝大多数 Java 开发者而已,他们对自己选择的 GitHub 库,都保持相当的忠诚度。考虑到现有的使用这些库的项目数量,我们有理由相信这些库在以后都会广受欢迎。

本文转自 OneAPM 官方博客 原文地址:https://dzone.com/articles/the-top-100-java-libraries-in-2016-after-analyzing


热门文章

编程学习 ·

Unity2D教程:菜单界面、文字设置、常用界面功能

菜单界面创建一个UI-Image,会自动生成Canvas。 设置Canvas的设置模式为随屏幕改变 设置Image的伸展模式,在这个界面按下Alt键会变成这样,选择右下角那个就是填充整个Canvas了在当前Image下创建Button,将Button下面的Text和Button自身都弄成预置物Text可以加一个Outline组件…
编程学习 ·

OpenCV笔记三--直方图

直方图定义:直方图均衡化-提高对比度-cv::equalizeHistvoid equalizeHist( InputArray src, OutputArray dst ); //输入为八位灰度图像从图片建立直方图-split,calcHistapi:void split(const Mat& src, Mat* mvbegin);//三Mat图像转化为三个图像 void calcHist( const Mat…
编程学习 ·

大数据分析的作用有哪些

大数据分析的出现不但可以让老百姓的生活更加便捷,同时也可以提高企业的竞争力,无论是哪个行业以及具体的企业都会有与之对应的大数据分析,而今天就来说说大数据分析对于企业有哪些帮助。数据分析目的1:分类检查未知分类或暂时未知分类的数据,目的是预测数据属于哪个类别或…
编程学习 ·

DAY14 Javaweb Servlet、Response、Request

以下讲的都是最底层的内容,以后会被新的方法顶替掉一、Servlet,是sun公司开发的一门技术,如果要开发sevlet程序(网页java),只需要1、实现这个接口就可以 2、把开发好的java类部署到web服务器中。把实现了Servlet接口的Java程序叫做Servlet,一个请求地址对应一个servlet…
编程学习 ·

智能电视良心分享:沉浸式音画享受旗舰级品质做工

上周,我家工作了五年的电视结束了它的“职业生涯”。面对市面上林林总总的智能电视品牌,我在纠结良久之后,最终将目光锁定在荣耀智慧屏X1身上,趁着618打折,入手了一台。不得不说这款电视最近挺火,但是性能咋样,还得亲身体验过才有发言权。买电视我最关心还是音画质。很多…
编程学习 ·

TCP协议中的粘包分包问题

使用TCP协议进行网络游戏开发的时候,有粘包和分包两个问题。 粘包和分包是利用Socket在TCP协议下内部的优化机制,在使用TCP协议进行数据的传输进行通讯的时候,会出现粘包分包问题的话,是由于优化导致,即内部的数据传输机制所导致的。 在客户端调用Send()方法传送数据,每传…
编程学习 ·

一文看懂Chrome浏览器工作原理

转自:https://juejin.im/post/5e182a47e51d453cee48c752本文是笔者对Mario Kosaka写的inside look at modern web browser系列文章的翻译。这里的翻译不是指直译,而是结合个人的理解将作者想表达的意思表达出来,而且会尽量补充一些相关的内容来帮助大家更好地理解。这篇文章…
编程学习 ·

Mybatis多数据源配置

pom.xml <!-- Spring Boot Mybatis 依赖 --> <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.2.0</version> </dependency><!-- MySQL 连…
编程学习 ·

产品经理新人必看的避坑指南

产品经理的一路走来,会遇到大大小小的“坑”。从毕业开始做产品经理已有7年,一直在回想自己有哪些地方做的不够好需要改进的。趁自己闲暇时间总结分享出来,希望能给产品新人一些启示。 一、不问要求埋头苦干。 产品新人刚入职的时候,因为经验不足,不太熟悉业务,往往一开始…
编程学习 ·

vue前端代码优化-1

也许有人会感觉CR没有什么卵用,只要我代码实现了功能,我完成了开发任务,我就OK了,为啥还要CR??但是CR真的是有必要的,你不仅可以发现自己代码中的不足之处,待优化点,简洁明了的代码易读别人接手也会很快。1. 比如在vue项目中只有某一个组件用某一个特别长的常量对象,…
编程学习 ·

iOS逆向 | 数字签名与证书

参考来源 https://ke.qq.com/course/314070 什么是数字签名 数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密…
编程学习 ·

Leetcode 349. 两个数组的交集 C++

Leetcode 349. 两个数组的交集 题目 给定两个数组,编写一个函数来计算它们的交集。 测试样例 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2]示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4]说明:输出结果中的每个元素一定是唯一的。 我们可以…
编程学习 ·

通过小项目学习23种设计模式(四)

通过读取文件导入数据库功能学习23种设计模式 第一次重构代码 目前代码写的很随性,导致以后业务增加时拓展起来繁杂,所以我们将已有逻辑进行第一重构: 抽取公共的行为生成接口 package com.xiaoma.fileimport.common;/*** 任务主执行类* 使用工厂模式,首先将任务共同行为抽象出…
编程学习 ·

Z字型变换(Go,LeetCode)

目录题目描述解决方案代码代码走读传送门题目描述将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z字形排列。比如输入字符串为 LEETCODEISHIRING ,行数为3时,排列如下:L C I R E T O E S I I G E D H N之后,你的输出需要从左往右逐行读取,产生出一…
编程学习 ·

创新实训

2020暑期实训 2020-05-30 规划和写申请文档 2020-06-01 完善申请书和进行签名 2020-06-14 开会并配置环境,如何运行 项目文件列表如何运行 cmke . source /home/asc/intel/compilers_and_libraries/linux/bin/compilervars.sh make其中第二句是声明intel icpc 和 intel icc 编…
编程学习 ·

jvm垃圾收集算法以垃圾收集器简介

jvm垃圾收集算法以垃圾收集器简介 每天多学一点点~ 话不多说,这就开始吧… 文章目录jvm垃圾收集算法以垃圾收集器简介1.前言2.内存模型判断机制3.垃圾收集算法3.1 分代收集理论3.2 标记-复制算法3.3 标记-清除算法3.4 标记-整理算法4.常用的垃圾收集器4.1 Serial收集器(-XX:+U…
编程学习 ·

centos自用命令备份

上传 scp -p E:\abc\requirement.txt root@132.232.10.218:/root/stock 下载 scp root@103.51.15.130:/root/project/log/2020-01-07-12-22-15.log D:\ ----------------------------------------- 启动多个脚本 python3 zmq.py & python3 open.py & python3 clos.py &…