首页 > 编程语言 >Java两大工具库:Commons和Guava(1)

Java两大工具库:Commons和Guava(1)

时间:2023-01-26 19:31:25浏览次数:35  
标签:Java Commons commons 开源 apache org Guava

您好,我是湘王,这是我的51CTO博客。值此新春佳节,我给您拜年啦~祝您在新的一年中所求皆所愿,所行皆坦途,展宏“兔”,有钱“兔”,多喜乐,常安宁!




Java的成功很大程度上得益于开源软件的成功,尤其是构建上开源软件基础上的开源生态,这才是Java能够繁荣、出圈的真正原因。

在开源的世界中,谈起apache,它的大名恐怕很少有工程师会不知道:从最初的apache到tomcat、从perl到maven,从hadoop到spark再到storm,apache从一个小小的web服务器演变成了后端开发(几乎全是Java)的孵化器,现今几乎一大部分业界知名开源软件,都在apache渡过了「童年时代」。

要提高Java开发水平,除了自身要不断学习实践之外,还需要借鉴一些优秀的开源框架和开发工具,包括它们背后的设计思想和实现思路,比如IoC、DI、AoP等、设计模式,既可以借力打力,又能学习到看书和日常工作中都很难学到的东西。

看源码不一定非得看spring、hadoop、spark、dubbo这类非常重量级的开源框架,平常开发中使用的像fastjson、rocketmq、druid/hikari、junit等这类轻量级甚至超轻量级的框架也是非常值得一看的,其实也不用多看,只要能够深刻理解其中某一两个的设计思路、实现手段、编码技巧,基本上就可以做到触类旁通、一通百通了。

在互联网行业,另一个和Apache一样出名甚至更出名的就是Google,一个是全世界最大的开源软件基金会,一个是全世界最大的搜索引擎,出于自身业务的需要,他们都对JDK进行了封装和扩展,分别是Apache Commons和Google Guava。


Apache Commons其实是一组开源中间件的统称,除了一些使用较少甚至被废弃的外,常用的包括:

1、Commons-BeanUtils:JavaBean反射的相关API,提供操作Bean的一些工具;

2、Commons-Codec:包含一些通用的编解码算法,含语音编码器、Hex、Base64以及URL encoder;

3、Commons-Collections:对Java集合的扩展和增强;

4、Commons-HttpClient:提供了可以工作于HTTP客户端的一个框架;

5、Commons-FileUpload:对文件操作提供强大和高性能的封装;

6、Commons-IO:对Java I/O操作的封装;

7、Commons-Lang:封装了一些java.lang中包装类型的扩展功能,Commons-Lang3是它的增强;

8、Commons-Pool:提供了通用对象池接口,一个模块化的对象池实现。


而类似Apache Commons,Google Guava也提供了众多的开发工具(锤子):

1、基本工具类:条件检查、简化Object方法实现、排序和简化异常操作等;

2、集合操作类:这是Guava最成熟和为人所知的部分;

3、缓存类:本地缓存实现,支持多种缓存过期策略,仅支持单点;

4、并发工具类:让编写正确的并发代码更简单;

5、字符串处理类:包括分割、连接、填充等操作;

6、扩展原生类型:扩展JDK的原生类型(如int、char)操作, 包括某些无符号形式;

7、I/O操作类:对Java I/O操作的封装;

8、事件总线:以发布-订阅模式通信,但组件不需要显式地注册到其他组件中;

9、反射工具类:Java反射机制工具类。


先从Apache Commons最常用的一个组件——commons-lang3——开始。

创建一个SpringBoot项目,创建时不添加任何依赖。创建完成后在pom文件中添加依赖:

<dependency>

    <groupId>org.apache.commons</groupId>

    <artifactId>commons-lang3</artifactId>

</dependency>

<dependency>

    <groupId>org.apache.commons</groupId>

    <artifactId>commons-io</artifactId>

</dependency>


很多第三方依赖包中都提供了相似的工具类,比如StringUtils类在Spring、commons-lang3中都有出现。而且除了StringUtils、DateUtils、ArrayUtils等一些常规工具类之外,还有许多非常规工具。如果能掌握好这些工具类,对开发会有很大助益,可以避免很多重复造轮子的工作。

