述说几个JAVA编程中经常使用的类库。
日志
SLF4J 是个很好的选择,比 Log4J 要好一些。
JSON解析库
Jackson 和 Gson 是比较好的选择。当然,如果是简单使用的话,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 , Mockito 和PowerMock。
Http 库
HttpClient 和 okHttp 都不错。JDK11 已经有client的基础库,不需要Http库了。
XML解析库
Xerces2是下一代高性能,完全兼容的XML解析工具,并提供了一个完整、兼容标准的 XNI 规范实现。
Excel读写库
Apache POI API 是个很好的选择。
字节码库
javassist 、ASM 和 Cglib Nodep 可以供你选择。Javassist使得JAVA字节码操作非常简单,建议使用。
数据库连接池库
- 第二代连接池
HikariCP在springboot中已经成为默认选择,起源于BoneCP,精简到极致,适合微服务使用。 DRUID是阿里巴巴开源的,扩展性比较好,支持SQL拦截,内置监控比较强大,在大型复杂项目中比较建议使用。BoneCP可以备选,不建议用。
消息传递库
Java提供了JMS Java消息服务,但这不是JDK的一部分,你需要单独的引入jms.jar 。如果准备使用第三方消息传递协议, Tibco RV 是个不错的选择。
PDF处理库
用 iText 或 Apache FOP 类库来处理。
日期和时间库
JDK8 之后已经不需要这个了。
集合类库
Trove可以使用。
邮件API
javax.mail 和 Apache Commons Email 提供了发送邮件的api。它们建立在JavaMail API的基础上,提供简化的用法。
HTML解析库
用 jsoup吧。
加密库
Apache Commons家族中的Commons Codec 就提供了一些公共的编解码实现。比如 Base64, Hex, MD5,Phonetic and URLs等
嵌入式SQL数据库库
H2、 Apache Derby和 HSQL。
JDBC故障诊断库
P6spy。
序列化库
Google Protocol Buffer。
底层网络库
Netty 和 Apache MINA。
Jwt
com.auth0 / java-jwt / 3.3.0 和 io.jsonwebtoken / jjwt / 0.9.0 都不错!