Java常用开源库汇总

Java的经久不衰,很大程度上得益于Java的生态好。在日常开发中,我们也会经常使用到各种开源库和工具类,为了避免重复造轮子,本文将贴出工作及学习中会用到的部分开源库和工具类。Java的生态实在太大,这里只能列举一部分。如果你对此感兴趣,不妨去读读他们的源码。

HTML解析器jsoup

1.1 介绍

jsoup(GitHub地址中文文档)是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

1.2 示例

Document document = Jsoup.connect("https://www.cnblogs.com/toutou/")
   .userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36")
   .get();
  // System.out.println(document);
  Elements elements = document.select("div.box.item");
  for(Element element : elements)
  {
  Elements eleUrl = element.select("div.box-aw a");
  String strPrjUrl = eleUrl.attr("href");
  setProjUrls.add(strPrjUrl);
  // System.out.println(strPrjUrl);
  Elements eleTitle = eleUrl.select(".title");
  String strTitle = eleTitle.text();
  // System.out.println(strTitle);
  Elements eleSummary = eleUrl.select(".summary");
  String strSummary = eleSummary.text();
  // System.out.println(strSummary);
  }

Java 8 Stream

2.1 介绍

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。

2.2 示例

List<Integer> transactionsIds =
widgets.stream()
  .filter(b -> b.getColor() == RED)
  .sorted((x,y) -> x.getWeight() - y.getWeight())
  .mapToInt(Widget::getWeight)
  .sum();

Apache Commons

3.1 介绍

Apache Commons是一个非常强大、非常全面的工具包,包含了很多开源的工具。下面就罗列一下一些相对常用的工具。

3.2 分支

BeanUtils

Commons-BeanUtils 提供对 Java 反射和自省API的包装

Chain

Chain 提供实现组织复杂的处理流程的“责任链模式”.

CLI

CLI 提供针对命令行参数,选项,选项组,强制选项等的简单API.

Codec

Codec 包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder.

Collections

Commons-Collections 提供一个类包来扩展和增加标准的 Java Collection框架

Configuration

Commons-Configuration 工具对各种各式的配置和参考文件提供读取帮助.

DBCP

Commons-DBCP 提供数据库连接池服务

DbUtils

DbUtils 是一个 JDBC helper 类库,完成数据库任务的简单的资源清除代码.

Discovery

Commons-Discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称.

HttpClient

Commons-HttpClient 提供了可以工作于HTTP协议客户端的一个框架.

IO

IO 是一个 I/O 工具集

JXPath

Commons-JXPath 提供了使用Xpath语法操纵符合Java类命名规范的 JavaBeans的工具。也支持 maps, DOM 和其他对象模型.

Lang

Commons-Lang 提供了许多许多通用的工具类集,提供了一些java.lang中类的扩展功能

Launcher

Launcher 组件是一个交叉平台的Java 应用载入器。 Commons-launcher 消除了需要批处理或者Shell脚本来载入Java 类。.原始的 Java 类来自于Jakarta Tomcat 4.0 项目

Logging

Commons-Logging 是一个各种 logging API实现的包裹类.

Math

Math 是一个轻量的,自包含的数学和统计组件,解决了许多非常通用但没有及时出现在Java标准语言中的实践问题.

Net

Net 是一个网络工具集,基于 NetComponents 代码,包括 FTP 客户端等等。

Pool

Commons-Pool 提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池实现.

Apache Commons优秀的分支工具还有很多,感兴趣的可以在Apache Commons – Components查看。

3.3 示例

Apache Commons太大,这里也简单来几个示例。

字符串判空操作

boolean isEmpty = StringUtils.isEmpty(value);

获取类的全名称

ClassUtils.getName(String.class);

判断集合是否为空

boolean isNotEmpty = CollectionUtils.isNotEmpty(list);

反射获取某个类的所有 Field

Field[] fields = FieldUtils.getAllFields(User.class);

JSON

4.1 介绍

JSON已经成为最广泛使用的一种数据传输格式,因此程序中对JSON的处理也正变得越来越多。本文主要介绍下Jackson和Google Gson。

4.2 Jackson

Jackson是一个多用途的Java库,用于处理JSON数据。使用它可以很方便地在JSON数据和Java对象之间进行转换。

 ObjectMapper mapper = new ObjectMapper();
 User user = mapper.readValue(new File("user.json"), User.class);

4.3 Google Gson