以常见的字符串工具类为例,应用最多的主要是:

1、org.apache.commons.lang.StringUtils;

2、org.apache.commons.lang.StringEscapeUtils;

3、org.apache.commons.lang3.StringUtils;

4、org.apache.commons.lang3.StringEscapeUtils;

5、org.springframework.util.StringUtils;

其中又以commons-lang3的StringUtils使用最多。这些StringUtils总体上差异不大,主要是一些细小的差别。

Java两大工具库:Commons和Guava(1)_apache


Java两大工具库:Commons和Guava(1)_Java_02


Java两大工具库:Commons和Guava(1)_Google Guava_03


Java两大工具库:Commons和Guava(1)_Java_04


I/O工具类经常使用的是:

1、org.apache.commons.io.IOUtils;

2、org.apache.commons.io.FileUtils;

3、org.apache.commons.io.FilenameUtils。

Java两大工具库:Commons和Guava(1)_Java_05


Java两大工具库:Commons和Guava(1)_Google Guava_06

Java两大工具库:Commons和Guava(1)_Google Guava_07

数组工具类经常使用的是:

1、org.apache.commons.lang.ArrayUtils;

2、org.apache.commons.lang3.ArrayUtils。

Java两大工具库:Commons和Guava(1)_Java_08


Java两大工具库:Commons和Guava(1)_Java_09




节日期间,您仍然可以随时咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~再次祝您兔年吉祥,万事胜意!

标签:Java,Commons,commons,开源,apache,org,Guava
From: https://blog.51cto.com/u_15817148/6023689

相关文章

  • Java两大工具库:Commons和Guava(1)
    您好,我是湘王,这是我的博客园。值此新春佳节,我给您拜年啦~祝您在新的一年中所求皆所愿,所行皆坦途,展宏“兔”,有钱“兔”,多喜乐,常安宁!   Java的成功很大程度上得益于开......
  • 【已解决】Error: could not open `C:\Program Files\Java\jre1.8.0_121\lib\amd
    原因:java升级时,会在环境变量的path路径中增加以下两条路径,与我们安装java的路径重合。解决方法:删掉环境变量中的这两条语句,同时找到对应文件,删除即可。C:\ProgramData\O......
  • 03-你能不能自己写一个叫做java.lang.Object的类?
    前言:接着上一次https://www.cnblogs.com/webor2006/p/16609029.html的继续往下,距离上一篇已经过去快半年了,从我的博文记录中就可以清楚地看到:转眼2023年新春假期接近尾声......
  • 【六袆 - Java】在本地搭建easyexcel源码环境;easyexcel提供的demo单元测试用例完美运
    在本地搭建easyexcel源码环境​​EasyExcel​​​​本地环境搭建​​​​最新版本3.1.5,依赖问题,解决方案​​​​junit-读Excel​​EasyExcel本篇从github或官方文档来源参......
  • 【Java】生产者消费者模型
    【Java】生产者消费者模型0x1前言生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间......
  • 【Java】阻塞队列
    【Java】阻塞队列什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这2个附加的操作支持阻塞的插入和移除方法。支持阻塞的插入方法:当队列满时,队列会阻塞......
  • JavaScript学习笔记—Date
    在JS中所有的和时间相关的数据都由Date对象来表示对象的方法(1)getFullYear()返回当前日期的年份(4位)(2)getMonth()返回当前日期的月份(0-11)(3)getDate()返回当前日期的几......
  • JavaScript学习笔记—Math
    工具类为我们提供了数学运算相关的一些常量和方法常量(1)Math.PI圆周率方法(1)Math.abs()求一个数的绝对值(2)Math.min()求多个值中的最小值(3)Math.max()求多个值中的......
  • Java源码解析 Collection<E>
    位置: java.util.Collection<E>interface用途:参数:<E>Iterable<E>子类:接口:方法   int size();  返回这......
  • Java JDK安装文件提取为绿色版(免安装版)
    前言在服务端部署Java项目时,可能会根据项目的环境考虑使用不同的JDK版本,在使用时根据不同项目切换jdk版本很不方便。另外,安装的jdk会自动安装jdk_update,但是我又不想让jdk......