# JAVA 之 我们都要熟悉的基础功能类库

729 阅读3分钟

述说几个JAVA编程中经常使用的类库。

日志

SLF4J 是个很好的选择,比 Log4J 要好一些。

JSON解析库

JacksonGson 是比较好的选择。当然,如果是简单使用的话,fastjson 也不错。

  • Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。
  • Jackson社区相对比较活跃,更新速度也比较快。
  • Jackson对于复杂类型的json转换bean会出现问题,一些集合Map,List的转换出现问题。
  • Jackson对于复杂类型的bean转换Json,转换的json格式不是标准的Json格式。
  • Gson是目前功能最全的Json解析神器,Gson当初是为因应Google公司内部需求而由Google自行研发而来。
  • Gson的应用主要为toJson与fromJson两个转换函数,无依赖,不需要例外额外的jar,能够直接跑在JDK上。
  • Gson在功能上面无可挑剔,但是性能上面比FastJson有所差距。
  • Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。
  • Fastjson无依赖,不需要例外额外的jar,能够直接跑在JDK上。
  • FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。
  • FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。

综上4种Json技术的比较,在项目选型的时候可以使用Google的Gson和阿里巴巴的FastJson两种并行使用。
如果只是功能要求,没有性能要求,可以使用google的Gson。
如果有性能上面的要求可以使用Gson将bean转换json确保数据的正确,使用FastJson将Json转换Bean。

单元测试库

常见的单测框架有 JUnit , MockitoPowerMock

Http 库

HttpClientokHttp 都不错。JDK11 已经有client的基础库,不需要Http库了。

XML解析库

Xerces2是下一代高性能,完全兼容的XML解析工具,并提供了一个完整、兼容标准的 XNI 规范实现。

Excel读写库

Apache POI API 是个很好的选择。

字节码库

javassistASMCglib Nodep 可以供你选择。Javassist使得JAVA字节码操作非常简单,建议使用。

数据库连接池库

  • 第二代连接池HikariCP 在springboot中已经成为默认选择,起源于BoneCP,精简到极致,适合微服务使用。
  • DRUID 是阿里巴巴开源的,扩展性比较好,支持SQL拦截,内置监控比较强大,在大型复杂项目中比较建议使用。
  • BoneCP可以备选,不建议用。

消息传递库

Java提供了JMS Java消息服务,但这不是JDK的一部分,你需要单独的引入jms.jar 。如果准备使用第三方消息传递协议, Tibco RV 是个不错的选择。

PDF处理库

iTextApache FOP 类库来处理。

日期和时间库

JDK8 之后已经不需要这个了。

集合类库

Trove可以使用。

邮件API

javax.mailApache Commons Email 提供了发送邮件的api。它们建立在JavaMail API的基础上,提供简化的用法。

HTML解析库

jsoup吧。

加密库

Apache Commons家族中的Commons Codec 就提供了一些公共的编解码实现。比如 Base64, Hex, MD5,Phonetic and URLs

嵌入式SQL数据库库

H2Apache DerbyHSQL

JDBC故障诊断库

P6spy

序列化库

Google Protocol Buffer

底层网络库

NettyApache MINA

Jwt

com.auth0 / java-jwt / 3.3.0io.jsonwebtoken / jjwt / 0.9.0 都不错!