Gson是Google发布的一个用于序列化和反序列化Json的工具库,可以非常轻松的实现Json到Java Object的转变,也同样非常简单的可以将一个Java实例序列化为Json。Gson包中主要的类有Gson, GsonBuilder, JsonParser等等。

 Gson gson = new Gson();
 String[] strings = {"123", "456", "789"};
 gson.toJson(strings); // ==> ["123", "456", "789"]

日志

JAVA中也包含了日志记录功能,但它在处理日志分级,日志的存储,以及日志的备份、归档方面都不够出色,因此在项目中我们一般都会使用第三方日志库来处理日志。

5.1 SLF4J

SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。 Logging API实现既可以选择直接实现SLF4J接的loging APIs如: NLOG4J、SimpleLogger。也可以通过SLF4J提供的API实现来开发相应的适配器如Log4jLoggerAdapter、JDK14LoggerAdapter。

5.2 Apache Log4j

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

5.3 Logback

Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。官方网站: http://logback.qos.ch

JUnit

6.1 介绍

Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

6.2 示例

import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class TestJunit {

 String message = "Hello World";
 MessageUtil messageUtil = new MessageUtil(message);

 @Test
 public void testPrintMessage() {
 assertEquals(message,messageUtil.printMessage());
 }
}

LeetCodeAnimation

7.1 介绍

网上可以搜到很多“刷题笔记”、“刷 LeetCode 的正确姿势”等分享。但是,还是有一些算法题,文字仍无法帮助同学们 get 到正确的方法或解决问题的逻辑,此时又该怎么办?有什么好的解决方法呢?今天,营长要特别为大家介绍一个名为LeetCodeAnimation的开源项目。在这个项目中,文字解读并不是主要的,作者把一些LeetCode 题目或算法原理用非常生动、形象的动画形式展现出来。

JavaGuide

8.1 介绍

JavaGuide涵盖大部分Java程序员所需要掌握的核心知识

源码地址

https://github.com/toutouge/javademosecond

以上就是Java常用开源库汇总的详细内容,更多关于Java常用开源库的资料请关注我们其它相关文章!

(0)

