手记

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

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


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总体上差异不大主要是一些细小的差别





 

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

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

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

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



 

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

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

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




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



0人推荐
随时随地看视频
慕课网APP