相关推荐

  • Java图片处理开源框架Thumbnailator

    图片处理是当今软件开发中非常重要的一环,然而处理图片的开源框架却并不多.现金网上流传的Java处理图片的代码,虽然可对图片进行简单处理,但效果并不理想.虽然也有些其他解决方案,但都摆脱不了繁琐,使用起来十分不方便. 为了解决这个问题,我也是在网上找了好久,看了很多资料,功夫不负有心人,最终找到了一个处理图片十分棒的开源框架.特此拿出来与大家分享. Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象

  • Java开源工具iText生成PDF简单实例

    iText下载页面: http://sourceforge.net/projects/itext/files/ 1.创建简单的PDF文件 package console.pdf; import java.io.FileNotFoundException; import java.io.FileOutputStream; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com

  • Java中使用开源库JSoup解析HTML文件实例

    HTML是WEB的核心,互联网中你看到的所有页面都是HTML,不管它们是由JavaScript,JSP,PHP,ASP或者是别的什么WEB技术动态生成的.你的浏览器会去解析HTML并替你去渲染它们.不过如果你需要自己在Java程序中解析HTML文档并查找某些元素,标签,属性或者检查某个特定的元素是否存在的话,那又该如何呢?如果你已经使用Java编程多年了,我相信你肯定试过去解析XML,也使用过类似DOM或者SAX这样的解析器,不过很有可能你从未进行过任何的HTML解析的工作.更讽刺的是,在Jav

  • Java使用开源Rxtx实现串口通讯

    本文实例为大家分享了Java使用开源Rxtx实现串口通讯的具体代码,供大家参考,具体内容如下 使用方法: windows平台: 1.把rxtxParallel.dll.rxtxSerial.dll拷贝到:C:\WINDOWS\system32下. 2.如果是在开发的时候(JDK),需要把RXTXcomm.jar.rxtxParallel.dll.rxtxSerial.dll拷贝到..\jre...\lib\ext下:如:D:\Program Files\Java\jre1.6.0_02\lib\

  • Java应用开源框架实现简易web搜索引擎

    引言 应用 Java 的开源库,编写一个搜索引擎,这个引擎能爬取一个网站的内容.并根据网页内容进行深度爬取,获取所有相关的网页地址和内容,用户可以通过关键词,搜索所有相关的网址. 具体功能 (1) 用户可以指定爬取一个url对应的网页的内容. (2) 对网页内容进行解析,并获取其中所有的url链接地址. (3) 用户可以设定爬取深度,代表着从初始url对应的页面开始,可以爬取其中所有的url对应的网页内的url,以此类推.深度越大,能爬取到的网站越多. (4) 对爬取到的url内容进行保存.建立

  • Java开源诊断工具Arthas使用方法详解

    一.前言 1.热更新代码的场景 (1)当线上服务器出现问题时,有些时候现有的手段不足以发现问题所在,可能需要追加打印日志或者增加一些调试代码,如果我们去改代码重新部署,会破坏问题现场,可以通过热部署的手段来增加调试代码 (2)线上出现紧急bug,通过Review代码找到问题,修改好后打包部署的流程可能比较久,可以通过热部署代码及时解决问题 二.使用阿里巴巴开源的Java诊断工具 ---Arthas,他可以附着在我们的Java服务器进程上面,查看服务器状态,jvm状态等各种参数指标,还可以进行热更

  • Java常用开源库汇总

    Java的经久不衰,很大程度上得益于Java的生态好.在日常开发中,我们也会经常使用到各种开源库和工具类,为了避免重复造轮子,本文将贴出工作及学习中会用到的部分开源库和工具类.Java的生态实在太大,这里只能列举一部分.如果你对此感兴趣,不妨去读读他们的源码. HTML解析器jsoup 1.1 介绍 jsoup(GitHub地址.中文文档)是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方

  • Java常用工具类汇总 附示例代码

    一.FileUtils private static void fileUtilsTest() { try { //读取文件内容 String readFileToString = FileUtils.readFileToString(new File("D:\\guor\\data\\test20211022000000.txt")); System.out.println(readFileToString); //删除文件夹 FileUtils.deleteDirectory(ne

  • Lua中的常用函数库汇总

    lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 collectgarbage() - 垃圾收集器. (新增于1.10.1) date(format, time) - 返回当前用户机器上的时间. error("error message",level) - 发生错误时,输出一条定义的错误信息.使用pcall() (见下面)捕捉错误

  • 深入浅析Java常用的格式化Json工具类

    扩展:Java常用工具类汇总 前置条件 导入以下 jar 包 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.75</version> </dependency> <dependency> <groupId>org.apache.commons</g

  • 解决Java 结构化数据处理开源库 SPL的问题

    目录 前言介绍: 1. 集合运算能力 2.Lambda语法 3. 在Lambda语法中直接引用字段 4. 动态数据结构 5. 解释型语言 前言介绍: 现代Java应用架构越来越强调数据存储和处理分离,以获得更好的可维护性.可扩展性以及可移植性,比如火热的微服务就是一种典型.这种架构通常要求业务逻辑要在Java程序中实现,而不是像传统应用架构中放在数据库中. 应用中的业务逻辑大都会涉及结构化数据处理.数据库(SQL)中对这类任务有较丰富的支持,可以相对简易地实现业务逻辑.但Java却一直缺乏这类基

  • Java常用命令汇总

    这篇文章就主要向大家展示了Java编程中常用的命令,下面看下具体内容. 1.javac 将文件编译成.class文件 用法: javac <options> <source files> 其中, 可能的选项包括: -g 生成所有调试信息 -g:none 不生成任何调试信息 -g:{lines,vars,source} 只生成某些调试信息 -nowarn 不生成任何警告 -verbose 输出有关编译器正在执行的操作的消息 -deprecation 输出使用已过时的 API 的源位置

  • 基于Java的guava开源库工具类

    目录 基于Java的guava开源库工具类 1.guava的maven配置引入 2.LoadingCache 3.Multimap 和 MultiSet 4.BiMap 5.Table 6.Sets和Maps 7.EventBus 8.StopWatch 9.Files文件操作 10.RateLimiter 11.Guava Retry 基于Java的guava开源库工具类 前言: 平时我们都会封装一些处理缓存或其他的小工具.但每个人都封装一次,重复造轮子,有点费时间.有没有一些好的工具库推荐-

  • Java常用类String的面试题汇总(java面试题)

    1.比较两个字符串时使用"=="还是equals()方法? 当然是equals方法."=="测试的是两个对象的引用是否相同,而equals()比较的是两个字符串的值是否相等.简单来说,基本数据类型都可以使用==.而引用类型使用==比较不了. 2.如何将字符串转化成int? 使用包装类Integer.Integer.valueOf("2");其他基本数据类型都是类似 3.为什么在Java中存储密码要使用char[],而不使用String. 因为St

随机推荐